本文档介绍了在您没有所需资源访问权限时可能会遇到的错误消息,并说明了如何解决这些错误。
权限错误消息
当您尝试访问无权访问的资源时, Google Cloud 控制台、Google Cloud CLI 和 REST API 都会显示错误消息。
这些错误消息可能由以下任何原因引起:
- 您没有所需权限。您必须拥有允许政策角色绑定,或者拥有具有所需权限的角色的有效 Privileged Access Manager 权益。如果您没有所需的权限,Google Cloud 会显示一条错误消息。
- 有一项阻止访问权限的拒绝政策。如果拒绝政策阻止您使用任何必需的权限,则 Google Cloud 会显示一条错误消息。
- 您不符合访问相应资源的条件。如果您受任何主账号访问权限边界政策的约束,则您尝试访问的资源必须包含在相应政策的主账号访问权限边界规则中。如果不是, Google Cloud 会显示一条错误消息。
- 资源不存在。如果资源不存在,Google Cloud 会显示一条错误消息。
以下部分展示了这些错误消息在Google Cloud 控制台、gcloud CLI 和 REST API 中的显示方式。
Google Cloud 控制台错误消息
在 Google Cloud 控制台中,错误消息类似于以下内容:
这些错误消息包含以下信息:
- 您尝试访问的资源:资源名称显示在错误页面的标题中,表示您在遇到权限错误时尝试访问的资源。
- 缺少的必需权限:您需要具备的权限列表,才能访问相应资源。
包含所需权限的角色所对应的 Privileged Access Manager 授权列表:此列表并非详尽无遗,仅包含 Google Cloud 建议用于解决访问权限问题的热门授权。
此列表仅适用于可通过更新授予其他 IAM 角色来解决的权限错误。
您可以点击某个授权,详细了解该授权,并针对该授权申请许可。如需了解详情,请参阅本文档中的申请 Privileged Access Manager 访问权限授予。
如果没有任何授权包含所需权限,则错误消息页面不会包含授权列表。
包含所需权限的 IAM 角色列表:此列表并非详尽无遗,其中包含精选的角色列表,Google Cloud 建议您使用这些角色来解决访问问题。排序依据为角色允许的操作类型、服务相关性以及权限数量。
如果您拥有授予角色所需的权限,则此部分标题为选择要授予的角色。如果您没有所需权限,此部分将显示为申请特定角色。
此列表仅适用于可通过授予其他 IAM 角色来解决的权限错误。
您可以点击某个角色,详细了解该角色,并申请获得该角色。如果您拥有授予角色所需的权限,则可以自行授予角色,而无需提出申请。
Google Cloud CLI 和 REST API 错误消息
错误消息的确切措辞取决于您运行的命令。不过,它通常包含以下信息:
- 所需权限
- 您尝试对其执行操作的资源
- 进行身份验证的账号
例如,如果您没有列出项目中的存储分区的权限,则会看到类似如下的错误消息:
gcloud
ERROR: (gcloud.storage.buckets.list) HTTPError 403:
EMAIL_ADDRESS does not have
storage.buckets.list access to the Google Cloud project. Permission
'storage.buckets.list' denied on resource (or it may not exist). This command
is authenticated as EMAIL ADDRESS which
is the active account specified by the [core/account] property.
REST
{
"error": {
"code": 403,
"message": "EMAIL ADDRESS does not have storage.buckets.list access to the Google Cloud project. Permission 'storage.buckets.list' denied on resource (or it may not exist).",
"errors": [
{
"message": "EMAIL ADDRESS does not have storage.buckets.list access to the Google Cloud project. Permission 'storage.buckets.list' denied on resource (or it may not exist).",
"domain": "global",
"reason": "forbidden"
}
]
}
}
请求缺少的权限
如果您无权修改组织中与访问权限相关的政策,则无法自行解决权限错误。不过,您可以使用错误消息中的上下文向管理员发送访问权限申请。
您可以通过以下方式申请访问权限:
请求所需权限。此解决方案适用于所有类型的权限错误。
请求授予 Privileged Access Manager 使用权。只有在权限错误是因您的允许政策而导致,并且您拥有具有所需权限的 Privileged Access Manager 授权时,此解决方案才有效。
申请具有所需权限的角色。只有当权限错误是由您的允许政策引起的时,此解决方案才有效。
如果您使用的是 Google Cloud 控制台,并且拥有授予角色所需的权限,则可以直接从错误消息中授予自己相应角色,而无需提出申请。如需了解详情,请参阅在 Google Cloud 控制台中自行授予角色。
请求所需权限
如需请求所需权限,请执行以下操作:
控制台
在缺失权限的列表中,点击请求权限。
在申请访问权限面板中,选择您希望以哪种方式通知管理员:
gcloud
从错误消息中复制缺少的权限列表,然后使用您首选的请求管理系统请求管理员授予您这些权限。
REST
从错误消息中复制缺少的权限列表,然后使用您首选的请求管理系统请求管理员授予您这些权限。
请求授予 Privileged Access Manager 使用权
Privileged Access Manager 使用权定义了一组您可以随时请求的 IAM 角色。如果您的请求成功,系统会暂时授予您所请求的角色。
只有当权限错误是因您的允许政策而导致,并且您拥有具有所需权限的 Privileged Access Manager 授权时,此问题解决选项才可用。
如需请求授予现有使用权,请执行以下操作:
控制台
当您遇到错误消息时,请找到申请临时访问权限部分。本部分列出了包含具有所需权限的角色的所有 Privileged Access Manager 授权。
如果未返回请求临时访问权限部分,则表示没有包含所需权限的授权。在这种情况下,您可以让管理员创建新的授权。
查看可用使用权列表,然后选择要请求授予的使用权。
点击相应授权,然后点击申请访问权限。
在请求授权面板中,输入请求授权的详细信息:
授权所需的时长,最长不超过对使用权设置的时长上限。
如果需要,请提供授权理由。
可选:要通知授权请求的电子邮件地址。与审批者关联的 Google 身份会自动收到通知。不过,您可能需要通知另一组电子邮件地址,尤其是在使用员工身份联合时。
点击请求授权。
如需查看您的授权历史记录(包括审批状态),请前往Google Cloud 控制台中的 Privileged Access Manager 页面,然后依次点击授权 > 我的授权。
gcloud
REST
请求角色
如果权限错误是由允许政策引起的,您可以请求管理员授予您具有所需权限的角色,以解决该错误。
如果错误是因其他政策类型而起,或者您不确定是哪种政策类型导致了错误,请改为请求所需的权限。
控制台
在申请特定角色部分,查看推荐的角色列表,然后选择要申请的角色。您可以点击相应角色,查看有关该角色的更多详细信息。仅当权限错误是由允许政策引起的时,系统才会显示此部分。
点击您选择的角色,然后点击申请角色。
在申请访问权限面板中,选择用于通知管理员的选项之一:
如果您的组织支持紧急情况联系人,您可以向组织的技术紧急情况联系人发送自动生成的电子邮件。如需发送此电子邮件,请执行以下操作:
- 选择发送自动生成的电子邮件。
- 添加您想要包含的有关请求的任何背景信息。
- 点击发送请求。
如需复制访问权限申请并将其粘贴到您首选的请求管理系统中,请执行以下操作:
- 如果您的组织支持“重要联系人”功能,但您想手动发送通知,请选择手动通知。
- 添加您想要包含的有关请求的任何背景信息。
- 点击复制消息。
- 将请求粘贴到您首选的请求管理系统中。
您的管理员会收到您的访问权限申请以及您提供的任何其他背景信息。
gcloud
确定包含缺失权限的 IAM 角色。
如需查看包含指定权限的所有角色,请在 IAM 角色和权限索引中搜索该权限,然后点击该权限名称。
如果没有预定义角色适合您的使用场景,您可以改为创建自定义角色。
使用您偏好的请求管理系统,请求管理员授予您相应角色。
REST
确定包含缺失权限的 IAM 角色。
如需查看包含指定权限的所有角色,请在 IAM 角色和权限索引中搜索该权限,然后点击该权限名称。
如果没有预定义角色适合您的使用场景,您可以改为创建自定义角色。
使用您偏好的请求管理系统,请求管理员授予您相应角色。
在 Google Cloud 控制台中自行授予角色
如果您在 Google Cloud 控制台中遇到权限错误,并且拥有授予角色所需的权限,则可以直接从权限错误消息中向自己授予角色:
在选择要授予的角色部分,查看推荐的角色列表,然后选择要申请的角色。您可以点击相应角色,查看有关该角色的更多详细信息。
如需授予所选角色,请点击该角色,然后点击授予访问权限。
解决访问权限请求中的权限错误
如果您是管理员,则可能会收到在 Google Cloud 控制台中遇到权限错误的用户发来的访问权限请求。这些请求通常会发送给以下人员:
贵组织的技术重要联系人。如果贵组织已启用紧急联系人,那么在Google Cloud 控制台中遇到权限错误的用户可以选择向其组织的技术紧急联系人发送访问权限请求。
通过您首选的请求管理系统配置的联系人。 在 Google Cloud 控制台中遇到权限错误的用户可以选择复制访问权限请求消息,然后使用自己偏好的请求管理系统发送该消息。
这些消息通常采用以下格式:
user@example.com is requesting a role on the resource example.com:example-project.
Requestor's message:
"I need access to example-project to complete my work."
You may be able to resolve this request by granting access directly at:
ACCESS_REQUEST_PANEL_URL
Or use the Policy Troubleshooter to determine what's preventing access for user@example.com:
POLICY_TROUBLESHOOTER_URL
您可以通过以下方式处理这些请求:
直接解决访问权限问题:访问权限请求包含指向 Google Cloud 控制台中访问权限请求面板的链接。如果权限错误是由允许政策引起的,您可以直接通过该面板解决访问权限问题。
在访问权限请求面板中,您可以查看请求详情,并选择如何回复请求。您可以通过以下方式进行回复:
- 授予所请求的角色
- 将用户添加到已具有所需访问权限的现有群组
- 拒绝请求
在政策问题排查工具中查看更多详情:访问权限请求还包含指向政策问题排查工具的链接,您可以通过该工具查看哪些政策阻止了用户的访问权限。您可以根据此信息决定如何解决用户的访问权限问题。如需了解详情,请参阅本页面上的确定导致权限错误的政策。
手动解决权限错误
如果您是管理员,并且有权修改组织中与访问权限相关的政策,那么无论导致权限错误的政策类型是什么,您都可以使用这些策略来解决权限错误。
如需解决权限错误,您首先需要确定哪些政策(允许、拒绝或主账号访问权限边界)导致了该错误。然后,您可以解决该错误。
确定导致权限错误的政策
如需确定哪些政策导致了权限错误,请使用政策问题排查工具。
政策问题排查工具可帮助您了解主账号是否可以访问某项资源。给定主账号、资源和权限后,政策问题排查工具会检查影响主账号访问权限的允许政策、拒绝政策和主账号访问权限边界 (PAB) 政策。然后,该工具会根据这些政策告知您主账号是否可以使用指定权限访问相应资源。此外,它还会列出相关政策并说明这些政策对主账号访问权限的影响。如需了解如何排查访问权限问题以及解读政策问题排查工具的结果,请参阅排查 IAM 权限问题。
Google Cloud 控制台中的错误消息包含一个链接,指向 Policy Troubleshooter 结果页面,其中显示了请求中涉及的主账号、权限和资源。如需查看此链接,请点击查看问题排查详情,然后在问题排查网址字段中找到相应的值。
更新访问权限以解决权限错误
了解哪些政策导致了权限错误后,您可以采取措施来解决该错误。
通常,解决错误需要创建或更新允许政策、拒绝政策或主账号访问权限边界政策。
不过,还有其他方法可以解决错误,而无需更新政策。例如,您可以将用户添加到具有所需权限的群组,也可以添加标记以将资源从政策中排除。
如需了解如何解决因每种不同类型的政策而导致的权限错误,请参阅以下内容:
解决允许政策权限错误
如需解决因允许政策而导致的权限错误,请执行以下操作之一。
授予具有所需权限的角色
如需查找并授予具有所需权限的角色,请执行以下操作:
确定包含缺失权限的 IAM 角色。
如需查看包含指定权限的所有角色,请在 IAM 角色和权限索引中搜索该权限,然后点击该权限名称。
如果没有预定义角色适合您的使用场景,您可以改为创建自定义角色。
确定要向其授予角色的主账号:
向主账号授予角色。
批准针对 Privileged Access Manager 使用权的授权
借助 Privileged Access Manager 授权,用户可以请求被授予特定 IAM 角色。如果您批准用户的授予请求,则系统会暂时授予用户所请求的角色。
如果用户已拥有 Privileged Access Manager 权益,且该权益包含具有所需权限的角色,则可以请求使用该权益。在他们申请授权后,您可以批准授权,以解决他们的权限错误。
如果用户没有权利,您可以为其创建新权利,以便其针对该权利请求授权。
将用户添加到 Google 群组
如果向某个 Google 群组授予了针对某个资源的角色,则该群组的所有成员都可以使用该角色中的权限来访问相应资源。
如果现有群组已被授予具有所需权限的角色,那么您可以通过将用户添加到该群组来向其授予所需权限:
确定具有所需权限的角色所对应的群组。如果您已使用政策问题排查工具排查请求问题,则可以查看政策问题排查工具的结果,以确定具有所需权限的群组。
或者,您可以使用政策分析器来确定具有所需权限的群组。
解决拒绝政策权限错误
如需解决与拒绝政策相关的权限错误,请执行以下操作之一。
将自己从拒绝政策中排除
如果拒绝规则阻止了用户对资源的访问,您可以执行以下操作之一,将用户从该规则中豁免:
将相应用户添加为拒绝规则中的例外主账号。例外主账号是指不受拒绝规则影响的主账号,即使这些主账号属于拒绝规则中包含的群组,也是如此。
如需向拒绝规则添加例外主账号,请按照更新拒绝政策的步骤操作。更新拒绝政策时,找到阻止访问的拒绝规则,然后将用户的主账号标识符添加为例外主账号。
将用户添加到不受该规则约束的群组。如果某个群组被列为例外主账号,则该群组的所有成员都可不受拒绝规则的限制。
如需将用户添加到豁免群组,请执行以下操作:
从拒绝政策中移除权限
拒绝规则可防止列出的主账号使用特定权限。如果拒绝规则阻止了用户对资源的访问,您可以从拒绝规则中移除用户所需的权限。
如需从拒绝规则中移除权限,请按照更新拒绝政策的步骤操作。更新拒绝政策时,找到阻止访问权限的拒绝规则,然后执行以下操作之一:
- 如果拒绝政策单独列出了所需权限,请找到所需权限并将其从拒绝规则中移除。
- 如果拒绝规则使用权限组,请添加所需的权限作为例外权限。例外权限是指不受拒绝规则限制的权限,即使这些权限属于规则中包含的权限组也是如此。
让相应资源不受拒绝政策约束
您可以在拒绝政策中使用条件,以便根据资源的标记应用拒绝规则。如果资源的标记不符合拒绝规则中的条件,则拒绝规则不适用。
如果拒绝规则阻止了对资源的访问,您可以修改拒绝规则中的条件或资源上的标记,以确保拒绝规则不适用于该资源。
解决主账号访问边界政策权限错误
默认情况下,主账号有资格访问任何 Google Cloud 资源。不过,如果他们受任何主账号访问权限边界政策的约束,则只能有资格访问他们受约束的主账号访问权限边界政策中列出的资源。在这些情况下,主账号访问权限边界政策可能会阻止主账号访问资源。
如需解决与主账号访问权限边界政策相关的错误,请执行以下操作之一。
将资源添加到主账号访问权限边界政策
如果资源包含在用户受约束的主账号访问权限边界政策中,则用户有资格访问该资源。
如需向主账号访问权限边界政策添加资源,请执行以下操作之一:
创建新的 Principal Access Boundary Policy:
- 创建新的主账号访问权限边界政策,其中包含相应资源。
将政策绑定到包含该用户的主账号集。
如需详细了解主账号集,请参阅支持的主账号集。
更新现有的主账号访问权限边界政策:
- 列出用户所属的主账号集的访问权限边界政策绑定。每个绑定都表示绑定到主账号集的主账号访问权限边界政策。
- 从绑定列表中,确定要修改的主账号访问边界政策。
- 可选:列出主账号访问权限边界政策的绑定,以查看该政策绑定到了哪些主账号集。更新政策会影响该政策绑定到的所有主账号集的访问权限。
- 修改主账号访问权限边界政策,使其包含相应资源。
添加条件以豁免特定主账号
您可以使用主账号访问权限边界政策绑定中的条件来细化主账号访问权限边界政策的适用主账号。
如果您不希望用户受主账号访问权限边界政策的约束,请在主账号访问权限边界政策绑定中使用条件来免除用户受主账号访问权限边界政策的约束。
如需通过此方法解决错误,您必须将用户从其受限的每项主账号访问权限边界政策中排除。这样做会使相应用户有资格访问任何 Google Cloud 资源。
我们不建议采用这种方法。不妨考虑将资源添加到主账号访问权限边界政策。
如需查看用户受哪些主账号访问权限边界政策的约束,请列出用户所属主账号集的政策绑定。每个绑定都表示绑定到主账号集的主账号访问权限边界政策。
如需了解如何向主账号访问权限边界政策绑定添加条件,请参阅修改主账号访问权限边界政策的现有政策绑定。