複数の企業と連携してソースコードを共同編集する場合は、企業ごとに個別のインスタンスを作成することをおすすめします。
VPC Service Controls を有効にしてインスタンスを作成するには、VPC Service Controls 境界で Secure Source Manager を構成するをご覧ください。
始める前に
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Secure Source Manager API.
-
Install the 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.
-
Enable the Secure Source Manager API.
-
Install the Google Cloud CLI.
-
外部 ID プロバイダ(IdP)を使用している場合は、まずフェデレーション ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init
- `beta` Google Cloud CLI コンポーネントをインストールします。
gcloud components install beta
次のコマンドを実行してインスタンスを作成します。gcloud CLI への認証を求められることがあります。
gcloud beta 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
は、作成するインスタンスの名前です。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 beta source-manager operations describe OPERATION_NAME \ --region=LOCATION
次のように置き換えます。
OPERATION_NAME
: 作成コマンドのレスポンスから取得したオペレーション名。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 は、ウェブ インターフェースからインスタンスにアクセスするために必要です。
次のコマンドを実行してインスタンスを作成します。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
は、作成するインスタンスの名前です。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 は作成コマンドのレスポンスから取得したオペレーション名です。
インスタンスの準備が整うと、レスポンスは次のようになります。
{ "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 は、ウェブ インターフェースからインスタンスにアクセスするために必要です。
-
ウェブ インターフェースから 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 リクエストを作成して表示できます。
必要なロール
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 です。
プロダクトごと、プロジェクトごとのサービス アカウント(P4SA)を作成したら、プリンシパル service-PROJECT-NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.comに Secure Source Manager サービス エージェント ロール(roles/securesourcemanager.serviceAgent
)を付与する必要があります。そうしないと、インスタンスの作成が失敗します。
インスタンスの作成
インスタンスを作成するには、次の手順に従います。
gcloud CLI
API
インスタンスにアクセスする
インスタンスを作成したら、ブラウザを使用してウェブ インターフェースからアクセスできます。
インスタンスにリポジトリを作成するには、インスタンス プロジェクトに対するリポジトリ作成者のロール(roles/securesourcemanager.repoCreator
)と、Secure Source Manager インスタンスに対するインスタンス リポジトリ作成者のロール(roles/securesourcemanager.instanceRepositoryCreator
)が必要です。