Nesta página, mostramos como usar registros para verificar a emissão e o uso de identidades do Kubernetes, na forma de certificados e tokens de conta de serviço, pelo plano de controle do cluster do Google Kubernetes Engine (GKE). Essa verificação é totalmente opcional e não é necessária para proteger o plano de controle.
Este guia é destinado a administradores de segurança e proprietários de plataformas que têm requisitos específicos de conformidade ou requisitos da política organizacional para o controle da emissão e assinatura de credenciais. Você já precisa ter configurado chaves e ACs autogerenciadas com a autoridade do plano de controle do GKE.
Você já precisa estar familiarizado com os seguintes conceitos:
- Registros do serviço de CA
- Registros do Cloud KMS
- Registro de auditoria do Kubernetes
- Certificados X.509
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 por você. Para mais detalhes, consulte Sobre a autoridade do plano de controle do GKE.
Por padrão, Cloud de Confiance aplica várias medidas de segurança ao plano de controle gerenciado. Esta página descreve recursos opcionais que oferecem mais visibilidade ou controle sobre o plano de controle do GKE.
Sobre os registros de emissão de identidade
Os registros de emissão de identidade do GKE são registros de auditoria do plano de controle que registram quando o plano de controle emite credenciais e quando essas credenciais são usadas no cluster. É possível usar esses registros para acompanhar o ciclo de vida de uma credencial, incluindo a emissão e o uso, correlacionando os registros de emissão de identidade com os registros do Cloud KMS, do Certificate Authority Service e da API Kubernetes. Os registros de emissão de identidade do GKE são ativados ao usar a autoridade do plano de controle do GKE. Esses registros acompanham a emissão e o uso dos seguintes tipos de credenciais:
- Certificados X.509
- JSON Web Tokens (JWTs) do cluster
Certificados X.509
O Kubernetes usa certificados X.509 para autenticação de certificados do cliente. Para emitir certificados, o plano de controle do Kubernetes envia uma CertificateSigningRequest aprovada para uma autoridade certificadora (CA) no serviço de CA. A CA emite um certificado usando a chave correspondente no Cloud KMS para assinar o resumo do certificado.
Os registros do servidor da API Kubernetes contêm detalhes da assinatura do certificado para qualquer chamada de API Kubernetes autenticada com um certificado. A entrada de ID da credencial no registro tem o seguinte formato:
"authentication.k8s.io/credential-id": "X509SHA256=CERTIFICATE_HASH"
O valor CERTIFICATE_HASH é o hash SHA256 do certificado, que pode ser usado para rastrear o ciclo de vida do certificado.
É possível usar os registros de certificado do servidor da API Kubernetes para rastrear o ciclo de vida do certificado correlacionando registros dos seguintes serviços:
- Registros de emissão de identidade do GKE: use a
protoPayload.metadata.credentialIdconsulta para encontrar registros de emissão de identidade específicos do GKE com base no ID da credencial dos registros do servidor da API Kubernetes. Em seguida, use o campoprotoPayload.metadata.certificateFingerprintdo registro de emissão de identidade do GKE para correlacionar os registros de emissão de identidade com os registros do serviço de CA. - Registros do serviço de CA: encontre a entrada de registro de emissão de certificado,
que contém os seguintes IDs:
cert_fingerprint.sha256_hash: o hash SHA256 do certificado assinado. Use esse ID para corresponder registros a eventos da API do GKE e do Kubernetes.tbs_certificate_digest: um hash do conteúdo do certificado que foi enviado para ser assinado por uma chave do Cloud KMS. Use esse ID para corresponder registros a registros do Cloud KMS.
- Registros de assinatura do Cloud KMS: use o valor
tbs_certificate_digestdo registro do serviço de CA para confirmar que a chave esperada do Cloud KMS assinou o certificado.
JSON Web Tokens (JWTs)
Os JWTs assinados (JSON Web Tokens) são usados como tokens de portador para entidades no cluster, como contas de serviço do Kubernetes, ao autenticar solicitações para a API Kubernetes. Quando um pod é criado usando uma conta de serviço específica, o Kubernetes cria um JWT e o instala no pod. Quando você usa a autoridade do plano de controle do GKE para executar suas próprias chaves e CAs, esse JWT é assinado e verificado posteriormente usando a chave de assinatura da conta de serviço no Cloud KMS.
Os registros do servidor da API Kubernetes contêm detalhes da assinatura do token para qualquer chamada de API Kubernetes autenticada com um JWT. A entrada de assinatura do token no registro tem o seguinte formato:
"authentication.kubernetes.io/credential-id":"JTI=JWT_ID"
O valor JWT_ID é uma string que identifica o JWT usado na chamada de API Kubernetes.
É possível usar o ID do JWT dos registros do servidor da API Kubernetes para rastrear o ciclo de vida de um JWT correlacionando os seguintes registros:
- Registros de emissão de identidade do GKE: use o ID do JWT dos
registros do servidor da API Kubernetes para encontrar entradas de emissão de JWT específicas. Cada entrada também contém o campo
toBeSignedDigest, cujo valor pode corresponder aos registros do Cloud KMS. - Registros de assinatura do Cloud KMS: use o valor do
toBeSignedDigestcampo dos registros de emissão de identidade do GKE para confirmar que a chave esperada do Cloud KMS assinou o JWT.
Preços
Neste documento, você vai usar os seguintes componentes faturáveis do Cloud de Confiance by S3NS:
Antes de começar
Configure o plano de controle do cluster do GKE com CAs ou chaves autogerenciadas.
Ative as seguintes APIs do serviço de registro de auditoria do Cloud:
- Para o Cloud KMS, ative os registros de auditoria de acesso a dados do tipo Leitura de dados.
- Para o serviço de CA, ative os registros de auditoria de acesso a dados dos tipos Leitura de administrador e Gravação de dados.
Funções exigidas
Para receber as permissões necessárias para acessar os registros de emissão de identidade, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
-
Realizar todas as ações no Logging:
Administrador do Logging (
roles/logging.admin). -
Visualizar registros:
Visualizador de registros particulares (
roles/logging.privateLogViewer).
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 usando personalizados papéis ou outros predefinidos papéis.
Requisitos e limitações
Os seguintes requisitos e limitações são válidos:
- É necessário usar a versão 1.31.1-gke.1846000 ou mais recente do GKE.
- Os registros de emissão de identidade são gravados como Registros de auditoria do Cloud e têm um período de armazenamento definido de 400 dias. O período de armazenamento não é configurável, mas é possível encaminhar os registros de auditoria de eventos do sistema para outros destinos por períodos de armazenamento mais longos.
Verificar certificados
É possível usar os registros de emissão de identidade da autoridade do plano de controle do GKE para confirmar se um certificado foi emitido ou usado. É possível usar qualquer um dos registros a seguir ou uma combinação de registros para confirmar informações sobre a emissão e o uso de certificados:
Registros de certificado |
|
|---|---|
Registro da API Kubernetes para uso de certificado |
Registra os detalhes da assinatura do certificado sempre que o certificado é usado na API Kubernetes. |
Registro do GKE para operações de emissão de certificado |
Registra todas as operações de emissão de certificado como um registro de auditoria de evento do sistema. Esses registros são ativados por padrão em qualquer cluster que use chaves ou CAs gerenciadas pelo usuário da autoridade do plano de controle do GKE. |
Registro de auditoria do serviço de CA |
Registra uma entrada sempre que um certificado é emitido. |
Registro de auditoria do Cloud KMS |
Registra uma entrada sempre que um resumo é assinado, em resposta a uma solicitação de assinatura do serviço de CA. |
Verificar o uso do certificado com registros da API Kubernetes
Para encontrar entradas de registro de chamadas de API autenticadas usando certificados, siga estas etapas:
No Cloud de Confiance console do, acesse a página Análise de registros:
Cole a seguinte expressão no campo do editor de consultas:
log_id("cloudaudit.googleapis.com/activity") resource.type="k8s_cluster" labels."authentication.kubernetes.io/credential-id":"X509SHA256="Clique em Executar consulta.
Essa consulta retorna todos os registros do servidor da API Kubernetes que têm um certificado X.509 associado. Encontre entradas de registro específicas para investigar usando suas ferramentas de segurança ou verificando os registros manualmente.
Para correlacionar esses registros com outros tipos de registro, encontre o seguinte campo:
"authentication.k8s.io/credential-id":"CREDENTIAL_ID"
O valor CREDENTIAL_ID é o identificador que pode ser usado para correlacionar registros do GKE, do serviço de CA e do Cloud KMS. O
CREDENTIAL_ID tem o formato "X509SHA256=CERTIFICATE_HASH".
Verificar a emissão de certificados com registros do GKE
Para encontrar entradas de registro do GKE para eventos de emissão de certificado, siga estas etapas:
No Cloud de Confiance console do, acesse a página Análise de registros:
Cole a seguinte expressão no campo do editor de consultas:
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" resource.type="gke_cluster" protoPayload.serviceName="container.googleapis.com" protoPayload.metadata.credentialId="CREDENTIAL_ID"Substitua:
PROJECT_ID: o ID do projeto.CREDENTIAL_ID: oCREDENTIAL_IDda seção Verificar o uso do certificado com registros da API Kubernetes.
Clique em Executar consulta.
Verificar a emissão de certificados com registros do serviço de CA
Para encontrar registros do serviço de CA que correspondam aos eventos de emissão de certificado do GKE, siga estas etapas:
No Cloud de Confiance console do, acesse a página Análise de registros:
Cole a seguinte expressão no campo do editor de consultas:
resource.type="audited_resource" protoPayload.serviceName="privateca.googleapis.com" protoPayload.methodName="google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCertificate" protoPayload.response.certificate_description.cert_fingerprint.sha256_hash="CERTIFICATE_HASH"Substitua
CERTIFICATE_HASHpeloCERTIFICATE_HASHda seção Verificar o uso do certificado com registros da API Kubernetes. Omita o prefixoX509SHA256=do hash.Clique em Executar consulta.
Essa consulta retorna um registro que contém um
tbs_certificate_digest: DIGEST_VALUEcampo na seção de resposta da descrição do certificado.
É possível usar o DIGEST_VALUE para
corresponder registros de assinatura do Cloud KMS ao certificado.
Verificar a emissão de certificados com registros de assinatura do Cloud KMS
Para encontrar eventos de assinatura do Cloud KMS para os eventos de emissão de certificado do serviço de CA, siga estas etapas:
No Cloud de Confiance console do, acesse a página Análise de registros:
Cole a seguinte expressão no campo do editor de consultas:
protoPayload.request.digest.sha256="DIGEST_VALUE" protoPayload.@type="type.googleapis.com/google.cloud.audit.AuditLog" protoPayload.methodName="AsymmetricSign" protoPayload.serviceName="cloudkms.googleapis.com"Substitua
DIGEST_VALUEpelo valor do resumo da seção Verificar a emissão de certificados com registros do serviço de CA.Clique em Executar consulta.
Essa consulta retorna os registros de eventos de emissão de certificado. Os registros do Cloud KMS não distinguem entre certificados e JWTs. Portanto, as entradas de registro para ambos são idênticas.
Verificar tokens
É possível usar os registros de emissão de identidade da autoridade do plano de controle do GKE e os registros de assinatura do Cloud KMS para confirmar se um JSON Web Token (JWT) foi emitido.
A iniciação do rastreamento do evento de emissão de token normalmente começa com o monitoramento do registro da API Kubernetes para atividade da conta de serviço. Depois de identificar um registro de atividades que precisa de mais investigação, é possível usar os registros a seguir para confirmar informações sobre a emissão e o uso de credenciais:
Registros de JWT |
|
|---|---|
Registro da API Kubernetes para uso de JWT |
Registra os detalhes da assinatura do JWT sempre que um JWT é usado na API Kubernetes. |
Registro do GKE para operações de emissão de JWT |
Registra todas as operações de emissão de token como um registro de auditoria de evento do sistema. Esses registros são ativados por padrão em qualquer cluster que use chaves ou CAs gerenciadas pelo usuário da autoridade do plano de controle do GKE. |
Registro de auditoria do Cloud KMS |
Registra uma entrada sempre que um token é assinado e emitido. |
Verificar o uso de tokens com registros do servidor da API Kubernetes
Para encontrar entradas de registro de eventos de uso de token, siga estas etapas:
No Cloud de Confiance console do, acesse a página Análise de registros:
Cole a seguinte expressão no campo do editor de consultas:
log_id("cloudaudit.googleapis.com/activity") resource.type="k8s_cluster" labels."authentication.kubernetes.io/credential-id":"JTI="Clique em Executar consulta.
Essa consulta retorna todos os registros do servidor da API Kubernetes que têm um JWT associado. Encontre entradas de registro específicas para investigar usando suas ferramentas de segurança ou verificando os registros manualmente.
Para correlacionar esses registros com outros tipos de registro, encontre o seguinte campo:
"authentication.k8s.io/credential-id": "JTI=JWT_ID"
O JWT_ID é o identificador de token que pode ser usado para correlacionar registros do GKE e do Cloud KMS.
Verificar a emissão de tokens com registros do GKE
Para encontrar entradas de registro de eventos de emissão de token, siga estas etapas:
No Cloud de Confiance console do, acesse a página Análise de registros:
Cole a seguinte expressão no campo do editor de consultas:
resource.type="gke_cluster" logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" protoPayload.methodName="google.cloud.gkeauth.v1.Auth.SignServiceAccountJWT" protoPayload.metadata.credentialId="JTI=JWT_ID"Substitua:
PROJECT_ID: o ID do projeto.JWT_ID: o ID do JWT da seção Verificar o uso de tokens com registros do servidor da API Kubernetes.
Clique em Executar consulta.
Essa consulta retorna registros que contêm um campo
toBeSignedDigest.
É possível usar o valor toBeSignedDigest para encontrar eventos de assinatura do Cloud KMS.
Verificar a emissão de tokens com registros de assinatura do Cloud KMS
Para encontrar entradas de registro de resumos assinados, siga estas etapas:
No Cloud de Confiance console do, acesse a página Análise de registros:
Cole a seguinte expressão no campo do editor de consultas:
protoPayload.request.digest.sha256="DIGEST_VALUE" protoPayload.@type="type.googleapis.com/google.cloud.audit.AuditLog" protoPayload.methodName="AsymmetricSign" protoPayload.serviceName="cloudkms.googleapis.com"Substitua
DIGEST_VALUEpelo valor notoBeSignedDigestcampo, da seção Verificar a emissão de tokens com registros do GKE.Clique em Executar consulta.
Essa consulta retorna os registros de eventos de emissão de certificado. Os registros do Cloud KMS não distinguem entre certificados e JWTs. Portanto, as entradas de registro para ambos são idênticas.
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 no nível do campo aos registros.
- Saiba mais sobre os limites de uso da geração de registros.