Usar o intervalo (GKE)

Esta página fornece instruções sobre como usar o originais com a autorização binária.

Antes de começar

Este guia pressupõe que você tenha configurado a autorização binária.

Visão geral

Use a implantação forçada para implantar uma imagem de contêiner que a autorização binária normalmente bloqueia.

A Breakglass oferece uma saída de emergência que permite modificar a aplicação da política de autorização binária e permitir que uma imagem de contêiner seja implantada, incluindo as de contêiner que não seriam permitidas.

Esse recurso é implementado de acordo com recomendações na especificação do controlador de admissão do Kubernetes.

Quando você usa a implantação forçada para implantar uma imagem, um evento de implantação forçada é registrado automaticamente nos registros de auditoria do Cloud. Nos registros de auditoria do Cloud, é possível auditar manualmente ou acionar automaticamente um alerta ou outro evento downstream.

Para permitir a implantação forçada, adicione um rótulo ao podspec com uma sinalização de política break-glass.

Demonstrar um evento de acesso rápido

Esta seção mostra como usar a implantação forçada para implantar imagens, incluindo aquelas que violam a política de autorização binária.

Atualizar a política de autorização binária para rejeitar todas as solicitações de implantação

Para atualizar a política e proibir a implantação de todas as imagens, siga estas etapas:

Console do Cloud

  1. Acesse a página "Autorização binária" no Console do Google Cloud.

    Acesse Autorização binária

  2. Clique em Editar política.

  3. Na página Editar política, em Regra padrão do projeto, anote o modo de avaliação original e clique em Não permitir todas as imagens.

  4. Clique em Save Policy.

gcloud

  1. Para salvar a política atual no projeto atual, execute este comando:

    gcloud container binauthz policy export > SAVE_POLICY_YAML
    

    Substitua SAVE_POLICY_YAML pelo caminho do arquivo de exportação, por exemplo, /tmp/save_policy.yaml.

  2. Crie um arquivo de política:

    cat > TEST_POLICY_YAML << EOM
    admissionWhitelistPatterns:
    defaultAdmissionRule:
      enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
      evaluationMode: ALWAYS_DENY
    globalPolicyEvaluationMode: DISABLE
    EOM
    

    Substitua TEST_POLICY_YAML por um caminho de arquivo, por exemplo, /tmp/policy.yaml.

  3. Importe a política:

    gcloud container binauthz policy import TEST_POLICY_YAML
    

    Substitua TEST_POLICY_YAML por um caminho de arquivo, por exemplo, /tmp/policy.yaml.

Por padrão, a implantação de todas as imagens é bloqueada.

Tentar implantar uma imagem de contêiner

Embora a implantação forçada seja específica da autorização binária, é preciso atualizar o rótulo em um podspec para ativá-la. Para fazer isso, execute os seguintes comandos:

  1. Crie um arquivo de configuração no formato YAML. Este arquivo contém as informações básicas necessárias para criar o pod:

    cat > /tmp/create_pod.yaml << EOM
    apiVersion: v1
    kind: Pod
    metadata:
      name: breakglass-pod
    spec:
      containers:
      - name: container-name
        image: gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
    EOM
    
  2. Crie o pod usando kubectl:

    kubectl create -f /tmp/create_pod.yaml
    

    Você verá um erro indicando que a imagem foi bloqueada pela política. O erro é semelhante a este:

    Error from server (Forbidden): error when creating "/tmp/create_pod.yaml": pods "breakglass-pod" is forbidden: image policy webhook backend denied one or more images: Image gcr.io/google-samples/hello-app denied by Binary Authorization default
    admission rule. Denied by always_deny admission rule`.

Ativar o acesso rápido e implantar novamente

  1. Crie um arquivo de configuração no formato YAML.

    O comando a seguir cria o arquivo que contém o rótulo break-glass e outras informações necessárias para criar o pod:

    cat > /tmp/create_pod.yaml << EOM
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-name
      labels:
        image-policy.k8s.io/break-glass: "true"
    spec:
      containers:
      - name: container-name
        image: gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
    EOM
    

    Em todas as versões principais mais antigas do Kubernetes, ative a implantação forçada adicionando alpha.image-policy.k8s.io/break-glass ao nó annotations, da seguinte maneira:

    cat > /tmp/create_pod.yaml << EOM
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-name
      annotations:
         alpha.image-policy.k8s.io/break-glass: "true"
    spec:
      containers:
      - name: container-name
        image: gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
    EOM
    
  2. Crie o pod usando kubectl:

    kubectl create -f /tmp/create_pod.yaml
    

    Observe a saída: pod/pod-name created

Encontrar a entrada de registro da implantação forçada nos registros de auditoria do Cloud

Veja os eventos de implantação forçada nos Registros de auditoria do Cloud.

Limpar

  1. Exclua o pod:

      kubectl delete -f /tmp/create_pod.yaml
      

    Verifique se você recebeu uma saída como esta: pod "pod-name" deleted

  2. Reimporte sua política original.

      gcloud container binauthz policy import /tmp/policy_save.yaml