Esta página fornece instruções sobre a utilização do breakglass com a autorização binária.
Antes de começar
Este guia pressupõe que configurou a autorização binária.
Vista geral
Usa o breakglass para implementar uma imagem de contentor que a autorização binária bloqueia.
O Breakglass oferece uma saída de emergência que lhe permite substituir a aplicação da política de autorização binária para permitir a implementação de imagens, mesmo as que seriam proibidas pela política.
Esta funcionalidade é implementada de forma consistente com as recomendações na especificação do controlador de admissão do Kubernetes.
Quando usa o acesso de emergência para implementar uma imagem, um evento de acesso de emergência é registado automaticamente nos registos de auditoria da nuvem, independentemente de a implementação cumprir ou violar a política. Nos registos de auditoria do Cloud, pode auditar manualmente ou acionar automaticamente um alerta ou outro evento a jusante.
Para ativar o acesso de emergência, adicione um campo label
à especificação do pod com um sinalizador de política break-glass
.
Demonstre um evento de acesso de emergência
Esta secção mostra como usar o acesso de emergência para implementar imagens, incluindo as que violam a política de autorização binária.
Atualize a política de autorização binária para rejeitar todos os pedidos de implementação
Para atualizar a política de forma a não permitir a implementação de nenhuma imagem, siga os passos seguintes:
Google Cloud consola
Aceda à página Binary Authorization na Google Cloud consola.
Clique em Editar política.
Na página Editar política, em Regra predefinida do projeto, tome nota do modo de avaliação original e, de seguida, clique em Não permitir todas as imagens.
Clique em Guardar política.
gcloud
Para guardar a política existente no projeto atual, execute o seguinte comando:
gcloud container binauthz policy export > SAVE_POLICY_YAML
Substitua SAVE_POLICY_YAML pelo caminho do ficheiro de exportação, por exemplo,
/tmp/save_policy.yaml
.Crie um ficheiro de política:
cat > TEST_POLICY_YAML << EOM admissionWhitelistPatterns: defaultAdmissionRule: enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG evaluationMode: ALWAYS_DENY globalPolicyEvaluationMode: DISABLE EOM
Substitua TEST_POLICY_YAML por um caminho de ficheiro, por exemplo,
/tmp/policy.yaml
.Importe a política:
gcloud container binauthz policy import TEST_POLICY_YAML
Substitua TEST_POLICY_YAML por um caminho de ficheiro, por exemplo,
/tmp/policy.yaml
.
Por predefinição, todas as imagens estão agora bloqueadas para implementação.
Tentar implementar uma imagem
Nesta secção, tenta implementar uma imagem. A regra predefinida da política está configurada para não permitir a implementação de nenhuma imagem, pelo que o pedido de implementação falha.
Crie um ficheiro de configuração no formato YAML. Este ficheiro contém as informações básicas necessárias para criar o 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
Crie o Pod com
kubectl
:kubectl create -f /tmp/create_pod.yaml
É apresentado um erro a indicar que a imagem foi bloqueada pela sua política. O erro é semelhante ao seguinte:
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`.
Ative o acesso de emergência e implemente novamente
Nesta secção, ativa o acesso de emergência. Embora o breakglass seja específico da autorização binária, tem de atualizar o campo label
na especificação do pod para o ativar.
Para ativar o acesso de emergência, execute os seguintes comandos:
Crie um ficheiro de configuração no formato YAML.
O comando seguinte cria o ficheiro que contém a etiqueta
break-glass
e outras informações necessárias para criar o 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
Crie o pod com
kubectl
:kubectl create -f /tmp/create_pod.yaml
Tenha em atenção o resultado:
pod/pod-name created
Encontre a entrada do registo de acesso de emergência nos registos de auditoria do Cloud
Veja eventos de acesso de emergência nos registos de auditoria do Cloud.
As PodSpecs mais antigas que especificam annotations: alpha.image-policy.k8s.io/break-glass
também acionam o breakglass e produzem entradas de registo. A utilização dessa anotação já não é recomendada, mas continua a ser suportada para manter a retrocompatibilidade.
Limpar
Para eliminar o Pod e desativar o acesso de emergência, faça o seguinte:
Elimine o Pod:
kubectl delete -f /tmp/create_pod.yaml
Verifique se recebeu um resultado semelhante a
pod <var>pod-name</var> deleted
.Remova o bloco
label
da especificação do pod.Reponha a sua política:
Google Cloud consola
Aceda à página Binary Authorization na Google Cloud consola.
Clique em Editar política.
Na página Editar política, em Regra predefinida do projeto, reponha o modo de avaliação para a definição anterior.
Clique em Guardar política.
gcloud
Reimporte a sua política original.
gcloud container binauthz policy import SAVE_POLICY_YAML
Substitua SAVE_POLICY_YAML pelo caminho para o ficheiro que criou anteriormente neste guia.
A política é reposta.
O que se segue?
- Veja eventos de acesso de emergência nos registos de auditoria do Cloud.