En esta página se explica cómo usar el acceso de emergencia con la autorización binaria.
Antes de empezar
En esta guía se da por hecho que has configurado la autorización binaria.
Información general
Usas breakglass para desplegar una imagen de contenedor que la autorización binaria bloquea.
Acceso de emergencia proporciona una vía de escape de emergencia que te permite anular la aplicación de la política de autorización binaria para permitir que se desplieguen imágenes, incluso aquellas que la política no permitiría.
Esta función se implementa de acuerdo con las recomendaciones de la especificación del controlador de admisión de Kubernetes.
Cuando usas el acceso de emergencia para desplegar una imagen, se registra automáticamente un evento de acceso de emergencia en los registros de auditoría de Cloud, independientemente de si el despliegue cumple o infringe la política. En Registros de auditoría de Cloud, puedes auditar manualmente o activar automáticamente una alerta u otro evento posterior.
Para habilitar BreakGlass, añade un campo label
a la especificación del pod con una marca de política break-glass
.
Demostrar un evento de acceso de emergencia
En esta sección se muestra cómo usar Breakglass para desplegar imágenes, incluidas las que infringen la política de autorización binaria.
Actualiza la política de autorización binaria para rechazar todas las solicitudes de implementación
Para actualizar la política de forma que no se puedan desplegar imágenes, sigue estos pasos:
Google Cloud consola
Ve a la página Autorización binaria de la Google Cloud consola.
Haz clic en Editar política.
En la página Editar política, en Regla predeterminada del proyecto, anota el modo de evaluación original y, a continuación, haz clic en No permitir todas las imágenes.
Haz clic en Guardar política.
gcloud
Para guardar la política actual en el proyecto, ejecuta el siguiente comando:
gcloud container binauthz policy export > SAVE_POLICY_YAML
Sustituye SAVE_POLICY_YAML por la ruta del archivo de exportación. Por ejemplo,
/tmp/save_policy.yaml
.Crea un archivo de política:
cat > TEST_POLICY_YAML << EOM admissionWhitelistPatterns: defaultAdmissionRule: enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG evaluationMode: ALWAYS_DENY globalPolicyEvaluationMode: DISABLE EOM
Sustituye TEST_POLICY_YAML por una ruta de archivo. Por ejemplo,
/tmp/policy.yaml
.Importa la política:
gcloud container binauthz policy import TEST_POLICY_YAML
Sustituye TEST_POLICY_YAML por una ruta de archivo. Por ejemplo,
/tmp/policy.yaml
.
De forma predeterminada, ahora se bloquea la implementación de todas las imágenes.
Intenta implementar una imagen
En esta sección, intentará implementar una imagen. La regla predeterminada de la política está configurada para no permitir que se desplieguen imágenes, por lo que la solicitud de despliegue falla.
Crea un archivo de configuración en formato YAML. Este archivo contiene la información básica necesaria para crear el pod:
cat > /tmp/create_pod.yaml << EOM apiVersion: v1 kind: Pod metadata: name: breakglass-pod spec: containers: - name: container-name image: us-docker.pkg.dev/google-samples/containers/gke/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4 EOM
Crea el Pod con
kubectl
:kubectl create -f /tmp/create_pod.yaml
Aparece un error que indica que la imagen se ha bloqueado por tu política. El error es similar al siguiente:
Error from server (Forbidden): error when creating "/tmp/create_pod.yaml": pods "breakglass-pod" is forbidden: image policy webhook backend denied one or more images: Image gcr.io/google-samples/hello-app denied by Binary Authorization default admission rule. Denied by always_deny admission rule`.
Habilita el acceso de emergencia y vuelve a implementar
En esta sección, habilitarás BreakGlass. Aunque Breakglass es específico de la autorización binaria, debes actualizar el campo label
en la especificación de Pod para habilitarlo.
Para habilitar el acceso de emergencia, ejecuta los siguientes comandos:
Crea un archivo de configuración en formato YAML.
El siguiente comando crea el archivo que contiene la etiqueta
break-glass
y otra información necesaria para crear el pod:cat > /tmp/create_pod.yaml << EOM apiVersion: v1 kind: Pod metadata: name: pod-name labels: image-policy.k8s.io/break-glass: "true" spec: containers: - name: container-name image: us-docker.pkg.dev/google-samples/containers/gke/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4 EOM
Crea el pod con
kubectl
:kubectl create -f /tmp/create_pod.yaml
Fíjate en el resultado:
pod/pod-name created
Buscar la entrada de registro de acceso de emergencia en Registros de auditoría de Cloud
Consulta los eventos de acceso de emergencia en Registros de auditoría de Cloud.
Los PodSpecs antiguos que especifican annotations: alpha.image-policy.k8s.io/break-glass
también activan el acceso de emergencia y generan entradas de registro. Ya no se recomienda usar esa anotación, pero sigue siendo compatible para mantener la retrocompatibilidad.
Limpieza
Para eliminar el Pod y desactivar Break Glass, sigue estos pasos:
Elimina el pod:
kubectl delete -f /tmp/create_pod.yaml
Comprueba que has recibido un resultado como
pod <var>pod-name</var> deleted
.Quita el bloque
label
de la especificación de tu pod.Restablece tu política:
Google Cloud consola
Ve a la página Autorización binaria de la Google Cloud consola.
Haz clic en Editar política.
En la página Editar política, en Regla predeterminada del proyecto, restablece el modo de evaluación al ajuste anterior.
Haz clic en Guardar política.
gcloud
Vuelve a importar tu política original.
gcloud container binauthz policy import SAVE_POLICY_YAML
Sustituye SAVE_POLICY_YAML por la ruta del archivo que has creado anteriormente en esta guía.
Se restablecerá tu política.
Siguientes pasos
- Consulta los eventos de acceso de emergencia en Registros de auditoría de Cloud.