本页面介绍了以 YAML 格式指定的示例 Binary Authorization 政策。如需了解如何在 Binary Authorization 中配置政策,请参阅使用 Google Cloud CLI 配置政策或使用 Google Cloud Console 配置政策。
允许所有部署
以下示例展示了如何在没有任何限制条件的情况下允许部署所有容器映像。
name: projects/example-project/policy defaultAdmissionRule: evaluationMode: ALWAYS_ALLOW enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
在此示例中,默认规则的 evaluationMode
为 ALWAYS_ALLOW
,这会使 Binary Authorization 允许部署所有容器映像。默认的 enforcementMode
设置为 ENFORCED_BLOCK_AND_AUDIT_LOG
,不过,由于 Binary Authorization 允许所有部署,因此绝不会执行此操作。
阻止(几乎)所有部署
以下示例展示了如何阻止部署所有容器映像,但允许部署 Google 维护的系统映像。大多数 Google Kubernetes Engine (GKE) 集群都需要这些容器映像才能成功启动。
name: projects/example-project/policy globalPolicyEvaluationMode: ENABLE defaultAdmissionRule: evaluationMode: ALWAYS_DENY enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
在此示例中,globalPolicyEvaluationMode 已启用,以确保 GKE 所需的映像不会因政策强制执行而被阻止。默认规则的 evaluationMode
为 ALWAYS_DENY
,这会使 Binary Authorization 拒绝部署所有容器映像。enforcementMode
设置为 ENFORCED_BLOCK_AND_AUDIT_LOG
,这会使 Binary Authorization 阻止部署并将相关信息写入审核日志。
要求证明者在部署前进行签名
以下示例展示了如何要求证明者先对版本进行授权,然后才能部署容器映像。如果部分证明者没有签名,则部署会遭到阻止。
name: projects/example-project/policy globalPolicyEvaluationMode: ENABLE defaultAdmissionRule: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/example-project/attestors/secure-build
在此示例中,默认规则的 evaluationMode
为 REQUIRE_ATTESTATION
,这会使 Binary Authorization 仅允许部署已获得 requireAttestationsBy
中的必需证明者授权的映像。
允许在试运行模式下部署
试运行模式是政策中的一种强制执行模式,允许部署不符合规则的映像,但会将有关政策违规行为和部署的详细信息写入审核日志中。借助试运行模式,您可以在政策生效之前在生产环境中对其进行测试。
以下示例展示了如何在试运行模式下允许部署所有不符合规则的映像。
name: projects/example-project/policy globalPolicyEvaluationMode: ENABLE defaultAdmissionRule: evaluationMode: REQUIRE_ATTESTATION enforcementMode: DRYRUN_AUDIT_LOG_ONLY requireAttestationsBy: - projects/example-project/attestors/secure-build
在此示例中,默认规则的 enforcementMode
为 DRYRUN_AUDIT_LOG_ONLY
,这允许部署未获指定证明者授权的映像,但会将不符合规则的部署的相关信息写入审核日志中。
使用针对集群的规则
以下示例展示了一条针对集群的规则,该规则仅允许部署那些已获指定证明者授权的容器映像:
name: projects/example-project/policy globalPolicyEvaluationMode: ENABLE defaultAdmissionRule: evaluationMode: ALWAYS_DENY enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG clusterAdmissionRules: us-east1-a.prod-cluster: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/example-project/attestors/secure-build - projects/example-project/attestors/prod-qualified
在此示例中,针对集群的规则仅适用于部署到 us-east1-a.prod-cluster
的容器映像。该规则要求两个证明者提供证明,然后才能部署映像。
添加豁免映像
以下示例展示了如何将 Container Registry 或其他注册表中的其他路径添加到不受政策限制的映像列表:
name: projects/example-project/policy globalPolicyEvaluationMode: ENABLE admissionWhitelistPatterns: - namePattern: gcr.io/example-project-1/* - namePattern: gcr.io/example-project-2/my-app defaultAdmissionRule: evaluationMode: ALWAYS_DENY enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
在此示例中,其他豁免映像的匹配模式为 gcr.io/example-project-1/*
和 gcr.io/example-project-2/my-app
。