本文档介绍了在您没有所需资源访问权限时可能会遇到的错误消息,并说明了如何解决这些错误。
权限错误消息
当您尝试访问无权访问的资源时, Trusted Cloud 控制台、Google Cloud CLI 和 REST API 都会显示错误消息。
这些错误消息可能由以下任何原因引起:
- 您没有所需权限。您必须拥有具有所需权限的允许政策角色绑定。如果您没有所需的权限, Trusted Cloud 会显示一条错误消息。
- 有一项阻止访问权限的拒绝政策。如果拒绝政策阻止您使用任何必需的权限,则 Trusted Cloud 会显示一条错误消息。
- 资源不存在。如果资源不存在,Trusted Cloud 会显示一条错误消息。
以下部分展示了这些错误消息在Trusted Cloud 控制台、gcloud CLI 和 REST API 中的显示方式。
Trusted Cloud 控制台错误消息
在 Trusted Cloud 控制台中,错误消息类似于以下内容:
这些错误消息包含以下信息:
- 您尝试访问的资源:资源名称显示在错误页面的标题中,表示您在遇到权限错误时尝试访问的资源。
- 缺少的必需权限:您需要具备的权限列表,才能访问相应资源。
包含所需权限的 IAM 角色列表:此列表并非详尽无遗,其中包含精选的角色列表,Trusted 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"
}
]
}
}
请求缺少的权限
如果您无权修改组织中与访问权限相关的政策,则无法自行解决权限错误。不过,您可以使用错误消息中的上下文向管理员发送访问权限申请。
您可以通过以下方式申请访问权限:
请求所需权限。此解决方案适用于所有类型的权限错误。
申请具有所需权限的角色。只有当权限错误是由您的允许政策引起的时,此解决方案才有效。
如果您使用的是 Trusted Cloud 控制台,并且拥有授予角色所需的权限,则可以直接从错误消息中授予自己相应角色,而无需提出申请。如需了解详情,请参阅在 Trusted Cloud 控制台中自行授予角色。
请求所需权限
如需请求所需权限,请执行以下操作:
控制台
在缺失权限的列表中,点击请求权限。
在申请访问权限面板中,选择您希望以哪种方式通知管理员:
gcloud
从错误消息中复制缺少的权限列表,然后使用您首选的请求管理系统请求管理员授予您这些权限。
REST
从错误消息中复制缺少的权限列表,然后使用您首选的请求管理系统请求管理员授予您这些权限。
请求角色
如果权限错误是由允许政策引起的,您可以请求管理员授予您具有所需权限的角色,以解决该错误。
如果错误是因其他政策类型而起,或者您不确定是哪种政策类型导致了错误,请改为请求所需的权限。
控制台
在申请特定角色部分,查看推荐的角色列表,然后选择要申请的角色。您可以点击相应角色,查看有关该角色的更多详细信息。仅当权限错误是由允许政策引起的时,系统才会显示此部分。
点击您选择的角色,然后点击申请角色。
在申请访问权限面板中,选择用于通知管理员的选项之一:
如果您的组织支持紧急情况联系人,您可以向组织的技术紧急情况联系人发送自动生成的电子邮件。如需发送此电子邮件,请执行以下操作:
- 选择发送自动生成的电子邮件。
- 添加您想要包含的有关请求的任何背景信息。
- 点击发送请求。
如需复制访问权限申请并将其粘贴到您首选的请求管理系统中,请执行以下操作:
- 如果您的组织支持“重要联系人”功能,但您想手动发送通知,请选择手动通知。
- 添加您想要包含的有关请求的任何背景信息。
- 点击复制消息。
- 将请求粘贴到您首选的请求管理系统中。
您的管理员会收到您的访问权限申请以及您提供的任何其他背景信息。
gcloud
确定包含缺失权限的 IAM 角色。
如需查看包含指定权限的所有角色,请在 IAM 角色和权限索引中搜索该权限,然后点击该权限名称。
如果没有预定义角色适合您的使用场景,您可以改为创建自定义角色。
使用您偏好的请求管理系统,请求管理员授予您相应角色。
REST
确定包含缺失权限的 IAM 角色。
如需查看包含指定权限的所有角色,请在 IAM 角色和权限索引中搜索该权限,然后点击该权限名称。
如果没有预定义角色适合您的使用场景,您可以改为创建自定义角色。
使用您偏好的请求管理系统,请求管理员授予您相应角色。
在 Trusted Cloud 控制台中自行授予角色
如果您在 Trusted Cloud 控制台中遇到权限错误,并且拥有授予角色所需的权限,则可以直接从权限错误消息中向自己授予角色:
在选择要授予的角色部分,查看推荐的角色列表,然后选择要申请的角色。您可以点击相应角色,查看有关该角色的更多详细信息。
如需授予所选角色,请点击该角色,然后点击授予访问权限。
解决访问权限请求中的权限错误
如果您是管理员,则可能会收到在 Trusted Cloud 控制台中遇到权限错误的用户发来的访问权限请求。这些请求通常会发送给以下人员:
贵组织的技术重要联系人。如果贵组织已启用紧急联系人,那么在Trusted Cloud 控制台中遇到权限错误的用户可以选择向其组织的技术紧急联系人发送访问权限请求。
通过您首选的请求管理系统配置的联系人。 在 Trusted 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
您可以通过以下方式处理这些请求:
直接解决访问权限问题:访问权限请求包含指向 Trusted Cloud 控制台中访问权限请求面板的链接。如果权限错误是由允许政策引起的,您可以直接通过该面板解决访问权限问题。
在访问权限请求面板中,您可以查看请求详情,并选择如何回复请求。您可以通过以下方式进行回复:
- 授予所请求的角色
- 将用户添加到已具有所需访问权限的现有群组
- 拒绝请求
在政策问题排查工具中查看更多详情:访问权限请求还包含指向政策问题排查工具的链接,您可以通过该工具查看哪些政策阻止了用户的访问权限。您可以根据此信息决定如何解决用户的访问权限问题。如需了解详情,请参阅本页面上的确定导致权限错误的政策。
手动解决权限错误
如果您是管理员,并且有权修改组织中与访问权限相关的政策,那么无论导致权限错误的政策类型是什么,您都可以使用这些策略来解决权限错误。
如需解决权限错误,您首先需要确定哪些政策(允许或拒绝)导致了该错误。然后,您可以解决该错误。
确定导致权限错误的政策
如需确定哪些政策导致了权限错误,请使用政策问题排查工具。
政策问题排查工具可帮助您了解主账号是否可以访问某项资源。给定主账号、资源和权限后,政策问题排查工具会检查影响主账号访问权限的允许政策、拒绝政策和主账号访问权限边界 (PAB) 政策。然后,该工具会根据这些政策告知您主账号是否可以使用指定权限访问相应资源。此外,它还会列出相关政策并说明这些政策对主账号访问权限的影响。如需了解如何排查访问权限问题以及解读政策问题排查工具的结果,请参阅排查 IAM 权限问题。
Trusted Cloud 控制台中的错误消息包含一个链接,指向 Policy Troubleshooter 结果页面,其中显示了请求中涉及的主账号、权限和资源。如需查看此链接,请点击查看问题排查详情,然后在问题排查网址字段中找到相应的值。
更新访问权限以解决权限错误
了解哪些政策导致了权限错误后,您可以采取措施来解决该错误。
通常,解决错误需要创建或更新允许或拒绝政策。
不过,还有其他方法可以解决错误,而无需更新政策。例如,您可以将用户添加到具有所需权限的群组,也可以添加标记以将资源从政策中排除。
如需了解如何解决因每种不同类型的政策而导致的权限错误,请参阅以下内容:
解决允许政策权限错误
如需解决因允许政策而导致的权限错误,请执行以下操作之一。
授予具有所需权限的角色
如需查找并授予具有所需权限的角色,请执行以下操作:
确定包含缺失权限的 IAM 角色。
如需查看包含指定权限的所有角色,请在 IAM 角色和权限索引中搜索该权限,然后点击该权限名称。
如果没有预定义角色适合您的使用场景,您可以改为创建自定义角色。
确定要向其授予角色的主账号:
向主账号授予角色。
将用户添加到 Google 群组
如果向某个 Google 群组授予了针对某个资源的角色,则该群组的所有成员都可以使用该角色中的权限来访问相应资源。
如果现有群组已被授予具有所需权限的角色,那么您可以通过将用户添加到该群组来向其授予所需权限:
确定具有所需权限的角色所对应的群组。如果您已使用政策问题排查工具排查请求问题,则可以查看政策问题排查工具的结果,以确定具有所需权限的群组。
或者,您可以使用政策分析器来确定具有所需权限的群组。
解决拒绝政策权限错误
如需解决与拒绝政策相关的权限错误,请执行以下操作之一。
将自己从拒绝政策中排除
如果拒绝规则阻止了用户对资源的访问,您可以执行以下操作之一,将用户从该规则中豁免:
将相应用户添加为拒绝规则中的例外主账号。例外主账号是指不受拒绝规则影响的主账号,即使这些主账号属于拒绝规则中包含的群组,也是如此。
如需向拒绝规则添加例外主账号,请按照更新拒绝政策的步骤操作。更新拒绝政策时,找到阻止访问的拒绝规则,然后将用户的主账号标识符添加为例外主账号。
将用户添加到不受该规则约束的群组。如果某个群组被列为例外主账号,则该群组的所有成员都可不受拒绝规则的限制。
如需将用户添加到豁免群组,请执行以下操作:
从拒绝政策中移除权限
拒绝规则可防止列出的主账号使用特定权限。如果拒绝规则阻止了用户对资源的访问,您可以从拒绝规则中移除用户所需的权限。
如需从拒绝规则中移除权限,请按照更新拒绝政策的步骤操作。更新拒绝政策时,找到阻止访问权限的拒绝规则,然后执行以下操作之一:
- 如果拒绝政策单独列出了所需权限,请找到所需权限并将其从拒绝规则中移除。
- 如果拒绝规则使用权限组,请添加所需的权限作为例外权限。例外权限是指不受拒绝规则限制的权限,即使这些权限属于规则中包含的权限组也是如此。
让相应资源不受拒绝政策约束
您可以在拒绝政策中使用条件,以便根据资源的标记应用拒绝规则。如果资源的标记不符合拒绝规则中的条件,则拒绝规则不适用。
如果拒绝规则阻止了对资源的访问,您可以修改拒绝规则中的条件或资源上的标记,以确保拒绝规则不适用于该资源。