Vista geral
O Google Distributed Cloud (apenas software) para VMware suporta o registo de auditoria ao nível da API e do cluster do Kubernetes.Google Cloud Este documento fornece informações sobre o registo de auditoria do cluster do Kubernetes. Para obter informações sobre o registo de auditoria da API, consulte as informações de registo de auditoria da API Cloud.Google Cloud
O Google Distributed Cloud usa o registo de auditoria do Kubernetes, que mantém um registo cronológico das chamadas feitas ao servidor da API Kubernetes de um cluster. Os registos de auditoria são úteis para investigar pedidos de API suspeitos e para recolher estatísticas.
Pode configurar um cluster para escrever registos de auditoria no disco ou nos registos de auditoria do Google Cloud num Google Cloud projeto. A escrita nos registos de auditoria na nuvem tem várias vantagens em relação à escrita no disco ou até à captura de registos num sistema de registo no local:
- Os registos de auditoria de todos os clusters do GKE podem ser centralizados.
- As entradas de registo escritas nos registos de auditoria do Cloud são imutáveis.
- As entradas dos registos de auditoria da nuvem são retidas durante 400 dias.
- Os registos de auditoria do Cloud estão incluídos no preço do Anthos.
Registo de auditoria baseado em disco
Por predefinição, os registos de auditoria são escritos num disco persistente para que os reinícios e as atualizações da VM não façam desaparecer os registos.
Se o cluster avançado não estiver ativado:
O Google Distributed Cloud retém até 12 GB de entradas de registos de auditoria.
Se o cluster avançado estiver ativado
O Google Distributed Cloud retém até 1 GB de entradas de registos de auditoria.
Cloud Audit Logs
Se ativar os registos de auditoria do Cloud para um cluster, as entradas do registo de auditoria de atividade do administrador do servidor da API Kubernetes do cluster são enviadas para o Google Cloud, usando o projeto Google Cloud que especificar no campocloudAuditLogging.projectID
do ficheiro de configuração do cluster.
Este Google Cloud projeto é denominado projeto de registo de auditoria.
O seu projeto de registo de auditoria tem de ser o mesmo que o projeto anfitrião da frota.
Para colocar em buffer e escrever entradas de registo nos registos de auditoria do Google Cloud, o Google Distributed Cloud implementa um pod audit-proxy
no cluster de administrador.
Este componente também está disponível como um contentor sidecar em clusters de utilizadores.
Limitações
A versão atual dos registos de auditoria do Google Distributed Cloud tem várias limitações:
O registo do acesso aos dados (pedidos get, list e watch) não é suportado.
A modificação da política de auditoria do Kubernetes não é suportada.
Os registos de auditoria na nuvem não são resilientes a falhas de rede prolongadas. Se não for possível exportar as entradas do registo para Google Cloud, estas são colocadas em cache num buffer de disco de 10 GB. Se esse buffer ficar cheio, as entradas subsequentes são ignoradas.
Um projeto pode suportar até aproximadamente 1000 contas de serviço para utilização com os registos de auditoria do Google Cloud. Vários clusters podem usar a mesma conta de serviço.
Ative a API Anthos Audit
Ative a API Anthos Audit no seu projeto de registo de auditoria.
Crie uma conta de serviço para os registos de auditoria do Cloud
Já tem uma ou mais contas de serviço que criou para usar com o Google Distributed Cloud. Para esta funcionalidade, tem de criar uma conta de serviço adicional denominada conta de serviço de registo de auditoria.
Crie a sua conta de serviço de registo de auditoria:
gcloud iam service-accounts create audit-logging-service-account
Crie um ficheiro de chave JSON para a sua conta de serviço dos registos de auditoria do Google Cloud:
gcloud iam service-accounts keys create audit-logging-key.json \ --iam-account AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL
onde AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL é o endereço de email da sua conta de serviço.
Guarde
audit-logging-key.json
na estação de trabalho de administração na mesma localização que as outras chaves de contas de serviço.
AVISO: antes de eliminar esta conta de serviço, certifique-se de que a substitui pela nova conta de serviço na configuração do cluster! O processo é semelhante ao de ativar os registos de auditoria do Google Cloud para um cluster de utilizadores existente. Se se esquecer de o fazer, siga o guia de limpeza.
Crie um cluster de administrador com os registos de auditoria do Cloud ativados
Só pode ativar os registos de auditoria na nuvem para um cluster de administrador quando criar o cluster de administrador pela primeira vez. Não pode modificar um cluster de administrador existente para ativar os registos de auditoria da nuvem.
Consulte o artigo Criar um cluster de administrador.
No ficheiro de configuração do cluster de administrador, preencha a secção
cloudAuditLogging
.Defina
cloudAuditLogging.projectID
para o ID do seu projeto de registo de auditoria.Defina
cloudAuditLogging.clusterLocation
para uma Google Cloud região onde quer armazenar os registos de auditoria. Para melhorar a latência, escolha uma região próxima do seu centro de dados no local.Defina
cloudAuditLogging.serviceAccountKeyPath
para o caminho do ficheiro de chave JSON da sua conta de serviço de registo de auditoria.
Por exemplo:
cloudAuditLogging: projectID: "my-project" clusterLocation: "us-west1" serviceAccountKeyPath: "/my-key-folder/audit-logging-key.json"
Continue a criação do cluster como habitualmente.
Crie um cluster de utilizadores com os registos de auditoria da nuvem ativados
Consulte o artigo Criar um cluster de utilizadores.
No ficheiro de configuração do cluster de utilizadores, preencha a secção
cloudAuditLogging
.Defina
cloudAuditLogging.projectID
para o ID do seu projeto de registo de auditoria.Defina
cloudAuditLogging.clusterLocation
para uma Google Cloud região onde quer armazenar os registos de auditoria. Para melhorar a latência, escolha uma região próxima do seu centro de dados no local.Defina
cloudAuditLogging.serviceAccounKeyPath
para o caminho do ficheiro de chave JSON para a sua conta de serviço dos registos de auditoria do Google Cloud.Certifique-se de que a secção
gkeConnect
está preenchida e quegkeConnect.projectID
é igual acloudAuditLogging.projectID
.
Por 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 como habitualmente.
Ative os registos de auditoria na nuvem para um cluster de utilizadores existente
Os registos de auditoria da nuvem só podem ser ativados no Google Cloud projeto onde o cluster de utilizadores está registado.
Se um cluster de utilizadores existente não estiver registado, registe-o seguindo estes passos antes de ativar os registos de auditoria do Google Cloud:
Adicione uma secção
gkeConnect
ao ficheiro de configuração do cluster de utilizadores. Por 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 de o cluster de utilizadores estar registado, siga estes passos para ativar os registos de auditoria na nuvem:
Preencha a secção
cloudAuditLogging
do seu ficheiro de configuração do cluster de utilizadores. Consulte o artigo Crie um cluster de utilizadores com os registos de auditoria do Google Cloud ativados para ver detalhes sobre os campos individuais. OprojectID
na secçãocloudAuditLogging
tem de ser igual ao da secçãogkeConnect
.Atualize o cluster:
gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Desative os registos de auditoria na nuvem para um cluster de utilizadores existente
No ficheiro de configuração do cluster de utilizadores, elimine a secção
cloudAuditLogging
.Atualize o cluster de utilizadores:
gkectl update cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config [USER_CLUSTER_CONFIG]
Aceda aos registos de auditoria
Registo de auditoria baseado em disco
Pode encontrar os registos de auditoria do cluster de administrador nos nós do plano de controlo em /var/log/kube-audit/kube-apiserver-audit.log
. Os registos de auditoria do cluster de utilizadores estão no ficheiro PersistentVolumeClaim
denominado kube-audit-kube-apiserver-0
. Pode aceder a estes dados nos seus próprios
Pods através 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 utilizadores:
volumes: - name: kube-audit persistentVolumeClaim: claimName: kube-audit-kube-apiserver-0
Para agendar o seu Pod no nó do cluster de administrador adequado (e apenas neste nó), tem de adicionar secções nodeSelector
e tolerations
à especificação do Pod, da seguinte forma:
spec: nodeSelector: node-role.kubernetes.io/master: '' tolerations: - key: node-role.kubernetes.io/master value: "" effect: NoSchedule
Para o cluster de utilizadores, defina namespace
como o nome do cluster de utilizadores e, em seguida, defina
nodeName
como igual a kube-apiserver-0
:
spec: nodeName: NODE_NAME
Para indicar 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 ficheiro de cada registo de auditoria tem um registo de data/hora que indica quando o ficheiro foi rodado. Um ficheiro contém registos de auditoria até essa data e hora.
Cloud Audit Logs
Consola
Na Google Cloud consola, aceda à página Registos no menu Registo.
Na caixa Filtrar por etiqueta ou pesquisa de texto, imediatamente acima dos menus pendentes abordados acima, clique na seta para baixo para abrir o menu pendente. No menu, escolha Converter em filtro avançado.
Preencha o campo com o seguinte filtro:
resource.type="k8s_cluster" logName="projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity" protoPayload.serviceName="anthosgke.googleapis.com"
Clique em Enviar filtro para apresentar todos os registos de auditoria de clusters que foram configurados para iniciar sessão neste projeto.
gcloud
Indique as duas primeiras entradas do registo no Registo de atividade de administrador do seu projeto que se aplicam ao k8s_cluster
tipo de recurso:
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
em que PROJECT_ID é o ID do seu projeto.
O resultado mostra duas entradas do registo. Tenha em atenção que, para cada entrada do registo, 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 registos de auditoria do Cloud é determinado por uma política de registo de auditoria do Kubernetes configurada estaticamente. Atualmente, não é possível alterar esta política, mas esta opção vai estar disponível num lançamento futuro.