您可以创建使用权,以允许为特定主账号提供临时权限提升。创建权限时,请注意以下事项:
您可以在组织级、文件夹级或项目级创建使用权。在各级别通过使用权授予的角色遵循 Google Cloud 资源层次结构。例如,在组织级层通过权限授予的角色会在文件夹和项目级层继承。
如果您将群组作为请求者添加到某项权限,则该群组中的所有个人账号都可以请求授予该权限。不过,只有请求授予权限的个人账号才能获得升级后的权限。
如果您将群组添加为某项权限的审批者,则该群组中的所有个人账号都可以批准或拒绝授予请求。
不支持基本角色。
准备工作
确保您已启用 Privileged Access Manager 并为其设置权限。
使用 Google Cloud 控制台创建使用权
如需创建使用权,请完成以下说明:
前往 Privileged Access Manager 页面。
选择您要将相应权限应用到的组织、文件夹或项目。
点击权利标签页。
点击创建。
添加以下使用权详情:
点击下一步。
搜索并添加最多 20 个有效的请求者主账号。支持所有主账号类型,但
allUsers
和allAuthenticatedUsers
除外。您可以将超过 20 个身份添加到群组中,然后将该群组列入权利中,以此来添加身份。选择授权请求的主账号是否需要提供理由。
点击下一步。
选择允许在不经批准的情况下授予角色,或者搜索并添加可以批准请求的有效主账号。有效的主账号类型如下:
Google 账号
Google 群组
Google Workspace 网域
员工群组标识符
如果您选择指定审批人,还需要选择审批人是否需要提供批准授予请求的理由。您最多可以为每项权限添加 20 位审批主账号。您可以将超过 20 个身份添加到群组中,然后将该群组列入权利中,以此来添加身份。
点击下一步。
可选:添加人员的电子邮件地址,以便在可以申请使用权、授予权限时等待批准以及请求者被授予访问权限时通知相应人员。与相应权限相关联的 Google 身份(例如审批者和请求者)会自动收到通知。不过,您可能需要通知另一组电子邮件地址,尤其是在使用员工身份联合时。
点击创建使用权。
以编程方式创建权限
gcloud
gcloud beta pam entitlements create
命令会在组织、文件夹或项目级别创建权限。
在使用下面的命令数据之前,请先进行以下替换:
ENTITLEMENT_ID
:要创建的使用权 ID。ID 必须为 4-63 个字符,并且使用以下字符:[a-z0-9-]
。第一个字符必须是字母。RESOURCE_TYPE
:可选。该权利所属的资源类型。使用值organization
、folder
或project
。RESOURCE_ID
:与RESOURCE_TYPE
一起使用。您要管理权限的 Google Cloud 组织、文件夹或项目的 ID。项目 ID 是字母数字字符串,例如my-project
。文件夹和组织 ID 是数字,例如123456789012
。SCOPE
:要创建使用权的组织、文件夹或项目,格式为organizations/ORGANIZATION_ID
、folders/FOLDER_ID
或projects/PROJECT_ID
。项目 ID 是字母数字字符串,例如my-project
。文件夹和组织 ID 是数字,例如123456789012
。RESOURCE_MANAGER_RESOURCE_TYPE
:Organization
、Folder
或Project
,具体取决于作用域。ROLE
:在授予权利时要分配的角色。TIME_IN_SECONDS
:一项奖励的持续时长上限(以秒为单位)。-
REQUESTING_MEMBER
:可以请求授予权利的主账号。除allUsers
和allAuthenticatedUsers
之外,所有 主账号类型均受支持。 APPROVING_EMAIL
:可选。在请求授予访问权限时通知的其他电子邮件地址。与授权审批者关联的 Google 身份会自动收到通知。不过,您可能需要通知另一组电子邮件地址,尤其是在使用员工身份联合时。-
APPROVING_MEMBER
:可以批准使用权请求的主账号。有效的 主账号类型如下所示:- 用户
- 群组
- 网域
- 员工群组标识符
ADMIN_EMAIL_ADDRESS
:可选。当请求者被授予访问权限时,系统会向这些电子邮件地址发送通知。与授权审批者关联的 Google 身份会自动收到通知。不过,您可能需要通知另一组电子邮件地址,尤其是在使用员工身份联合时。REQUESTER_EMAIL_ADDRESS
:可选。当此使用权可供申请时,用于接收通知的其他电子邮件地址。 与授权请求者关联的 Google 身份会自动收到通知。不过,您可能需要通知另一组电子邮件地址,尤其是在使用员工身份联合时。
将以下内容保存在名为 entitlement.yaml
的文件中:
privilegedAccess: gcpIamAccess: resourceType: cloudresourcemanager.googleapis.com/RESOURCE_MANAGER_RESOURCE_TYPE resource: //cloudresourcemanager.googleapis.com/SCOPE roleBindings: - role: ROLE_1 - role: ROLE_2 maxRequestDuration: TIME_IN_SECONDSs eligibleUsers: - principals: - REQUESTING_MEMBER_1 - REQUESTING_MEMBER_2 approvalWorkflow: manualApprovals: requireApproverJustification: true steps: - approvalsNeeded: 1 approverEmailRecipients: - APPROVING_EMAIL_1 - APPROVING_EMAIL_2 approvers: - principals: - APPROVING_MEMBER_1 - APPROVING_MEMBER_2 requesterJustificationConfig: unstructured: {} additionalNotificationTargets: adminEmailRecipients: - ADMIN_EMAIL_ADDRESS_1 - ADMIN_EMAIL_ADDRESS_2 requesterEmailRecipients: - REQUESTER_EMAIL_ADDRESS_1 - REQUESTER_EMAIL_ADDRESS_2
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud beta pam entitlements create \ ENTITLEMENT_ID \ --entitlement-file=entitlement.yaml \ --location=global \ --RESOURCE_TYPE=RESOURCE_ID
Windows (PowerShell)
gcloud beta pam entitlements create ` ENTITLEMENT_ID ` --entitlement-file=entitlement.yaml ` --location=global ` --RESOURCE_TYPE=RESOURCE_ID
Windows (cmd.exe)
gcloud beta pam entitlements create ^ ENTITLEMENT_ID ^ --entitlement-file=entitlement.yaml ^ --location=global ^ --RESOURCE_TYPE=RESOURCE_ID
您应该会收到类似如下所示的响应:
Create request issued for: [ENTITLEMENT_ID] Waiting for operation [projects/my-project/locations/global/operations/OPERATION_ID] to complete...done. Created entitlement [ENTITLEMENT_ID]. additionalNotificationTargets: {} approvalWorkflow: manualApprovals: requireApproverJustification: true steps: - approvalsNeeded: 1 approvers: - principals: - user:alex@example.com createTime: '2024-04-09T02:39:37.011866832Z' eligibleUsers: - principals: - user:bola@example.com etag: 00000000000000000000000000000000000000000000000000000000000= maxRequestDuration: 7200s name: projects/my-project/locations/global/entitlements/ENTITLEMENT_ID privilegedAccess: gcpIamAccess: resource: //cloudresourcemanager.googleapis.com/projects/my-project resourceType: cloudresourcemanager.googleapis.com/Project roleBindings: - role: roles/storage.admin requesterJustificationConfig: unstructured: {} state: AVAILABLE updateTime: '2024-04-09T02:39:40.066770306Z'
REST
Privileged Access Manager API 的 createEntitlement
方法可在组织、文件夹或项目级别创建权限。
在使用任何请求数据之前,请先进行以下替换:
SCOPE
:要创建使用权的组织、文件夹或项目,格式为organizations/ORGANIZATION_ID
、folders/FOLDER_ID
或projects/PROJECT_ID
。项目 ID 是字母数字字符串,例如my-project
。文件夹和组织 ID 是数字,例如123456789012
。ENTITLEMENT_ID
:要创建的使用权 ID。ID 必须为 4-63 个字符,并且使用以下字符:[a-z0-9-]
。第一个字符必须是字母。REQUEST_ID
:可选。必须是非零 UUID。 如果服务器收到带有请求 ID 的请求,则会检查是否在过去 60 分钟内已完成带有该 ID 的其他请求。如果是,则系统会忽略新请求。RESOURCE_MANAGER_RESOURCE_TYPE
:Organization
、Folder
或Project
,具体取决于作用域。ROLE
:在授予权利时要分配的角色。TIME_IN_SECONDS
:一项奖励的持续时长上限(以秒为单位)。-
REQUESTING_MEMBER
:可以请求授予权利的主账号。除allUsers
和allAuthenticatedUsers
之外,所有 主账号类型均受支持。 -
APPROVING_MEMBER
:可以批准使用权请求的主账号。有效的 主账号类型如下所示:- 用户
- 群组
- 网域
- 员工群组标识符
APPROVING_EMAIL
:可选。在请求授予访问权限时通知的其他电子邮件地址。与授权审批者关联的 Google 身份会自动收到通知。不过,您可能需要通知另一组电子邮件地址,尤其是在使用员工身份联合时。ADMIN_EMAIL_ADDRESS
:可选。当请求者被授予访问权限时,系统会向这些电子邮件地址发送通知。与授权审批者关联的 Google 身份会自动收到通知。不过,您可能需要通知另一组电子邮件地址,尤其是在使用员工身份联合时。REQUESTER_EMAIL_ADDRESS
:可选。当此使用权可供申请时,用于接收通知的其他电子邮件地址。 与授权请求者关联的 Google 身份会自动收到通知。不过,您可能需要通知另一组电子邮件地址,尤其是在使用员工身份联合时。
HTTP 方法和网址:
POST https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/entitlements?entitlementId=ENTITLEMENT_ID&requestId=REQUEST_ID
请求 JSON 正文:
{ "privilegedAccess": { "gcpIamAccess": { "resourceType": "cloudresourcemanager.googleapis.com/RESOURCE_MANAGER_RESOURCE_TYPE", "resource": "//cloudresourcemanager.googleapis.com/SCOPE", "roleBindings": [ { "role": "ROLE_1" }, { "role": "ROLE_2" } ] } }, "maxRequestDuration": "TIME_IN_SECONDSs", "eligibleUsers": [ { "principals": [ "REQUESTING_MEMBER_1", "REQUESTING_MEMBER_2", ... ] } ], "approvalWorkflow": { "manualApprovals": { "requireApproverJustification": true, "steps": [ { "approvers": [ { "principals": [ "APPROVING_MEMBER_1", "APPROVING_MEMBER_2", ... ] } ], "approvalsNeeded": 1, "approverEmailRecipients": [ "APPROVING_EMAIL_1", "APPROVING_EMAIL_2", ... ] } ] } }, "requesterJustificationConfig": { "unstructured": { } }, "additionalNotificationTargets": { "adminEmailRecipients": [ "ADMIN_EMAIL_ADDRESS_1", "ADMIN_EMAIL_ADDRESS_2", ... ], "requesterEmailRecipients": [ "REQUESTER_EMAIL_ADDRESS_1", "REQUESTER_EMAIL_ADDRESS_2", ... ] } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/my-project/locations/global/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.privilegedaccessmanager.v1beta.OperationMetadata", "createTime": "2024-03-05T03:35:14.596739353Z", "target": "projects/my-project/locations/global/entitlements/ENTITLEMENT_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1beta" }, "done": false }
如需检查创建操作的进度,您可以向以下端点发送 GET
请求:
https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/operations/OPERATION_ID
向以下端点发送 GET
请求以列出所有操作:
https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/operations