保护敏感资源的一种方法是限制对它们的访问。但是,限制对敏感资源的访问也会给偶尔需要访问这些资源的人带来麻烦。例如,用户可能需要紧急访问来访问敏感资源以解决突发事件。
在这些情况下,我们建议授予用户临时访问资源的权限。我们还建议,为了改进审核,请记录用户访问资源的理由。
在 Google Cloud 中,您可以通过多种方式来管理这种临时提升的访问权限。
Privileged Access Manager
您可以使用 Privileged Access Manager (PAM) 为所选主账号管理临时权限提升,之后查看审核日志,以了解哪些人在什么时间访问了什么内容。
在以下情况下,您可能需要通过 Privileged Access Manager 临时提升权限:
授予紧急访问权限:可让所选的紧急响应人员执行关键任务,而无需等待批准。您可以要求提供理由,进一步说明为什么需要紧急访问权限。
控制对敏感资源的访问权限:严格控制对敏感资源的访问权限,需要获得批准和提供业务理由。Privileged Access Manager 还可用于审核此访问权限的使用情况,例如,已授予的角色何时对用户生效,在该时间段内可以访问哪些资源,该访问权限的理由,以及谁批准了该访问权限。
例如,您可以使用 Privileged Access Manager 执行以下操作:
为开发者提供对生产环境的临时访问权限,以便进行问题排查或部署。
为支持工程师提供对敏感客户数据的访问权限,以便执行特定任务。
为数据库管理员提供提升的权限,以便进行维护或配置更改。
帮助保护服务账号的安全:允许服务账号仅在需要自动执行任务时自行提升权限和担任角色,而不是永久向服务账号授予角色。
管理承包商和外聘人员的访问权限:向承包商或外聘人员授予临时、有时间限制的资源访问权限,并要求获得批准和提供理由。
如需详细了解如何设置 Privileged Access Manager,请参阅 Privileged Access Manager 概览。
如需详细了解如何请求临时提升,请参阅请求临时提升的访问权限。
Google 群组
管理临时提升的访问权限的一种方法是向 Google 群组授予对敏感资源的访问权限,然后在该群组中添加和移除用户以控制其访问权限。
要向 Google 群组设置临时提升的访问权限,请先创建群组,然后为其授予您要临时授予用户的角色。如果您使用拒绝政策,还请考虑让群组不受任何相关拒绝规则的约束,以避免意外拒绝。
设置群组后,您可以添加和移除用户以修改其访问权限。如果您使用 Google Groups API,则可以使用成员资格到期时间临时将用户添加到群组。
如果要记录用户访问敏感资源的理由,您必须定义自己的操作流程和工具。
例如,如需管理对 Compute Engine 资源的紧急访问权限,您可以创建一个群组 emergency-compute-access@example.com
并向其授予 Compute Admin 角色 (roles/compute.admin
)。如果用户需要对计算资源的紧急管理员权限,您可以将它们添加到 emergency-compute-access@example.com
组。解决紧急事件后,您可以将其从该组中移除。
IAM Conditions
您可以使用 IAM Conditions 向用户授予对 Google Cloud 资源的即将过期的访问权限。如需了解详情,请参阅配置临时访问权限。
如果要记录用户访问敏感资源的理由,您必须定义自己的操作流程和工具。
过期的角色绑定不会自动从允许政策中移除。为确保您的允许政策不超过允许政策的大小上限,我们建议您定期移除过期的角色绑定。
拒绝政策不支持基于时间的条件。因此,您不能在拒绝政策中使用条件来暂时将用户从拒绝规则中豁免。
即时特权访问权限
Just-In-Time Access 是一个开源应用,使用 IAM Conditions 向用户授予对 Google Cloud 资源的即时特权访问权限。此应用设计为在 App Engine 或 Cloud Run 上运行。
与手动添加条件角色绑定相比,此应用具有以下优势:
- 用户可以搜索可使用 Just-In-Time Access 激活的角色。
- 用户必须提供理由才能获取访问权限。
- 该应用会替换现有条件绑定,而不是创建新绑定,这有助于维护 IAM 允许政策的大小。
如需详细了解 Just-In-Time Access,请参阅管理项目的即时特权访问权限。
服务账号模拟
经过身份验证的主账号(例如用户或其他服务账号)以服务账号的身份进行身份验证以获取该服务账号的权限时,这就称为模拟服务账号。通过模拟服务账号,经过身份验证的主账号可以访问服务账号可以访问的任何内容。只有具有适当权限的经过身份验证的主账号才能模拟服务账号。
要为服务账号设置临时提升的访问权限,请创建服务账号,然后向其授予您要临时授予用户的角色。如果您使用拒绝政策,还请考虑添加不受任何相关拒绝规则影响的服务账号,以避免意外拒绝。
设置服务账号后,您可以允许用户模拟服务账号,从而为其提供临时提升的访问权限。有多种方式可让用户模拟服务账号:
向用户授予一个角色,该角色允许他们创建该服务账号的短期有效凭据。然后,用户可以使用短期有效凭据来模拟服务账号。
授予 Service Account OpenID Connect Identity Token Creator 角色 (
roles/iam.serviceAccountOpenIdTokenCreator
),允许用户创建服务账号的短期有效 OpenID Connect (OIDC) ID 令牌。授予 Service Account Token Creator 角色 (
roles/iam.serviceAccountTokenCreator
),允许用户创建以下类型的服务账号凭据:- OAuth 2.0 访问令牌,您可以使用该令牌向 Google API 进行身份验证
- OIDC ID 令牌
- 已签名的 JSON Web 令牌 (JWT) 和二进制 blob
如果您向用户授予其中一个角色,则他们可以随时模拟服务账号以提升自己的访问权限。但是,他们不太可能意外访问或修改敏感资源。
如需了解如何模拟服务账号,请参阅使用服务账号模拟。
创建令牌代理服务,以便在用户进行身份验证并提供理由后为用户提供服务账号的短期有效凭据。然后,用户可以使用短期有效凭据来模拟服务账号。
通过此方法,您可以确定何时允许用户模拟服务账号。
如需了解如何生成短期有效凭据,请参阅创建服务账号的短期有效凭据。
如需详细了解服务账号模拟,请参阅服务账号模拟。
后续步骤
- 设置 Privileged Access Manager 以临时提升访问权限。
- 使用 IAM Conditions 向主账号授予临时访问权限。
- 部署 Just-In-Time Access 应用。
- 手动创建短期有效凭据以模拟服务账号。