向用户授予实例访问权限

本页介绍了如何使用 Identity and Access Management (IAM) 授予用户对 Secure Source Manager 实例的访问权限。如需详细了解 Secure Source Manager 中的访问权限控制,请参阅使用 IAM 进行访问权限控制

所需的角色

如需获得向用户授予实例访问权限所需的权限,请让您的管理员为您授予 Secure Source Manager 实例的 Secure Source Manager Instance Owner 角色 (roles/securesourcemanager.instanceOwner) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

如需了解如何授予 Secure Source Manager 角色,请参阅使用 IAM 进行访问权限控制

向员工身份联合用户授予访问权限

如果您使用员工身份联合来访问 Secure Source Manager,则主账号的表示方式会有所不同。如需详细了解如何向表示身份群组的主账号授予访问权限,请参阅在 IAM 政策中表示员工池用户

例如,以下命令向用户 user@example.com 授予了工作组池 my-pool 中项目 my-projectus-central1 区域中实例 my-instance 的 Instance Accessor 角色 (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

您可以根据身份提供方 (IdP) 属性向员工身份池中的用户或群组授予权限,也可以使用通用表达式语言 (CEL) 将 OIDC 属性映射到自定义属性,以便在 IAM 政策中定义授权策略。如需详细了解属性映射,请参阅属性映射

向单个用户授予访问权限

如需向单个用户授予对实例的访问权限,请使用以下 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 替换为您要向其授予角色的主账号的标识符。

    例如,如需向电子邮件地址为单个用户授予角色,您需要将主账号标识符的格式设置为 user:EMAIL,其中 EMAIL 是用户的电子邮件地址。

    如需详细了解支持的主账号标识符,请参阅主账号标识符

例如,以下命令向 us-central 区域中项目 my-project 内的实例 my-instance 授予 trusted-user1@gmail.com 用户 roles/securesourcemanager.instanceAccessor 角色。

  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,以向您的群组授予以下角色:

    • Instance Accessor 角色 (roles/securesourcemanager.instanceAccessor):适用于需要查看实例但不会创建或修改代码库的用户。
    • 需要创建和修改代码库的用户的“实例代码库创建者”角色 (roles/securesourcemanager.instanceRepositoryCreator)。
    • 实例所有者角色 (roles/securesourcemanager.instanceOwner),用于管理您的实例。

    以下示例政策向群组 your-group@gmail.com 授予 roles/securesourcemanager.instanceRepositoryCreator 角色,并向用户 trusted-user1@gmail.comtrusted-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"
          ]
        }
      ]
    }
    

    替换以下内容:

    • ETAG,其中包含 getIamPolicy 响应中的 etag 值,在本例中为 BwUjHYKJUiQ=
    • 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 区域,请参阅位置文档

后续步骤