Visão geral
Esta página explica como ativar o modo de simulação. Com o modo de simulação ativado, a autorização binária verifica a conformidade da política na criação do pod sem realmente bloquear a criação dele. Em vez disso, as mensagens de status de conformidade com a política são registradas no Cloud Logging. Com essas informações, é possível determinar se alguma imagem de contêiner teria sido bloqueada acidentalmente para ser implantada e corrigir a política. Quando a política impõe a conformidade conforme o esperado, você pode desativar o modo de simulação.
Antes de começar
Este guia pressupõe que você tenha a autorização binária configurada. Para uma configuração simples, consulte o guia de início rápido.
Para ver um tutorial completo e baseado em attestation, consulte Primeiros passos com a CLI ou Primeiros passos no Console.
Ativar simulação
Para ativar a simulação, faça o seguinte:
gcloud
Exporte a política de autorização binária padrão:
gcloud container binauthz policy export > /tmp/policy.yaml
Em um editor de texto, defina a aplicação para
DRYRUN_AUDIT_LOG_ONLY
.O arquivo YAML da política deve ter esta aparência:
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
Importe o arquivo YAML da política de volta para a autorização binária:
gcloud container binauthz policy import /tmp/policy.yaml
Atualize o arquivo kubeconfig local:
gcloud container clusters get-credentials \ --zone us-central1-a \ CLUSTER_NAME
Em que CLUSTER_NAME é o nome do cluster do GKE.
Console
Acesse a página "Autorização binária" no Console do Google Cloud.
Clique em Configurar política ou, se houver uma política, em Editar política.
Na política, altere o "avaliaçãoMode" de
ALWAYS_ALLOW
paraALWAYS_DENY
e defina a aplicação paraDRYRUN_AUDIT_LOG_ONLY
.O arquivo YAML da política pode aparecer da seguinte maneira:
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
Clique em Salvar política.
Implantar um contêiner
Implantar a imagem do contêiner
[Opcional]: crie um arquivo
pod.yaml
parecido com o seguinte:apiVersion: v1 kind: Pod metadata: name: test-pod spec: containers: - name: test-container image: gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
Implante a imagem do contêiner:
kubectl apply -f pod.yaml
Confirmar se o pod está em execução
O pod deve estar em execução. Para confirmar, execute:
kubectl get pods
Você verá que
test-pod
está em execução.Verifique o registro de auditoria:
Para ver as entradas de registro de auditoria de simulação no Cloud Logging, consulte Eventos de simulação no Cloud Logging.
Um exemplo de registro de auditoria de simulação é o seguinte:
{ 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" }
em que project-id é o ID do projeto.
Limpeza
Excluir o pod
kubectl delete -f /tmp/pod.yaml
Desativar modo de simulação
Desative o modo de simulação alterando enforcementMode
no defaultAdmissionRule
na política de autorização binária. Exemplo:
enforcementMode: ALWAYS_ALLOW