このページでは、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
複数のユーザーにアクセス権を付与する
- インスタンスへのアクセス権が必要なすべてのユーザーの Google グループを作成します。グループはドメイン固有のグループにすることができます。 - すべての潜在的なユーザー(すべてのデベロッパーや、社内で問題を報告する可能性のあるユーザーなど)を含む幅広いグループを作成することをおすすめします。リポジトリや問題など、Secure Source Manager インスタンス内のリソースにアクセスしたり、リソースを作成したりするには、ユーザーがこのグループに属している必要があります。 - このグループを広範なグループにすることで、チームリーダーはグループのメンバーシップを管理することなく、インスタンス レベルとリポジトリ レベルのユーザーロールを管理できます。 
- 現在の許可ポリシーを読み取って - /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=" }
- JSON ファイル - /tmp/instance.jsonを編集して、グループに次のロールを付与します。- インスタンスを表示する必要があるが、リポジトリの作成や変更は行わないユーザー向けのインスタンス アクセサー ロール(roles/securesourcemanager.instanceAccessor)。
- リポジトリの作成と変更が必要なユーザーに対するインスタンス リポジトリ作成者ロール(roles/securesourcemanager.instanceRepositoryCreator)。
- インスタンスを管理するユーザーのインスタンス オーナー ロール(roles/securesourcemanager.instanceOwner)。
 - 次のポリシーの例では、グループ - your-group@gmail.comに- roles/securesourcemanager.instanceRepositoryCreatorロールを付与し、ユーザー- trusted-user1@gmail.comと- trusted-user2@gmail.comに- roles/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_1と- USER_EMAIL_2。インスタンス オーナーのロールを付与するユーザーのメールアドレスを指定します。
 
- インスタンスを表示する必要があるが、リポジトリの作成や変更は行わないユーザー向けのインスタンス アクセサー ロール(
- 編集した - /tmp/instance.jsonファイルを保存します。
- 保存した許可ポリシーを変更して必要なロールを付与または取り消した後、次のコマンドを実行してインスタンスの許可ポリシーを更新します。 - 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 リージョンについては、ロケーションのドキュメントをご覧ください。
 
次のステップ
- ユーザーにリポジトリへのアクセス権を付与する。
- IAM によるアクセス制御に関する詳細を確認する。
- リポジトリを作成する
- IAM ロールを付与および取り消す。