借助 VPC Service Controls 中的基于文件夹的成员资格功能,您可以定义以 Google Cloud 文件夹为成员的服务边界。此功能可帮助您通过单个边界配置保护整个文件夹层次结构,从而减少大规模边界管理的管理开销。
本文档介绍了安全边界中的文件夹支持功能,并涵盖以下内容:
在安全边界中使用文件夹的核心概念、行为和优势。
基于文件夹的成员资格、嵌套资源和资源层次结构规则(例如继承和评估优先级)之间的互动。
如何查找为项目和文件夹配置的边界。
使用此功能的最佳实践和已知限制。
关于安全边界内的文件夹成员资格
一个Google Cloud 文件夹可以包含多个项目、其他文件夹,或同时包含这二者。虽然您可以将文件夹中的各个项目添加到服务边界,但我们建议您改为添加父文件夹。在创建边界时,如果您指定某个文件夹作为受保护的资源,VPC Service Controls 会将该文件夹内的所有资源(例如项目和嵌套文件夹)纳入保护范围。
如果您将项目添加到已在边界中配置的文件夹,VPC Service Controls 会自动将这些项目添加到同一边界。您无需更新边界配置来纳入这些项目。 同样,当您从文件夹中移除项目时,VPC Service Controls 会自动从边界中移除这些项目。
嵌套文件夹和沿用
VPC Service Controls 会限制您在边界中配置的文件夹内的所有资源,例如嵌套文件夹及其资源。将文件夹添加到边界后,VPC Service Controls 会自动限制该文件夹及其子文件夹中的所有项目。
资源会员资格评估优先级
一个 Google Cloud 资源只能受一个实施模式下的常规服务边界和一个试运行模式下的常规服务边界保护。如果资源或其父文件夹与多个安全边界相关联,则资源层次结构中最低级别的关联决定了有效安全边界。
VPC Service Controls 会单独评估实施模式和试运行模式的优先级:
- 强制执行模式优先级:有效的强制执行边界由层次结构中明确分配给强制执行边界的最低资源(项目本身或其最近的祖先文件夹)决定。
- 试运行模式优先级:有效的试运行边界由层次结构中明确分配给试运行边界或从明确分配的强制执行资源隐式继承的最低资源确定。
为项目或子文件夹配置试运行边界不会停用或替换在祖先文件夹中配置的强制执行边界。
优先级示例
示例 1(实施模式下的直接项目替换):如果您在实施边界 (
sp1) 中配置父文件夹 (folders/1),并在另一个实施边界 (sp2) 中显式配置该文件夹中的项目 (projects/1),则projects/1受sp2保护。直接项目分配的优先级高于文件夹继承。folders/1中的所有其他项目(例如projects/2)仍受sp1通过文件夹继承机制提供的保护。示例 2(试运行模式下的文件夹继承):在试运行模式下,当您在服务边界中配置文件夹 (
folders/1) 时,除非明确停用,否则该文件夹中的所有项目(projects/1和projects/2)都会继承试运行边界配置 (sp1)。试运行继承的行为方式与实施模式继承的行为方式相同,除非嵌套资源明确配置了不同的试运行边界。示例 3(独立评估强制执行边界和试运行边界):VPC Service Controls 会独立评估强制执行关联和试运行关联。如果您在实施边界 (
sp1) 中配置父文件夹 (folders/1),并将该文件夹中的项目 (projects/1) 明确分配给试运行边界 (sp2),则projects/1在实施模式下仍受sp1保护,同时在试运行模式下由sp2进行评估。将项目分配给试运行边界不会替换或停用父文件夹的实施边界。示例 4(多级文件夹层次结构和子文件夹优先级):在多级文件夹层次结构中,VPC Service Controls 会评估层次结构中每个级别的优先级。如果祖先文件夹 (
folders/2) 在强制执行的边界 (sp1) 中配置,则所有包含的项目(projects/1和projects/2)都会继承sp1强制执行。在不同级别分配试运行边界时(例如,将祖先folders/2分配给试运行边界sp2,并将项目projects/2[位于子文件夹folders/1中] 分配给试运行边界sp1),每个项目都会从其最近的祖先继承试运行配置。因此,projects/1在sp2试运行下进行评估,而projects/2在sp1试运行下进行评估。
查找有效配置的边界
由于资源可以从祖先文件夹继承边界保护,因此您可以使用 LookupConfiguredServicePerimeter 方法来确定哪些服务边界保护项目或文件夹。
API 会返回以下内容:
servicePerimeter:有效强制执行的边界的完全限定名称。servicePerimeterDryRun:有效预演周边的完全限定名称。restrictedResource:实施边界直接附加到的特定资源(项目或文件夹)。restrictedResourceDryRun:直接附加了试运行安全边界的具体资源。
如需了解详情,请参阅查找已配置的边界。
从安全边界中排除项目
如需从文件夹级边界中排除某个项目,请将该项目明确分配给一个单独的边界,该边界不限制任何服务,并允许所有入站和出站流量。由于明确的项目配置优先于文件夹级安全边界,因此该项目会被排除在文件夹安全边界之外。
如需了解如何更新边界,请参阅更新服务边界。
范围限定的政策
范围限定的政策中的服务边界仅限制该政策范围内的资源。如需将某个文件夹作为成员纳入到限定范围的边界中,访问权限政策必须限定在该文件夹或该文件夹的祖先(例如父文件夹或组织)中。
最佳做法
在管理基于文件夹的边界时,请查看以下最佳实践。
将项目安全迁移到文件夹安全边界
在从明确的项目成员资格过渡到基于文件夹的成员资格时,请按以下步骤操作,以防止意外中断安全边界强制执行:
- 将目标父文件夹添加到服务边界。
- 移动资源层次结构中该父文件夹下的项目。
- 至少等待 48 小时:在安全边界配置中保留明确的项目条目至少 48 小时。此等待时间段可让资源层次结构传播在所有系统中完成。
- 从边界中移除明确的项目配置。这些项目仍会通过文件夹继承机制受到保护。
层次结构变动
移动文件夹或项目会更改其有效的边界防护。为避免意外的访问遭拒情况,请与 Resource Manager 管理员协调所有层次结构移动。
如果您将已在边界中配置的项目移至另一个文件夹,并将该文件夹添加到同一边界,则必须在边界中保留现有的显式项目成员资格配置至少 48 小时。此等待期可让资源层次结构得以传播,并防止在您从边界中移除显式项目配置时出现意外的边界强制执行问题。
限制
安全边界网桥不支持基于文件夹的会员资格。 边界网桥仅接受项目资源。
VPC Service Controls 不支持文件夹级 API 资源。
由于存在已知问题,在预演边界中将 VPC 网络项目配置为受保护的资源会替换基于文件夹的强制执行。如果将网络项目明确添加到模拟运行边界,则该项目会失去从其祖先文件夹继承的强制执行边界保护。
非Google Cloud API 和配置了
allowed_service_patterns的安全边界不支持文件夹成员资格。如需允许访问这些服务模式,必须将源项目或 VPC 网络明确添加到边界,而不是通过文件夹继承。
后续步骤
- 在服务边界中配置文件夹
- 详细了解 VPC Service Controls。
- 详细了解服务边界。
- 详细了解如何设计和构建服务边界。