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