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

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

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

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, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. 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.

    Enable the API

  4. Install the Google Cloud CLI.

  5. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  6. To initialize the gcloud CLI, run the following command:

    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, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. 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.

    Enable the API

  9. Install the Google Cloud CLI.

  10. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  11. 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

  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-a9b97a2e は OPERATION_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-a9b97a2e は OPERATION_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 は、ウェブ インターフェースを介してインスタンスにアクセスするために必要です。

Terraform

Terraform で Secure Source Manager インスタンスを作成するには、google_secure_source_manager_instance リソースを使用します。

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

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

インスタンスにリポジトリを作成するには、インスタンス プロジェクトに対するリポジトリ作成者のロール(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 のウェブ インターフェースが開きます。ウェブ インターフェースから、リポジトリと、関連するすべての問題と pull リクエストを作成して表示できます。

次のステップ