複数の企業と連携し、ソースコードで共同作業を行う場合は、企業ごとに個別のインスタンスを作成することをおすすめします。
VPC Service Controls を有効にしてインスタンスを作成するには、VPC Service Controls の境界で Secure Source Manager を構成するをご覧ください。
始める前に
-
Google アカウントに
ログインします。
Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
Enable the Secure Source Manager API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
Enable the Secure Source Manager API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
必要なロール
Secure Source Manager インスタンスの作成に必要な権限を取得するには、 Google Cloud プロジェクトに対する Secure Source Manager インスタンス オーナー (roles/securesourcemanager.instanceOwner)IAM ロールを付与するよう管理者に依頼してください。
Secure Source Manager のロールは、プリンシパルに付与されるまで Google Cloud コンソールに表示されません。Secure Source Manager のロールを初めて付与するには、IAM ロールの付与と取り消しをご覧ください。
データ暗号化
デフォルトでは、 Google Cloud は、Google が管理する暗号鍵を使用して、保存されているデータを自動的に暗号化します。データを保護する鍵に関連する具体的なコンプライアンス要件や規制要件がある場合は、顧客管理の暗号鍵(CMEK)で暗号化された Secure Source Manager インスタンスを作成できます。
インスタンス ID やラベルの Key-Value ペアは CMEK で暗号化されないため、機密データを保存しないでください。
プロジェクトで最初の Secure Source Manager インスタンスを作成する場合は、次のコマンドを実行して Secure Source Manager サービス エージェントを手動で作成する必要があります。
gcloud beta services identity create \
--service=securesourcemanager.googleapis.com \
--project=PROJECT_ID
ここで、PROJECT_ID は、Secure Source Manager インスタンスを作成するプロジェクトのプロジェクト ID です。
Secure Source Manager サービス エージェントを作成したら、Secure Source Manager サービス エージェント ロール(roles/securesourcemanager.serviceAgent)をプリンシパル service-PROJECT-NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.comに付与する必要があります。そうしないと、インスタンスの作成が失敗します。
インスタンスの作成
インスタンスを作成するには、次の手順に従います。
gcloud CLI
次のコマンドを実行してインスタンスを作成します。gcloud CLI への認証を求められることがあります。
gcloud source-manager instances create INSTANCE_ID \ --region=LOCATION \ --project=PROJECT_ID \ --kms-key=projects/KEY_PROJECT/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEYここで
INSTANCE_IDは、インスタンスの永続 ID です。ID には英小文字、数字、ハイフンのみを使用できます。先頭は英字にする必要があります。作成後に変更することはできません。LOCATIONは、インスタンスを作成するリージョンです。サポートされているロケーションについては、ロケーションをご覧ください。PROJECT_IDは、インスタンスを作成するプロジェクトのプロジェクト ID です。-kms-keyはオプションのフラグです。独自の顧客管理の暗号鍵(CMEK)を使用してインスタンスを作成する場合は、これを含めます。CMEK 鍵は、インスタンスを作成する場所と同じロケーションに存在する必要がありますが、別のプロジェクトに配置することもできます。Google のデフォルトの暗号化を使用する場合は、このフラグを省略します。CMEK を使用してデータを暗号化する場合は、次のように置き換えます。KEY_PROJECTは、鍵を作成したプロジェクトに置き換えます。KEY_LOCATION: 鍵のロケーション。KEYRING_NAME: キーリングの名前。KEY: 鍵の名前。
長時間実行のインスタンス作成オペレーションが開始されます。出力は次のようになります。
Create request issued for [my-instance]. done: false metadata: '@type': type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata apiVersion: v1 createTime: '2023-02-27T20:57:52.315609549Z' requestedCancellation: false target: projects/my-project/locations/us-central1/instances/my-instance verb: create name: projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2eここで、
projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2eはOPERATION_NAMEです。インスタンスの作成には最大 60 分かかります。
オペレーションのステータスを確認するために使用する必要があるため、
OPERATION_NAMEをメモします。次のコマンドを実行して、
createオペレーションのステータスを確認します。gcloud source-manager operations describe OPERATION_NAME \ --region=LOCATION次のように置き換えます。
OPERATION_NAMEは、create コマンドのレスポンスのオペレーション名に置き換えます。LOCATIONは、インスタンスを作成するリージョンに置き換えます。サポートされているロケーションについては、ロケーションをご覧ください。
インスタンスの準備が整うと、次のようなレスポンスが返されます。
{ "name": "projects/my-project/locations/us-central1/operations/operation-123456789012-5ec69948c0f2b-60dd727f-a9b97a2e", "metadata": { "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata", "createTime": "2022-11-01T14:31:32.420469714Z", "endTime": "2022-11-01T14:48:34.140378114Z", "target": "projects/my-project/locations/us-central1/instances/test", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.Instance", "name": "projects/my-project/locations/us-central1/instances/test", "createTime": "2022-11-01T14:31:32.416413630Z", "updateTime": "2022-11-01T14:31:32.416413630Z", "labels": { "ldap": "user", "source": "manual" }, "state": "ACTIVE", "hostConfig": { "html": "test-098765432109.us-central1.sourcemanager.dev", "api": "test-098765432109-api.us-central1.sourcemanager.dev", "gitHttp": "test-098765432109-git.us-central1.sourcemanager.dev" } } }ここで、
test-098765432109.us-central1.sourcemanager.devはインスタンスの HTML URL です。正常に作成されたステータス確認コマンドから HTML URL をコピーします。この URL は、ウェブ インターフェースを介してインスタンスにアクセスするために必要です。
API
次のコマンドを実行してインスタンスを作成します。gcloud CLI への認証を求められることがあります。
curl \ -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances?instance_id=INSTANCE_ID \ -H "Content-Type: application/json" \ -d '{ "kms_key":"projects/KEY_PROJECT/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY"}'ここで
INSTANCE_IDは、インスタンスの永続 ID です。ID に使用できるのは英小文字、数字、ハイフンのみです。先頭は英字にする必要があります。LOCATIONは、インスタンスを作成するリージョンです。サポートされているロケーションについては、ロケーションをご覧ください。PROJECT_IDは、インスタンスを作成するプロジェクトのプロジェクト ID です。-dは、インスタンスを暗号化する CMEK 鍵を指定するために使用できる、オプションの HTTP POST データフラグです。デフォルトの Google 暗号化を使用する場合は、このフラグを省略します。CMEK を使用してデータを暗号化する場合は、次のように置き換えます。KEY_PROJECTは、鍵を作成したプロジェクトに置き換えます。KEY_LOCATION: 鍵のロケーション。KEYRING_NAME: キーリングの名前。KEY: 鍵の名前。
長時間実行のインスタンス作成オペレーションが開始されます。出力は次のようになります。
{ "name": "projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e", "metadata": { "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata", "createTime": "2022-11-01T14:31:32.420469714Z", "target": "projects/my-project/locations/us-central1/instances/test", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }ここで、
projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2eはOPERATION_NAMEです。インスタンスの作成には最大 60 分かかります。
OPERATION_NAMEをコピーします。次のコマンドを実行して、作成オペレーションのステータスを確認します。
curl \ -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://securesourcemanager.googleapis.com/v1/OPERATION_NAMEここで、OPERATION_NAME は、create コマンドに対するレスポンスのオペレーション名です。
インスタンスの準備が整うと、次のようなレスポンスが返されます。
{ "name": "projects/my-project/locations/us-central1/operations/operation-123456789012-5ec69948c0f2b-60dd727f-a9b97a2e", "metadata": { "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata", "createTime": "2022-11-01T14:31:32.420469714Z", "endTime": "2022-11-01T14:48:34.140378114Z", "target": "projects/my-project/locations/us-central1/instances/test", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.Instance", "name": "projects/my-project/locations/us-central1/instances/test", "createTime": "2022-11-01T14:31:32.416413630Z", "updateTime": "2022-11-01T14:31:32.416413630Z", "labels": { "ldap": "user", "source": "manual" }, "state": "ACTIVE", "hostConfig": { "html": "test-098765432109.us-central1.sourcemanager.dev", "api": "test-098765432109-api.us-central1.sourcemanager.dev", "gitHttp": "test-098765432109-git.us-central1.sourcemanager.dev" } } }ここで、
test-098765432109.us-central1.sourcemanager.devはインスタンスの HTML URL です。正常に作成されたステータス確認コマンドから HTML URL をコピーします。この URL は、ウェブ インターフェースを介してインスタンスにアクセスするために必要です。
Terraform
Terraform で Secure Source Manager インスタンスを作成するには、google_secure_source_manager_instance リソースを使用します。
インスタンスにアクセスする
インスタンスが作成されたら、ブラウザを使用してウェブ インターフェースからアクセスできます。
インスタンスにリポジトリを作成するには、インスタンス プロジェクトに対するリポジトリ作成者のロール(roles/securesourcemanager.repoCreator)と、Secure Source Manager インスタンスに対するインスタンス リポジトリ作成者のロール(roles/securesourcemanager.instanceRepositoryCreator)が必要です。
-
ウェブ インターフェースから Secure Source Manager インスタンスにアクセスするには、次の URL をコピーしてブラウザのアドレスバーに貼り付けます。
INSTANCE_ID-PROJECT_NUMBER.LOCATION.sourcemanager.dev次のように置き換えます。
- INSTANCE_ID は、インスタンス名に置き換えます。
- PROJECT_NUMBER は、インスタンスの Google Cloudプロジェクト番号に置き換えます。プロジェクトの識別については、プロジェクトの識別をご覧ください。
- LOCATION は、インスタンスのリージョンに置き換えます。
OAuth 画面が表示され、
sourcemanager.devに Google アカウントへのアクセスを許可するかどうかを尋ねられます。[許可] ボタンをクリックします。
Secure Source Manager のウェブ インターフェースが開きます。ウェブ インターフェースから、リポジトリと、関連するすべての問題と pull リクエストを作成して表示できます。