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. | Sí |
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. | Sí |
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 reglaALWAYS_DENY
: siempre se deniega el despliegue de las imágenes evaluadas por esta reglaREQUIRE_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