Esta página contiene información de referencia para las políticas de la autorización binaria especificadas en formato YAML. Cuando configuras una política mediante la interfaz de línea de comandos, editas un archivo con formato YAML que cumple con esta especificación. Para obtener ejemplos de políticas en formato YAML, consulta Políticas de ejemplo.
Los archivos de política en formato YAML 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:
Nodo | Descripción | Obligatorio |
---|---|---|
name |
Nombre de la política. | Sí |
admissionWhitelistPatterns |
Especifica las imágenes de contenedor que siempre se pueden implementar. | No |
globalPolicyEvaluationMode |
Especifica si se debe aplicar una política global que exima las imágenes del sistema que son propiedad de Google. | No |
defaultAdmissionRule |
La regla que se usa cuando no se aplica ninguna regla específica. | Sí |
clusterAdmissionRules |
Especifica las reglas que se aplican a clústeres específicos. | No |
name
El nodo name
contiene el nombre de la política en el siguiente formato:
name: projects/PROJECT_ID/policy
En el ejemplo anterior, PROJECT_ID es el nombre del proyecto de Google Cloud en el que se define tu política.
Por ejemplo:
name: projects/example-project/policy
admissionWhitelistPatterns
admissionWhitelistPatterns
especifica una lista de entidades permitidas de imágenes de contenedor que están exentas de la aplicación de la política. Especifica 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 - ...
Reemplaza MATCHING_PATTERN por una ruta de acceso a una sola imagen o un patrón coincidente que contenga uno de los símbolos de comodín (*
, **
).
Ten en cuenta que los comodines son válidos solo 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 imágenes en el 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 agregan registros que contienen imágenes de Google Kubernetes Engine (GKE) de uso general, una imagen ubicada en gcr.io/example-project/helloworld
y una referencia local a una imagen a la lista de imágenes exentas del política:
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 entidades permitidas
Para incluir en la lista de entidades permitidas a todas las imágenes de contenedor cuya ubicación de registro coincida con la ruta especificada, sigue estos pasos:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/*
Para incluir una imagen específica en la lista de entidades permitidas, haz lo siguiente:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/helloworld
Para incluir una versión etiquetada actual en la lista de entidades permitidas, 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 entidades permitidas una versión específica de una imagen según su resumen, sigue estos pasos:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/helloworld@sha256:77b0b75136b9bd0fd36fb50f4c92ae0dbdbbe164ab67885e736fa4374e0cbb8c
Para incluir en la lista de entidades permitidas las imágenes de los subdirectorios de una ruta de acceso determinada, haz lo siguiente:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/**
globalPolicyEvaluationMode
El modo de evaluación de políticas del sistema es una configuración de política que hace que la autorización binaria evalúe una política de sistema antes de evaluar la política que configuraste. Google proporciona la política del sistema y exime una lista de imágenes del sistema mantenidas por Google de una evaluación de política más detallada. Cuando tienes esta configuración habilitada, la aplicación de las políticas no bloquea las imágenes que requiere GKE. La política del sistema se evalúa antes de la evaluación de la política del usuario y además de ella, incluidos los admissionWhitelistPatterns
.
Para permitir todas las imágenes del sistema mantenidas por Google, establece la propiedad globalPolicyEvaluationMode
como ENABLE
:
globalPolicyEvaluationMode: ENABLE
Para inhabilitar el modo de evaluación de la política del sistema, haz lo siguiente:
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 las que tienen su propia regla específica del clúster. Debes especificar la regla predeterminada mediante la colección ADMISSION_RULE:
defaultAdmissionRule: ADMISSION_RULE
En el siguiente ejemplo, se muestra una regla predeterminada que permite que solo se implementen las imágenes de contenedor que el certificador especificado autorizó. En el caso de que todos los certificadores necesarios no hayan autorizado la imagen, la autorización binaria bloquea la implementación 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
declara reglas específicas del clúster para la política.
Las restricciones de estas reglas se aplican solo al clúster especificado. Si la autorización binaria aplica una regla específica del clúster a una implementación, no se considera la regla predeterminada. Al igual que con las reglas predeterminadas, debes especificar reglas específicas del clúster mediante la colección ADMISSION_RULE:
clusterAdmissionRules: CLUSTER_SPECIFIER: ADMISSION_RULE
En el ejemplo anterior, CLUSTER_SPECIFIER es el ID de recursos del clúster al que se aplica la regla en el formato location.name
(por ejemplo, us-east1-a.prod-cluster
).
En los siguientes ejemplos, se muestra una regla específica del clúster que solo permite que se implementen las imágenes de contenedor que los certificadores especificados autorizaron:
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 especifica las restricciones de la regla en el siguiente formato:
evaluationMode: EVAL_MODE enforcementMode: ENFORCEMENT_MODE requireAttestationsBy: - ATTESTOR - ...
defaultAdmissionRule
y clusterAdmissionRule
hacen referencia a esta colección.
evaluationMode
evaluationMode
especifica la operación que realiza la autorización binaria para evaluar si se debe implementar una imagen de contenedor. Los siguientes son los valores posibles:
ALWAYS_ALLOW
: Siempre se permite la implementación de imágenes que esta regla evalúa.ALWAYS_DENY
: Siempre se rechaza la implementación de las imágenes que esta regla evalúa.REQUIRE_ATTESTATION
: Se requieren uno o más certificadores para autorizar la versión antes de la implementación.
Si el evaluationMode
es REQUIRE_ATTESTATION
, debes proporcionar una referencia a los certificadores necesarios en requireAttestationsBy
.
enforcementMode
enforcementMode
especifica la acción que realiza la autorización binaria si una imagen de contenedor no cumple con las restricciones definidas en la regla. Los siguientes son los valores posibles:
ENFORCED_BLOCK_AND_AUDIT_LOG
: Bloquea la implementación y escribe en el registro de auditoría.DRYRUN_AUDIT_LOG_ONLY
: Permite la implementación de imágenes que no cumplen con las especificaciones 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 el entorno antes de que entre en vigor.
requireAttestationsBy
requireAttestationsBy
especifica uno o más certificadores que deben autorizar la versión antes de que se pueda implementar una imagen de contenedor. Esto es necesario solo para las reglas de REQUIRE_ATTESTATION
. Este es el formato de este nodo:
requireAttestationsBy: - projects/PROJECT_ID/attestors/ATTESTOR_NAME - ...
En el ejemplo anterior, PROJECT_ID es el nombre del proyecto en el que se definen los certificadores y ATTESTOR_NAME es el nombre de un certificador que debe firmar la versión.
En el siguiente ejemplo, se muestra cómo especificar certificadores:
requireAttestationsBy: - projects/example-project/attestors/secure-build - projects/example-project/attestors/prod-qualified