Use o acesso de emergência (GKE e Distributed Cloud)

Esta página fornece instruções sobre a utilização do breakglass com a autorização binária.

Antes de começar

Este guia pressupõe que configurou a autorização binária.

Vista geral

Usa o breakglass para implementar uma imagem de contentor que a autorização binária bloqueia.

O Breakglass oferece uma saída de emergência que lhe permite substituir a aplicação da política de autorização binária para permitir a implementação de imagens, mesmo as que seriam proibidas pela política.

Esta funcionalidade é implementada de forma consistente com as recomendações na especificação do controlador de admissão do Kubernetes.

Quando usa o acesso de emergência para implementar uma imagem, um evento de acesso de emergência é registado automaticamente nos registos de auditoria da nuvem, independentemente de a implementação cumprir ou violar a política. Nos registos de auditoria do Cloud, pode auditar manualmente ou acionar automaticamente um alerta ou outro evento a jusante.

Para ativar o acesso de emergência, adicione um campo label à especificação do pod com um sinalizador de política break-glass.

Demonstre um evento de acesso de emergência

Esta secção mostra como usar o acesso de emergência para implementar imagens, incluindo as que violam a política de autorização binária.

Atualize a política de autorização binária para rejeitar todos os pedidos de implementação

Para atualizar a política de forma a não permitir a implementação de nenhuma imagem, siga os passos seguintes:

Google Cloud consola

  1. Aceda à página Binary Authorization na Google Cloud consola.

    Aceda à Autorização binária

  2. Clique em Editar política.

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

  4. Clique em Guardar política.

gcloud

  1. Para guardar a política existente no projeto atual, execute o seguinte comando:

    gcloud container binauthz policy export > SAVE_POLICY_YAML
    

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

  2. Crie um ficheiro 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 ficheiro, 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 ficheiro, por exemplo, /tmp/policy.yaml.

Por predefinição, todas as imagens estão agora bloqueadas para implementação.

Tentar implementar uma imagem

Nesta secção, tenta implementar uma imagem. A regra predefinida da política está configurada para não permitir a implementação de nenhuma imagem, pelo que o pedido de implementação falha.

  1. Crie um ficheiro de configuração no formato YAML. Este ficheiro 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: us-docker.pkg.dev/google-samples/containers/gke/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
    EOM
    
  2. Crie o Pod com kubectl:

    kubectl create -f /tmp/create_pod.yaml
    

    É apresentado um erro a indicar que a imagem foi bloqueada pela sua política. O erro é semelhante ao seguinte:

    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`.

Ative o acesso de emergência e implemente novamente

Nesta secção, ativa o acesso de emergência. Embora o breakglass seja específico da autorização binária, tem de atualizar o campo label na especificação do pod para o ativar.

Para ativar o acesso de emergência, execute os seguintes comandos:

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

    O comando seguinte cria o ficheiro que contém a etiqueta 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: us-docker.pkg.dev/google-samples/containers/gke/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
    EOM
    
  2. Crie o pod com kubectl:

    kubectl create -f /tmp/create_pod.yaml
    

    Tenha em atenção o resultado: pod/pod-name created

Encontre a entrada do registo de acesso de emergência nos registos de auditoria do Cloud

Veja eventos de acesso de emergência nos registos de auditoria do Cloud.

As PodSpecs mais antigas que especificam annotations: alpha.image-policy.k8s.io/break-glass também acionam o breakglass e produzem entradas de registo. A utilização dessa anotação já não é recomendada, mas continua a ser suportada para manter a retrocompatibilidade.

Limpar

Para eliminar o Pod e desativar o acesso de emergência, faça o seguinte:

  1. Elimine o Pod:

      kubectl delete -f /tmp/create_pod.yaml
      

    Verifique se recebeu um resultado semelhante a pod <var>pod-name</var> deleted.

  2. Remova o bloco label da especificação do pod.

  3. Reponha a sua política:

    Google Cloud consola

    1. Aceda à página Binary Authorization na Google Cloud consola.

      Aceda à Autorização binária

    2. Clique em Editar política.

    3. Na página Editar política, em Regra predefinida do projeto, reponha o modo de avaliação para a definição anterior.

    4. Clique em Guardar política.

    gcloud

    1. Reimporte a sua política original.

        gcloud container binauthz policy import SAVE_POLICY_YAML
      

      Substitua SAVE_POLICY_YAML pelo caminho para o ficheiro que criou anteriormente neste guia.

    A política é reposta.

O que se segue?