使用 Privileged Access Manager 请求临时提升访问权限

如需暂时提升权限,您可以在 Privileged Access Manager (PAM) 中申请在固定时间内针对使用权授予访问权限。

权利包含在授予请求成功后向您授予的角色。授予权限结束后,Privileged Access Manager 会移除这些角色。

如果您想针对某项权利申请授予,请注意以下事项:

  • 您只能针对已添加您的权利请求授予。如需添加到某项使用权中,请与管理该使用权的负责人联系。

  • 授予请求可能需要获得批准才能获得授予,具体取决于其设置方式。

  • 如果授权请求需要获得批准,但在 24 小时内未获得批准或拒绝,则授权状态会更改为 Expired。在此之后,如果仍需要提升权限,您必须重新提交授予请求。

  • 成功的授予请求可能需要几分钟时间才能生效。

使用 Google Cloud 控制台请求授权

如需针对某项权利请求授予权限,请按照以下说明操作:

  1. 前往 Privileged Access Manager 页面。

    前往 Privileged Access Manager

  2. 选择您要请求授予访问权限的组织、文件夹或项目。

  3. 我的权利标签页中,找到要申请的权利,然后点击同一行中的请求授予

  4. 提供以下详细信息:

    • 授权所需的时长,最长不超过在权利上设置的时长上限。

    • 如果需要,请提供授予权限的理由。

    • 可选:要通知授予请求的电子邮件地址。与审批人关联的 Google 身份会自动收到通知。不过,您可能需要通知另一组电子邮件地址,尤其是在使用员工身份联合时。

  5. 点击请求授权

  6. 如需查看您的授权历史记录(包括审批状态),请点击授权标签页和我的授权标签页。

以程序化方式请求授权

如需针对某项权利申请授予,您需要完成以下步骤:

  1. 搜索您可以请求授予使用权的有效使用权 ID。

  2. 请求授权。

之后,您可以查看授予的权限的状态,看看它是否处于有效状态,也就是说您是否已获得临时升级权限。

搜索可用的权限

gcloud

使用 grant-requester 调用方访问权限类型的 gcloud beta pam entitlements search 命令可搜索您可以请求授权的使用权。

在使用下面的命令数据之前,请先进行以下替换:

  • RESOURCE_TYPE:可选。该权利所属的资源类型。使用值 organizationfolderproject
  • RESOURCE_ID:与 RESOURCE_TYPE 一起使用。您要为其管理使用权限的 Google Cloud 项目、文件夹或组织的 ID。项目 ID 是字母数字字符串,例如 my-project。文件夹和组织 ID 是数字,例如 123456789012

执行以下命令:

Linux、macOS 或 Cloud Shell

gcloud beta pam entitlements search \
    --caller-access-type=grant-requester \
    --location=global \
    --RESOURCE_TYPE=RESOURCE_ID

Windows (PowerShell)

gcloud beta pam entitlements search `
    --caller-access-type=grant-requester `
    --location=global `
    --RESOURCE_TYPE=RESOURCE_ID

Windows (cmd.exe)

gcloud beta pam entitlements search ^
    --caller-access-type=grant-requester ^
    --location=global ^
    --RESOURCE_TYPE=RESOURCE_ID

您应该会收到类似如下所示的响应:

additionalNotificationTargets: {}
approvalWorkflow:
  manualApprovals:
    requireApproverJustification: true
    steps:
    - approvalsNeeded: 1
      approvers:
      - principals:
        - user:alex@example.com
createTime: '22024-03-26T11:07:37.009498890Z'
etag: ETAG
maxRequestDuration: 3600s
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:
  notMandatory: {}
state: AVAILABLE
updateTime: '2024-03-26T11:07:40.056780645Z'

REST

Privileged Access Manager API 的 searchEntitlements 方法使用 GRANT_REQUESTER 调用方访问权限类型搜索您可以申请授权的权限。

在使用任何请求数据之前,请先进行以下替换:

  • SCOPE:相应权利在其中的组织、文件夹或项目,格式为 organizations/ORGANIZATION_IDfolders/FOLDER_IDprojects/PROJECT_ID。项目 ID 是字母数字字符串,例如 my-project。文件夹和组织 ID 是数字,例如 123456789012
  • FILTER:可选。返回字段值与 AIP-160 表达式匹配的权限。
  • PAGE_SIZE:可选。响应中要返回的项数。
  • PAGE_TOKEN:可选。使用上一个响应中返回的页码令牌,从哪个页面开始响应。

HTTP 方法和网址:

GET https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/entitlements:search?callerAccessType=GRANT_REQUESTER&filter=FILTER&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

[
  {
    "name": "projects/my-project/locations/global/entitlements/ENTITLEMENT_ID",
    "createTime": "2023-11-21T17:28:39.962144708Z",
    "updateTime": "2023-11-21T17:28:43.160309410Z",
    "eligibleUsers": [
      {
        "principals": [
          "user:alex@example.com"
        ]
      }
    ],
    "approvalWorkflow": {
      "manualApprovals": {
        "steps": [
          {
            "approvers": [
              {
                "principals": [
                  "user:bola@example.com"
                ]
              }
            ],
            "approvalsNeeded": 1
          }
        ]
      }
    },
    "privilegedAccess": {
      "gcpIamAccess": {
        "resourceType": "cloudresourcemanager.googleapis.com/Project",
        "resource": "//cloudresourcemanager.googleapis.com/projects/my-project",
        "roleBindings": [
          {
            "role": "roles/storage.admin"
          }
        ]
      }
    },
    "maxRequestDuration": "14400s",
    "state": "AVAILABLE",
    "requesterJustificationConfig": {
      "unstructured": {}
    },
    "additionalNotificationTargets": {
      "adminEmailRecipients": [
        "alex@example.com"
      ]
    },
    "etag": "ETAG"
  }
]

请求授予使用权

gcloud

gcloud beta pam grants create 命令用于请求授权。

在使用下面的命令数据之前,请先进行以下替换:

  • ENTITLEMENT_ID:要针对其创建授权的权利 ID。
  • GRANT_DURATION:请求的授权时长(以秒为单位)。
  • JUSTIFICATION:请求授权的理由。
  • EMAIL_ADDRESS:可选。用于接收授予请求通知的其他电子邮件地址。与审批人关联的 Google 身份会自动收到通知。不过,您可能需要通知一组不同的电子邮件地址,尤其是在使用员工身份联合时。
  • RESOURCE_TYPE:可选。该权利所属的资源类型。使用值 organizationfolderproject
  • RESOURCE_ID:与 RESOURCE_TYPE 一起使用。您要为其管理使用权限的 Google Cloud 项目、文件夹或组织的 ID。项目 ID 是字母数字字符串,例如 my-project。文件夹和组织 ID 是数字,例如 123456789012

执行以下命令:

Linux、macOS 或 Cloud Shell

gcloud beta pam grants create \
    --entitlement=ENTITLEMENT_ID \
    --requested-duration="GRANT_DURATIONs" \
    --justification="JUSTIFICATION" \
    --location=global \
    [--additional-email-recipients=EMAIL_ADDRESS_1, EMAIL_ADDRESS_2] \
    --RESOURCE_TYPE=RESOURCE_ID

Windows (PowerShell)

gcloud beta pam grants create `
    --entitlement=ENTITLEMENT_ID `
    --requested-duration="GRANT_DURATIONs" `
    --justification="JUSTIFICATION" `
    --location=global `
    [--additional-email-recipients=EMAIL_ADDRESS_1, EMAIL_ADDRESS_2] `
    --RESOURCE_TYPE=RESOURCE_ID

Windows (cmd.exe)

gcloud beta pam grants create ^
    --entitlement=ENTITLEMENT_ID ^
    --requested-duration="GRANT_DURATIONs" ^
    --justification="JUSTIFICATION" ^
    --location=global ^
    [--additional-email-recipients=EMAIL_ADDRESS_1, EMAIL_ADDRESS_2] ^
    --RESOURCE_TYPE=RESOURCE_ID

您应该会收到类似如下所示的响应:

Created [GRANT_ID].

REST

Privileged Access Manager API 的 createGrant 方法会请求授权。

在使用任何请求数据之前,请先进行以下替换:

  • SCOPE:相应权利在其中的组织、文件夹或项目,格式为 organizations/ORGANIZATION_IDfolders/FOLDER_IDprojects/PROJECT_ID。项目 ID 是字母数字字符串,例如 my-project。文件夹和组织 ID 是数字,例如 123456789012
  • ENTITLEMENT_ID:要针对其创建授权的权利 ID。
  • REQUEST_ID:可选。必须是非零 UUID。 如果服务器收到带有请求 ID 的请求,则会检查是否在过去 60 分钟内已完成带有该 ID 的其他请求。如果是,则系统会忽略新请求。
  • GRANT_DURATION:请求的授权时长(以秒为单位)。
  • JUSTIFICATION:请求授权的理由。
  • EMAIL_ADDRESS:可选。用于接收授予请求通知的其他电子邮件地址。与审批人关联的 Google 身份会自动收到通知。不过,您可能需要通知另一组电子邮件地址,尤其是在使用员工身份联合时。

HTTP 方法和网址:

POST https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/entitlements/ENTITLEMENT_ID/grants?requestId=REQUEST_ID

请求 JSON 正文:

{
  "requestedDuration": "GRANT_DURATIONs",
  "justification": {
    "unstructuredJustification": "JUSTIFICATION"
  },
  "additionalEmailRecipients": [
    "EMAIL_ADDRESS_1",
    "EMAIL_ADDRESS_2",
    ...
  ]
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "name": "projects/my-project/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID",
  "createTime": "2024-03-06T03:08:49.330577625Z",
  "updateTime": "2024-03-06T03:08:49.330577625Z",
  "requester": "bola@example.com",
  "requestedDuration": "3600s",
  "justification": {
    "unstructuredJustification": "Emergency service for outage"
  },
  "state": "APPROVAL_AWAITED",
  "timeline": {
    "events": [
      {
        "eventTime": "2024-03-06T03:08:49.462765846Z",
        "requested": {
          "expireTime": "2024-03-07T03:08:49.462765846Z"
        }
      }
    ]
  },
  "privilegedAccess": {
    "gcpIamAccess": {
      "resourceType": "cloudresourcemanager.googleapis.com/Project",
      "resource": "//cloudresourcemanager.googleapis.com/projects/my-project",
      "roleBindings": [
        {
          "role": "roles/storage.admin"
        }
      ]
    }
  },
  "additionalEmailRecipients": [
    "alex@example.com"
  ]
}

查看授权请求的状态

gcloud

had-created 调用方关系一起使用的 gcloud beta pam grants search 命令可搜索您创建的授权。如需查看其状态,请在响应中查找 state 字段。

在使用下面的命令数据之前,请先进行以下替换:

  • ENTITLEMENT_ID:授予权限所属的权利的 ID。
  • RESOURCE_TYPE:可选。该权利所属的资源类型。使用值 organizationfolderproject
  • RESOURCE_ID:与 RESOURCE_TYPE 一起使用。您要为其管理使用权限的 Google Cloud 项目、文件夹或组织的 ID。项目 ID 是字母数字字符串,例如 my-project。文件夹和组织 ID 是数字,例如 123456789012

执行以下命令:

Linux、macOS 或 Cloud Shell

gcloud beta pam grants search \
    --entitlement=ENTITLEMENT_ID \
    --caller-relationship=had-created \
    --location=global \
    --RESOURCE_TYPE=RESOURCE_ID

Windows (PowerShell)

gcloud beta pam grants search `
    --entitlement=ENTITLEMENT_ID `
    --caller-relationship=had-created `
    --location=global `
    --RESOURCE_TYPE=RESOURCE_ID

Windows (cmd.exe)

gcloud beta pam grants search ^
    --entitlement=ENTITLEMENT_ID ^
    --caller-relationship=had-created ^
    --location=global ^
    --RESOURCE_TYPE=RESOURCE_ID

您应该会收到类似如下所示的响应:

additionalEmailRecipients:
- bola@example.com
createTime: '2024-03-07T00:34:32.557017289Z'
justification:
  unstructuredJustification: Renaming a file to mitigate issue #312
name: projects/my-project/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID
privilegedAccess:
  gcpIamAccess:
    resource: //cloudresourcemanager.googleapis.com/projects/my-project
    resourceType: cloudresourcemanager.googleapis.com/Project
    roleBindings:
    - role: roles/storage.admin
requestedDuration: 3600s
requester: cruz@example.com
state: DENIED
timeline:
  events:
  - eventTime: '2024-03-07T00:34:32.793769042Z'
    requested:
      expireTime: '2024-03-08T00:34:32.793769042Z'
  - denied:
      actor: alex@example.com
      reason: Issue has already been resolved
    eventTime: '2024-03-07T00:36:08.309116203Z'
updateTime: '2024-03-07T00:34:32.926967128Z'

授权可能具有以下状态:

状态 说明
正在激活 授权正在激活。
ACTIVATION_FAILED 由于无法重试的错误,Privileged Access Manager 无法授予角色。
有效 授予处于有效状态,并且主账号有权访问角色允许访问的资源。
APPROVAL_AWAITED 授权请求正在等待审批者做出决定。
被拒绝 授权请求已被审批者拒绝。
已结束 授权已结束,并且角色已从主账号中移除。
已过期 由于未在 24 小时内获得批准,授予请求已过期。
已撤消 授予的权限会被撤消,主账号将无法再访问角色允许访问的资源。
正在撤消 授权正在被撤销。

REST

Privileged Access Manager API 的 searchGrants 方法(与 HAD_CREATED 调用方关系一起使用)会搜索您创建的授权。如需查看其状态,请在响应中查找 state 字段。

在使用任何请求数据之前,请先进行以下替换:

  • SCOPE:相应权利在其中的组织、文件夹或项目,格式为 organizations/ORGANIZATION_IDfolders/FOLDER_IDprojects/PROJECT_ID。项目 ID 是字母数字字符串,例如 my-project。文件夹和组织 ID 是数字,例如 123456789012
  • ENTITLEMENT_ID:授予权限所属的权利的 ID。
  • FILTER:可选。返回字段值与 AIP-160 表达式匹配的授权。
  • PAGE_SIZE:可选。响应中要返回的项数。
  • PAGE_TOKEN:可选。使用上一个响应中返回的页码令牌,从哪个页面开始响应。

HTTP 方法和网址:

GET https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/entitlements/ENTITLEMENT_ID/grants:search?callerRelationship=HAD_CREATED&filter=FILTER&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "grants": [
    {
      "name": "projects/my-project/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID",
      "createTime": "2024-03-06T03:08:49.330577625Z",
      "updateTime": "2024-03-06T03:08:49.625874598Z",
      "requester": "alex@example.com",
      "requestedDuration": "3600s",
      "justification": {
        "unstructuredJustification": "Emergency service for outage"
      },
      "state": "APPROVAL_AWAITED",
      "timeline": {
        "events": [
          {
            "eventTime": "2024-03-06T03:08:49.462765846Z",
            "requested": {
              "expireTime": "2024-03-07T03:08:49.462765846Z"
            }
          }
        ]
      },
      "privilegedAccess": {
        "gcpIamAccess": {
          "resourceType": "cloudresourcemanager.googleapis.com/Project",
          "resource": "//cloudresourcemanager.googleapis.com/projects/my-project",
          "roleBindings": [
            {
              "role": "roles/storage.admin"
            }
          ]
        }
      },
      "additionalEmailRecipients": [
        "bola@google.com"
      ]
    }
  ]
}

下表详细说明了授权状态。

状态 说明
正在激活 授权正在激活。
ACTIVATION_FAILED 由于无法重试的错误,Privileged Access Manager 无法授予角色。
有效 授予处于有效状态,并且主账号有权访问角色允许访问的资源。
APPROVAL_AWAITED 授权请求正在等待审批者做出决定。
被拒绝 授权请求已被审批者拒绝。
已结束 授权已结束,并且角色已从主账号中移除。
已过期 由于未在 24 小时内获得批准,授予请求已过期。
已撤消 授予的权限会被撤消,主账号将无法再访问角色允许访问的资源。
正在撤消 授权正在被撤销。