複数の企業と連携してソースコードを共同作業する場合は、企業ごとに個別のインスタンスを作成することをおすすめします。
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.
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.-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
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.
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.-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init
必要なロール
Secure Source Manager インスタンスの作成に必要な権限を取得するには、プロジェクトに対するSecure Source Manager インスタンス オーナー (roles/securesourcemanager.instanceOwner)IAM ロールの付与を管理者に依頼してください。 Google Cloud
Secure Source Manager ロールは、プリンシパルに付与されるまで、 Google Cloud コンソールに表示されません。Secure Source Manager ロールを初めて付与する場合は、 IAM ロールの付与と取り消しをご覧ください。
データ暗号化
デフォルトでは、 Google Cloud は、Google が管理する暗号鍵を使用して、保存されているデータを自動的に 暗号化します。データを保護する鍵に関連する具体的なコンプライアンス要件や規制要件がある場合は、顧客管理の暗号鍵(CMEK)で暗号化された Secure Source Manager インスタンスを作成できます。
インスタンス ID やラベルのキーと値のペアは 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 サービス エージェントを作成したら、プリンシパル service-PROJECT-NUMBER@gcp-sa-sourcemanager. に Secure Source Manager サービス エージェント ロール(roles/securesourcemanager.serviceAgent)を付与する必要があります。そうしないと、インスタンスの作成に失敗します。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 のデフォルトの暗号化を使用する場合は、このフラグを省略します。CMEKKEY_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 暗号化を使用する場合は、このフラグを省略します。CMEKKEY_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 ウェブ インターフェースが開きます。ウェブ インターフェースから、リポジトリと関連するすべての問題とプルリクエストを作成して表示できます。