Referencia de las políticas en YAML

Esta página contiene información de referencia sobre las políticas de autorización binaria, tal como se especifica en formato YAML. Cuando configuras una política mediante la interfaz de línea de comandos, editas un archivo con formato YAML que cumple esta especificación. Para ver ejemplos de políticas en formato YAML, consulta Ejemplos de políticas.

Los archivos YAML de políticas tienen el siguiente formato:

name: projects/<PROJECT_ID>/policy
admissionWhitelistPatterns:
- namePattern: <MATCHING_PATTERN>
- ...
globalPolicyEvaluationMode: <GLOBAL_EVAL_MODE>
defaultAdmissionRule:
  <ADMISSION_RULE>
clusterAdmissionRules:
  <CLUSTER_SPECIFIER>:
    <ADMISSION_RULE>
  ...

Nodos

El formato YAML tiene los siguientes nodos de nivel superior:

Node Descripción Obligatorio
name Nombre de la política.
admissionWhitelistPatterns Especifica las imágenes de contenedor que siempre se pueden desplegar. No
globalPolicyEvaluationMode Especifica si se debe aplicar una política del sistema que exima a las imágenes del sistema propiedad de Google. No
defaultAdmissionRule La regla que se debe usar cuando no se aplique ninguna regla específica.
clusterAdmissionRules Especifica las reglas que se aplican a clústeres concretos. No

name

El nodo name contiene el nombre de la política con el siguiente formato:

name: projects/PROJECT_ID/policy

donde PROJECT_ID es el nombre del proyecto Google Cloud en el que se define la política.

Por ejemplo:

name: projects/example-project/policy

admissionWhitelistPatterns

admissionWhitelistPatterns especifica una lista de permitidos de imágenes de contenedor que están exentas de la aplicación de la política. Puedes especificar la ruta a las imágenes en Container Registry y Artifact Registry, otro registro o una referencia local en el subnodo namePattern:

admissionWhitelistPatterns:
  - namePattern: MATCHING_PATTERN
  - ...

Sustituye MATCHING_PATTERN por una ruta a una sola imagen o por un patrón coincidente que contenga uno de los símbolos comodín (* o **).

Ten en cuenta que los comodines solo se pueden usar al final del patrón. Por ejemplo, gcr.io/my-project/nginx* es un patrón válido, pero gcr.io/my-project/n*x no lo es. El comodín * solo coincide con las imágenes del directorio especificado. Por ejemplo, gcr.io/my-project/nginx* coincide con gcr.io/my-project/nginx:latest, pero no con gcr.io/my-project/nginx-images/nginx. El comodín ** coincide con las imágenes de los subdirectorios. Por ejemplo, la ruta gcr.io/my-project/nginx** coincide con gcr.io/my-project/nginx-1.14.2/image:latest.

En el siguiente ejemplo, se añaden a la lista de imágenes exentas de la política los registros que contienen imágenes de Google Kubernetes Engine (GKE) de uso habitual, una imagen ubicada en gcr.io/example-project/helloworld y una referencia local a una imagen:

admissionWhitelistPatterns:
  - namePattern: gcr.io/google-containers/*
  - namePattern: k8s.gcr.io/**
  - namePattern: gke.gcr.io/**
  - namePattern: gcr.io/gke-release/asm/*
  - namePattern: gcr.io/stackdriver-agents/*
  - namePattern: gcr.io/example-project/helloworld
  - namePattern: loc-ref

Patrones de la lista de permitidos

Para incluir en la lista de permitidas todas las imágenes de contenedor cuya ubicación de registro coincida con la ruta especificada, haz lo siguiente:

admissionWhitelistPatterns:
  ...
  - namePattern: gcr.io/example-project/*

Para añadir una imagen específica a la lista de permitidas, sigue estos pasos:

admissionWhitelistPatterns:
  ...
  - namePattern: gcr.io/example-project/helloworld

Para incluir en una lista de permitidas una versión etiquetada, sigue estos pasos:

admissionWhitelistPatterns:
  ...
  - namePattern: gcr.io/example-project/helloworld:latest
  - namePattern: gcr.io/example-project/helloworld:my-tag
  - namePattern: gcr.io/example-project/helloworld:v1.*

Para incluir en la lista de permitidas una versión específica de una imagen por su digest:

admissionWhitelistPatterns:
  ...
  - namePattern: gcr.io/example-project/helloworld@sha256:77b0b75136b9bd0fd36fb50f4c92ae0dbdbbe164ab67885e736fa4374e0cbb8c

Para incluir en la lista de permitidas las imágenes de los subdirectorios de una ruta determinada, sigue estos pasos:

admissionWhitelistPatterns:
  ...
  - namePattern: gcr.io/example-project/**

globalPolicyEvaluationMode

El modo de evaluación de políticas del sistema es un ajuste de política que hace que la autorización binaria evalúe una política del sistema antes de evaluar la política que configures. Google proporciona la política del sistema, que exime a una lista de imágenes del sistema mantenidas por Google de una evaluación de políticas adicional. Si tienes habilitado este ajuste, las imágenes que requiere GKE no se bloquearán por la aplicación de la política. La política del sistema se evalúa antes y además de la política de usuario, incluida admissionWhitelistPatterns.

Para permitir todas las imágenes del sistema mantenidas por Google, asigna el valor ENABLE a la propiedad globalPolicyEvaluationMode:

globalPolicyEvaluationMode: ENABLE

Para inhabilitar el modo de evaluación de políticas del sistema, sigue estos pasos:

globalPolicyEvaluationMode: DISABLE

defaultAdmissionRule

defaultAdmissionRule especifica la regla predeterminada de la política. La regla predeterminada define las restricciones que se aplican a todas las imágenes de contenedor no exentas, excepto a las que tienen su propia regla específica del clúster. Para especificar la regla predeterminada, usa la colección ADMISSION_RULE:

defaultAdmissionRule:
  ADMISSION_RULE

En el siguiente ejemplo se muestra una regla predeterminada que permite desplegar solo las imágenes de contenedor que haya autorizado el attestor especificado. Si no todos los certificadores obligatorios han autorizado la imagen, la autorización binaria bloquea el despliegue y escribe en el registro de auditoría.

defaultAdmissionRule:
  evaluationMode: REQUIRE_ATTESTATION
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
  requireAttestationsBy:
  - projects/example-project/attestors/secure-build

clusterAdmissionRules

clusterAdmissionRules declare cluster-specific rules for the policy. Las restricciones de estas reglas solo se aplican al clúster especificado. Si la autorización binaria aplica una regla específica de un clúster a una implementación, no se tiene en cuenta la regla predeterminada. Al igual que con las reglas predeterminadas, puede especificar reglas específicas del clúster mediante la colección ADMISSION_RULE:

clusterAdmissionRules:
  CLUSTER_SPECIFIER:
    ADMISSION_RULE

donde CLUSTER_SPECIFIER es el ID de recurso del clúster al que se aplica la regla con el formato location.name (por ejemplo, us-east1-a.prod-cluster).

En el siguiente ejemplo se muestra una regla específica de un clúster que solo permite desplegar las imágenes de contenedor que han sido autorizadas por los certificadores especificados:

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

Colecciones de nodos

ADMISSION_RULE

ADMISSION_RULE es una colección de nodos que especifican las restricciones de la regla en el siguiente formato:

evaluationMode: EVAL_MODE
enforcementMode: ENFORCEMENT_MODE
requireAttestationsBy:
- ATTESTOR
- ...

Tanto defaultAdmissionRule como clusterAdmissionRule hacen referencia a esta colección.

evaluationMode

evaluationMode especifica la operación que realiza la autorización binaria para evaluar si se debe desplegar una imagen de contenedor. A continuación se especifican los posibles valores.

  • ALWAYS_ALLOW: permitir siempre el despliegue de imágenes evaluadas por esta regla
  • ALWAYS_DENY: siempre se deniega el despliegue de las imágenes evaluadas por esta regla
  • REQUIRE_ATTESTATION: requiere que uno o varios attestors autoricen la versión antes de la implementación

Si el valor de evaluationMode es REQUIRE_ATTESTATION, debes proporcionar una referencia a los certificadores obligatorios en requireAttestationsBy.

enforcementMode

enforcementMode especifica la acción que lleva a cabo la autorización binaria si una imagen de contenedor no cumple las restricciones definidas en la regla. Los valores posibles son:

  • ENFORCED_BLOCK_AND_AUDIT_LOG: bloquea la implementación y escribe en el registro de auditoría.
  • DRYRUN_AUDIT_LOG_ONLY: permite implementar imágenes no conformes y escribe detalles sobre la infracción en el registro de auditoría.

La mayoría de las reglas de producción usan el modo de aplicación ENFORCED_BLOCK_AND_AUDIT_LOG. DRYRUN_AUDIT_LOG_ONLY se usa principalmente para probar una política en tu entorno antes de que entre en vigor.

requireAttestationsBy

requireAttestationsBy especifica uno o varios encargados de la atestación que deben autorizar la publicación para que se pueda desplegar una imagen de contenedor. Este requisito solo se aplica a las reglas REQUIRE_ATTESTATION. El formato de este nodo es el siguiente:

requireAttestationsBy:
  - projects/PROJECT_ID/attestors/ATTESTOR_NAME
  - ...

donde PROJECT_ID es el nombre del proyecto en el que se definen los encargados de la atestación y ATTESTOR_NAME es el nombre de un encargado de la atestación que debe firmar la versión.

En el siguiente ejemplo se muestra cómo especificar attestors:

requireAttestationsBy:
- projects/example-project/attestors/secure-build
- projects/example-project/attestors/prod-qualified