Nesta página, mostramos como usar a validação contínua (CV) com a autorização binária.
A validação contínua é um recurso de autorização binária que verifica periodicamente as imagens de contêiner associadas aos pods em execução para manter a conformidade com as políticas. A CV registra descobertas no Cloud Logging.
A CV não encerra os pods em execução.
Limitações
A CV tem as seguintes limitações:
- A CV é compatível somente com pods implantados no Google Kubernetes Engine (GKE).
- A CV não é compatível com políticas de autorização binária que especificam regras específicas para identidades de serviço do Anthos Service Mesh, contas de serviço do Kubernetes ou namespaces do Kubernetes.
Antes de começar
Você precisa ter configurado a autorização binária para o Google Kubernetes Engine.
Selecione o ID do projeto em que você instalou a autorização binária. A CV registra eventos de conformidade com a política a partir dos pods em todos os clusters no projeto.
Definir papéis do IAM para CV
Os papéis do gerenciamento de identidade e acesso (IAM, na sigla em inglês) incluem permissões e podem ser atribuídos a usuários, grupos e contas de serviço. Os seguintes papéis incluem as permissões listadas para CV:
Nome da função | Permissões de CV | Descrição |
---|---|---|
roles/binaryauthorization.policyEditor |
binaryauthorization.continuousValidationConfig.update |
Ativar e desativar a CV. |
Ativar a CV
Console
Para ativar a CV pelo Console do Google Cloud, faça o seguinte:
No Console do Google Cloud, acesse a página Política de autorização binária.
Clique na guia Política.
Clique em Editar política.
Expanda a seção Configurações adicionais para implantações do GKE e do Anthos.
Marque a caixa de seleção Ativar validação contínua.
Clique em Save Policy.
API REST
Para ativar a CV usando a API REST, faça o seguinte:
Armazene o ID do projeto:
DEPLOYER_PROJECT_ID=DEPLOYER_PROJECT_ID
Substitua DEPLOYER_PROJECT_ID pelo ID do projeto em que você executa o GKE.
Solicite o token do OAuth para o GCP.
BEARER_TOKEN=$(gcloud auth print-access-token)
O token é válido apenas por um curto período.
Ativar a CV:
curl "https://binaryauthorization.googleapis.com/v1alpha2/projects/${DEPLOYER_PROJECT_ID}/continuousValidationConfig" -X PUT -H "authorization: Bearer $BEARER_TOKEN" -H "Content-Type: application/json" --data '{"enforcementPolicyConfig": {"enabled": "true"}}'
A CV agora está configurada para registrar eventos.
A entrada de registro do Logging é semelhante a este exemplo:
{
"insertId": "6054e143-0000-2562-aa64-883d24f57e70",
"jsonPayload": {
"@type": "type.googleapis.com/google.cloud.binaryauthorization.v1beta1.ContinuousValidationEvent",
"podEvent": {
"images": [
{
"description": "Image <var>IMAGE_NAME@IMAGE_DIGEST</var> denied by
attestor projects/<var>ATTESTOR_PROJECT_ID</var>/attestors/<var>ATTESTOR_NAME</var>:
No attestations found that were valid and signed by a key trusted by
the attestor",
"image": "<var>IMAGE_NAME@IMAGE_DIGEST</var>",
"result": "DENY"
}
],
"verdict": "VIOLATES_POLICY",
"deployTime": "2021-03-19T17:00:08Z",
"pod": "<var>POD_NAME</var>"
}
},
"resource": {
"type": "k8s_cluster",
"labels": {
"cluster_name": "<var>CLUSTER_NAME</var>",
"location": "<var>CLUSTER_LOCATION</var>",
"project_id": "<var>DEPLOYER_PROJECT_ID</var>"
}
},
"timestamp": "2021-03-19T17:15:43.872702342Z",
"severity": "WARNING",
"logName": "projects/<var>DEPLOYER_PROJECY_ID</var>/logs/binaryauthorization.googleapis.com%2Fcontinuous_validation",
"receiveTimestamp": "2021-03-19T17:57:00.432116179Z"
}
Para saber como consultar eventos de CV, consulte Ver eventos de CV no Cloud Logging.
Solução de problemas
A CV usa outros serviços do Google Cloud, como o Cloud Asset Inventory e o Pub/Sub. Nos casos em que a CV falha, é possível verificar se há erros do Cloud Asset Inventory no Cloud Logging.
Além disso, a CV cria um recurso de feed chamado binauthz-cv-cai-feed
. Excluir ou modificar o feed pode causar falha na CV. A CV restaura automaticamente feeds
ausentes ou alterados, mas pode não registrar as descobertas até que isso seja feito.
Desativar a CV
Console
Para desativar a CV pelo Console do Google Cloud, faça o seguinte:
No Console do Google Cloud, acesse a página Autorização binária.
Clique na guia Política.
Clique em Editar política.
Desmarque a caixa de seleção Ativar validação contínua.
Clique em Save Policy.
API REST
Para desativar a CV usando a API REST, faça o seguinte:
Armazene o ID do projeto:
DEPLOYER_PROJECT_ID=DEPLOYER_PROJECT_ID
Substitua DEPLOYER_PROJECT_ID pelo ID do projeto em que você executa o GKE.
Solicite o token do OAuth para o GCP.
BEARER_TOKEN=$(gcloud auth print-access-token)
O token é válido apenas por um curto período.
Desative a CV usando o seguinte comando:
curl "https://binaryauthorization.googleapis.com/v1alpha2/projects/${DEPLOYER_PROJECT_ID}/continuousValidationConfig" -X PUT -H "authorization: Bearer $BEARER_TOKEN" -H "Content-Type: application/json" --data '{"enforcementPolicyConfig": {"enabled": "false"}}'
Ver eventos de CV no Cloud Logging
Depois de ativar a CV, ela registra regularmente todos os pods que violam a política de autorização binária no Cloud Logging.
Essas entradas de registro contêm o seguinte nome:
logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"
Explorador de registros
Para ver eventos de CV no Cloud Logging usando o Explorador de registros, faça o seguinte:
Selecione o ID do projeto em que você ativou o pacote de operações do Google Cloud.
Insira a seguinte consulta na caixa consulta de pesquisa:
logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"
Selecione o intervalo de tempo no seletor de intervalo de tempo.
Visualizador de registros legado
Para ver eventos de CV no Cloud Logging usando o Explorador de registros, faça o seguinte:
Selecione Voltar para o Visualizador de registros legado no menu suspenso Opções.
Escolha o projeto do Google Cloud em que você configurou o pacote de operações do Google Cloud.
Digite a seguinte consulta na caixa de consulta de pesquisa:
logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"
Selecione o intervalo de tempo no seletor de intervalo de tempo.
gcloud
Para ver eventos de CV da última semana no Cloud Logging usando
gcloud
, execute o comando a seguir:
gcloud logging read --order="desc" --freshness=7d \
'logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"'
A seguir
- Usar a implantação forçada para implantar um pod e ver eventos de implantação forçada.
- Ativar teste, implantar uma imagem de contêiner e ver eventos de teste.