ユーザーにインスタンスへのアクセス権を付与する

このページでは、Identity and Access Management(IAM)を使用して、Secure Source Manager インスタンスへのアクセス権をユーザーに付与する方法について説明します。Secure Source Manager のアクセス制御の詳細については、IAM によるアクセス制御をご覧ください。

必要なロール

ユーザーにインスタンス アクセス権を付与するために必要な権限を取得するには、Secure Source Manager インスタンスに対する Secure Source Manager インスタンス オーナーロール roles/securesourcemanager.instanceOwner)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

Secure Source Manager ロールの付与については、IAM によるアクセス制御をご覧ください。

Workforce Identity 連携ユーザーにアクセス権を付与する

Workforce Identity 連携を使用して Secure Source Manager にアクセスする場合、プリンシパルは異なる方法で表されます。ID グループを表すプリンシパルにアクセス権を付与する方法については、IAM ポリシーで Workforce プールユーザーを表すをご覧ください。

たとえば、次のコマンドは、us-central1 リージョンのプロジェクト my-project のインスタンス my-instance のワークフォース プール my-pool で、ユーザー user@example.com にインスタンス アクセサー ロール(roles/securesourcemanager.instanceAccessor)を付与します。

  gcloud beta source-manager instances add-iam-policy-binding my-instance \
      --project=my-project \
      --region=us-central1 \
      --member=principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com \
      --role=roles/securesourcemanager.instanceAccessor

Workforce Identity プール内のユーザーまたはグループに、ID プロバイダ(IdP)の属性に基づいて権限を付与できます。また、Common Expression Language(CEL)を使用して OIDC 属性をカスタム属性にマッピングし、IAM ポリシーで認可戦略を定義することもできます。属性マッピングの詳細については、属性マッピングをご覧ください。

1 人のユーザーにアクセス権を付与する

単一のユーザーにインスタンスへのアクセス権を付与するには、次の Google Cloud CLI コマンドを使用します。

  gcloud beta source-manager instances add-iam-policy-binding INSTANCE_ID \
      --project=PROJECT_ID \
      --region=REGION \
      --member=PRINCIPAL_IDENTIFIER \
      --role=roles/securesourcemanager.instanceAccessor

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

  • INSTANCE_ID はインスタンス ID に置き換えます。
  • PROJECT_ID: インスタンスのプロジェクト ID またはプロジェクト番号。
  • REGION は、インスタンスが配置されているリージョンに置き換えます。使用可能な Secure Source Manager リージョンについては、ロケーションのドキュメントをご覧ください。
  • PRINCIPAL_IDENTIFIER: ロールを付与するプリンシパルの ID。

    たとえば、メールアドレスを持つ単一のユーザーにロールを付与するには、プリンシパル ID を user:EMAIL の形式で指定します。ここで、EMAIL はユーザーのメールアドレスです。

    サポートされているプリンシパル ID の詳細については、プリンシパル ID をご覧ください。

たとえば、次のコマンドは、us-central リージョンのプロジェクト my-project のインスタンス my-instance に対する roles/securesourcemanager.instanceAccessor ロールを trusted-user1@gmail.com ユーザーに付与します。

  gcloud beta source-manager instances add-iam-policy-binding INSTANCE_ID \
      --project=my-project \
      --region=us-central1 \
      --member=user:trusted-user1@gmail.com \
      --role=roles/securesourcemanager.instanceAccessor

複数のユーザーにアクセス権を付与する

  1. インスタンスへのアクセス権が必要なすべてのユーザーの Google グループを作成します。グループはドメイン固有のグループにすることができます。

    すべての潜在的なユーザー(すべてのデベロッパーや、社内で問題を報告する可能性のあるユーザーなど)を含む幅広いグループを作成することをおすすめします。リポジトリや問題など、Secure Source Manager インスタンス内のリソースにアクセスしたり、リソースを作成したりするには、ユーザーがこのグループに属している必要があります。

    このグループを広範なグループにすることで、チームリーダーはグループのメンバーシップを管理することなく、インスタンス レベルとリポジトリ レベルのユーザーロールを管理できます。

  2. 現在の許可ポリシーを読み取って /tmp/instances.json に保存するには、次のコマンドを実行します。

      gcloud beta source-manager instances get-iam-policy INSTANCE_ID \
          --project=PROJECT_ID \
          --region=REGION \
          --format=json > /tmp/instance.json
    

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

    • INSTANCE_ID はインスタンス ID に置き換えます。
    • PROJECT_ID: インスタンスのプロジェクト ID またはプロジェクト番号。
    • REGION は、インスタンスが配置されているリージョンに置き換えます。使用可能な Secure Source Manager リージョンについては、ロケーションのドキュメントをご覧ください。

    出力には既存のバインディングが含まれます。バインディングが存在しない場合は、次のような etag 値が含まれます。

    {
        "etag": "BwUjHYKJUiQ="
    }
    
  3. JSON ファイル /tmp/instance.json を編集して、グループに次のロールを付与します。

    • インスタンスを表示する必要があるが、リポジトリの作成や変更は行わないユーザー向けのインスタンス アクセサー ロール(roles/securesourcemanager.instanceAccessor)。
    • リポジトリの作成と変更が必要なユーザーに対するインスタンス リポジトリ作成者ロール(roles/securesourcemanager.instanceRepositoryCreator)。
    • インスタンスを管理するユーザーのインスタンス オーナー ロール(roles/securesourcemanager.instanceOwner)。

    次のポリシーの例では、グループ your-group@gmail.comroles/securesourcemanager.instanceRepositoryCreator ロールを付与し、ユーザー trusted-user1@gmail.comtrusted-user2@gmail.comroles/securesourcemanager.instanceOwner ロールを付与します。

    {
      "etag": "ETAG",
      "bindings": [
        {
          "role": "roles/securesourcemanager.instanceRepositoryCreator",
          "members": [
            "group:GROUP_EMAIL"
          ]
        },
        {
          "role": "roles/securesourcemanager.instanceOwner",
          "members": [
            "user:USER_EMAIL_1",
            "user:USER_EMAIL_2"
          ]
        }
      ]
    }
    

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

    • getIamPolicy レスポンスの etag 値(この場合は BwUjHYKJUiQ=)を含む ETAG
    • GROUP_EMAIL: Google グループのメールアドレス。
    • USER_EMAIL_1USER_EMAIL_2。インスタンス オーナーのロールを付与するユーザーのメールアドレスを指定します。
  4. 編集した /tmp/instance.json ファイルを保存します。

  5. 保存した許可ポリシーを変更して必要なロールを付与または取り消した後、次のコマンドを実行してインスタンスの許可ポリシーを更新します。

    gcloud beta source-manager instances set-iam-policy INSTANCE_ID  \
        --project=PROJECT_ID \
        --region=REGION \
        /tmp/instance.json
    

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

    • INSTANCE_ID はインスタンス ID に置き換えます。
    • PROJECT_ID: インスタンスのプロジェクト ID またはプロジェクト番号。
    • REGION は、インスタンスが配置されているリージョンに置き換えます。使用可能な Secure Source Manager リージョンについては、ロケーションのドキュメントをご覧ください。

次のステップ