Guia de início rápido: monitorar a segurança dos pods com validação contínua
Saiba como começar a usar a validação contínua de autorização binária (CV) com políticas baseadas em verificação. Neste guia de início rápido, use as seguintes verificações de CV para validar continuamente os pods em execução para as seguintes condições:
- Diretório confiável: verifica se as imagens associadas ao pod residem em um ou mais diretórios confiáveis especificados na política.
- Atualização de imagem: verifica se as imagens do pod foram enviadas dentro de um número de dias especificado na política.
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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Binary Authorization and Google Kubernetes Engine APIs:
gcloud services enable container.googleapis.com
binaryauthorization.googleapis.com - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Binary Authorization and Google Kubernetes Engine APIs:
gcloud services enable container.googleapis.com
binaryauthorization.googleapis.com - Instale a ferramenta de linha de comando
kubectl
. - Se as políticas de autorização binária e os clusters do GKE estiverem em projetos diferentes, verifique se a autorização binária está ativada nos dois projetos.
Criar uma política de plataforma
Para configurar uma política da plataforma de CV do GKE, faça isto:
Crie o arquivo YAML de política da plataforma:
cat << EOF > /tmp/my-policy.yaml gkePolicy: checkSets: - checks: - trustedDirectoryCheck: trustedDirPatterns: - us-central1-docker.pkg.dev/my-project/my-directory displayName: My trusted directory check - imageFreshnessCheck: maxUploadAgeDays: 30 displayName: My image freshness check displayName: My trusted directory and image freshness check set EOF
Essa política verifica as seguintes condições:
As imagens dos pods são armazenadas no repositório do Artifact Registry chamado
us-central1-docker.pkg.dev/my-project/my-directory
.As imagens dos pods foram enviadas para os repositórios Artifact Registry ou Container Registry nos últimos 30 dias.
Crie a política da plataforma:
gcloud beta container binauthz policy create POLICY_ID \ --platform=gke \ --policy-file=/tmp/my-policy.yaml \ --project=POLICY_PROJECT_ID
Substitua:
POLICY_ID
: um ID de sua escolhaPOLICY_PROJECT_ID
: o ID do projeto de política
Criar ou atualizar um cluster
Para ativar o CV em um cluster, crie um novo cluster ou atualize um cluster existente.
Para criar um cluster com a política de plataforma baseada em verificação ativada, execute o seguinte comando:
gcloud beta container clusters create CLUSTER_NAME
\ --location=LOCATION \ --binauthz-evaluation-mode=POLICY_BINDINGS \ --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID \ --project=CLUSTER_PROJECT_IDSubstitua:
CLUSTER_NAME
: o nome do cluster.LOCATION
: o local. Por exemplo:us-central1
ouasia-south1
.POLICY_PROJECT_ID
: o ID do projeto em que a política está armazenadaPOLICY_ID
: o ID da políticaCLUSTER_PROJECT_ID
: o ID do projeto do cluster
Aguarde a criação do cluster.
Para atualizar um cluster com políticas baseadas em verificação ativadas, execute o comando a seguir.
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --binauthz-evaluation-mode=POLICY_BINDINGS \ --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID \ --project=CLUSTER_PROJECT_ID
Substitua:
CLUSTER_NAME
: o nome do cluster.LOCATION
: o local. Por exemplo:us-central1
ouasia-south1
.POLICY_PROJECT_ID
: o ID do projeto em que a política está armazenadaPOLICY_ID
: o ID da políticaCLUSTER_PROJECT_ID
: o ID do projeto do cluster
Aguarde a atualização do cluster.
Implantar uma imagem
Consiga a credencial de
kubectl
:gcloud container clusters get-credentials CLUSTER_NAME
Implantar uma imagem:
kubectl run hello-app \ --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
A imagem
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
satisfaz a verificação de atualização porque ela foi enviada para o repositório nos últimos 30 dias. No entanto, a imagem não atende à verificação de diretório confiável porque ela não está emus-central1-docker.pkg.dev/my-project/my-directory
. Como resultado, o CV produzTrustedDirectoryCheck
entradas de registro no Cloud Logging.
Visualize os registros
A entrada de registro aparece no Cloud Logging até 24 horas após a implantação do pod, mas pode aparecer em algumas horas.
Para ver o registro no Cloud Logging, use o seguinte filtro:
logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation" "policyName"
O registro do pod hello-app
é semelhante ao abaixo. Alguns campos podem ser diferentes dependendo do ID do projeto, do nome do cluster etc.
{
"insertId": "637c2de7-0000-2b64-b671-24058876bb74",
"jsonPayload": {
"podEvent": {
"endTime": "2022-11-22T01:14:30.430151Z",
"policyName": "projects/1234567890/platforms/gke/policies/my-policy",
"images": [
{
"result": "DENY",
"checkResults": [
{
"explanation": "TrustedDirectoryCheck at index 0 with display name \"My trusted directory check\" has verdict NOT_CONFORMANT. Image is not in a trusted directory",
"checkSetName": "Default check set",
"checkSetIndex": "0",
"checkName": "My trusted directory check",
"verdict": "NON_CONFORMANT",
"checkType": "TrustedDirectoryCheck",
"checkIndex": "0"
}
],
"image": "us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0"
}
],
"verdict": "VIOLATES_POLICY",
"podNamespace": "default",
"deployTime": "2022-11-22T01:06:53Z",
"pod": "hello-app"
},
"@type": "type.googleapis.com/google.cloud.binaryauthorization.v1beta1.ContinuousValidationEvent"
},
"resource": {
"type": "k8s_cluster",
"labels": {
"project_id": "my-project",
"location": "us-central1-a",
"cluster_name": "my-cluster"
}
},
"timestamp": "2022-11-22T01:44:28.729881832Z",
"severity": "WARNING",
"logName": "projects/my-project/logs/binaryauthorization.googleapis.com%2Fcontinuous_validation",
"receiveTimestamp": "2022-11-22T03:35:47.171905337Z"
}
A entrada de registro mostra informações sobre a violação da política, incluindo os seguintes campos:
policyName
: uma política da plataforma que a CV estava usando quando identificou a violaçãocheckResults
: um bloco de resultados que inclui os seguintes campos:explanation
: uma mensagem de errocheckSetName
: o valor dedisplayName
para o conjunto de verificaçãocheckSetIndex
: o índice da verificação definida na políticacheckName
: o nome da verificaçãocheckIndex
: o índice da verificação no conjunto de verificaçãoverdict
: o veredito que resultou na entrada de registro, neste casoNOT_CONFORMANT
porque a verificação não foi atendida.
Algumas verificações podem incluir outras informações que podem ajudar a entender por que a verificação não foi atendida.
Como a imagem cumpriu a verificação, ela não aparece no registro.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, exclua o projeto do Google Cloud com esses recursos.
Nesta seção, descrevemos como limpar o monitoramento de CV configurado anteriormente neste guia.
É possível desativar o monitoramento de CV ou a autorização binária e a CV no cluster.
Desativar a autorização binária em um cluster
Para desativar a aplicação do CV e da autorização binária no seu cluster, execute o seguinte comando:
gcloud beta container clusters update CLUSTER_NAME \
--binauthz-evaluation-mode=DISABLED \
--location=LOCATION \
--project=CLUSTER_PROJECT_ID
Substitua:
CLUSTER_NAME
: o nome do cluster.LOCATION
: o local do clusterCLUSTER_PROJECT_ID
: o ID do projeto do cluster
Desativar o monitoramento de políticas com base em verificações em um cluster
Para desativar o CV com políticas baseadas em verificação no cluster e reativar a aplicação usando a política de autorização binária, execute o seguinte comando:
gcloud beta container clusters update CLUSTER_NAME \
--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE \
--location=LOCATION \
--project="CLUSTER_PROJECT_ID"
Substitua:
CLUSTER_NAME
: o nome do cluster.LOCATION
: o local do clusterCLUSTER_PROJECT_ID
: o ID do projeto do cluster
Observe que --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
é equivalente à sinalização --enable-binauthz
mais antiga.
Exclua a política:
Para excluir a política, execute o comando a seguir. Não é necessário excluir a política de plataforma com base em verificação para desativar esse tipo de auditoria.
gcloud beta container binauthz policy delete POLICY_ID \
--platform=gke \
--project="POLICY_PROJECT_ID"
Substitua:
POLICY_ID
: o ID da políticaPOLICY_PROJECT_ID
: o ID do projeto de política
A seguir
- Usar a verificação de atualização de imagem
- Usar a verificação de atestado de assinatura simples
- Usar a verificação de assinatura do Sigstore
- Usar a verificação da SLSA
- Usar a verificação de diretório confiável
- Usar a verificação de vulnerabilidades
Saiba mais sobre a CV e outras verificações de CV.