示例政策

本页面介绍了以 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

在此示例中,默认规则evaluationModeALWAYS_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 所需的映像不会因政策强制执行而被阻止。默认规则evaluationModeALWAYS_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

在此示例中,默认规则的 evaluationModeREQUIRE_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

在此示例中,默认规则的 enforcementModeDRYRUN_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