本页面介绍了如何使成员和资源能够模拟或充当 Identity and Access Management (IAM) 服务帐号。其中还介绍了如何查看哪些成员能够模拟给定 IAM 服务帐号。
准备工作
确保您了解服务帐号在 IAM 中的工作原理。
使成员能够模拟服务帐号
使成员能够模拟服务帐号的几个预定义角色如下:
Service Account User (
roles/iam.serviceAccountUser
):通过服务帐号,允许成员间接访问所有资源。例如,如果某位成员在一个服务帐号中具有 Service Account User 角色,而该服务帐号在项目中具有 Cloud SQL Admin 角色 (roles/cloudsql.admin
),则该成员可以模拟服务帐号来创建 Cloud SQL 实例。通过此角色,成员还可以将服务帐号附加到资源,如本页中所述。
Service Account Token Creator (
roles/iam.serviceAccountTokenCreator
):使成员能够模拟服务帐号创建 OAuth 2.0 访问令牌、对 JSON Web 令牌 (JWT) 和二进制 blob 进行签名,以便它们能够用于身份验证。如需了解详情,请参阅创建短期有效的服务帐号凭据。Workload Identity User (
roles/iam.workloadIdentityUser
):允许成员模拟 GKE 工作负载中的服务帐号。无法对单个服务帐号授予此角色,但可以对项目、文件夹或组织授予此角色。
或者,您也可以授予其他预定义角色或授予自定义角色,只要它们包含与上述角色相同的权限即可。
以下部分介绍了如何对项目、文件夹和组织授予这些角色,以及如何对单个服务帐号授予这些角色。根据您要授予的访问权限大小选择级别:
- 要使成员能够模拟在项目、文件夹或组织中创建的所有服务帐号,请对项目、文件夹或组织授予角色。
- 要使成员能够模拟单个服务帐号,请对服务帐号授予角色。
使成员能够模拟多个服务帐号
要使成员能够模拟在项目、文件夹或组织中创建的所有服务帐号,请对项目、文件夹或组织授予角色:
控制台
在 Cloud Console 中,转到 IAM 页面。
在页面顶部的项目选择器中,选择您要授予角色的项目、文件夹或组织。
点击添加。
输入您的成员的电子邮件地址。
选择一个使成员能够模拟服务帐号的角色。请参阅使成员能够模拟服务帐号的角色列表。
点击保存。
gcloud
要向成员授予使其能够模拟服务帐号的角色,请修改项目、文件夹或组织的 IAM 政策。
读取资源的 IAM 政策:
gcloud resource get-iam-policy resource-id \ --format=json > policy.json
替换以下值:
-
resource
:您要设置政策的资源的类型。此值应为projects
、resource-manager folders
或organizations
之一。 -
resource-id
:您要设置政策的资源的 ID。
该命令会将资源的政策存储在
policy.json
文件中。如果相应资源上已经设置了政策,则
policy.json
文件类似于以下内容:{ "bindings": [ { "members": [ "user:hollis@example.com" ], "role": "roles/owner" } ], "etag": "BwUqLaVeua8=", "version": 1 }
如果相应资源上未设置政策,则
policy.json
文件仅包含默认etag
。如果没有现有政策,请在以下步骤中使用 JSON 手动创建政策作为模板。
-
修改政策以向您的成员授予适当角色。要授予角色,请执行以下操作之一:
- 如果角色不存在绑定,请向
bindings
数组添加一个对象,以指明您要授予的角色以及要将角色授予的成员。 - 如果角色已存在绑定,请将新成员添加到现有成员列表中。如果您的政策包含条件角色绑定,您还应在添加成员之前确保绑定具有适当的条件。
如果
bindings
数组不存在,您可以创建一个。示例
要向
robin@example.com
授予 Service Account User 角色 (roles/iam.serviceAccountUser
),请更改上一步中显示的示例,如下所示:{ "bindings": [ { "role": "roles/iam.serviceAccountUser", "members": [ "user:robin@example.com" ] }, { "role": "roles/owner", "members": [ "user:hollis@example.com" ] } ], "etag": "BwUqLaVeua8=", "version": 1 }
- 如果角色不存在绑定,请向
写入更新后的政策:
gcloud resource set-iam-policy resource-id \ policy-file
替换以下值:
-
resource
:您要设置政策的资源的类型。此值应为projects
、resource-manager folders
或organizations
之一。 -
resource-id
:您要设置政策的资源的 ID。 policy-file
:包含更新后政策的文件的路径。
该命令会输出更新后的政策,其中包含更新后的
etag
值。-
REST
要使用 Resource Manager REST API 授予角色,您需要读取项目、文件夹或组织的当前 IAM 政策;修改该政策以授予所需角色;然后写入更新后的政策。
读取资源的 IAM 政策。
Resource Manager API 的 getIamPolicy
方法可获取项目、文件夹或组织的 IAM 政策。
在使用下面的请求数据之前,请先进行以下替换:
api-version
:要使用的 API 版本。对于项目和组织,请使用v1
。对于文件夹,请使用v2
。resource-type
:您要管理其政策的资源类型。使用值projects
、folders
或organizations
。resource-id
:您的 Google Cloud 项目、组织或文件夹 ID。policy-version
:要返回的政策版本。请求应指定最新的政策版本,即政策版本 3。如需了解详情,请参阅在获取政策时指定政策版本。
HTTP 方法和网址:
POST https://cloudresourcemanager.googleapis.com/api-version/resource-type/resource-id:getIamPolicy
请求 JSON 正文:
{ "options": { "requestedPolicyVersion": policy-version } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/owner", "members": [ "user:owner@example.com" ] } ] }
如果没有现有政策,则响应仅包含默认的 etag
。如果收到此响应,请添加一个 version
字段(设置为 3)和一个 bindings
字段(设置为一个空数组)。
修改政策以向您的成员授予适当角色。
要授予角色,请执行以下操作之一:
- 如果角色不存在绑定,请向
bindings
数组添加一个对象,以指明您要授予的角色以及要将角色授予的成员。 - 如果角色已存在绑定,请将新成员添加到现有成员列表中。
示例:
要向 robin@example.com
授予 Service Account User 角色 (roles/iam.serviceAccountUser
),请更改上一步中显示的示例,如下所示:
{ "version": 1, "etag": "BwUqLaVeua8=", "bindings": [ { "role": "roles/iam.serviceAccountUser", "members": [ "user:robin@example.com" ] }, { "role": "roles/owner", "members": [ "user:owner@example.com" ] } ] }
写入更新后的政策。
Resource Manager API 的 setIamPolicy
方法会将请求中的政策设置为项目、文件夹或组织的新 IAM 政策。
在使用下面的请求数据之前,请先进行以下替换:
api-version
:要使用的 API 版本。对于项目和组织,请使用v1
。对于文件夹,请使用v2
。resource-type
:您要管理其政策的资源类型。使用值projects
、folders
或organizations
。resource-id
:您的 Google Cloud 项目、组织或文件夹 ID。-
policy
:您要设置的政策的 JSON 格式。如需详细了解政策的格式,请参阅政策参考文档。例如,要设置上一步中显示的政策,请将
policy
替换为以下内容:{ "version": 1, "etag": "BwUqLaVeua8=", "bindings": [ { "role": "roles/iam.serviceAccountUser", "members": [ "user:robin@example.com" ] }, { "role": "roles/owner", "members": [ "user:owner@example.com" ] } ] }
HTTP 方法和网址:
POST https://iam.googleapis.com/api-version/resource-type/resource-id:setIamPolicy
请求 JSON 正文:
{ "policy": policy }
如需发送您的请求,请展开以下选项之一:
响应中包含更新后的政策。
使成员能够模拟单个服务帐号
要使成员能够模拟单个服务帐号,请对服务帐号授予角色:
控制台
在 Cloud Console 中,转到服务帐号页面。
点击选择项目,然后选择一个项目并点击打开。
点击您要让成员模拟的服务帐号的名称。
点击权限标签页。
在有权访问此服务帐号的成员下,点击
授予访问权限。输入您的成员的电子邮件地址。
选择一个使成员能够模拟服务帐号的角色。请参阅使成员能够模拟服务帐号的角色列表。
点击保存,将此角色应用于项目成员。
要对多个服务帐号授予角色,请为每个服务帐号重复上述步骤。
gcloud
要向成员授予使其能够模拟服务帐号的角色,请修改您的服务帐号的 IAM 政策。
使用
service-accounts get-iam-policy
命令读取当前政策:gcloud iam service-accounts get-iam-policy sa-id \ --format=json > policy.json
替换以下值:
sa-id
:您的服务帐号的 ID。此 ID 可以是服务帐号的电子邮件地址(格式为 sa-name@project-id.iam.gserviceaccount.com),也可以是服务帐号的唯一数字 ID。
该命令会将服务帐号的政策存储在
policy.json
文件中。如果服务帐号上已经设置了政策,则
policy.json
文件类似于以下内容:{ "bindings": [ { "members": [ "user:hollis@example.com" ], "role": "roles/iam.serviceAccountAdmin" } ], "etag": "BwUqLaVeua8=", "version": 1 }
如果服务帐号上未设置政策,则
policy.json
文件仅包含默认etag
。如果没有现有政策,请在以下步骤中使用 JSON 手动创建政策作为模板。
在文本编辑器中,修改 policy.json 文件中的绑定数组,以向成员授予适当的角色。要授予角色,请执行以下操作之一:
- 如果角色不存在绑定,请向
bindings
数组添加一个新对象,以定义您要授予的角色以及要将角色授予的成员。 - 如果角色已存在绑定,请将新成员添加到现有成员列表中。如果您的政策包含条件角色绑定,您还应在添加成员之前确保绑定具有适当的条件。
如果
bindings
数组不存在,您可以创建一个。示例
要向
robin@example.com
授予 Service Account User 角色 (roles/iam.serviceAccountUser
),请更改上一步中显示的示例,如下所示:{ "bindings": [ { "role": "roles/iam.serviceAccountUser", "members": [ "user:robin@example.com" ] }, { "role": "roles/iam.serviceAccountAdmin", "members": [ "user:hollis@example.com" ] } ], "etag": "BwUqLaVeua8=", "version": 1 }
- 如果角色不存在绑定,请向
使用
service-accounts set-iam-policy
命令写入更新后的政策:gcloud iam service-accounts set-iam-policy sa-id \ policy-file
替换以下值:
sa-id
:您的服务帐号的 ID。此 ID 可以是服务帐号的电子邮件地址(格式为 sa-name@project-id.iam.gserviceaccount.com),也可以是服务帐号的唯一数字 ID。policy-file
:包含更新后政策的文件的路径。
该命令会输出更新后的政策,其中包含更新后的
etag
值。
REST
要使用 IAM REST API 授予角色,您需要读取服务帐号的当前 IAM 政策,修改该政策以授予所需的角色,然后写入更新后的政策。
读取服务帐号的 IAM 政策。
serviceAccounts.getIamPolicy
方法可获取服务帐号的 IAM 政策。
在使用下面的请求数据之前,请先进行以下替换:
project-id
:您的 Google Cloud 项目 ID。sa-id
:您的服务帐号的 ID。此 ID 可以是服务帐号的电子邮件地址(格式为sa-name@project-id.iam.gserviceaccount.com
)或服务帐号的唯一数字 ID。policy-version
:要返回的政策版本。请求应指定最新的政策版本,即政策版本 3。如需了解详情,请参阅在获取政策时指定政策版本。
HTTP 方法和网址:
POST https://iam.googleapis.com/v1/projects/project-id/serviceAccounts/sa-id:getIamPolicy
请求 JSON 正文:
{ "options": { "requestedPolicyVersion": policy-version } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
如果没有现有政策,则响应仅包含默认的 etag
。如果收到此响应,请添加一个 version
字段(设置为 3)和一个 bindings
字段(设置为一个空数组)。
修改政策以向您的成员授予适当角色。
在文本编辑器中,从响应正文修改绑定数组,以向您的成员授予适当的角色。要授予角色,请执行以下操作之一:
- 如果角色不存在绑定,请向
bindings
数组添加一个新对象,以定义您要授予的角色以及要将角色授予的成员。 - 如果角色已存在绑定,请将新成员添加到现有成员列表中。
示例:
要向 robin@example.com
授予 Service Account User 角色 (roles/iam.serviceAccountUser
),请更改上一步中显示的示例,如下所示:
{ "version": 1, "etag": "BwUqLaVeua8=", "bindings": [ { "role": "roles/iam.serviceAccountUser", "members": [ "user:robin@example.com" ] }, { "role": "roles/iam.serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
写入更新后的政策。
serviceAccounts.setIamPolicy
方法为服务帐号设置更新后的 IAM 政策。
在使用下面的请求数据之前,请先进行以下替换:
project-id
:您的 Google Cloud 项目 ID。sa-id
:您的服务帐号的 ID。此 ID 可以是服务帐号的电子邮件地址(格式为sa-name@project-id.iam.gserviceaccount.com
)或服务帐号的唯一数字 ID。-
policy
:您要设置的政策的 JSON 格式。如需详细了解政策的格式,请参阅政策参考文档。例如,要设置上一步中显示的政策,请将
policy
替换为以下内容:{ "version": 1, "etag": "BwUqLaVeua8=", "bindings": [ { "role": "roles/iam.serviceAccountUser", "members": [ "user:robin@example.com" ] }, { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
HTTP 方法和网址:
POST https://iam.googleapis.com/v1/projects/project-id/serviceAccounts/sa-id:setIamPolicy
请求 JSON 正文:
{ "policy": policy }
如需发送您的请求,请展开以下选项之一:
响应中包含更新后的政策。
列出可访问服务帐号的成员
使用 Cloud Console 查看有权访问服务帐号的所有成员,无论他们有权访问是因为拥有对服务帐号授予的角色,还是拥有对项目、文件夹或组织授予的角色。
在 Cloud Console 中,转到服务帐号页面。
点击选择项目,然后选择一个项目并点击打开。
选中所需服务帐号旁边的复选框。
如果信息面板尚未显示,请点击显示信息面板。此时系统会显示已对该服务帐号授予的角色列表。
展开各个角色即可查看在该服务帐号上已被授予相应角色的成员。
将服务帐号附加到资源
对于某些 Google Cloud 资源,您可以指定用户管理的服务帐号,供资源用作其默认身份。此过程称为“将服务帐号附加到资源”或“将服务帐号与资源关联”。
当资源需要访问其他 Google Cloud 服务和资源时,它会模拟附加到自身的服务帐号。例如,如果您将服务帐号附加到 Compute Engine 实例,则该实例上的应用使用客户端库来调用 Google Cloud API,这些应用会自动模拟附加的服务帐号。
在大多数情况下,您必须在创建资源时将服务帐号附加到该资源。创建资源后,您无法更改将哪个服务帐号附加到该资源。Compute Engine 实例是此规则的一个例外情况;您可以根据需要更改附加到实例的服务帐号。
在将服务帐号附加到资源之前,您必须先配置服务帐号。此过程取决于服务帐号和资源是位于同一项目还是不同项目中。配置服务帐号后,您可以创建资源并将服务帐号附加到该资源。
配置同一项目中的资源
在将服务帐号附加到同一项目中的其他资源之前,请向服务帐号授予角色,以便其能够访问相应资源,就像您向其他任何成员授予角色一样。
配置其他项目中的资源
在某些情况下,您可能需要将服务帐号附加到位于其他项目中的资源。例如,如果您在单个项目中创建所有服务帐号,则可能需要将其中一个服务帐号附加到其他项目中的新资源。
在将服务帐号连接到其他项目中的资源之前,请先执行以下操作:
- 在服务帐号所在的项目中,按照本页面中的步骤跨项目启用服务帐号模拟。
- 确定要在其中创建资源的项目。
确定您将附加到的资源的服务帐号类型,以及该类型资源的服务。
例如,如果您要创建 Pub/Sub 订阅,则 Pub/Sub 是拥有该资源的服务。
查找该服务的 Google 管理的服务帐号的电子邮件地址。
不同的服务使用不同的 Google 管理的服务帐号。如需了解详情,请参阅 Google 管理的服务帐号和服务代理。
将 Service Account Token Creator 角色 (
roles/iam.serviceAccountTokenCreator
) 授予 Google 管理的服务帐号:控制台
在 Cloud Console 中,转到服务帐号页面。
选择将您要附加到资源的服务帐号所属的项目。
找到要附加到资源的服务帐号,然后选中对应的复选框。
在权限窗格中,点击添加成员。
在新成员字段中,输入 Google 管理的服务帐号的电子邮件地址。
在选择角色下拉列表中,输入
Service Account Token Creator
,然后点击该角色。点击保存以保存更改。
可选:如果您需要将角色授予其他 Google 管理的服务帐号,请重复上述步骤。
gcloud
使用
gcloud iam service-accounts add-iam-policy-binding
命令:gcloud iam service-accounts add-iam-policy-binding \ user-sa-name@project-id.iam.gserviceaccount.com \ --member=serviceAccount:google-sa-email \ --role=roles/iam.serviceAccountTokenCreator
替换以下值:
user-sa-name
:您要附加到资源的用户管理服务帐号的名称。project-id
:用户管理的服务帐号所在的项目 ID。google-sa-email
:Google 管理的服务帐号的电子邮件地址。
该命令会输出用户管理的服务帐号的更新后的 IAM 政策。
可选:如果您需要将角色授予其他 Google 管理的服务帐号,请再次运行该命令。
REST
要授予此角色,请使用 read-modify-write 模式更新用户管理的服务帐号的 IAM 政策。
首先,读取用户管理的服务帐号的 IAM 政策:
projects.serviceAccounts.getIamPolicy
方法返回服务帐号的 IAM 政策。在使用下面的请求数据之前,请先进行以下替换:
project-id
:您的 Google Cloud 项目 ID。-
user-sa-name
:您绑定到资源的用户管理服务帐号的名称。
HTTP 方法和网址:
POST https://iam.googleapis.com/v1/projects/project-id/serviceAccounts/user-sa-name@project-id.iam.gserviceaccount.com:getIamPolicy
请求 JSON 正文:
{ "requestedPolicyVersion": 3 }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "version": 1, "etag": "BwWl3KCTUMY=", "bindings": [ { "role": "roles/iam.serviceAccountUser", "members": [ "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com" ] } ] }
接下来,修改政策以向 Google 管理的服务帐号授予 Service Account Token Creator 角色。将
google-sa-email
替换为 Google 管理的服务帐号的电子邮件地址:{ "version": 1, "etag": "BwWl3KCTUMY=", "bindings": [ { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:google-sa-email" ] }, { "role": "roles/iam.serviceAccountUser", "members": [ "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com" ] } ] }
最后,写入更新后的政策:
projects.serviceAccounts.setIamPolicy
方法会更新您的服务帐号的 IAM 政策。在使用下面的请求数据之前,请先进行以下替换:
project-id
:您的 Google Cloud 项目 ID。-
user-sa-name
:您绑定到资源的用户管理服务帐号的名称。 -
google-sa-email
:可为您的用户管理的服务帐号创建访问令牌的Google 管理的服务帐号的邮件地址。
HTTP 方法和网址:
POST https://iam.googleapis.com/v1/projects/project-id/serviceAccounts/user-sa-name@project-id.iam.gserviceaccount.com:setIamPolicy
请求 JSON 正文:
{ "policy": { "version": 1, "etag": "BwWl3KCTUMY=", "bindings": [ { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:google-sa-email" ] }, { "role": "roles/iam.serviceAccountUser", "members": [ "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com" ] } ] } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "version": 1, "etag": "BwWo331TkHE=", "bindings": [ { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:google-sa-email" ] }, { "role": "roles/iam.serviceAccountUser", "members": [ "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com" ] } ] }
将服务帐号附加到新资源
配置用户管理的服务帐号后,您可以创建新资源并将服务帐号附加到该资源。请务必在相应的项目中创建新资源。
请参阅您要创建的资源类型对应的说明:
创建资源时附加服务帐号 | |
---|---|
AI Platform Notebooks | 笔记本实例 |
AI Platform Prediction | 模型版本 |
AI Platform Training | 作业 |
Cloud Composer | 环境 |
Cloud Functions | Cloud Functions 函数 |
Cloud Life Sciences | 流水线 |
Cloud Run | 服务 |
Cloud Scheduler | 作业 |
Cloud Source Repositories | |
Compute Engine | |
Dataflow | 作业 |
Datalab | 实例 |
Dataproc | 集群 |
Google Kubernetes Engine | |
Pub/Sub | 订阅 |
创建资源并将服务帐号附加到该资源之后,您可以向该服务帐号授予角色,以便它可以访问适当的资源。该过程与向任何其他成员授予角色的过程相同。
如需了解如何授予角色,请参阅授予、更改和撤消对资源的访问权限。
解读审核日志
Cloud Audit Logs 可帮助您回答针对您的 Google Cloud 资源“哪些用户何时在何处执行过哪些操作?”问题。
当您使用短期有效凭据来模拟服务帐号时,大多数 Google Cloud 服务都会创建包含以下身份的日志条目:
- 短期有效凭据所要模拟的服务帐号
- 创建短期有效凭据的身份
您可以使用这些日志条目来识别创建短期有效凭据的成员以及该成员模拟的服务帐号。
如需查看显示服务帐号模拟的审核日志条目示例,请参阅模拟服务帐号来访问 Google Cloud。
跨项目启用服务帐号模拟
默认情况下,您无法将在一个项目中创建服务帐号附加到其他项目中的资源上。如果您希望将所有服务帐号保留在一个项目中,则必须更新该项目的组织政策。
在服务帐号所在的项目的组织政策中,检查以下布尔值限制:
确保不会为项目强制执行
iam.disableCrossProjectServiceAccountUsage
布尔值限制。此布尔值限制条件用于控制是否可以将服务帐号附加到另一个项目中的资源。默认情况下,强制执行限制条件。
如果不强制执行此限制条件,IAM 会添加一个项目安全锁,以防止删除项目。此安全锁的来源为
iam.googleapis.com/cross-project-service-accounts
。我们强烈建议您不要删除此安全锁。推荐:确保对项目强制执行
iam.restrictCrossProjectServiceAccountLienRemoval
布尔值限制条件。此布尔值限制条件可确保成员只有在组织级层具有
resourcemanager.projects.updateLiens
权限时才可以移除项目安全锁。如果未强制执行此限制条件,则成员在项目级层拥有此权限时可以移除项目安全锁。
要了解如何在组织政策中查看或更改布尔值限制条件,请参阅设置布尔值限制条件。
跨项目停用服务帐号模拟
如果您之前跨项目启用服务帐号模拟,我们强烈建议您不要停用此功能,尤其是在生产环境中。
具体来说,在服务帐号所在的项目中,您不应做出以下任何更改:
- 请勿更新项目的组织政策以强制执行
iam.disableCrossProjectServiceAccountUsage
布尔值限制条件。 - 不要将项目的组织政策更新为不强制执行
iam.restrictCrossProjectServiceAccountLienRemoval
布尔值限制条件。 - 请勿移除带有源
iam.googleapis.com/cross-project-service-accounts
的项目安全锁,以防删除项目。 - 请勿删除项目。
如果您愿意接受停用此功能的风险,则可以通过停用您在各种项目中使用的服务帐号来降低风险,然后监控 Google Cloud 环境从而发现问题。 如果发现任何问题,您可以重新启用服务帐号。如果未发现任何问题,则可能是因为没有任何 Google Cloud 资源依赖于其他项目中的服务帐号。
后续步骤
- 了解如何将服务帐号附加到 Compute Engine 实例。
- 了解如何使用条件角色绑定使成员的访问权限有条件。
- 了解如何使用 IAM Recommender 缩小所有成员(尤其是服务帐号)的权限范围。
- 详细了解 IAM 的审核日志记录。