Visão geral
Neste documento, descrevemos como usar os registros de auditoria do Cloud para o Google Distributed Cloud (somente software). O Google Distributed Cloud usa o Registro de auditoria do Kubernetes, que mantém um registro cronológico das chamadas feitas para o 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. Para informações sobre a geração de registros de auditoria da API GKE On-Prem, consulte Geração de registros de auditoria da API Cloud.
Sobre os registros de auditoria do Cloud
Os registros de auditoria são gravados nos registros de auditoria do Cloud no seu projeto Google Cloud . A gravação em registros de auditoria do Cloud tem vários benefícios em relação à gravação em disco ou à captura de registros em um sistema de geração de registros no local:
- Os registros de auditoria de todos os clusters 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.
- O recurso Registros de auditoria do Cloud está incluído no preço do Google Distributed Cloud.
- É possível configurar o Google Distributed Cloud para gravar registros no disco ou nos registros de auditoria do Cloud.
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.
Se o cluster avançado não estiver ativado:
O Google Distributed Cloud retém até 12 GB de entradas de registro de auditoria.
Se o cluster avançado estiver ativado
O Google Distributed Cloud retém até 1 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 para Google Cloud,
usando o projeto Google Cloud especificado no
campocloudAuditLogging.projectIDdo arquivo de configuração do cluster.
Esse projeto do Google Cloud é chamado de
projeto de registro de auditoria.
O projeto de registro de auditoria precisa ser igual ao projeto host da frota.
Para armazenar em buffer e gravar entradas de registro nos registros de auditoria do Cloud,
o Google Distributed Cloud implanta 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 têm as seguintes limitações:
- A geração de registros de acesso aos dados (solicitações get, list e watch) não é compatível.
- Não é possível modificar a política de auditoria do Kubernetes.
- O registro de auditoria do Cloud não é resiliente a interrupções estendidas de rede. Se não for possível exportar as entradas de registro para o Google Cloud, elas serão armazenadas em cache em um buffer de disco de 10 GB. Se esse buffer for preenchido, as entradas mais antigas serão descartadas.
- Um projeto pode oferecer suporte a até aproximadamente 1.000 contas de serviço para uso com os Registros de auditoria do Cloud. Vários clusters podem usar a mesma conta de serviço.
Ativar a API Anthos Audit
Ative a API Anthos Audit no projeto de geração de registros de auditoria.
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 o Google Distributed Cloud. Para esse recurso, é necessário criar uma conta de serviço adicional chamada conta de serviço da geração de registros de auditoria.
Crie sua conta de serviço de registro de auditoria:
gcloud iam service-accounts create audit-logging-service-account
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.
Salve
audit-logging-key.jsonna estação de trabalho do administrador no mesmo local que as outras chaves da conta de serviço.
AVISO: antes de excluir essa conta de serviço, substitua-a pela nova conta na configuração do cluster. O processo é semelhante a Ativar os registros de auditoria do Cloud para um cluster de usuário atual. Se você esquecer de fazer isso, siga o guia de limpeza.
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.
Consulte Como criar um cluster de administrador.
No arquivo de configuração do cluster de usuário, preencha a seção
cloudAuditLogging.Defina
cloudAuditLogging.projectIDcomo o ID do projeto de geração de registros de auditoria.Defina
cloudAuditLogging.clusterLocationcomo uma Google Cloud região em que você quer armazenar registros de auditoria. Para melhorar a latência, escolha uma região próxima ao data center local.Defina
cloudAuditLogging.serviceAccountKeyPathcomo 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
Consulte Como criar um cluster de usuário.
No arquivo de configuração do cluster de usuário, preencha a seção
cloudAuditLogging.Defina
cloudAuditLogging.projectIDcomo o ID do projeto de geração de registros de auditoria.Defina
cloudAuditLogging.clusterLocationcomo uma Google Cloud região em que você quer armazenar registros de auditoria. Para melhorar a latência, escolha uma região próxima ao data center local.Defina
cloudAuditLogging.serviceAccounKeyPathcomo o caminho do arquivo de chave JSON para sua conta de serviço dos registros de auditoria do Cloud.Verifique se a seção
gkeConnectestá preenchida e segkeConnect.projectIDé igual acloudAuditLogging.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
Os registros de auditoria do Cloud só podem ser ativados no projeto Google Cloud em que o cluster de usuário está registrado.
Se um cluster de usuário existente não estiver registrado, registre-o seguindo estas etapas antes de ativar os registros de auditoria do Cloud:
Adicione uma seção
gkeConnectao arquivo de configuração do cluster de usuário. Exemplo:gkeConnect: projectID: "my-project" registerServiceAccountKeyPath: "/my-key-fokder/connect-register-key.json"Atualize o cluster:
gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Depois que o cluster de usuário for registrado, siga estas etapas para ativar os registros de auditoria do Cloud:
Preencha a seção
cloudAuditLoggingdo arquivo de configuração do cluster de usuário. Consulte Criar um cluster de usuário com os registros de auditoria do Cloud ativados para ver detalhes sobre os campos individuais. OprojectIDna seçãocloudAuditLoggingprecisa ser igual ao da seçãogkeConnect.Atualize o cluster:
gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Desativar registros de auditoria do Cloud para um cluster de usuário existente
No arquivo de configuração do cluster de usuário, exclua a seção
cloudAuditLogging.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
É 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. Acesse esses dados nos seus próprios pods por meio de entradas volumes:
Adicione esta entrada para o cluster de administrador:
volumes:
- name: kube-audit
hostPath:
path: /var/log/kube-audit
type: ""
Adicione esta entrada para o cluster de usuários:
volumes:
- name: kube-audit
persistentVolumeClaim:
claimName: kube-audit-kube-apiserver-0
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ário, defina namespace como o nome do cluster de usuário e, em seguida, defina nodeName como kube-apiserver-0:
spec:
nodeName: NODE_NAME
Para apontar o nodeName de kube-apiserver-0, execute o seguinte comando:
kubectl get pod kube-apiserver-0 -n USER_CLUSTER_NAME --kubeconfig kubeconfig -o jsonpath='{.spec.nodeName}'
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.
Acessar os registros de auditoria do Cloud
Console
No console do Google Cloud , acesse a página Análise de registros no menu Geração de registros.
Acesse o Explorador de registros
Se a página Visualizador de registros legado abrir, escolha Fazer upgrade para a nova Análise de registros no menu suspenso Upgrade.
Clique no campo Consulta para inserir uma consulta.
Insira a seguinte consulta no campo Consulta:
resource.type="k8s_cluster" logName="projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity" protoPayload.serviceName="anthosgke.googleapis.com"Substitua
PROJECT_IDpela ID do seu projeto.Clique em Executar consulta para mostrar todos os registros de auditoria dos clusters configurados para fazer login nesse projeto.
gcloud
- Liste as duas primeiras entradas no registro de atividades 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
- Substitua
PROJECT_IDpela ID do seu 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
A política de auditoria do Kubernetes define regras para quais eventos são gravados como entradas de registro e especifica quais dados as entradas de registro precisam incluir. O comportamento dos Registros de auditoria do Cloud é determinado por uma política de registro de auditoria do Kubernetes configurada estaticamente. Não é possível mudar essa política para modificar o comportamento dos registros de auditoria do Cloud.