Descripción general
En esta página, se explica cómo habilitar el modo de ejecución de prueba. Cuando el modo de ejecución de prueba está habilitado, la autorización binaria verifica el cumplimiento de la política durante la creación del Pod sin bloquear dicha creación. En cambio, los mensajes de estado del cumplimiento de políticas se registran en Cloud Logging. Con esta información, puedes determinar si la implementación de alguna imagen de contenedor se bloqueó de manera accidental y puedes corregir la política. Cuando la política aplica el cumplimiento de la forma prevista, puedes inhabilitar el modo de ejecución de prueba.
Antes de comenzar
En esta guía, se da por sentado que tienes configurada la autorización binaria. Si deseas realizar una configuración simple, consulta la guía de inicio rápido.
Para obtener un instructivo completo y basado en una certificación, consulta Comienza a usar la CLI o Comienza a usar Console.
Habilita la ejecución de prueba
Para habilitar la ejecución de prueba, sigue estos pasos:
gcloud
Exporta la política de autorización binaria predeterminada:
gcloud container binauthz policy export > /tmp/policy.yaml
En un editor de texto, establece enforcementMode en
DRYRUN_AUDIT_LOG_ONLY
.El archivo de políticas en formato YAML debe verse de la siguiente manera:
admissionWhitelistPatterns: - namePattern: gcr.io/google_containers/* - namePattern: gcr.io/google-containers/* - namePattern: k8s.gcr.io/* - namePattern: gke.gcr.io/* - namePattern: gcr.io/stackdriver-agents/* defaultAdmissionRule: evaluationMode: ALWAYS_DENY enforcementMode: DRYRUN_AUDIT_LOG_ONLY name: projects/PROJECT_ID/policy
Vuelve a importar el archivo de políticas en formato YAML a la autorización binaria:
gcloud container binauthz policy import /tmp/policy.yaml
Actualiza el archivo kubeconfig local:
gcloud container clusters get-credentials \ --zone us-central1-a \ CLUSTER_NAME
En el ejemplo anterior, CLUSTER_NAME es el nombre del clúster de GKE.
Console
Ve a la página Autorización binaria en Google Cloud Console.
Haz clic en Configurar política o, si ya existe una, en Editar política.
En la política, cambia evaluationMode de
ALWAYS_ALLOW
aALWAYS_DENY
y establece enforcementMode enDRYRUN_AUDIT_LOG_ONLY
.El archivo de políticas en formato YAML podría aparecer de la siguiente manera:
admissionWhitelistPatterns: - namePattern: gcr.io/google_containers/* - namePattern: gcr.io/google-containers/* - namePattern: k8s.gcr.io/* - namePattern: gke.gcr.io/* - namePattern: gcr.io/stackdriver-agents/* defaultAdmissionRule: evaluationMode: ALWAYS_DENY enforcementMode: DRYRUN_AUDIT_LOG_ONLY name: projects/PROJECT_ID/policy
Haz clic en Guardar política.
Implementa un contenedor
Implementa la imagen de contenedor
Crea un archivo
pod.yaml
que se vea de la siguiente manera (opcional):apiVersion: v1 kind: Pod metadata: name: test-pod spec: containers: - name: test-container image: gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
Implementa la imagen de contenedor:
kubectl apply -f pod.yaml
Confirma que el Pod esté en ejecución
El Pod debe estar en ejecución. Para confirmar, ejecuta el siguiente comando:
kubectl get pods
Deberías ver que
test-pod
esté en ejecución.Verifica el registro de auditoría:
Para ver las entradas del registro de auditoría de la ejecución de prueba en Cloud Logging, consulta Eventos de ejecución de prueba en Cloud Logging.
Un ejemplo del registro de auditoría de la ejecución de prueba se ve de la siguiente manera:
{ insertId: "f87d1ef8-fa7b-4079-be90-d0638e7983ba" labels: { authorization.k8s.io/decision: "allow" authorization.k8s.io/reason: "" imagepolicywebhook.image-policy.k8s.io/dry-run: "true" imagepolicywebhook.image-policy.k8s.io/overridden-verification-result: "'gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4': Denied by an ALWAYS_DENY admission rule " } logName: "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" operation: {…} protoPayload: {…} receiveTimestamp: "2020-06-10T15:59:23.857650559Z" resource: {…} timestamp: "2020-06-10T15:59:00.185878Z" }
En el ejemplo anterior, PROJECT_ID es el ID de tu proyecto.
Realiza una limpieza
Borra el Pod
kubectl delete -f /tmp/pod.yaml
Inhabilita el modo de ejecución de prueba
Asegúrate de inhabilitar el modo de ejecución de prueba mediante la modificación del enforcementMode
en la defaultAdmissionRule
de tu política de autorización binaria. Por ejemplo:
enforcementMode: ALWAYS_ALLOW