フェデレーション ID で使用する Secure Source Manager インスタンスを作成する

外部 ID プロバイダ(IdP)で Workforce Identity 連携を使用する Secure Source Manager インスタンスを作成する方法について説明します。

Workforce Identity 連携の詳細については、Workforce Identity 連携をご覧ください。

Secure Source Manager の Workforce Identity 連携の制限事項については、ID 連携: プロダクトと制限事項をご覧ください。

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

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

始める前に

  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

データ暗号化

デフォルトでは、 Google Cloud はGoogle-owned and Google-managed encryption keysを使用して保存データを自動的に暗号化します。データを保護する鍵に関連する具体的なコンプライアンス要件や規制要件がある場合は、顧客管理の暗号鍵(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)を付与する必要があります。そうしないと、インスタンスの作成が失敗します。

Workforce Identity 連携を設定する

インスタンスを作成する前に、Workforce Identity 連携のプールとプロバイダを設定する必要があります。

  1. Workforce Identity 連携プールを作成します

  2. 次の属性マッピングを使用して、Workforce Identity プール プロバイダを構成します。

    • google.subject
    • google.email

インスタンスの作成

gcloud

後述のコマンドデータを使用する前に、次のように置き換えます。

  • INSTANCE_ID: 作成するインスタンスの名前。
  • LOCATION: インスタンスを作成するリージョン。サポートされているロケーションについては、ロケーションをご覧ください。
  • PROJECT_ID: インスタンスを作成するプロジェクトのプロジェクト ID。

次のコマンドを実行します。

Linux、macOS、Cloud Shell

gcloud source-manager instances create INSTANCE_ID --region=LOCATION --project=PROJECT_ID --enable-workforce-identity-federation

Windows(PowerShell)

gcloud source-manager instances create INSTANCE_ID --region=LOCATION --project=PROJECT_ID --enable-workforce-identity-federation

Windows(cmd.exe)

gcloud source-manager instances create INSTANCE_ID --region=LOCATION --project=PROJECT_ID --enable-workforce-identity-federation

長時間実行のインスタンス作成オペレーションが開始されます。出力は次のようになります。

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

OPERATION_NAME を記録します。これは、オペレーションのステータスを確認するために使用する必要があります。

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

API

このコマンドを実行する前に、次の値を置き換えます。

  • INSTANCE_ID: 作成するインスタンスの名前。
  • LOCATION: インスタンスを作成するリージョン。サポートされているロケーションについては、ロケーションをご覧ください。
  • PROJECT_ID: インスタンスを作成するプロジェクトのプロジェクト ID。

次のコマンドを実行します。

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 "{workforce_identity_federation_config: {enabled: true}}"

長時間実行のインスタンス作成オペレーションが開始されます。出力は次のようになります。

{
"name": "OPERATION_NAME",
"metadata": {
  "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata",
  "createTime": "2022-11-01T14:31:32.420469714Z",
  "target": "projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID",
  "verb": "create",
  "requestedCancellation": false,
  "apiVersion": "v1"
},
"done": false
}

この出力例には次の値が含まれます。

  • OPERATION_NAME: オペレーション名(例: projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e)。
  • PROJECT_ID: Google Cloud プロジェクト。
  • LOCATION: インスタンスが配置されているリージョン。

OPERATION_NAME は、オペレーションのステータスを確認するために使用する必要があるため、記録します。

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

Terraform

次の例では、Workforce Identity 連携が有効になっている Secure Source Manager インスタンスを作成します。

resource "google_secure_source_manager_instance" "instance" {
  instance_id = "INSTANCE_ID"
  location    = "LOCATION"
  project     = "PROJECT_ID"
  workforce_identity_federation_config {
    enabled = true
  }
}

オペレーションのステータスを確認する

gcloud

後述のコマンドデータを使用する前に、次のように置き換えます。

  • OPERATION_NAME: 作成コマンドのレスポンスで返されたオペレーション名。
  • LOCATION: インスタンスのリージョン。

次のコマンドを実行します。

Linux、macOS、Cloud Shell

gcloud source-manager operations describe OPERATION_NAME --region=LOCATION

Windows(PowerShell)

gcloud source-manager operations describe OPERATION_NAME --region=LOCATION

Windows(cmd.exe)

gcloud source-manager operations describe OPERATION_NAME --region=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/my-instance",
    "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/my-instance",
    "createTime": "2022-11-01T14:31:32.416413630Z",
    "updateTime": "2022-11-01T14:31:32.416413630Z",
    "labels": {
      "ldap": "user",
      "source": "manual"
    },
    "state": "ACTIVE",
    "hostConfig": {
      "html": "my-instance-098765432109.us-central1.sourcemanager.dev",
      "api": "my-instance-098765432109-api.us-central1.sourcemanager.dev",
      "gitHttp": "my-instance-098765432109-git.us-central1.sourcemanager.dev"
    }
  }

ここで、my-instance-098765432109.us-central1.sourcemanager.dev はインスタンスの HTML URL です。

API

リクエストのデータを使用する前に、次のように置き換えます。

  • OPERATION_NAME: 作成コマンドのレスポンスで返されたオペレーション名。

HTTP メソッドと URL:

GET https://securesourcemanager.googleapis.com/v1/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": "2024-10-28T15:37:39.009812863Z",
    "endTime": "2024-10-28T16:10:58.416640259Z",
    "target": "projects/my-project/locations/us-central1/instances/my-instance",
    "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/my-instance",
    "createTime": "2024-10-28T15:37:39.004550840Z",
    "updateTime": "2024-10-28T15:37:39.867857246Z",
    "state": "ACTIVE",
    "hostConfig": {
      "html": "my-instance-326202322590.us-central1.sourcemanager.dev",
      "api": "my-instance-326202322590-api.us-central1.sourcemanager.dev",
      "gitHttp": "my-instance-326202322590-git.us-central1.sourcemanager.dev",
      "gitSsh": "my-instance-326202322590-ssh.us-central1.sourcemanager.dev"
    },
    "workforceIdentityFederationConfig": {
      "enabled": true
    }
  }

ここで、my-instance-098765432109.us-central1.sourcemanager.dev はインスタンスの HTML URL です。

チェック ステータス レスポンスが成功した場合は、HTML URL をコピーします。この URL は、ウェブ インターフェースからインスタンスにアクセスするために必要です。

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

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

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

    INSTANCE_ID-PROJECT_NUMBER.LOCATION.sourcemanager.dev

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

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

    OAuth 画面が表示され、プロバイダ名の入力を求められます。

  2. Workforce ID プロバイダの名前を次の形式で入力します。

    locations/global/workforcePools/POOL_ID/providers/PROVIDER_ID
    

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

    • POOL_ID は、Workforce Identity 連携プール ID に置き換えます。
    • PROVIDER_ID は、Workforce Identity 連携プロバイダ ID に置き換えます。

    Workforce Identity 連携のプールとプロバイダの詳細については、Workforce Identity 連携の ID プールとプロバイダを管理するをご覧ください。

    プロバイダの認証情報を使用してログインするように求められます。

  3. プロバイダの認証情報を使用してログインします。

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

    Workforce Identity 連携プールのセッション継続時間が経過すると、ウェブ インターフェースから再度ログインする必要があります。

gcloud CLI ログイン構成を作成する

gcloud CLI コマンドまたは Git コマンドを使用して、Workforce Identity プールの認証情報で Secure Source Manager インスタンスに対して認証を行うには、Workforce Identity プールを使用してログイン構成を作成する必要があります。

Workforce Identity プールのログイン構成を作成するには、Workforce Identity 連携の有効期間が短いトークンを取得するの手順に沿って、gcloud CLI でブラウザベースのログインを作成します。

認証が完了すると、Git コマンドを使用して Secure Source Manager インスタンスを操作できます。Git の使用を開始するには、Git ソースコード管理を使用するをご覧ください。

次のステップ