我们建议您定义政策限制条件,以实施可接受的资源配置和防止有风险的配置。此蓝图在流水线中结合使用了组织政策限制条件和基础设施即代码 (IaC) 验证。这些控制可防止创建不符合政策指南的资源。在设计和构建工作负载时尽早实施这些控制有助于避免日后需要执行补救工作。
组织政策限制条件
组织政策服务会强制执行限制条件,以确保在您的 Google Cloud 组织中无法创建某些资源配置,即使拥有足够权限的 IAM 角色的人员也无法创建这些配置。
此蓝图在组织节点强制执行政策,以便组织中的所有文件夹和项目都会继承这些控制。这套政策旨在防止某些高风险的配置(例如将虚拟机公开给公共互联网或授予对存储桶的公共访问权限),除非您有意允许此政策的例外情况。
下表介绍了此蓝图中实施的组织政策限制条件:
组织政策限制条件 | 说明 |
---|---|
| 如果配置不当,Compute Engine 虚拟机上的嵌套虚拟化可能会避开虚拟机的监控功能和其他安全工具。此限制条件会阻止创建嵌套虚拟化。 |
|
|
| 如果配置不当,外部 IPv6 子网可能会受到未经授权的互联网访问的影响。此限制条件会阻止创建外部 IPv6 子网。 |
| 如果公开密钥,则设置元数据中的 SSH 密钥的默认行为可能允许对虚拟机进行未经授权的访问。此限制条件强制使用 OS Login 而不是基于元数据的 SSH 密钥。 |
|
如果转发配置不当,外部 IP 地址的虚拟机协议转发可能会导致未经授权的互联网出站流量。此限制条件仅允许为内部地址转发虚拟机协议。 |
|
删除共享 VPC 宿主项目可能会中断所有使用网络资源的服务项目。此限制条件可防止这些项目的项目安全锁被移除,从而防止意外或恶意删除共享 VPC 宿主项目。 |
|
建议不要使用全局(项目范围)内部 DNS 旧版设置,因为这会降低服务可用性。此限制条件可防止使用旧版设置。 |
| 系统会在启用 Compute Engine API 的每个新项目中创建默认 VPC 网络和过于宽松的默认 VPC 防火墙规则。此限制条件会跳过默认网络和默认 VPC 防火墙规则的创建。 |
| 默认情况下,虚拟机是使用外部 IPv4 地址创建的,这可能会导致未经授权的互联网访问。此限制条件配置一个空的外部 IP 地址许可名单,虚拟机可以使用此许可名单,并拒绝所有其他地址。 |
|
默认情况下,重要联系人可以配置为将有关您的网域的通知发送到任何其他网域。此限制条件强制要求只有已批准网域中的电子邮件地址才能设置为重要联系人的收件人。 |
| 默认情况下,可以向任何 Google 账号(包括非受管账号及属于外部组织的账号)授予允许政策。此限制条件可确保组织中的允许政策只能授予给您自己网域中的受管理的账号。您也可以选择允许其他网域。 |
|
默认情况下,系统会自动向默认服务账号授予过于宽松的角色。此限制条件可防止自动向默认服务账号授予 IAM 角色。 |
|
服务账号密钥是高风险的永久性凭据,在大多数情况下,可以使用更安全的服务账号密钥替代方案。此限制条件会阻止创建服务账号密钥。 |
|
如果密钥材料暴露,则上传服务账号密钥材料可能会增加风险。此限制条件可阻止上传服务账号密钥。 |
|
如果将 Cloud SQL 实例配置为不通过 Cloud SQL Auth 代理使用授权网络,则该实例可能向未经身份验证的互联网访问开放。此政策可防止配置授权网络进行数据库访问,并强制该用 Cloud SQL Auth 代理。 |
| 如果使用公共 IP 地址创建实例,则 Cloud SQL 实例可能会向未经身份验证的互联网访问开放。此限制条件可防止 Cloud SQL 实例使用 公共 IP 地址。 |
| 默认情况下,可以通过旧版访问控制列表 (ACL)(而不是 IAM)访问 Cloud Storage 中的对象,这可能会在配置错误时导致访问权限控制不一致和意外暴露。旧版 ACL 访问权限不受 |
|
如果配置错误,Cloud Storage 存储桶可能会向未经身份验证的互联网访问开放。此限制条件可防止向 |
这些政策是我们向大多数客户和对大多数场景推荐的初始政策,您可能需要修改组织政策限制条件,以适应某些工作负载类型。例如,storage.publicAccessPrevention
会阻止使用 Cloud Storage 存储桶作为后端供 Cloud CDN 托管公共资源的工作负载,或者 iam.allowedPolicyMemberDomains
会阻止面向公众且要求身份验证的 Cloud Run 应用。在这些情况下,请在文件夹或项目级层修改组织政策以允许狭义例外。您还可以有条件地向组织政策添加限制条件,方法是:定义一个为政策授予例外或强制执行的标记,然后将该标记应用于项目和文件夹。
基础设施即代码部署前验证
此蓝图使用 GitOps 方法管理基础设施,也就是说所有基础设施更改均通过受版本控制的基础设施即代码 (IaC) 实现,并且可以在部署之前进行验证。
在蓝图中强制执行的政策定义了流水线可以部署的可接受资源配置。如果提交到 GitHub 代码库的代码未通过政策检查,则不会部署任何资源。
如需了解如何使用流水线以及如何通过 CI/CD 自动化强制执行控制,请参阅部署方法。
后续步骤
- 了解部署方法(本系列的下一个文档)