本页面介绍授予、更改和撤消对接受允许政策的资源的访问权限的一般流程。
在 Identity and Access Management (IAM) 中,通过允许政策(也称为 IAM 政策)授予访问权限。允许政策已附加到 Google Cloud 资源。每个允许政策都包含一组角色绑定,这些角色绑定会将一个或多个主账号(例如用户或服务账号)与 IAM 角色相关联。这些角色绑定会向主账号授予指定的角色,包括允许政策所关联的资源以及该资源的所有后代。如需详细了解允许政策,请参阅了解允许政策。
本页面介绍如何使用 Google Cloud 控制台、Google Cloud CLI 和 REST API 管理资源的访问权限。您还可以使用 Google Cloud 客户端库管理访问权限。
准备工作
查看接受允许政策的资源类型列表。
所需权限
要管理对资源的访问权限,您需要具有获取资源的权限,以及获取和设置资源的允许政策的权限。这些权限采用以下格式,其中 SERVICE
是拥有该资源的服务的名称,RESOURCE_TYPE
是您要管理其访问权限的资源类型的名称:
SERVICE.RESOURCE_TYPE.get
SERVICE.RESOURCE_TYPE.getIamPolicy
SERVICE.RESOURCE_TYPE.setIamPolicy
例如,如需管理对 Compute Engine 实例的访问权限,您需要以下权限:
compute.instances.get
compute.instances.getIamPolicy
compute.instances.setIamPolicy
要获取所需的权限,请让管理员授予您包含权限的预定义角色或自定义角色。例如,管理员可以向您授予 Security Admin 角色 (roles/iam.securityAdmin
),该角色包括管理几乎所有 Google Cloud 资源的访问权限。
查看当前访问权限
以下部分介绍如何使用 Google Cloud 控制台、gcloud CLI 和 REST API 查看谁有权访问资源。您还可以使用 Google Cloud 客户端库获取资源的访问权限,以获取资源的允许政策。
控制台
在 Google Cloud 控制台中,转到列出要查看其访问权限的资源的页面。
例如,如需管理对 Compute Engine 实例的访问权限,请转到虚拟机实例页面。
选中要查看其访问权限的资源旁边的复选框。
确保信息面板可见。如果未显示,请点击显示信息面板。信息面板的权限标签页列出了有权访问该资源的所有主账号。
如果显示继承的权限开关处于开启状态,则列表中会包含具有继承角色的主账号;也就是说,其访问权限来自父级资源(而非资源本身)角色的主账号。如需详细了解政策继承,请参阅政策继承和资源层次结构。
gcloud
要查看谁有权访问您的资源,请获取该资源的允许政策。如需了解如何解读允许政策,请参阅了解允许政策。
如需获取资源的允许政策,请对资源运行 get-iam-policy
命令。
此命令的格式取决于您要访问的资源类型。如需查找资源的格式,请在 Google Cloud CLI 参考中查找资源的 get-iam-policy
命令参考。此引用先按服务,然后按资源进行整理。例如,如需获取 Compute Engine 虚拟机实例的允许政策,请遵循 gcloud compute instances get-iam-policy
参考文档中所述的格式。
(可选)在命令中添加以下参数以指定格式并导出结果:
--format=FORMAT > PATH
请提供以下值:
FORMAT
:政策所需的格式。请使用json
或yaml
。PATH
:指向政策的新输出文件的路径。
运行该命令时,资源的允许政策会输出到控制台或导出到指定文件。
REST
如需查看谁有权访问您的资源,请获取资源的允许政策。如需了解如何解读允许政策,请参阅了解允许政策。
如需获取资源的允许政策,请使用资源的 getIamPolicy
方法。
HTTP 方法、网址和请求正文取决于您要查看其访问权限的资源。如需查找这些详细信息,请找到拥有该资源的服务的 API 参考文档,然后找到该资源的 getIamPolicy
方法的引用。例如,Compute Engine 实例的 HTTP 方法、网址和请求正文在实例 getIamPolicy
参考文档中指定。
任何资源的 getIamPolicy
方法的响应都包含资源的允许政策。
授予或撤消单个角色
您可以使用 Google Cloud 控制台和 gcloud CLI 快速授予或撤消单个主账号的单个角色,而无需直接修改资源的允许政策。常见的主账号类型包括 Google 账号、服务账号、Google 群组和网域。如需查看所有主账号类型的列表,请参阅与身份相关的概念。
政策更改通常会在 2 分钟内生效。但是,在某些情况下,更改可能需要长达 7 分钟的时间才能传播到整个系统。
如果您需要帮助来确定最合适的预定义角色,请参阅选择预定义角色。
授予单个角色
如需向主账号授予单个角色,请执行以下操作:
控制台
在 Google Cloud 控制台中,转到列出要查看其访问权限的资源的页面。
例如,如需管理对 Compute Engine 实例的访问权限,请转到虚拟机实例页面。
选中要管理其访问权限的资源旁边的复选框。
确保信息面板可见。如果未显示,请点击显示信息面板。
选择要向其授予一个角色的主账号:
如需向已拥有资源的其他角色的主账号授予角色,请找到包含主账号的行,点击该行中的
修改主账号,然后点击 添加其他角色。要向尚未拥有资源其他角色的主账号授予角色,请点击
添加主账号,然后输入该主账号的电子邮件地址或其他标识符。
从下拉列表中选择要授予的角色。按照确保安全性的最佳做法,请选择一个仅包含主账号所需权限的角色。
可选:为角色添加条件。
点击保存。将向主账号授予资源上的角色。
gcloud
要快速向主账号授予角色,请运行 add-iam-policy-binding
命令。
此命令的格式取决于您要访问的资源类型。如需查找资源的格式,请在 Google Cloud CLI 参考中查找资源的 add-iam-policy-binding
命令参考。此引用先按服务,然后按资源进行整理。例如,要向主账号授予 Compute Engine 实例上的角色,请遵循 gcloud compute instances add-iam-policy-
binding
参考文档中所述的格式。
撤消单个角色
如需撤消主账号的单个角色,请执行以下操作:
控制台
在 Google Cloud 控制台中,转到列出要撤消其访问权限的资源的页面。
例如,如需管理对 Compute Engine 实例的访问权限,请转到虚拟机实例页面:
选中要管理其访问权限的资源旁边的复选框。
确保信息面板可见。如果未显示,请点击显示信息面板。
找到包含主账号的行,然后点击该行中的
修改主账号。点击要撤消的角色对应的删除
按钮,然后点击保存。
gcloud
如需快速撤消成员的角色,请运行 remove-iam-policy-binding
命令。
此命令的格式取决于您要访问的资源类型。如需查找资源的格式,请在 Google Cloud CLI 参考中查找资源的 remove-iam-policy-binding
命令参考。此引用先按服务,然后按资源进行整理。例如,要向主账号授予 Compute Engine 实例上的角色,请遵循 gcloud compute instances
remove-iam-policy-binding
参考文档中所述的格式。
使用 Google Cloud 控制台授予或撤消多个角色
您可以使用 Google Cloud 控制台为单个主账号授予和撤消多个角色:
在 Google Cloud 控制台中,转到列出要查看其访问权限的资源的页面。
例如,如需管理对 Compute Engine 实例的访问权限,请转到虚拟机实例页面。
选中要管理其访问权限的资源旁边的复选框。
如果信息面板尚未显示,请点击显示信息面板。
选择要修改其角色的主账号:
如需修改已拥有资源角色的主账号的角色,请找到包含该主账号的行,点击该行中的
修改主账号,然后点击 添加其他角色。如需向未拥有资源任何现有角色的主账号授予角色,请点击
添加主账号,然后输入该主账号的电子邮件地址或其他标识符。
修改主账号的角色:
- 如需向尚未拥有资源的任何角色的主账号授予角色,请点击选择角色,然后从下拉列表中选择要授予的角色。
- 如需向主账号授予其他角色,请点击添加其他角色,然后从下拉列表中选择要授予的角色。
- 如需将某个主账号的某个角色替换为其他角色,请点击现有角色,然后从下拉列表中选择要授予的其他角色。
- 如需撤销主账号的某个角色,请点击要撤消的每个角色对应的删除 按钮。
点击保存。
以编程方式授予或撤销多个角色
如需进行涉及为多个主账号授予和撤销多个角色的大规模访问权限更改,请使用“读取-修改-写入”模式更新资源的允许政策:
- 通过调用
getIamPolicy()
读取当前允许政策。 - 使用文本编辑器或以编程方式修改允许政策,以添加或移除任何主账号或角色绑定。
- 通过调用
setIamPolicy()
写入更新后的允许政策。
本部分介绍如何使用 gcloud CLI 和 REST API 来更新允许政策。您还可以使用 Google Cloud 客户端库更新允许政策。
政策更改通常会在 2 分钟内生效。但是,在某些情况下,更改可能需要长达 7 分钟的时间才能传播到整个系统。
获取当前允许政策
gcloud
如需获取资源的允许政策,请对资源运行 get-iam-policy
命令。
此命令的格式取决于您要访问的资源类型。如需查找资源的格式,请在 Google Cloud CLI 参考中查找资源的 get-iam-policy
命令参考。此引用先按服务,然后按资源进行整理。例如,如需获取 Compute Engine 虚拟机实例的允许政策,请遵循 gcloud compute instances get-iam-policy
参考文档中所述的格式。
(可选)在命令中添加以下参数以指定格式并导出结果:
--format=FORMAT > PATH
请提供以下值:
FORMAT
:允许政策所需的格式。请使用json
或yaml
。PATH
:指向允许政策的新输出文件的路径。
运行该命令时,资源的允许政策会输出到控制台或导出到指定文件。
REST
如需获取资源的允许政策,请使用资源的 getIamPolicy
方法。
HTTP 方法、网址和请求正文取决于您要查看其访问权限的资源。如需查找这些详细信息,请找到拥有该资源的服务的 API 参考文档,然后找到该资源的 getIamPolicy
方法的引用。例如,Compute Engine 虚拟机实例的 HTTP 方法、网址和请求正文在实例 getIamPolicy
参考文档中指定。
任何资源的 getIamPolicy
方法的响应都包含资源的允许政策。将响应保存在相应类型(json
或 yaml
)的文件中。
修改允许政策
通过编程或文本编辑器修改资源的允许政策的本地副本,以反映您要授予或撤消的角色。
为了确保您不会覆盖其他更改,请勿修改或移除允许政策的 etag
字段。etag
字段标识允许政策的当前状态。在您设置更新后的允许政策后,IAM 会将请求中的 etag
值与现有的 etag
进行比较,并且仅当值匹配时才会写入允许政策。
如需修改允许政策授予的角色,您需要修改允许政策中的角色绑定。角色绑定采用以下格式:
{ "role": "ROLE_NAME", "members": [ "PRINCIPAL_1", "PRINCIPAL_2", ... "PRINCIPAL_N" ], "conditions:" { CONDITIONS } }
占位符具有以下值:
ROLE_NAME
:您要授予的角色的名称。请采用以下某种格式:- 预定义角色:
roles/SERVICE.IDENTIFIER
- 项目级自定义角色:
projects/PROJECT_ID/roles/IDENTIFIER
- 组织级自定义角色:
organizations/ORG_ID/roles/IDENTIFIER
如需了解完整的预定义角色的列表,请参阅了解角色。
- 预定义角色:
PRINCIPAL_1
、PRINCIPAL_2
、...PRINCIPAL_N
:您要向其授予相应角色的主账号的标识符。主账号标识符通常采用以下格式:
PRINCIPAL-TYPE:ID
。例如user:my-user@example.com
。如需PRINCIPAL
可以采用的值的完整列表,请参阅政策绑定参考文档。对于主账号类型
user
,标识符中的域名必须是 Google Workspace 网域或 Cloud Identity 网域。如需了解如何设置 Cloud Identity 网域,请参阅 Cloud Identity 概览。CONDITIONS
:可选。指定何时授予访问权限的任何条件。
授予角色
要向主账号授予角色,请修改允许政策中的角色绑定。如需了解您可以授予哪些角色,请参阅了解角色或查看资源的可授予角色。如果您需要帮助来确定最合适的预定义角色,请参阅选择预定义角色。
(可选)您可以使用条件,仅在满足特定要求时授予角色。
如需授予允许政策中已包含的角色,请将该主账号添加到现有角色绑定:
gcloud
将主账号添加到现有角色绑定,以修改允许政策。请注意,此更改在您设置更新后的允许政策后才会生效。
例如,假设允许政策包含以下角色绑定,其将 Compute Instance Admin 角色 (roles/compute.instanceAdmin
) 授予给 kai@example.com
:
{
"role": "roles/compute.instanceAdmin",
"members": [
"user:kai@example.com"
]
}
如需向 raha@example.com
授予相同的角色,请将 raha@example.com
添加到现有角色绑定:
{ "role": "roles/compute.instanceAdmin", "members": [ "user:kai@example.com", "user:raha@example.com" ] }
REST
将主账号添加到现有角色绑定,以修改允许政策。请注意,此更改在您设置更新后的允许政策后才会生效。
例如,假设允许政策包含以下角色绑定,其将 Compute Instance Admin 角色 (roles/compute.instanceAdmin
) 授予给 kai@example.com
:
{
"role": "roles/compute.instanceAdmin",
"members": [
"user:kai@example.com"
]
}
如需向 raha@example.com
授予相同的角色,请将 raha@example.com
添加到现有角色绑定:
{ "role": "roles/compute.instanceAdmin", "members": [ "user:kai@example.com", "user:raha@example.com" ] }
如需授予允许政策中未包含的角色,请添加新的角色绑定:
gcloud
通过添加向主账号授予该角色的新角色绑定来修改允许政策。此更改在您设置更新后的允许政策后才会生效。
例如,如需向 raha@example.com
授予 Compute Load Balancer Admin 角色 (roles/compute.loadBalancerAdmin
),请将以下角色绑定添加到允许政策的 bindings
数组中:
{
"role": "roles/compute.loadBalancerAdmin",
"members": [
"user:raha@example.com"
]
}
REST
通过添加向主账号授予该角色的新角色绑定来修改允许政策。此更改在您设置更新后的允许政策后才会生效。
例如,如需向 raha@example.com
授予 Compute Load Balancer Admin 角色 (roles/compute.loadBalancerAdmin
),请将以下角色绑定添加到允许政策的 bindings
数组中:
{
"role": "roles/compute.loadBalancerAdmin",
"members": [
"user:raha@example.com"
]
}
撤消角色
如需撤消角色,请从角色绑定中移除该主账号。如果角色绑定中没有其他主账号,请移除整个角色绑定。
gcloud
通过修改由 get-iam-policy
命令返回的 JSON 或 YAML 允许政策来撤消角色。此更改在您设置更新后的允许政策后才会生效。
如需撤消主账号的角色,请在允许政策的 bindings
数组中删除所需的主账号或绑定。
REST
通过修改由 get-iam-policy
命令返回的 JSON 或 YAML 允许政策来撤消角色。此更改在您设置更新后的允许政策后才会生效。
如需撤消主账号的角色,请在允许政策的 bindings
数组中删除所需的主账号或绑定。
设置允许政策
修改允许政策以授予和撤消所需的角色后,请调用 setIamPolicy()
进行更新。
gcloud
如需设置资源的允许政策,请对资源运行 set-iam-policy
命令。
此命令的格式取决于您要访问的资源类型。如需查找资源的格式,请在 Google Cloud CLI 参考中查找资源的 set-iam-policy
命令参考。此引用先按服务,然后按资源进行整理。例如,如需获取 Compute Engine 虚拟机实例的允许政策,请遵循 gcloud compute instances set-iam-policy
参考文档中所述的格式。
任何资源的 set-iam-policy
命令的响应都包含资源更新后的允许政策。
REST
如需设置资源的允许政策,请使用资源的 setIamPolicy
方法。
HTTP 方法、网址和请求正文取决于您要查看其访问权限的资源。如需查找这些详细信息,请找到拥有该资源的服务的 API 参考文档,然后找到该资源的 setIamPolicy
方法的引用。例如,Compute Engine 虚拟机实例的 HTTP 方法、网址和请求正文在实例 setIamPolicy
参考文档中指定。
任何资源的 setIamPolicy
方法的响应都包含资源的更新后允许政策。
后续步骤
- 了解如何管理对项目、文件夹和组织的访问权限或如何管理对服务账号的访问权限。
- 了解如何选择最合适的预定义角色。
- 使用 Policy Troubleshooter 了解用户有权或无权访问某项资源的原因,或有权调用某个 API 的原因。
- 了解如何查看您可以针对特定资源授予的角色。
- 了解如何使用条件角色绑定使主账号的访问权限有条件。