本页介绍了如何使用 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-project
内 us-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
向多位用户授予访问权限
创建一个包含需要访问您的实例的所有用户的 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
,以向您的群组授予以下角色:- Instance Accessor 角色 (
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" ] } ] }
替换以下内容:
ETAG
,其中包含getIamPolicy
响应中的etag
值,在本例中为BwUjHYKJUiQ=
- 将
GROUP_EMAIL
替换为您的 Google 群组的电子邮件地址。 USER_EMAIL_1
和USER_EMAIL_2
,并提供您要授予实例所有者角色的用户的电子邮件地址。
- Instance Accessor 角色 (
保存修改后的
/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 角色。