Secure Source Manager インスタンスを作成する

Secure Source Manager は単一テナントのサービスです。1 つの Secure Source Manager インスタンスには、契約 関係にある複数の企業が共同作業のために単一のインスタンスを使用する必要がある場合を除き、1 つの Google Cloud 顧客のユーザーのみを含める必要があります。

複数の企業と連携してソースコードを共同編集する場合は、企業ごとに個別のインスタンスを作成することをおすすめします。

VPC Service Controls を有効にしてインスタンスを作成するには、 VPC Service Controls の境界で Secure Source Manager を構成するをご覧ください。

始める前に

  1. ログイン Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、 新しいアカウントを登録します

  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Enable the Secure Source Manager API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  4. Google Cloud CLI をインストールします。

  5. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  6. gcloud CLI を初期化するには、次のコマンドを実行します:

    gcloud init
  7. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  8. Enable the Secure Source Manager API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  9. Google Cloud CLI をインストールします。

  10. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  11. 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 です。

プロダクトごと、プロジェクトごとのサービス アカウント(P4SA)を作成したら、プリンシパル service-PROJECT-NUMBER@gcp-sa-sourcemanager. に Secure Source Manager サービス エージェント ロール(roles/securesourcemanager.serviceAgent)を付与する必要があります。そうしないと、インスタンスの作成に失敗します。iam.gserviceaccount.com

インスタンスの作成

インスタンスを作成するには、次の手順に従います。

gcloud CLI

  1. 次のコマンドを実行して、インスタンスを作成します。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-a9b97a2eOPERATION_NAME です。

    インスタンスの作成には最大 60 分かかります。

  2. OPERATION_NAME をメモします。オペレーションのステータスを確認するために使用する必要があります。

  3. 次のコマンドを実行して、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 です。

  4. 正常に作成されたステータス確認コマンドから HTML URL をコピーします。この URL は、ウェブ インターフェースからインスタンスにアクセスするために必要です。

API

  1. 次のコマンドを実行して、インスタンスを作成します。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-a9b97a2eOPERATION_NAME です。

    インスタンスの作成には最大 60 分かかります。

  2. OPERATION_NAME をコピーします。

  3. 次のコマンドを実行して、作成オペレーションのステータスを確認します。

    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 です。

  4. 正常に作成されたステータス確認コマンドから HTML URL をコピーします。この URL は、ウェブ インターフェースからインスタンスにアクセスするために必要です。

インスタンスにアクセスする

インスタンスが作成されたら、ブラウザを使用してウェブ インターフェースからアクセスできます。

インスタンスにリポジトリを作成するには、インスタンス プロジェクトに対するリポジトリ作成者ロール(roles/securesourcemanager.repoCreator)と、Secure Source Manager インスタンスに対するインスタンス リポジトリ作成者ロール(roles/securesourcemanager.instanceRepositoryCreator)が必要です。

  1. ウェブ インターフェースから Secure Source Manager インスタンスにアクセスするには、次の URL をブラウザのアドレスバーにコピーします。

    INSTANCE_ID-PROJECT_NUMBER.LOCATION.sourcemanager.dev

    次のように置き換えます。

    • INSTANCE_ID:インスタンス名。
    • PROJECT_NUMBER:インスタンスの Google Cloud プロジェクト番号。プロジェクトの識別については、 プロジェクトの識別をご覧ください。
    • LOCATION:インスタンスのリージョン。

  2. OAuth 画面が表示され、sourcemanager.dev に Google アカウントへのアクセス権を付与するかどうかを確認されます。

  3. [許可] ボタンをクリックします。

  4. Secure Source Manager ウェブ インターフェースが開きます。ウェブ インターフェースから、リポジトリと関連するすべての問題とプルリクエストを作成して表示できます。

次のステップ