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

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

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

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

Secure Source Manager は単一テナント サービスです。契約関係にある複数の企業が共同作業のために単一のインスタンスを使用する必要がある場合を除き、1 つの 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. に Secure Source Manager サービス エージェント ロール(roles/securesourcemanager.serviceAgent)を付与する必要があります。そうしないと、インスタンスの作成に失敗します。iam.gserviceaccount.com

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: create コマンドのレスポンスのオペレーション名。
  • 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: create コマンドのレスポンスのオペレーション名。

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 Identity プロバイダの名前を次の形式で入力します。

    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 ソースコード管理を使用するをご覧ください。

次のステップ