フェデレーション 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. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Secure Source Manager API.

    Enable the API

  4. Install the 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.

    Go to project selector

  8. Enable the Secure Source Manager API.

    Enable the API

  9. Install the Google Cloud CLI.

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

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

    gcloud init
  12. beta Google Cloud CLI コンポーネントをインストールします。
    gcloud components install beta
  13. データ暗号化

    デフォルトでは、 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

    インスタンスの作成

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

    • 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 分かかります。

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

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

    • 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 ソースコード管理を使用するの手順に沿って操作します。

    次のステップ