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á dirigida a los administradores de seguridad y a los propietarios de plataformas que tienen requisitos específicos de cumplimiento o políticas organizativas para controlar la emisión y firma de credenciales. Ya deberías haber configurado claves y CA 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 permiten realizar tareas como verificar la 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, Trusted Cloud 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 documentos de identidad
Los registros de emisión de identidades 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, correlacionando 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 identidades 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 una CertificateSigningRequest aprobada 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 haya autenticado 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 de 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 correlacionando los registros de los siguientes servicios:
- Registros de emisión de identidades de GKE: Usa la consulta
protoPayload.metadata.credentialId
para encontrar registros específicos de emisión de identidades de GKE según el ID de credencial de los registros del servidor de la API de Kubernetes. Luego, usa el campoprotoPayload.metadata.certificateFingerprint
del 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 del certificado, que contiene los siguientes IDs:
cert_fingerprint.sha256_hash
: Es el hash SHA256 del certificado firmado. Usa este ID para correlacionar los registros con los eventos de las APIs de GKE y Kubernetes.tbs_certificate_digest
: Es un hash del contenido del certificado que se envió para que lo firmara una clave de Cloud KMS. Usa este ID para correlacionar los registros con los registros de Cloud KMS.
- Registros de firma de Cloud KMS: Usa el valor
tbs_certificate_digest
del registro del servicio de CA para confirmar que la clave de Cloud KMS esperada firmó el certificado.
Tokens web JSON (JWT)
Los JWT (tokens web JSON) firmados se usan como tokens del portador para las entidades del 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 activa en el Pod. Cuando usas la autoridad del plano de control de GKE para ejecutar tus propias claves y CA, 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 haya autenticado 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 de JWT_ID
es una cadena que identifica el JWT que se usó en la llamada a la API de Kubernetes.
Puedes usar el ID del JWT de los registros del servidor de la API de Kubernetes para hacer un seguimiento del ciclo de vida de un JWT correlacionando los siguientes registros:
- Registros de emisión de identidades de GKE: Usa el ID del JWT de los registros del servidor de la API de Kubernetes para encontrar entradas específicas de emisión de JWT. 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 campo
toBeSignedDigest
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 Trusted Cloud by S3NS:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Antes de comenzar
Configura el plano de control de tu clúster de GKE con CA o claves autoadministradas.
Habilita las siguientes APIs del servicio de Cloud Audit Logging:
- En Cloud KMS, activa los registros de auditoría de acceso a los datos de tipo Lectura de datos.
- En CA Service, 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 identidades, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:
-
Realizar todas las acciones en Logging:
Administrador de Logging (
roles/logging.admin
) -
Para ver los registros, usa el 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 mediante 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 identidades se registran como 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 se emitió o usó un certificado 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 con la API de Kubernetes. |
Registro de GKE para las 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 administradas por el usuario o entidades de certificación 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 del certificado con los registros de la API de Kubernetes
Para encontrar entradas de registro de llamadas a la API que se autenticaron con certificados, completa los siguientes pasos:
En la consola de Trusted Cloud , 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 devuelve 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 de CREDENTIAL_ID
es el identificador que puedes usar para correlacionar los 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 sobre eventos de emisión de certificados, completa los siguientes pasos:
En la consola de Trusted Cloud , 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
: el ID de tu proyectoCREDENTIAL_ID
: Es elCREDENTIAL_ID
de la sección Verifica el uso del certificado 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 consola de Trusted Cloud , 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_HASH
porCERTIFICATE_HASH
de la sección Verifica el uso del certificado con los registros de la API de Kubernetes. Asegúrate de omitir el prefijoX509SHA256=
del hash.Haz clic en Ejecutar consulta.
Esta consulta devuelve un registro que contiene un campo
tbs_certificate_digest: DIGEST_VALUE
en la sección de respuesta de la descripción del certificado.
Puedes usar DIGEST_VALUE
para correlacionar 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 consola de Trusted Cloud , 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_VALUE
por el valor del resumen de la sección Verifica la emisión de certificados con los registros de CA Service.Haz clic en Ejecutar consulta.
Esta consulta devuelve los registros de los eventos de emisión de certificados. Los registros de Cloud KMS no distinguen entre certificados y JWT, 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 seguimiento del evento de emisión del token comienza con la supervisión del registro de la API de Kubernetes para detectar la actividad de la cuenta de servicio. Después de identificar un registro de actividad que requiere más investigación, puedes usar los siguientes registros para confirmar 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 las operaciones de emisión de JWT |
Registra todas las operaciones de emisión de tokens como un registro de auditoría de eventos del sistema. Estos registros están habilitados de forma predeterminada en cualquier clúster que use claves o entidades de certificación 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 del token con los registros del servidor de la API de Kubernetes
Para encontrar entradas de registro de eventos de uso de tokens, completa los siguientes pasos:
En la consola de Trusted Cloud , 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 devuelve todos los registros del servidor de la API de Kubernetes que tienen un JWT asociado. Encuentra entradas de registro específicas para investigar con tus herramientas de seguridad o revisando 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 del token que puedes usar para correlacionar los registros de GKE y Cloud KMS.
Verifica la emisión de tokens con los registros de GKE
Para encontrar entradas de registro de eventos de emisión de tokens, completa los siguientes pasos:
En la consola de Trusted Cloud , 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
: el ID de tu proyectoJWT_ID
: Es el ID del JWT de la sección Verifica el uso del token con los registros del servidor de la API de Kubernetes.
Haz clic en Ejecutar consulta.
Esta consulta devuelve 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 de resúmenes firmados, completa los siguientes pasos:
En la consola de Trusted Cloud , 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_VALUE
por el valor del campotoBeSignedDigest
de la sección Verifica la emisión de tokens con los registros de GKE.Haz clic en Ejecutar consulta.
Esta consulta devuelve los registros de los eventos de emisión de certificados. Los registros de Cloud KMS no distinguen entre certificados y JWT, por lo que las entradas de registro para ambos son idénticas.
¿Qué sigue?
- Obtén más información sobre la seguridad del plano de control.
- Obtén más información sobre el acceso de administrador para empleados de Google.
- Obtén más información para configurar el registro y la supervisión para GKE.
- Obtén más información para configurar el acceso a los registros a nivel del campo.
- Obtén más información sobre los límites de uso de Logging.