Informações sobre a geração de registros de auditoria do GKE

Neste documento, descrevemos os registros de auditoria criados pelo Google Kubernetes Engine como parte dos registros de auditoria do Cloud.

Visão geral

Os serviços doGoogle Cloud gravam registros de auditoria para responder às perguntas "Quem fez o quê, onde e quando?" nos recursos do Google Cloud .

Os projetos do Google Cloud contêm apenas os registros de auditoria dos recursos que estão diretamente no projeto do Google Cloud . Outros recursos do Google Cloud , como pastas, organizações e contas de faturamento, contêm os registros de auditoria da própria entidade.

Consulte Visão geral dos Registros de Auditoria do Cloud. Para entender melhor o formato do registro de auditoria, consulte Noções básicas dos registros de auditoria.

Registros de auditoria disponíveis

Os seguintes tipos de registros de auditoria estão disponíveis para o GKE:

  • Registros de auditoria de atividade do administrador

    Inclui operações de "gravação de administrador" que gravam metadados ou informações de configuração.

    Não é possível desativar esses registros.

  • Registros de auditoria de acesso a dados

    Inclui operações de "leitura do administrador" que leem metadados ou informações de configuração. Também inclui operações de "leitura de dados" e "gravação de dados" que leem ou gravam dados fornecidos pelo usuário.

    Para receber registros de auditoria de acesso a dados, é necessário ativá-los explicitamente.

Para ver descrições mais completas dos tipos de registros de auditoria, consulte Tipos de registros de auditoria.

Operações auditadas

Confira na tabela a seguir um resumo de quais operações da API correspondem a cada tipo de registro de auditoria no GKE:

Categoria de registro de auditoria Operações do GKE
Registros de auditoria de atividade do administrador io.k8s.authorization.rbac.v1
io.k8s.authorization.rbac.v1.roles

Formato do registro de auditoria

As entradas de registro de auditoria incluem os seguintes objetos:

  • A própria entrada de registro, que é um objeto do tipo LogEntry. Veja alguns campos úteis:

    • O logName contém o ID do recurso e o tipo de registro de auditoria.
    • O resource contém o destino da operação auditada.
    • O timeStamp contém o horário da operação auditada.
    • O protoPayload contém as informações auditadas.
  • Os dados de registro de auditoria, que são um objeto AuditLog localizado no campo protoPayload da entrada de registro.

  • Informações de auditoria opcionais e específicas do serviço, que são um objeto específico do serviço. Para integrações anteriores, esse objeto é mantido no campo serviceData do objeto AuditLog. Integrações posteriores usam o campo metadata.

Confira outros campos nesses objetos e como interpretá-los em Noções básicas sobre registros de auditoria.

Nome do registro

Os nomes dos Registros de Auditoria do Cloud incluem identificadores que indicam o projeto doGoogle Cloud ou outra entidade do Google Cloud que contém os registros de auditoria e se o registro tem dados de atividade do administrador, acesso a dados, política negada ou evento do sistema.

Estes são os nomes dos registros de auditoria, que incluem as variáveis dos identificadores de recursos:

   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy

Nome do serviço

Os registros de auditoria do Kubernetes usam o nome de serviço k8s.io.

O serviço k8s.io é usado para registros de auditoria do Kubernetes. Esses registros são gerados pelo componente do servidor da API Kubernetes e contêm informações sobre as ações realizadas usando a API Kubernetes. Por exemplo, qualquer mudança feita em um recurso do Kubernetes usando o comando kubectl é registrada pelo serviço k8s.io. As entradas de registro de auditoria do Kubernetes são úteis para investigar solicitações de API suspeitas, coletar estatísticas ou criar alertas de monitoramento para chamadas de API indesejadas.

Confira uma lista de todos os nomes de serviço da API Cloud Logging e o tipo de recurso monitorado correspondente em Mapear serviços para recursos.

Tipos de recurso

Os registros de auditoria do Kubernetes usam o tipo de recurso k8s_cluster. As entradas de registro gravadas pelo servidor da API Kubernetes são aplicáveis ao tipo de recurso k8s_cluster. Essas entradas de registro descrevem as operações nos recursos do Kubernetes no seu cluster, por exemplo, pods, implantações e secrets.

Veja uma lista de todos os tipos de recursos monitorados do Cloud Logging e informações descritivas em Tipos de recursos monitorados.

Identidades dos autores da chamada

O endereço IP do autor da chamada é mantido no campo RequestMetadata.caller_ip do objeto AuditLog. O Logging pode encobrir determinadas identidades e endereços IP de autor da chamada.

Para saber quais informações são editadas nos registros de auditoria, consulte Identidades de autores de chamadas nos registros de auditoria.

Ativar registros de auditoria

Os registros de auditoria de atividade do administrador estão sempre ativados. Não é possível desativá-los.

Por padrão, os registros de auditoria de acesso a dados são desativados e não são gravados, a menos que essa opção seja ativada. Os registros de auditoria de acesso a dados do BigQuery são uma exceção e não podem ser desativados.

Para informações sobre como ativar alguns ou todos os registros de auditoria de acesso a dados, consulte Habilitar registros de auditoria de acesso a dados.

Permissões e papéis

As permissões e os papéis do IAM determinam quem pode acessar os dados de registros de auditoria nos recursos do Google Cloud .

Para decidir quais permissões e papéis do Logging se aplicam ao seu caso de uso, considere o seguinte:

  • O papel Leitor de registros (roles/logging.viewer) fornece acesso somente leitura aos registros de auditoria de atividade do administrador, política negada e eventos do sistema. Se você tiver apenas esse papel, não será possível acessar os registros de auditoria de acesso a dados que estão no bucket _Default.

  • O papel Leitor de registros particulares (roles/logging.privateLogViewer inclui as permissões contidas em roles/logging.viewer, além da capacidade de ler os registros de auditoria de acesso a dados no bucket _Default.

    Se esses registros particulares forem armazenados em buckets definidos pelo usuário, qualquer usuário que tenha permissões para ler os registros nesses buckets poderá ler os registros particulares. Para mais informações sobre buckets de registro, consulte Visão geral de roteamento e armazenamento.

Para mais informações sobre as permissões e os papéis do IAM que se aplicam aos dados de registros de auditoria, consulte Controle de acesso com IAM.

Acessar registros

É possível consultar todos os registros de auditoria ou consultar registros pelo nome. O nome do registro de auditoria inclui o identificador de recurso do projeto, da pasta, da conta de faturamento ou da organização do Google Cloud com as informações de registro de auditoria que você quer consultar. As consultas podem especificar campos LogEntry indexados. Para saber como consultar registros, confira Criar consultas na Análise de Registros.

Com a Análise de Registros, é possível filtrar entradas de registro individuais. Se quiser usar SQL para analisar grupos de entradas de registro, use a página Análise de dados de registros. Saiba mais em:

A maioria dos registros de auditoria pode ser visualizada no Cloud Logging usando o consoleGoogle Cloud , a CLI do Google Cloud ou a API Logging. No entanto, para registros de auditoria relacionados ao faturamento, só é possível usar a CLI do Google Cloud ou a API Logging.

Console

No console do Google Cloud , é possível usar a Análise de Registros para acessar as entradas de registros de autoria de projetos, pastas ou organizações do Google Cloud .

  1. No console do Google Cloud , acesse a página Análise de registros:

    Acessar a Análise de registros

    Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Logging.

  2. Selecione um projeto, uma pasta ou uma organização do Google Cloud .

  3. Para exibir todos os registros de auditoria, digite uma das seguintes consultas no campo do editor de consultas e clique em Executar consulta:

    logName:"cloudaudit.googleapis.com"
    
    protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
    
  4. Para exibir os registros de auditoria de determinado recurso e tipo, no painel Criador de consultas, faça o seguinte:

    • Em Tipo de recurso, selecione o recurso do Google Cloud com os registros de auditoria que você quer acessar.

    • Em Nome do registro, selecione o tipo de registro de auditoria que você quer acessar:

      • Para os registros de auditoria da atividade do administrador, selecione Atividade.
      • Para os registros de auditoria de acesso a dados, selecione data_access.
      • Para os registros de auditoria de eventos do sistema, selecione system_event.
      • Em "Registros de auditoria de política negada", selecione policy.
    • Clique em Executar consulta.

    Caso uma das opções não apareça, significa que o projeto, a pasta ou a organização do Google Cloud não tem registros de auditoria desse tipo.

    Se você estiver com problemas para conferir registros na Análise de Registros, consulte as informações de solução de problemas.

    Para mais informações sobre como consultar usando a Análise de Registros, consulte Criar consultas na Análise de Registros.

gcloud

A CLI do Google Cloud oferece uma interface de linha de comando para a API Logging. Digite um identificador de recurso válido em cada um dos nomes de registro. Por exemplo, se a consulta incluir um PROJECT_ID, o identificador do projeto informado precisará fazer referência ao projeto doGoogle Cloud selecionado.

Para ler as entradas de registro de auditoria para envolvidos no projeto do Google Cloud , execute este comando:

gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" \
    --project=PROJECT_ID

Para ler as entradas de registro de auditoria no nível da pasta, execute este comando:

gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" \
    --folder=FOLDER_ID

Para ler as entradas de registro de auditoria no nível da organização, execute este comando:

gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" \
    --organization=ORGANIZATION_ID

Para ler as entradas de registro de auditoria na conta do Cloud Billing, execute este comando:

gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \
    --billing-account=BILLING_ACCOUNT_ID

Adicione a sinalização --freshness ao comando para ler registros com mais de um dia.

Saiba mais sobre como usar a gcloud CLI em gcloud logging read.

REST

Ao criar consultas, informe um identificador de recurso válido em cada um dos nomes de registro. Por exemplo, se a consulta incluir um PROJECT_ID, o identificador do projeto informado precisará fazer referência ao projeto doGoogle Cloud selecionado.

Por exemplo, para usar a API Logging para acessar as entradas de registro de auditoria para envolvidos no projeto, faça o seguinte:

  1. Acesse a seção Testar esta API da documentação do método entries.list.

  2. Digite o seguinte na parte do Corpo da solicitação do formulário Teste esta API. Clique nesse formulário preenchido automaticamente para preencher automaticamente o corpo da solicitação, mas é necessário inserir um PROJECT_ID válido em cada um dos nomes de registro.

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
    
  3. Clique em Executar.

Amostras de consultas

Para usar as consultas de amostra na tabela a seguir, siga estas etapas:

  1. Substitua as variáveis na expressão de consulta pelas informações do projeto e copie a expressão usando o ícone de área de transferência .

  2. No console do Google Cloud , acesse a página Análise de registros:

    Acessar a Análise de registros

    Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Logging.

  3. Ative Mostrar consulta para abrir o campo "query-editor" e cole a expressão nele:

    O editor de consultas em que você insere exemplos de consultas.

  4. Clique em Executar consulta. Os registros que correspondem à consulta são listados no painel Resultados da consulta.

Para encontrar registros de auditoria do GKE, use as seguintes consultas no Explorador de registros:

Nome da consulta/filtro Expressão
Registros de auditoria de carga de trabalho
log_id("cloudaudit.googleapis.com/activity")
resource.type="k8s_cluster"
resource.labels.cluster_name="CLUSTER_NAME"
protoPayload.request.metadata.name="WORKLOAD_NAME"
Atualização de metadados do nó para o objeto do nó
resource.type="k8s_cluster"
log_id("cloudaudit.googleapis.com/activity")
protoPayload.methodName="io.k8s.core.v1.nodes.update"
resource.labels.cluster_name="CLUSTER_NAME"
resource.labels.location="LOCATION_NAME"
Alterações no controle de acesso baseado em papéis, exceto alterações automatizadas do sistema
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.methodName:"io.k8s.authorization.rbac.v1"
NOT protoPayload.authenticationInfo.principalEmail:"system"
Alterações nos papéis do controle de acesso baseado em papéis, exceto alterações automatizadas do sistema
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.methodName:"io.k8s.authorization.rbac.v1.roles"
NOT protoPayload.authenticationInfo.principalEmail:"system"
Alterações nas vinculações de papéis de controle de acesso com base em papéis, exceto alterações automatizadas do sistema
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.methodName:"io.k8s.authorization.rbac.v1.rolebindings"
NOT protoPayload.authenticationInfo.principalEmail:"system"
Solicitações de assinatura de certificado
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.resourceName:"certificates.k8s.io/v1beta1/certificatesigningrequests"
Solicitações da Web não autenticadas
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.authenticationInfo.principalEmail:"system:anonymous"
Chamadas de identidade de inicialização do kubelet
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.authenticationInfo.principalEmail:"kubelet"
Solicitações autenticadas do nó
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.authenticationInfo.principalEmail:"system:node"
Chamadas fora de um intervalo de endereços IP
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.requestMetadata.callerIp!="127.0.0.1"
protoPayload.requestMetadata.callerIp!="::1"
NOT protoPayload.requestMetadata.callerIp:"IP_ADDRESS_PREFIX"
Entradas de registro de auditoria das atividades do administrador que se aplicam ao tipo de recurso k8s_cluster e descrevem a criação de uma implantação
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.methodName:"deployments.create"
Entradas de registro de auditoria das atividades do administrador que se aplicam ao tipo de recurso k8s_cluster e têm um valor principalEmail de system:anonymous. Essas entradas provavelmente representam tentativas malsucedidas de autenticação.
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.authenticationInfo.principalEmail="system:anonymous"
Entradas de registro de auditoria da atividade do administrador que se aplicam ao tipo de recurso gke_cluster e têm um valor severity de ERROR.
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="gke_cluster"
severity="ERROR"
Entradas de registro de auditoria das atividades do administrador que se aplicam ao tipo de recurso k8s_cluster e descrevem uma solicitação de gravação para um secret.
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.methodName:"io.k8s.core.v1.secrets"
NOT protoPayload.methodName:"get"
NOT protoPayload.methodName:"list"
NOT protoPayload.methodName:"watch"
Entradas de registro de auditoria das atividades do administrador que se aplicam ao tipo de recurso k8s_cluster e descrevem uma solicitação de pod de um usuário específico.
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.type="k8s_cluster"
protoPayload.methodName:"io.k8s.core.v1.pods"
protoPayload.authenticationInfo.principalEmail="dev@example.com"

Encaminhar registros de auditoria

É possível encaminhar registros de auditoria para destinos suportados da mesma maneira que é possível rotear outros tipos de registros. Confira alguns motivos para Encaminhar registros de auditoria:

  • Para manter registros de auditoria por mais tempo ou usar recursos de pesquisa mais eficientes, exporte cópias desses registros para o Cloud Storage, o BigQuery ou o Pub/Sub. Com o Pub/Sub, é possível encaminhar para outros aplicativos, repositórios e terceiros.

  • Para gerenciar os registros de auditoria em toda a organização, crie coletores agregados para encaminhar os registros de qualquer projeto do Google Cloud na organização.

  • Se os registros ativados de auditoria de acesso a dados estiverem enviando seus projetos doGoogle Cloud para as cotas de registros, crie coletores que excluam os registros de auditoria de acesso a dados do Logging.

Para instruções sobre o roteamento de registros, consulte Rotear registros para destinos compatíveis.

Preços

Para mais informações sobre preços, consulte as seções do Cloud Logging na página de preços do Google Cloud Observability.

Como configurar métricas e alertas

Para configurar métricas com base nas suas entradas de registro, use o Cloud Monitoring. Para configurar gráficos e alertas, use métricas com base em registros.

Política de auditoria

A política de auditoria do Kubernetes determina quais entradas de registro são exportadas pelo servidor da API Kubernetes. A política de auditoria do Kubernetes Engine determina quais entradas vão para seu registro de auditoria de atividades do administrador e quais entradas vão para seu registro de auditoria de acesso a dados.

Para mais informações sobre políticas de auditoria no Kubernetes Engine, consulte Política de auditoria do Kubernetes Engine.