管理部署集合

Alauda Security Service 允许你定义和管理部署集合,这些集合是基于匹配模式对资源进行逻辑分组的方式。集合可帮助你组织环境,并为漏洞报告等工作流设定范围。

概述

Alauda Security Service 中的集合是用户定义的命名引用,用于通过选择规则对 deployments、namespaces 或 clusters 进行分组。这些规则可以基于精确匹配或正则表达式(支持 RE2 语法)。集合也可以嵌套,从而让你构建复杂的层级结构。

要点:

  • 目前集合仅适用于 deployments。
  • 集合用于漏洞报告以及其他支持集合的工作流。
  • 部署集合需要 PostgreSQL 数据库后端。

前提条件

要使用集合,你的账户必须具备以下权限:

  • WorkflowAdministration:具有 Read 访问权限,可查看集合;具有 Write 访问权限,可添加、修改或删除集合。
  • Deployment:具有 Read 或 Read/Write 访问权限,可查看规则如何匹配 deployments。

这些权限包含在 Admin 系统角色中。有关更多详细信息,请参阅 RBAC 管理文档。

集合的优势

集合提供了一种灵活的方式来:

  • 按特定团队拥有的资源进行分组。
  • 为开发环境和生产环境应用不同的策略。
  • 管理跨多个 namespaces 或 clusters 的分布式应用。
  • 高效地组织生产或测试环境。

访问和管理集合

你可以通过 Alauda Security Service 门户管理集合:

  1. 导航到 Platform Configuration > Collections
  2. 页面会显示现有集合列表。你可以:
    • 按名称搜索集合。
    • 创建新的部署集合。

在当前列表视图中,主要列为:

  • Collection
  • Description
  • Row actions

创建部署集合

步骤

  1. 单击 Create collection
  2. Collection details 中输入名称和描述。
  3. Collection rules 中,执行以下操作中的至少一项:
    • 定义选择规则(见下文)。
    • 附加现有集合。
  4. 如果你想使用现有集合扩展该集合,请查看 Attached collections
  5. 使用 Collection results 预览当前规则集匹配哪些 deployments。
  6. 如果你尚未添加任何选择器规则或附加集合,预览将保持为空,并提示你先添加规则或附加现有集合。
  7. 单击 Save

注意: 至少需要一条规则或一个已附加集合。

定义集合规则

你可以配置规则来为该集合选择资源:

  • Deployments

    • No deployments specified:忽略 deployment 条件。
    • Deployments with names matching
      • Exact value:输入 deployment 名称。
      • Regex value:使用正则表达式(RE2 语法)进行模式匹配。例如,.* 可匹配所有 deployments。
    • Deployments with labels matching exactly:输入格式为 key=value 的有效 Kubernetes label。
  • Namespaces

    • No namespaces specified:忽略 namespace 条件。
    • Namespaces with names matching:使用精确值或正则值。
    • Namespaces with labels matching exactly:输入 key=value 格式的 label。
  • Clusters

    • No clusters specified:忽略 cluster 条件。
    • Clusters with names matching:使用精确值或正则值。

如需添加更多条件,请使用 OR 选项组合多个规则。

正则表达式示例

Alauda Security Service 支持使用 RE2 语法的正则表达式。以下是一些常见示例:

匹配生产环境 clusters

要匹配名称以 prod 开头的 clusters:

^prod.*

匹配非生产环境 clusters

要匹配名称中不包含 prod 的 clusters(RE2 不支持 negative lookahead):

^[^p]*(p([^r]|$|r([^o]|$|o([^d]|$))))*[^p]*$

匹配所有实体

要匹配所有 deployments、namespaces 和 clusters:

  • Deployments with names matching: .*
  • Namespaces with names matching: .*
  • Clusters with names matching: .*

匹配特定 deployments 和 labels

要包含 reporting deployment、任何以 -db 结尾的 deployment,以及带有 kubernetes.io/metadata.name=medical 标签的 namespaces:

  • Deployments with names matching: reporting
  • OR: Regex value .*-db
  • Namespaces with labels matching exactly: kubernetes.io/metadata.name=medical

附加集合

你可以通过附加现有集合来构建层级集合:

  1. 按名称筛选集合,或从列表中选择。
  2. 单击 Attach 以添加所选集合。
  3. 已附加集合通过 OR 关系扩展父集合。

从 Access Scopes 迁移

当从 rocksdb 迁移到 PostgreSQL 时,漏洞报告中使用的现有 access scopes 会转换为集合。迁移过程会创建嵌入式集合和根集合,以复现原始选择逻辑。

  • Embedded collections:模拟原始 access scope 逻辑。
  • Root collection:附加嵌入式集合,并用于报告配置中。

如果某个 scope 无法迁移(例如,使用了不受支持的 label selector 操作符),系统会生成一条日志消息。label selector 仅支持 IN operator。

API 使用

也可以通过 CollectionService API 管理集合。例如,CollectionService_DryRunCollection 返回的结果与门户中的实时预览类似。有关更多详细信息,请参阅门户中的 API 参考。