Atualizar uma política de autorização binária
Neste documento, você verá como isentar imagens em Políticas de autorização binária.
Neste documento, você atualiza a política para isentar imagens de contêiner no Artifact Registry da aplicação da autorização binária e define a regra padrão para proibir a implantação de todos os outros contêineres.
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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Binary Authorization APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Binary Authorization APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init
- Se você não estiver usando o Cloud Shell,
instale o
kubectl
. Acesse a página Clusters do GKE no Google Cloud console.
O console exibe uma lista de clusters do GKE no seu projeto Google Cloud .
Clique em Criar cluster.
Digite
test-cluster
@ no campo Nome.Selecione Zonal nas opções de Tipo de local.
Selecione
us-central1-a
na lista suspensa Zona.Clique no link Segurança para exibir o painel Segurança.
No painel Segurança, selecione Ativar autorização binária.
Selecione Aplicar somente.
Clique em Criar.
Acesse a página Autorização binária no Google Cloud console.
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.
Volte para a página Autorização binária no Google Cloud console.
Clique em Editar política.
Selecione Não permitir todas as imagens.
Em Imagens isentas de regras de implantação, expanda Caminhos de imagem.
Clique em Adicionar caminhos de imagem.
Artifact Registry
Em Novo caminho de imagem, cole o seguinte caminho de um repositório do Artifact Registry:
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Clique em Concluído para salvar o caminho da imagem.
Clique em Save Policy.
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
e adicione imagens isentas aadmissionWhitelistPatterns
.Para isentar as seguintes imagens de exemplo do Artifact Registry, modifique o arquivo YAML da política da seguinte maneira:
admissionWhitelistPatterns: - namePattern: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 globalPolicyEvaluationMode: ENABLE defaultAdmissionRule: evaluationMode: ALWAYS_DENY enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG name: projects/<var>PROJECT_ID</var>/policy
Importe o arquivo YAML da política para a autorização binária:
gcloud container binauthz policy import /tmp/policy.yaml
Crie um arquivo de texto com a política atualizada no formato JSON:
cat > /tmp/policy.json << EOM { "name": "projects/${PROJECT_ID}/policy", "admissionWhitelistPatterns": [ { "namePattern": "us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0" } ], "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"
Implante uma imagem isenta no cluster.
Console do Google Cloud
Implante uma imagem isenta:
Acesse a página Clusters do GKE no Google Cloud console.
Clique em Implantar.
O console solicita que você insira detalhes sobre a implantação.
Selecione Imagem de contêiner atual.
Insira o caminho da imagem do contêiner.
Artifact Registry
Para implantar uma imagem pelo Artifact Registry, insira:
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Clique em Continuar.
Digite
hello-server
no campo Nome do aplicativo.Clique em Implantar.
kubectl
Artifact Registry
Implante a imagem pelo Artifact Registry:
kubectl run hello-server --image us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 --port 8080
Verifique se a imagem tinha permissão para implantar:
Console do Google Cloud
Para verificar se a imagem foi implantada, faça o seguinte:
- Acesse a página do GKE
- Acesse a página Cargas de trabalho.
A carga de trabalho
hello-server
aparecerá com um ícone verde, indicando que está em execução.kubectl
Para verificar se a imagem tinha permissão para implantar, digite o seguinte comando:
kubectl get pods
Você verá a imagem em execução.
Exclua o pod.
Console do Google Cloud
Na página Cargas de trabalho do GKE:
Selecione a carga de trabalho hello-server.
Clique em Excluir.
Quando solicitado a excluir recursos, clique em Excluir.
kubectl
kubectl delete pod hello-server
Acesse a página Clusters do GKE no Google Cloud console.
Selecione o cluster
test-cluster
e clique em Excluir.- Para saber mais sobre a isenção de imagens, incluindo o uso de caracteres curinga para isentar várias imagens, consulte Isentar imagens.
- Para ver tutoriais completos que descrevem como configurar e aplicar uma política que exige atestados, consulte os seguintes artigos:
- Leia nossos recursos sobre o DevOps e conheça o programa de pesquisa DevOps Research and Assessment (DORA).
Criar um cluster com a autorização binária ativada
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.
Console do Google Cloud
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
Ver a 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:
gcloud
Para ver a política padrão, exporte o arquivo YAML da política:
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/<var>PROJECT_ID</var>/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"
A REST API retorna o seguinte:
{ "name": "projects/PROJECT_ID/policy", "globalPolicyEvaluationMode": "ENABLE", "defaultAdmissionRule": { "evaluationMode": "ALWAYS_ALLOW", "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } }
Permitir apenas imagens isentas
Nesta seção, descrevemos como modificar a política para isentar imagens e proibir a implantação de outras imagens.
Console do Google Cloud
Para modificar a política, faça o seguinte:
gcloud
Para modificar a política e permitir exemplos de imagens do Artifact Registry, faça o seguinte:
API REST
Para modificar a política, faça o seguinte:
Testar a política
Para testar a política implantando a imagem adicionada à lista de permissões Exempt image
,
faça o seguinte:
Limpar
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga as etapas abaixo.
Exclua o cluster que você criou no GKE:
Console
Para excluir o cluster, faça o seguinte:
gcloud
Para excluir o cluster, insira o comando:
gcloud container clusters delete \ --zone=us-central1-a \ test-cluster