En esta página, se muestra cómo usar los registros para verificar la emisión y el uso de identidades de Kubernetes, en forma de certificados y tokens de cuentas de servicio, por parte del plano de control del clúster de Google Kubernetes Engine (GKE). Esta verificación es completamente opcional y no es necesaria para proteger tu plano de control.
Esta guía está destinada a administradores de seguridad y propietarios de plataformas que tienen requisitos específicos de cumplimiento o requisitos de la política organizacionales para el control sobre la emisión y la firma de credenciales. Ya deberías haber configurado claves y CAs autoadministradas con la autoridad del plano de control de GKE.
Ya debes conocer los siguientes conceptos:
- Registros del servicio de CA
- Registros de Cloud KMS
- Registro de auditoría de Kubernetes
- Certificados X.509
En esta página, se describe una parte de un conjunto de funciones opcionales del plano de control en GKE que te permite realizar tareas como verificar tu postura de seguridad del plano de control o configurar la encriptación y la firma de credenciales en el plano de control con claves que administras. Para obtener más detalles, consulta Acerca de la autoridad del plano de control de GKE.
De forma predeterminada, Cloud de Confiance aplica varias medidas de seguridad al plano de control administrado. En esta página, se describen las capacidades opcionales que te brindan más visibilidad o control sobre el plano de control de GKE.
Acerca de los registros de emisión de identidad
Los registros de emisión de identidad de GKE son registros de auditoría del plano de control que registran cuándo el plano de control emite credenciales y cuándo se usan esas credenciales en el clúster. Puedes usar estos registros para hacer un seguimiento del ciclo de vida de una credencial, incluida la emisión y el uso, mediante la correlación de los registros de emisión de identidad con los registros de Cloud KMS, Certificate Authority Service y la API de Kubernetes. Los registros de emisión de identidad de GKE se habilitan cuando se usa la autoridad del plano de control de GKE. Estos registros hacen un seguimiento de la emisión y el uso de los siguientes tipos de credenciales:
- Certificados X.509
- Tokens web JSON (JWT) del clúster
Certificados X.509
Kubernetes usa certificados X.509 para la autenticación de certificados de cliente. Para emitir certificados, el plano de control de Kubernetes envía un CertificateSigningRequest aprobado a una autoridad certificadora (CA) en el servicio de CA. Luego, la CA emite un certificado con la clave correspondiente en Cloud KMS para firmar el resumen del certificado.
Los registros del servidor de la API de Kubernetes contienen detalles de la firma del certificado para cualquier llamada a la API de Kubernetes que se autenticó con un certificado. La entrada del ID de credencial en el registro tiene el siguiente formato:
"authentication.k8s.io/credential-id": "X509SHA256=CERTIFICATE_HASH"
El valor CERTIFICATE_HASH es el hash SHA256 del certificado, que puedes usar para hacer un seguimiento del ciclo de vida del certificado.
Puedes usar los registros de certificados del servidor de la API de Kubernetes para hacer un seguimiento del ciclo de vida del certificado mediante la correlación de registros de los siguientes servicios:
- Registros de emisión de identidad de GKE: Usa la consulta
protoPayload.metadata.credentialIdpara encontrar registros de emisión de identidad de GKE específicos según el ID de credencial de los registros del servidor de la API de Kubernetes. Luego, usa el campoprotoPayload.metadata.certificateFingerprintdel registro de emisión de identidad de GKE para correlacionar los registros de emisión de identidad con los registros del servicio de CA. - Registros del servicio de CA: Busca la entrada de registro de emisión de certificados,
que contiene los siguientes IDs:
cert_fingerprint.sha256_hash: Es el hash SHA256 del certificado firmado. Usa este ID para hacer coincidir los registros con los eventos de la API de GKE y Kubernetes.tbs_certificate_digest: Es un hash del contenido del certificado que se envió para que lo firme una clave de Cloud KMS. Usa este ID para hacer coincidir los registros con los registros de Cloud KMS.
- Registros de firma de Cloud KMS: Usa el valor
tbs_certificate_digestdel registro del servicio de CA para confirmar que la clave de Cloud KMS esperada firmó el certificado.
Tokens web JSON (JWT)
Los JWT firmados (tokens web JSON) se usan como tokens de portador para entidades en el clúster, como las cuentas de servicio de Kubernetes, cuando se autentican solicitudes a la API de Kubernetes. Cuando se crea un Pod que usa una cuenta de servicio específica, Kubernetes crea un JWT y lo instala en el Pod. Cuando usas la autoridad del plano de control de GKE para ejecutar tus propias claves y CAs, este JWT se firma y, luego, se verifica con la clave de firma de la cuenta de servicio en Cloud KMS.
Los registros del servidor de la API de Kubernetes contienen detalles de la firma del token para cualquier llamada a la API de Kubernetes que se autenticó con un JWT. La entrada de firma del token en el registro tiene el siguiente formato:
"authentication.kubernetes.io/credential-id":"JTI=JWT_ID"
El valor JWT_ID es una cadena que identifica el JWT que se usó en la llamada a la API de Kubernetes.
Puedes usar el ID de JWT de los registros del servidor de la API de Kubernetes para hacer un seguimiento del ciclo de vida de un JWT mediante la correlación de los siguientes registros:
- Registros de emisión de identidad de GKE: Usa el ID de JWT de los
registros del servidor de la API de Kubernetes para encontrar entradas de emisión de JWT específicas. Cada entrada también contiene el campo
toBeSignedDigest, cuyo valor puede coincidir con los registros de Cloud KMS. - Registros de firma de Cloud KMS: Usa el valor del
toBeSignedDigestcampo de los registros de emisión de identidad de GKE para confirmar que la clave de Cloud KMS esperada firmó el JWT.
Precios
En este documento, usarás los siguientes componentes facturables de Cloud de Confiance by S3NS:
Antes de comenzar
Configura el plano de control del clúster de GKE con CAs o claves autoadministradas.
Habilita las siguientes APIs del servicio de Cloud Audit Logging:
- Para Cloud KMS, activa los registros de auditoría de acceso a los datos de tipo Lectura de datos.
- Para el servicio de CA, activa los registros de auditoría de acceso a los datos de los tipos Lectura de administración y Escritura de datos.
Roles obligatorios
Para obtener los permisos que necesitas para acceder a los registros de emisión de identidad, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:
-
Realiza todas las acciones en Logging:
Administrador de Logging (
roles/logging.admin). -
Visualiza registros:
Visualizador de registros privados (
roles/logging.privateLogViewer).
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Requisitos y limitaciones
Se aplican los siguientes requisitos y limitaciones:
- Debes usar la versión 1.31.1-gke.1846000 de GKE o una posterior.
- Los registros de emisión de identidad se registran como registros de Registros de auditoría de Cloud y tienen un período de retención establecido de 400 días. El período de retención no se puede configurar, pero puedes enrutar tus registros de auditoría de eventos del sistema a otros destinos para períodos de retención más largos.
Verifica los certificados
Puedes usar los registros de emisión de identidad de la autoridad del plano de control de GKE para confirmar que un certificado se emitió o usó correctamente. Puedes usar cualquiera de los siguientes registros, o una combinación de ellos, para confirmar la información sobre la emisión y el uso de certificados:
Registros de certificados |
|
|---|---|
Registro de la API de Kubernetes para el uso de certificados |
Registra los detalles de la firma del certificado cada vez que se usa el certificado en la API de Kubernetes. |
Registro de GKE para operaciones de emisión de certificados |
Registra todas las operaciones de emisión de certificados como un registro de auditoría de evento del sistema. Estos registros están habilitados de forma predeterminada en cualquier clúster que use claves o CAs administradas por el usuario de la autoridad del plano de control de GKE. |
Registro de auditoría del servicio de CA |
Registra una entrada cada vez que se emite un certificado. |
Registro de auditoría de Cloud KMS |
Registra una entrada cada vez que se firma un resumen, en respuesta a una solicitud de firma del servicio de CA. |
Verifica el uso de certificados con los registros de la API de Kubernetes
Para encontrar entradas de registro para llamadas a la API que se autenticaron con certificados, completa los siguientes pasos:
En la Cloud de Confiance consola de, ve a la página Explorador de registros.
Pega la siguiente expresión en el campo del editor de consultas:
log_id("cloudaudit.googleapis.com/activity") resource.type="k8s_cluster" labels."authentication.kubernetes.io/credential-id":"X509SHA256="Haz clic en Ejecutar consulta.
Esta consulta muestra todos los registros del servidor de la API de Kubernetes que tienen un certificado X.509 asociado. Para investigar, busca entradas de registro específicas con tus herramientas de seguridad o revisa los registros de forma manual.
Para correlacionar estos registros con otros tipos de registros, busca el siguiente campo:
"authentication.k8s.io/credential-id":"CREDENTIAL_ID"
El valor CREDENTIAL_ID es el identificador que puedes usar para correlacionar registros de GKE, el servicio de CA y Cloud KMS. El
CREDENTIAL_ID tiene el formato "X509SHA256=CERTIFICATE_HASH".
Verifica la emisión de certificados con los registros de GKE
Para encontrar entradas de registro de GKE para eventos de emisión de certificados, completa los siguientes pasos:
En la Cloud de Confiance consola de, ve a la página Explorador de registros.
Pega la siguiente expresión en el campo del 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"Reemplaza lo siguiente:
PROJECT_ID: ID del proyectoCREDENTIAL_ID: elCREDENTIAL_IDde la sección Verifica el uso de certificados con los registros de la API de Kubernetes.
Haz clic en Ejecutar consulta.
Verifica la emisión de certificados con los registros del servicio de CA
Para encontrar registros del servicio de CA que coincidan con los eventos de emisión de certificados de GKE, completa los siguientes pasos:
En la Cloud de Confiance consola de, ve a la página Explorador de registros.
Pega la siguiente expresión en el campo del 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"Reemplaza
CERTIFICATE_HASHpor elCERTIFICATE_HASHde la sección Verifica el uso de certificados con los registros de la API de Kubernetes. Asegúrate de omitir el prefijoX509SHA256=del hash.Haz clic en Ejecutar consulta.
Esta consulta muestra un registro que contiene un
tbs_certificate_digest: DIGEST_VALUEcampo en la sección de respuesta de la descripción del certificado.
Puedes usar el DIGEST_VALUE para
hacer coincidir los registros de firma de Cloud KMS del certificado.
Verifica la emisión de certificados con los registros de firma de Cloud KMS
Para encontrar eventos de firma de Cloud KMS para los eventos de emisión de certificados del servicio de CA, completa los siguientes pasos:
En la Cloud de Confiance consola de, ve a la página Explorador de registros.
Pega la siguiente expresión en el campo del 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"Reemplaza
DIGEST_VALUEpor el valor del resumen de la sección Verifica la emisión de certificados con los registros del servicio de CA.Haz clic en Ejecutar consulta.
Esta consulta muestra los registros de los eventos de emisión de certificados. Los registros de Cloud KMS no distinguen entre certificados y JWTs, por lo que las entradas de registro para ambos son idénticas.
Verifica los tokens
Puedes usar los registros de emisión de identidad de la autoridad del plano de control de GKE y los registros de firma de Cloud KMS para confirmar que se emitió correctamente un token web JSON (JWT).
Por lo general, el inicio del seguimiento de la pila del evento de emisión de tokens comienza con la supervisión del registro de la API de Kubernetes para la actividad de la cuenta de servicio. Después de identificar un registro de actividad que necesita más investigación, puedes usar los siguientes registros para confirmar la información sobre la emisión y el uso de credenciales:
Registros de JWT |
|
|---|---|
Registro de la API de Kubernetes para el uso de JWT |
Registra los detalles de la firma del JWT cada vez que se usa un JWT en la API de Kubernetes. |
Registro de GKE para operaciones de emisión de JWT |
Registra todas las operaciones de emisión de tokens como un registro de auditoría de evento del sistema. Estos registros están habilitados de forma predeterminada en cualquier clúster que use claves o CAs administradas por el usuario de la autoridad del plano de control de GKE. |
Registro de auditoría de Cloud KMS |
Registra una entrada cada vez que se firma y emite un token. |
Verifica el uso de tokens con los registros del servidor de la API de Kubernetes
Para encontrar entradas de registro para eventos de uso de tokens, completa los siguientes pasos:
En la Cloud de Confiance consola de, ve a la página Explorador de registros.
Pega la siguiente expresión en el campo del editor de consultas:
log_id("cloudaudit.googleapis.com/activity") resource.type="k8s_cluster" labels."authentication.kubernetes.io/credential-id":"JTI="Haz clic en Ejecutar consulta.
Esta consulta muestra todos los registros del servidor de la API de Kubernetes que tienen un JWT asociado. Para investigar, busca entradas de registro específicas con tus herramientas de seguridad o revisa los registros de forma manual.
Para correlacionar estos registros con otros tipos de registros, busca el siguiente campo:
"authentication.k8s.io/credential-id": "JTI=JWT_ID"
El JWT_ID es el identificador de token que puedes usar para correlacionar registros de GKE y Cloud KMS.
Verifica la emisión de tokens con los registros de GKE
Para encontrar entradas de registro para eventos de emisión de tokens, completa los siguientes pasos:
En la Cloud de Confiance consola de, ve a la página Explorador de registros.
Pega la siguiente expresión en el campo del 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"Reemplaza lo siguiente:
PROJECT_ID: ID del proyectoJWT_ID: el ID de JWT de la sección Verifica el uso de tokens con los registros del servidor de la API de Kubernetes.
Haz clic en Ejecutar consulta.
Esta consulta muestra registros que contienen un campo
toBeSignedDigest.
Puedes usar el valor toBeSignedDigest para encontrar eventos de firma de Cloud KMS.
Verifica la emisión de tokens con los registros de firma de Cloud KMS
Para encontrar entradas de registro para resúmenes firmados, completa los siguientes pasos:
En la Cloud de Confiance consola de, ve a la página Explorador de registros.
Pega la siguiente expresión en el campo del 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"Reemplaza
DIGEST_VALUEpor el valor del campotoBeSignedDigestde la sección Verifica la emisión de tokens con los registros de GKE.Haz clic en Ejecutar consulta.
Esta consulta muestra los registros de los eventos de emisión de certificados. Los registros de Cloud KMS no distinguen entre certificados y JWTs, por lo que las entradas de registro para ambos son idénticas.
¿Qué sigue?
- Obtén información sobre la seguridad del plano de control.
- Obtén información sobre el acceso administrativo para los empleados de Google.
- Obtén más información sobre cómo configurar el registro y la supervisión para GKE.
- Obtén información para configurar el acceso a los registros a nivel de campo.
- Obtén información sobre los límites de uso del registro.