Configurar uma política de autorização binária com o GKE
Neste guia de início rápido, mostramos como configurar e testar uma regra básica em uma política de autorização binária.
Neste guia de início rápido, você irá ver e configurar a regra padrão na política. A regra padrão permite que todas as imagens sejam implantadas. Para testar, implante uma imagem de contêiner em um cluster do Google Kubernetes Engine (GKE). Em seguida, defina a regra padrão para impedir que todas as imagens sejam implantadas e tente implantar uma imagem.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Binary Authorization APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Binary Authorization APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Instale
kubectl
.
Criar um cluster com a aplicação da autorização binária ativada
Agora, crie um cluster do GKE com a autorização binária ativada. Este é o cluster em que você quer executar as imagens de contêiner implantadas.
A autorização binária funciona com clusters do Autopilot ou Standard.
Console do Google Cloud
As etapas a seguir configuram um cluster do Autopilot.
No console do Google Cloud, acesse a página Clusters do Kubernetes do GKE.
Clique em Criar.
Em Criar um cluster do Autopilot, faça isto:
No campo Nome, use
test-cluster
.No menu Região, selecione
us-central1
.Expanda a seção Configurações avançadas.
Clique no link Segurança para exibir o painel Segurança.
No painel Segurança, marque a caixa de seleção Ativar autorização binária.
Selecione Aplicar somente.
Clique em Próxima e depois em Próxima: analisar e criar.
Para começar a criar o cluster, clique em Criar.
gcloud
Execute gcloud container clusters create
com a sinalização --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
ativada.
gcloud container clusters create \ --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE \ --zone us-central1-a \ test-cluster
A criação de um cluster pode levar alguns minutos.
Política padrão
Por padrão, sua política de autorização binária é configurada para permitir que todas as imagens de contêiner sejam implantadas.
Console do Google Cloud
Para ver a política padrão, faça o seguinte:
Acesse a página Autorização binária no Console do Google Cloud.
O console exibe detalhes sobre a política.
Clique em Editar política.
Em Regra padrão do projeto, a opção Permitir todas as imagens é selecionada.
gcloud
Para ver a política padrão, exporte o arquivo YAML da política da seguinte maneira:
gcloud container binauthz policy export
Por padrão, o arquivo tem o seguinte conteúdo:
globalPolicyEvaluationMode: ENABLE defaultAdmissionRule: evaluationMode: ALWAYS_ALLOW enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG name: projects/PROJECT_ID/policy
API REST
Para visualizar a política padrão, recupere-a no formato JSON da seguinte maneira:
curl \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "x-goog-user-project: ${PROJECT_ID}" \ "https://binaryauthorization.googleapis.com/v1/projects/${PROJECT_ID}/policy"
O comando produz a seguinte saída:
{ "name": "projects/PROJECT_ID/policy", "globalPolicyEvaluationMode": "ENABLE", "defaultAdmissionRule": { "evaluationMode": "ALWAYS_ALLOW", "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } }
Testar a política de aplicação
É possível testar a política de aplicação tentando implantar uma imagem de contêiner de amostra no cluster.
Neste guia de início rápido, use a imagem de contêiner de amostra localizada no caminho
gcr.io/google-samples/hello-app
no Container Registry. Esta é uma imagem
de contêiner pública criada pelo Google que contém um aplicativo
de amostra "Hello, World!".
Console do Google Cloud
Para testar a política:
Acesse a página Clusters do GKE no Console do Google Cloud.
Clique em Deploy.
O console solicita que você insira detalhes sobre a implantação.
Selecione Imagem de contêiner atual.
Insira
gcr.io/google-samples/hello-app:1.0
como o caminho da imagem do contêiner.Clique em Continuar.
Digite
hello-server
no campo Nome do aplicativo.Clique em Deploy.
kubectl
Para testar a política:
Atualize o arquivo
kubeconfig
local:gcloud container clusters get-credentials \ --zone us-central1-a \ test-cluster
Isso fornece as credenciais e informações do endpoint necessárias para acessar o cluster no GKE.
Implante a imagem:
kubectl run hello-server --image gcr.io/google-samples/hello-app:1.0 --port 8080
Agora, verifique se a implantação foi permitida pela autorização binária.
Console do Google Cloud
Para verificar se a imagem foi implantada, acesse a página Cargas de trabalho do GKE no Console do Google Cloud.
Uma carga de trabalho para a implantação é exibida com um ícone verde que indica que a imagem foi implantada com sucesso.
kubectl
Para verificar se a imagem foi implantada, faça o seguinte:
kubectl get pods
O comando imprime uma mensagem semelhante à seguinte, que indica que a implantação foi bem-sucedida:
NAME READY STATUS RESTARTS AGE hello-server-579859fb5b-h2k8s 1/1 Running 0 1m
Exclua a implantação para seguir para a próxima etapa:
Console do Google Cloud
Para excluir a implantação, faça o seguinte:
Volte para a página Cargas de trabalho do GKE no Console do Google Cloud.
Selecione a carga de trabalho
hello-server
.Clique em Excluir.
kubectl
Para excluir a implantação, faça o seguinte:
kubectl delete deployment hello-server
Configurar a política de aplicação para proibir todas as imagens
Agora, modifique a política para bloquear em vez de permitir que todas as imagens sejam implantadas.
Console do Google Cloud
Para modificar a política, faça o seguinte:
Retorne à página Autorização binária no Console do Google Cloud.
Clique em Editar política.
Selecione Não permitir todas as imagens.
Clique em Save Policy.
gcloud
Para modificar a política, faça o seguinte:
Exporte o arquivo YAML da política:
gcloud container binauthz policy export > /tmp/policy.yaml
Em um editor de texto, altere
evaluationMode
deALWAYS_ALLOW
paraALWAYS_DENY
.O arquivo YAML da política será exibido da seguinte maneira:
globalPolicyEvaluationMode: ENABLE defaultAdmissionRule: evaluationMode: ALWAYS_DENY enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG name: projects/PROJECT_ID/policy
Importe o arquivo YAML da política para a autorização binária:
gcloud container binauthz policy import /tmp/policy.yaml
API REST
Para modificar a política, faça o seguinte:
Crie um arquivo de texto com a política atualizada no formato JSON:
cat > /tmp/policy.json << EOM { "name": "projects/${PROJECT_ID}/policy", "globalPolicyEvaluationMode": "ENABLE", "defaultAdmissionRule": { "evaluationMode": "ALWAYS_DENY", "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } } EOM
Envie a política atualizada para a API REST:
curl -X PUT \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "x-goog-user-project: ${PROJECT_ID}" \ --data-binary @/tmp/policy.json \ "https://binaryauthorization.googleapis.com/v1/projects/${PROJECT_ID}/policy"
Testar a política outra vez
Novamente, teste a política implantando uma imagem de contêiner de amostra no cluster. Desta vez, a autorização binária impede que a imagem seja implantada.
Console do Google Cloud
Implante a imagem:
Acesse a página Clusters do GKE no Console do Google Cloud.
Clique em Deploy.
O console solicita que você insira detalhes sobre a implantação.
Selecione Imagem de contêiner atual.
Insira
gcr.io/google-samples/hello-app:1.0
como o caminho da imagem do contêiner.Clique em Continuar.
Digite
hello-server
no campo Nome do aplicativo.Clique em Deploy.
kubectl
Implante a imagem:
kubectl run hello-server --image gcr.io/google-samples/hello-app:1.0 --port 8080
Agora você pode verificar se a política foi bloqueada:
Console do Google Cloud
Para verificar se a imagem não foi implantada, faça o seguinte:
Volte para a página Cargas de trabalho do GKE no Console do Google Cloud.
A carga de trabalho para a imagem do contêiner aparece com um ícone vermelho, indicando que a imagem não foi implantada.
kubectl
Para verificar se a imagem não foi implantada, execute o comando abaixo:
kubectl get pods
O comando imprime a seguinte mensagem, que indica que a imagem não foi implantada:
No resources found.
Veja mais detalhes sobre a implantação:
kubectl get event --template \ '{{range.items}}{{"\033[0;36m"}}{{.reason}}:{{"\033[0m"}}{{.message}}{{"\n"}}{{end}}'
Você verá uma resposta semelhante a esta:
FailedCreate: Error creating: pods POD_NAME is forbidden: admission webhook "imagepolicywebhook.image-policy.k8s.io" denied the request: Image IMAGE_NAME denied by Binary Authorization default admission rule. Denied by always_deny admission rule
Nesta saída:
- POD_NAME: o nome do pod.
- IMAGE_NAME: o nome da imagem.
- ATTESTOR_NAME: o nome do atestador.
Limpar
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.
Exclua o cluster que você criou no GKE:
Console
Para excluir o cluster, faça o seguinte:
Acesse a página Clusters do GKE no Console do Google Cloud.
Selecione o cluster
test-cluster
e clique em Excluir.
gcloud
Para excluir o cluster, faça o seguinte:
gcloud container clusters delete \ --zone=us-central1-a \ test-cluster
A seguir
- Use o atestador
built-by-cloud-build
para implantar somente imagens criadas pelo Cloud Build (visualização). - Para ver um tutorial completo sobre como solicitar atestados, consulte:
- Leia nossos recursos sobre o DevOps e conheça o programa de pesquisa DevOps Research and Assessment (DORA).