This documentation is for a release that is no longer maintained
See documentation for the latest supported version.第 3 章 创建策略
企业合同 策略是 规则或一组规则以及特定于企业合同的注解。企业合同可以执行多种策略检查,包括检查 红帽产品所需的所有策略规则。企业合同使用名为 Open Policy Agent 或 OPA 的一般目的策略引擎。opa 使用自己的语言(称为 Rego )定义其策略规则。这意味着,在 Enterprise Contract 策略中的 OPA 中的策略规则也会在 Rego 中定义。
流程
创建一个 Rego 文件来定义一个新的策略规则,如下例所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示您可以将
输入对象保存到 JSON 文件,以查看可用的值,这有助于编写新的策略规则。要将输入对象保存为名为input.json的 JSON 文件,请运行类似以下示例的命令:ec validate image --public-key cosign.pub --image "$REPOSITORY:latest" --policy policy.yaml \ --output policy-input=input.jsonec validate image --public-key cosign.pub --image "$REPOSITORY:latest" --policy policy.yaml \ --output policy-input=input.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建策略配置以使用您的新策略规则,如下例所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用您的新策略验证您的容器镜像,并在成功和违反报告中显示其他信息,如下例所示:
ec validate image --public-key cosign.pub --image "$REPOSITORY:latest" --policy policy.yaml \ --show-successes --info --output yamlec validate image --public-key cosign.pub --image "$REPOSITORY:latest" --policy policy.yaml \ --show-successes --info --output yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
-
检查 Successes 和 violations 报告,以确保您的新规则位于
successes列表中。
3.1. 配置策略 复制链接链接已复制到粘贴板!
您可以使用内联 JSON 或 YAML 字符串配置企业合同策略。此策略有时称为配置或 合同,指定企业合同应在哪里找到用于应用您要实施的策略的规则和数据。您还可以包含或排除单个规则或特定规则软件包。
流程
在命令行中配置您的策略作为 JSON 或 YAML 字符串,如下例所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)从您的企业合同策略中排除特定规则软件包,如下例所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令包含来自每个软件包的每个规则,但指定软件包中的规则除外。
(可选) Exclude 单个规则,如下例所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令包括
attestation_task_bundle软件包中的每个规则,但unacceptable_task_bundle规则除外。(可选)只包括特定软件包的规则,如下例所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令仅包含指定软件包中的规则。
(可选)只包括特定软件包中的一些规则。这意味着,您可以指定
include和exclude来仅选择要包含企业合同策略的规则,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 星号 integrity 充当匹配任何软件包的通配符。请注意,它不匹配部分名称,这意味着您无法指定 "s*" 以匹配以"s"开头的每个软件包。
这些命令指定您 只包括
attestationunacceptable_task_bundle 规则,并排除该软件包中的所有其他规则。_task_bundle软件包中的(可选) Exclude 某些检查,以便企业合同可以验证您的容器镜像,即使这些检查失败或未完成,如下例所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令指定,如果已确定的检查失败或未完成,企业合同仍然可以完成以验证您的容器镜像。
(可选)通过运行 config.policy.
include 命令或命令以及字符串列表来修改软件包中的规则的默认值。config.policy.exclude您的字符串列表应包括以下之一:
- "package name" - 从可用 规则集合列表中的软件包 中进行选择。
-
"rule name" - 输入软件包名称和规则代码(用点分隔)来指定规则名称,如下例所示:attestation
_type.unknown_att_type。您可以在此处找到"Attestation type"下的规则代码。https://enterprisecontract.dev/docs/ec-policies/release_policy.html#attestation_type_package - "package name:term" - 某些策略规则处理项目列表。将 "term" 添加到 "package name" 字符串时,您可以从该列表中排除或包含特定项。这的工作方式与"软件包名称"类似,但它仅适用于与该术语匹配的软件包中的策略规则。例如,如果您运行 test 软件包,您可以选择忽略给定的测试案例,但包含所有测试。
- "rule name:term" - 这与 "package name:term" 类似,除了从软件包中包含或排除某个项目外,您可以包括 ot 排除特定的软件包 策略规则。
-
"@collection name" - 将其添加到字符串中,以指定预定义的规则集合。TMake 请确定您使用
@符号为集合名称添加前缀。从此处 提供的规则集合中选择。