.
Esta página descreve como verificar as conexões feitas pelo pessoal do Google ao seu plano de controle de cluster do Google Kubernetes Engine (GKE) correlacionando os registros do GKE com os registros de Transparência de acesso.
Os registros de Transparência no acesso registram as ações realizadas pela equipe do Google ao acessar seu conteúdo. Este guia é destinado a administradores de segurança que querem verificar o conteúdo dos registros de transparência no acesso e as aprovações de acesso associadas correlacionando-as com outras fontes de registro do GKE. Essa verificação é totalmente opcional e não é necessária para proteger seu plano de controle.
Verifique se você está familiarizado com os seguintes conceitos:
- Transparência no acesso
- Registros de transparência no acesso
- Aprovação de acesso
- Conexões SSH no Compute Engine
Esta página descreve uma parte de um conjunto de recursos opcionais do plano de controle no GKE que permite realizar tarefas como verificar a postura de segurança do plano de controle ou configurar a criptografia e a assinatura de credenciais no plano de controle usando chaves gerenciadas. Para mais detalhes, consulte Sobre a autoridade do plano de controle do GKE.
Por padrão, Google Cloud aplica várias medidas de segurança ao plano de controle gerenciado. Esta página descreve os recursos opcionais que oferecem mais visibilidade ou controle sobre o plano de controle do GKE.
Sobre o acesso do Google a instâncias do plano de controle do cluster
Durante sessões de solução de problemas ou por outros motivos comerciais justificados, os funcionários do Google, como engenheiros de confiabilidade do site e funcionários do atendimento ao cliente do Cloud, podem precisar de acesso administrativo às instâncias do Compute Engine que hospedam seu plano de controle. Dependendo do pacote de suporte do atendimento ao cliente e da configuração, a Transparência no acesso fornece registros de auditoria detalhados para esse acesso administrativo. A Aprovação de acesso permite que você exija uma aprovação explícita antes que qualquer equipe do Google possa acessar seus recursos. Para saber mais sobre o acesso administrativo e as ferramentas que podem ser usadas para autorizar o acesso e registrar mudanças, consulte Acesso administrativo para funcionários do Google.
Registros de acesso do plano de controle
Quando você ativa a autoridade do plano de controle do GKE, o GKE
gera registros de acesso do plano de controle que podem ser usados para
fazer a referência cruzada dos registros de auditoria gerados pela Transparência no acesso e pela
Aprovação de acesso. O GKE adiciona logs de acesso do plano de controle
ao
bucket _Default
no Logging
para registrar conexões de rede recebidas e eventos SSH específicos
nas instâncias do plano de controle. É necessário ativar
a autoridade do plano de controle do GKE no seu projeto para gerar registros de acesso
do plano de controle para seus clusters.
O GKE gera os seguintes registros de acesso para o plano de controle:
O volume de registros de conexão do plano de controle depende de fatores como o número de nós no cluster, o número de instâncias do plano de controle (os clusters regionais têm mais instâncias do plano de controle do que os clusters zonais) e a frequência com que os workloads chamam o servidor da API Kubernetes. O volume de registros SSH é pequeno e depende do número de reinicializações de nó.
Para verificar as conexões com o plano de controle, encontre os registros de acesso do plano de controle do cluster e corresponda esses registros aos registros de auditoria da transparência no acesso e do acesso aprovado. Isso permite confirmar que todas as conexões SSH às suas instâncias do plano de controle foram resultado de acesso administrativo autorizado pelo pessoal do Google. Quando você ativa a autoridade do plano de controle do GKE para seu cluster, todo o acesso SSH do pessoal do Google ao plano de controle é não interativo, o que significa que cada conexão SSH executa um único comando que você autoriza.
Preços
As seguintes considerações de preço se aplicam:
- Os registros de acesso do plano de controle estão sujeitos aos preços de registro.
- A Transparência no acesso está incluída em assinaturas específicas do atendimento ao cliente. Para mais detalhes, consulte Preços da transparência no acesso.
Antes de começar
Antes de começar, veja se você realizou as seguintes tarefas:
- Ative a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a CLI do Google Cloud para essa tarefa,
instale e, em seguida,
inicialize a
CLI gcloud. Se você instalou a gcloud CLI anteriormente, instale a versão
mais recente executando
gcloud components update
.
Ative a API Cloud Logging.
Ative a transparência no acesso para sua organização. Para instruções, consulte Como ativar a transparência no acesso.
Opcionalmente, ative a Aprovação de acesso no seu projeto e selecione o serviço do GKE. Para instruções, consulte Analisar e aprovar solicitações de acesso usando a chave de assinatura gerenciada pelo Google.
Verifique se o ambiente está qualificado para usar os recursos de autoridade do plano de controle do GKE. Para ativar esses recursos, entre em contato com a Google Cloud equipe de vendas.
Requisitos
Os registros de acesso do plano de controle exigem o GKE versão 1.31.1-gke.1846000 ou mais recente.
Papéis e permissões necessárias
Para receber as permissões necessárias para ativar a geração de registros e acessar e processar registros, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Ative o registro de conexão do plano de controle no cluster:
Administrador de clusters do Kubernetes Engine (
roles/container.clusterAdmin
) no seu projeto -
Acesse registros e use o Explorador de registros e a Análise de registros:
Visualizador de registros (
roles/logging.viewer
) no seu projeto -
Ative a transparência no acesso para a organização:
Administrador de transparência no acesso (
roles/axt.admin
) na sua organização
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Ativar os registros de acesso do plano de controle do cluster do GKE
É possível ativar a geração de registros de acesso do plano de controle para clusters do modo Autopilot e do modo padrão ativando o componente de registro correspondente. Para mais informações sobre os tipos de registro do plano de controle, consulte Acessar os registros do GKE.
Os nomes dos componentes de registro com suporte para registros de acesso do plano de controle são os seguintes:
- Registros SSH do plano de controle:
KCP_SSHD
- Registros de conexão do plano de controle:
KCP_CONNECTION
Ativar os registros de acesso ao plano de controle em um novo cluster
O exemplo a seguir cria um cluster do modo Autopilot com os dois tipos de registros de acesso do plano de controle ativados. Para ativar apenas um tipo de registro de acesso do plano de controle, omita o nome do componente correspondente do comando.
gcloud container clusters create-auto CLUSTER_NAME \
--location=LOCATION \
--logging=SYSTEM,KCP_SSHD,KCP_CONNECTION
Substitua:
CLUSTER_NAME
: o nome do novo cluster.LOCATION
: o local em que o cluster será criado.
Para especificar componentes de registro ao criar um cluster usando a
API GKE, no método
projects.locations.clusters.create
, defina os valores correspondentes no
objeto LoggingConfig
do recurso Cluster
.
Ativar os registros de acesso do plano de controle em um cluster
Para atualizar a configuração de geração de registros de um cluster para ativar os registros de acesso do plano de controle, faça o seguinte:
- Encontre os componentes de registro que o cluster usa.
- Identifique os valores correspondentes a serem especificados na flag
--logging
na CLI gcloud para manter esses componentes de registro ativados. - Atualize a configuração de geração de registros do cluster para ativar os registros de acesso do plano de controle com a configuração de geração de registros atual.
Os valores especificados para a flag --logging
no comando gcloud container clusters update
são diferentes dos valores mostrados ao descrever o cluster.
Verifique a configuração de geração de registros do cluster:
gcloud container clusters describe CLUSTER_NAME \ --location=LOCATION \ --flatten=loggingConfig \ --format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'
O resultado será assim:
SYSTEM_COMPONENTS,WORKLOADS,APISERVER,SCHEDULER,CONTROLLER_MANAGER
Identifique os valores da CLI gcloud para a flag
--logging
que corresponde à configuração do componente de registro da saída da etapa anterior. Para conferir uma lista dos valores da CLI gcloud que correspondem a componentes de registro específicos, consulte a tabela Registros disponíveis.Atualize a configuração de geração de registros com os registros de acesso do plano de controle:
gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --logging=SYSTEM,EXISTING_LOGS,KCP_ACCESS_LOGS
Substitua:
EXISTING_LOGS
: uma lista separada por vírgulas de componentes de registro que o cluster já usa. Especifique os valores da CLI gcloud que correspondem a esses componentes de registro, retirados da tabela Registros disponíveis.KCP_ACCESS_LOGS
: uma lista separada por vírgulas dos tipos de registro de acesso do plano de controle a serem ativados no cluster, conforme mostrado a seguir:- Para registros SSH do plano de controle, especifique
KCP_SSHD
. - Para registros de conexão do plano de controle, especifique
KCP_CONNECTION
.
- Para registros SSH do plano de controle, especifique
Para especificar componentes de registro ao atualizar um cluster usando a
API GKE, no método
projects.locations.clusters.update
, defina os valores de componente de registro e novos no
objeto LoggingConfig
do
recurso ClusterUpdate
.
Exemplo de atualização de cluster para ativar os registros de acesso do plano de controle
Considere um cluster em que o comando gcloud container clusters describe
tem a seguinte configuração de geração de registros:
SYSTEM_COMPONENTS,WORKLOADS,APISERVER,SCHEDULER,CONTROLLER_MANAGER
O comando de atualização de cluster a seguir ativa os dois tipos de registros de acesso do plano de controle e mantém a configuração de registro atual para este cluster de exemplo:
gcloud container clusters update example-cluster \
--location=us-central1 \
--logging=SYSTEM,WORKLOAD,API_SERVER,SCHEDULER,CONTROLLER_MANAGER,KCP_SSHD,KCP_CONNECTION
Fazer a referência cruzada dos registros de acesso do plano de controle com os registros de transparência no acesso
Para verificar o acesso ao plano de controle de um cluster, acesse os registros de conexão, os registros SSH e os registros de transparência de acesso do plano de controle para esse cluster:
No console do Google Cloud, abra a página Análise de registros.
Para conferir todos os registros de um cluster específico, incluindo os de acesso ao plano de controle e de transparência no acesso, execute a seguinte consulta:
(logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fkcp-connection" resource.labels.cluster_name="CLUSTER_NAME" jsonPayload.connection.dest_port="22") OR (logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fkcp-sshd" resource.labels.cluster_name="CLUSTER_NAME") OR (logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Faccess_transparency" json_payload.accesses.methodName="GoogleInternal.SSH.Master" json_payload.accesses.resourceName="//container.googleapis.com/projects/PROJECT_NUMBER/locations/LOCATION/clusters/CLUSTER_NAME")
A saída vai mostrar todos os seguintes tipos de registros do cluster:
- Registro de transparência no acesso
- Registro de conexão do plano de controle
- Registros SSH para cada sessão SSH
Realizar verificações de verificação
Sua verificação de verificação principal é se você vê todos os tipos de registro para qualquer conexão SSH ao executar a consulta de registro da seção anterior. Cada registro de Transparência no acesso precisa ter um registro de conexão do plano de controle correspondente e um ou mais registros SSH. Esses registros são para ações realizadas por humanos nas instâncias do plano de controle. Portanto, o volume de registros precisa ser pequeno.
Você também pode realizar as seguintes verificações adicionais do conteúdo do registro:
- Para cada registro SSH do plano de controle, verifique se um registro de transparência de acesso existe em uma janela de 15 minutos antes do carimbo de data/hora do registro SSH. Esse período de tempo explica o fechamento da sessão SSH final que ocorre vários minutos depois que a conexão inicial foi registrada pela Transparência no acesso.
- Para cada registro de conexão do plano de controle, verifique se um registro de transparência de acesso existe em um período de cinco minutos antes do carimbo de data/hora do registro de conexão do plano de controle.
Se você usa a aprovação de acesso no cluster, verifique se cada registro de transparência no acesso tem um campo
accessApprovals
correspondente. Faça uma referência cruzada desse campo com as solicitações de aprovação de acesso do cluster.Para receber solicitações de aprovação de acesso para seu projeto, consulte Acessar o histórico de solicitações de aprovação de acesso. O Access Approval pode estar sujeito a exclusões.
Como alternativa, valide a assinatura da aprovação de acesso assinada associada ao registro de transparência no acesso.
Detalhes do registro de acesso do plano de controle
Esta seção fornece detalhes e exemplos dos registros de acesso do plano de controle que o GKE gera quando a equipe do Google se conecta às suas instâncias do plano de controle.
Registros de conexão do plano de controle
O GKE adiciona um registro de conexão do plano de controle para cada nova conexão de rede de entrada em uma instância do plano de controle. Esses registros incluem detalhes específicos, como estes:
- Portas e endereços IP de origem e destino
- Direção e protocolo da conexão
O exemplo a seguir é de um registro de conexão do plano de controle:
{
insertId: "z1eq8wonio335a5h",
jsonPayload: {
instance: {
vm_name: "gke-dee49f0d6fa34ce3a2ac-f513-d195-vm",
zone: "us-central1-c"
},
cluster: {
cluster_id: "CLUSTER_ID",
cluster_urn: "//container.googleapis.com/projects/PROJECT_NUMBER/locations/us-central1-c/clusters/CLUSTER_NAME"
},
connection: {
state: "NEW",
src_ip: "192.0.2.100",
src_port: 32774,
dest_ip: "203.0.113.12",
dest_port: 22,
direction: "INGRESS"
protocol: "TCP"
},
}
logName: "projects/PROJECT_ID/logs/container.googleapis.com%2Fkcp-connection",
receiveTimestamp: "2024-04-11T04:08:01.883070399Z",
resource: {
labels: {
cluster_name: "CLUSTER_NAME",
location: "us-central1-c",
project_id: "PROJECT_ID"
}
type: "gke_cluster",
}
severity: "NOTICE",
timestamp: "2024-04-11T04:07:59.019330Z"
}
Os campos a seguir na entrada de registro são relevantes para verificar as ações do Google:
cluster.cluster_urn
: o identificador de recurso totalmente qualificado do cluster. Esse identificador tem o formato//container.googleapis.com/projects/PROJECT_NUMBER/locations/LOCATION/clusters/CLUSTER_NAME
, com as seguintes variáveis:PROJECT_NUMBER
: o número do projeto numérico do seu projeto de clusters.LOCATION
: o Google Cloud local do cluster.CLUSTER_NAME
: o nome do cluster.
connection
: detalhes sobre a tentativa de conexão. Esse campo tem as seguintes informações:state
: o estado da conexão. Para novas conexões, o valor éNEW
.src_ip
: o endereço IP da origem da conexão.src_port
: o número da porta da origem da conexão.dest_ip
: o endereço IP interno da VM do plano de controle.dest_port
: o número da porta de destino.direction
: a direção da conexão. O valor é sempreINGRESS
.protocol
: o protocolo IP, comoTCP
.
Registros SSH do plano de controle
O GKE adiciona registros SSH do plano de controle para eventos relacionados a conexões SSH com instâncias do plano de controle. O GKE registra os seguintes eventos:
- Chave SSH aceita para um usuário
- O status da sessão mudou de 0 para 1, indicando que o usuário fez login.
- Sessão SSH aberta
- Sessão SSH fechada
- O status da sessão mudou de 1 para 0, indicando que o usuário fez logout
- Falha na sessão SSH
Por exemplo, o seguinte registro SSH do plano de controle é para uma sessão SSH sendo aberta:
{
insertId: "8llczemdulwbbwpa",
jsonPayload: {
instance: {
vm_name: "gke-06cb920c609941c0a5ce-6840-40e9-vm",
zone: "us-central1-c"
},
cluster: {
cluster_id: "891e6d12889747748c1ac16ffcc6cb7c0a96450b36864eb680917c119fd801d0",
cluster_urn: "//container.googleapis.com/projects/PROJECT_NUMBER/locations/us-central1/clusters/CLUSTER_NAME",
},
message: "pam_unix(sshd:session): session opened for user REDACTED by (uid=0)",
},
logName: "projects/PROJECT_ID/logs/container.googleapis.com%2Fkcp-ssh",
receiveTimestamp: "2024-04-09T13:21:55.231436462Z"
resource: {
type: "gke_cluster",
labels: {
cluster_name: "CLUSTER_NAME",
location: "us-central1",
project_id: "PROJECT_ID"
}
},
severity: "NOTICE",
timestamp: "2024-04-09T13:21:50.742246Z"
}
Os campos a seguir na entrada de registro são relevantes para verificar as ações do Google:
cluster.cluster_urn
: o identificador de recurso totalmente qualificado do cluster. Esse identificador tem o formato//container.googleapis.com/projects/PROJECT_NUMBER/locations/LOCATION/clusters/CLUSTER_NAME
, com as seguintes variáveis:PROJECT_NUMBER
: o número do projeto do cluster.LOCATION
: o Google Cloud local do cluster.CLUSTER_NAME
: o nome do cluster.
message
: detalhes sobre a conexão SSH.
Desativar os registros de acesso do plano de controle
Para conferir os tipos de registro específicos usados pelo cluster, execute o seguinte comando:
gcloud container clusters describe CLUSTER_NAME \ --location=LOCATION \ --flatten=loggingConfig \ --format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'
O resultado será assim:
SYSTEM_COMPONENTS,WORKLOADS,API_SERVER,SCHEDULER,CONTROLLER_MANAGER,KCP_SSHD,KCP_CONNECTION
Para desativar os registros de acesso do plano de controle em um cluster, execute o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --logging=SYSTEM,WORKLOAD,API_SERVER,SCHEDULER,CONTROLLER_MANAGER
Na flag --logging
, especifique os componentes de registro da saída do
comando anterior. Este comando de exemplo desativa os registros de acesso do plano de controle, mas
mantém os outros registros de componentes do plano de controle ativados.
Para desativar os componentes de registro usando a API GKE, defina os
valores correspondentes no objeto LoggingConfig
do recurso ClusterUpdate
no
método projects.locations.clusters.update
.
A seguir
- Saiba mais sobre a segurança do plano de controle.
- Saiba mais sobre o acesso administrativo para funcionários do Google.
- Saiba como configurar a geração de registros e o monitoramento do GKE.
- Saiba como configurar o acesso de campo aos registros.
- Saiba mais sobre os limites de uso do Logging.