Audit logging

Visão geral

Os clusters do Anthos no VMware (GKE no local) usam o Kubernetes Audit Logging, que mantém um registro cronológico das chamadas feitas ao servidor da API Kubernetes de um cluster. Os registros de auditoria são úteis para investigar solicitações de API suspeitas e coletar estatísticas.

Em um projeto do Google Cloud, é possível configurar um cluster para gravar registros de auditoria no disco ou em registros de auditoria do 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.

Geração de registros de auditoria baseada em disco

Por padrão, os registros de auditoria 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. Os clusters do Anthos no VMware mantêm até 12 GB de entradas de registro de auditoria.

Registros de auditoria do Cloud

Se você ativar os registros de auditoria do Cloud para um cluster, as entradas de registro de auditoria da atividade do administrador do servidor da API Kubernetes do cluster serão enviadas ao Google Cloud, usando o projeto do Google Cloud especificado no campo cloudAuditLogging.projectID do arquivo de configuração do cluster. Esse projeto do Google Cloud é chamado de projeto de registro de auditoria.

O projeto de geração de registros de auditoria precisa ser igual ao projeto de conexão.

Quando você ativa os Registros de auditoria do Cloud, os clusters do Anthos no VMware desativam a geração de registros de auditoria baseada em disco.

Para armazenar em buffer e gravar entradas de registro nos registros de auditoria do Cloud, os clusters do Anthos no VMware implantam um pod audit-proxy no cluster de administrador. Esse pod também está disponível como um contêiner de arquivo secundário nos clusters do usuário.

Limitações

Os registros de auditoria do Cloud para clusters do Anthos no VMware são um recurso de visualização. Essa versão de pré-lançamento tem várias limitações:

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

  • Os registros de auditoria do Cloud não são resilientes a interrupções de rede estendidas. Se as entradas de registro não puderem ser exportadas para o Google Cloud, elas serão armazenadas em um buffer de disco de 10G. Se esse buffer for preenchido, as entradas subsequentes serão descartadas.

Ativar a API Anthos Audit

Ative a API Anthos Audit no projeto de geração de registros de auditoria.

Ative a API Anthos Audit.

Criar uma conta de serviço para Registros de auditoria do Cloud

Você já tem uma ou mais contas de serviço criadas para usar com clusters do Anthos no VMware. Para esse recurso, é necessário criar uma conta de serviço adicional chamada conta de serviço da geração de registros de auditoria.

  1. Crie sua conta de serviço de registro de auditoria:

    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 AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL
    

    em que AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL é o endereço de e-mail da sua conta de serviço.

  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.

Criar um cluster de administrador com os Registros de auditoria do Cloud ativados

Você só pode ativar os Registros de auditoria do Cloud para um cluster de administrador depois de criar o cluster de administrador. Não é possível modificar um cluster de administrador existente para ativar os Registros de auditoria do Cloud.

  1. Consulte Como criar um cluster de administrador.

  2. No arquivo de configuração do cluster de usuário, preencha a seção cloudAuditLogging.

  3. Defina cloudAuditLogging.projectId como o ID do projeto de geração de registros de auditoria.

  4. Defina cloudAuditLogging.clusterLocation como uma região do Google Cloud em que você quer armazenar registros de auditoria. Para melhorar a latência, escolha uma região próxima ao data center local.

  5. Defina cloudAuditLogging.serviceAccountKeyPath como o caminho do arquivo da chave JSON para a conta de serviço de geração de registros de auditoria.

Exemplo:

cloudAuditLogging:
  projectId: "my-project"
  clusterLocation: "us-west1"
  serviceAccountKeyPath: "/my-key-folder/audit-logging-key.json"

Continue a criação do cluster normalmente.

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

  1. Consulte Como criar um cluster de usuário.

  2. No arquivo de configuração do cluster de usuário, preencha a seção cloudAuditLogging.

  3. Defina cloudAuditLogging.projectId como o ID do projeto de geração de registros de auditoria.

  4. Defina cloudAuditLogging.clusterLocation como uma região do Google Cloud em que você quer armazenar registros de auditoria. Para melhorar a latência, escolha uma região próxima ao data center local.

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

  6. Verifique se a seção gkeConnect está preenchida e se gkeConnect.projectID é igual a cloudAuditLogging.projectID.

Exemplo:

gkeConnect:
  projectId: "my-project"
  registerServiceAccountKeyPath: "/my-key-fokder/connect-register-key.json"

cloudAuditLogging:
  projectId: "my-project"
  clusterLocation: "us-west1"
  serviceAccountKeyPath: "/my-key-folder/audit-logging-key.json"

Continue a criação do cluster normalmente.

Ativar os registros de auditoria do Cloud para um cluster de usuário existente

Para ativar os registros de auditoria do Cloud, o cluster já precisa estar registrado. Ou seja, você preencheu a seção gkeConnect do arquivo de configuração do cluster antes de criar o cluster.

  1. No arquivo de configuração do cluster de usuário, preencha a seção cloudAuditLogging.

  2. Defina cloudAuditLogging.projectId como o ID do projeto de geração de registros de auditoria.

  3. Defina cloudAuditLogging.clusterLocation como uma região do Google Cloud em que você quer armazenar registros de auditoria. Para melhorar a latência, escolha uma região próxima ao data center local.

  4. Defina cloudAuditLogging.serviceAccounKeyPath como o caminho do arquivo de chave JSON para sua conta de serviço dos registros de auditoria do Cloud.

  5. Verifique se a seção gkeConnect está preenchida e se gkeConnect.projectID é igual a cloudAuditLogging.projectID.

Exemplo:

gkeConnect:
  projectId: "my-project"
  registerServiceAccountKeyPath: "/my-key-fokder/connect-register-key.json"

cloudAuditLogging:
  projectId: "my-project"
  clusterLocation: "us-west1"
  serviceAccountKeyPath: "/my-key-folder/audit-logging-key.json"

Atualize o cluster de usuário:

gkectl update cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config [USER_CLUSTER_CONFIG]

Desativar os registros de auditoria do Cloud de um cluster de usuário existente

  1. No arquivo de configuração do cluster de usuário, exclua a seção cloudAuditLogging.

  2. Atualize o cluster de usuário:

gkectl update cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config [USER_CLUSTER_CONFIG]

Acessar registros de auditoria

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.

    Também é possível encontrar os registros de auditoria do cluster de administração nos nós do plano de controle em /var/log/kube-audit/kube-apiserver-audit.log. Os registros de auditoria do cluster do usuário estão no PersistentVolumeClaim chamado kube-audit-kube-apiserver-0. É possível acessar esses dados dentro dos seus próprios pods usando entradas volume como esta:

    volumes:
    ‐ name: kube-audit
      hostPath:
        path: /var/log/kube-audit
        type: ""
    
    volumes:
    ‐ name: kube-audit
      persistentVolumeClaim:
        claimName: kube-audit-kube-apiserver-0
        readOnly: true
    

    Para programar seu pod no nó apropriado do cluster de administrador (e somente neste nó), você precisará adicionar seções nodeSelector e tolerations à especificação do pod, como esta:

     spec:
      nodeSelector:
        node-role.kubernetes.io/master: ''
      tolerations:
      ‐ key: node-role.kubernetes.io/master
        value: ""
        effect: NoSchedule
    

    Para o cluster de usuários, use este nodeSelector:

    spec:
     nodeSelector:
       kubernetes.googleapis.com/cluster-name: [USER_CLUSTER_NAME]
    

    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 Anthos em clusters do VMware 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 dos Registros de auditoria do Cloud é determinado por uma política de registro de auditoria do Kubernetes configurada estaticamente. No momento, não é possível alterar essa política.