Audit logging

Visão geral

O GKE On-Prem usa os registros de auditoria do Kubernetes (em inglês), que mantêm um registro cronológico das chamadas feitas ao servidor da API Kubernetes do cluster. Os registros de auditoria são úteis para investigar solicitações de API suspeitas e coletar estatísticas.

Antes do Anthos 1.2, o GKE On-Prem gravava registros de auditoria somente no disco. O Anthos 1.2 introduz um recurso Alfa que permite que os registros de auditoria sejam gravados nos registros de auditoria do Cloud em um projeto do Google Cloud. A gravação em registros de auditoria do Cloud tem vários benefícios em relação à gravação em disco ou até mesmo à captura de registros em um sistema de geração de registros no local:

  • Os registros de auditoria de todos os clusters do Anthos podem ser centralizados.
  • As entradas de registro gravadas nos registros de auditoria do Cloud são imutáveis.
  • As entradas de registros de auditoria do Cloud são mantidas por 400 dias.
  • Os registros de auditoria do Cloud estão incluídos no preço do Anthos.

É possível configurar o GKE On-Prem para gravar registros no disco ou em registros de auditoria do Cloud.

Geração de registros de auditoria baseada em disco

Por padrão, os registros de auditoria do GKE On-Prem são gravados em um disco permanente para que as reinicializações e upgrades de VMs não façam com que os registros desapareçam. O GKE On-Prem mantém até 10 GB de entradas de registro de auditoria.

Registros de auditoria do Cloud

Se os registros de auditoria do Cloud estiverem ativados, as entradas de registro de auditoria referentes à atividade do administrador de todos os servidores da API Kubernetes serão enviadas ao Google Cloud, usando o projeto e o local que você especificar ao criar um cluster de usuário.

O GKE On-Prem implanta um pod audit-proxy nos clusters de administrador e de usuário. Esse pod armazena em buffer e grava entradas nos registros de auditoria do Cloud.

Limitações

Os registros de auditoria do Cloud para o GKE On-Prem são um recurso Alfa. Esta versão Alfa tem várias limitações:

  • Só é possível configurar os registros de auditoria do Cloud durante a criação do cluster de usuário. Ou seja, você precisa criar um novo cluster de usuário.

  • A geração de registros de acesso a dados não é compatível.

  • Não é possível modificar a política de auditoria do Kubernetes.

Essas limitações serão abordadas em versões futuras.

Como ativar a API de clusters do Anthos

Para usar os registros de auditoria do Cloud com o GKE On-Prem, ative a API de clusters do Anthos.

Ativar a API de clusters do Anthos

Como criar uma conta de serviço para geração de registros de auditoria

Você já tem várias contas de serviço criadas para usar com o GKE On-Prem. Para este recurso Alfa, é necessário criar uma conta de serviço e colocá-la na lista de permissões.

  1. Crie sua conta de serviço dos registros de auditoria do Cloud:

    gcloud iam service-accounts create audit-logging-service-account
  2. Crie um arquivo de chave JSON para sua conta de serviço dos registros de auditoria do Cloud:

    gcloud iam service-accounts keys create audit-logging-key.json \
       --iam-account [Cloud Audit Logs_SERVICE_ACCOUNT_EMAIL]
    

    em que [Cloud Audit Logs_SERVICE_ACCOUNT_EMAIL] é o endereço de e-mail da sua conta de serviço dos registros de auditoria do Cloud.

  3. Salve audit-logging-key.json na estação de trabalho do administrador no mesmo local que as outras chaves da conta de serviço.

Como colocar sua conta de serviço na lista de permissões

Para solicitar que sua conta de serviço de registros de auditoria do Cloud seja permitida, preencha o formulário Alfa de registros de auditoria do Cloud para o GKE On-Prem. Sua conta de serviço precisa ser permitida antes de você criar um cluster de usuário que ative os registros de auditoria do Cloud.

Como criar um cluster de usuário com registros de auditoria do Cloud ativados

  1. Se você ainda não criou um cluster de administrador, crie novos clusters de administrador e de usuário seguindo as instruções em Como instalar usando endereços IP estáticos ou Como instalar usando DHCP.

    Se você já tiver um cluster de administrador, crie um novo cluster de usuário seguindo as instruções em Como criar clusters de usuário extras.

  2. Depois de executar gkectl create-config, preencha o arquivo de configuração normalmente, mas também preencha a nova seção cloudauditlogging em usercluster.

  3. Defina cloudauditlogging.projectid como o ID do projeto do Google Cloud em que você quer visualizar os registros de auditoria que pertencem ao cluster de usuário.

  4. Defina cloudauditloggijg.clusterlocation como uma região do Google Cloud em que você quer armazenar registros de auditoria. É uma boa ideia escolher uma região próxima ao data center no local.

  5. Defina cloudauditlogging.serviceaccountkeypath como o caminho do arquivo de chave JSON para sua conta de serviço dos registros de auditoria do Cloud.

Exemplo:

cloudauditlogging:
  projectid: "my-project"
  clusterlocation: "us-west1"
  serviceaccountkeypath: "/my-key-folder/audit-logging-key.json"

Continue a criação do cluster normalmente.

Como acessar os registros de auditoria do GKE On-Prem

Geração de registros de auditoria baseada em disco

  1. Veja os servidores da API Kubernetes em execução no cluster de administrador e todos os clusters de usuário associados:

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] get pods --all-namespaces -l component=kube-apiserver
    

    em que [ADMIN_CLUSTER_KUBECONFIG] é o arquivo kubeconfig do cluster de administrador.

  2. Faça o download dos registros de auditoria do servidor da API:

    kubectl cp -n [NAMESPACE] [APISERVER_POD_NAME]:/var/log/kube-audit/kube-apiserver-audit.log /tmp/kubeaudit.log
    

    Esse comando busca o arquivo de registro mais recente, que pode conter até 1 GB de dados para o cluster de administrador e até 850 GB para clusters de usuário.

    Registros de auditoria mais antigos são mantidos em arquivos separados. Para visualizar esses arquivos:

    kubectl exec -n [NAMESPACE] [APISERVER_POD_NAME] -- ls /var/log/kube-audit -la
    

    O nome de arquivo de cada registro de auditoria tem um carimbo de data/hora que indica quando o arquivo foi alternado. Cada arquivo inclui registros de auditoria até esse horário e data.

Registros de auditoria do Cloud

Console

  1. No console do Google Cloud, acesse a página Registros no menu Logging.

    Acesse o Explorador de registros

  2. Na caixa Filtrar por rótulo ou pesquisa de texto, logo acima dos menus suspensos discutidos anteriormente, clique na seta para baixo para abrir o menu suspenso. No menu, escolha Converter para filtro avançado.

  3. Preencha a caixa de texto com o filtro a seguir:

    resource.type="k8s_cluster"
    logName="projects/[PROJECT_ID]/logs/externalaudit.googleapis.com%2Factivity"
    protoPayload.serviceName="anthosgke.googleapis.com"
    
  4. Clique em Enviar filtro para exibir todos os registros de auditoria dos clusters do GKE On-Prem que foram configurados para fazer login nesse projeto.

gcloud

Liste as duas primeiras entradas no registro de atividade do administrador do projeto que se aplicam ao tipo de recurso k8s_cluster:

gcloud logging read \
    'logName="projects/[PROJECT_ID]/logs/externalaudit.googleapis.com%2Factivity" \
    AND resource.type="k8s_cluster" \
    AND protoPayload.serviceName="anthosgke.googleapis.com" ' \
    --limit 2 \
    --freshness 300d

[PROJECT_ID] é o ID do projeto.

A saída mostra duas entradas de registro. Observe que, para cada entrada de registro, o campo logName tem o valor projects/[PROJECT_ID]/logs/externalaudit.googleapis.com%2Factivity, e protoPayload.serviceName é igual a anthosgke.googleapis.com.

Política de auditoria

O comportamento do registro de auditoria é determinado por uma política de registro de auditoria do Kubernetes configurada estaticamente. No momento, não é possível alterar essa política, mas ela estará disponível em uma versão futura.