GCP - KMS Privesc
KMS
Información sobre KMS:
GCP - KMS EnumTen en cuenta que en KMS los permisos no solo se heredan de Organizaciones, Carpetas y Proyectos, sino también de Anillos de claves.
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.useToDecrypt
Puedes usar este permiso para descifrar información con la clave sobre la que tienes este permiso.
cloudkms.cryptoKeys.setIamPolicy
cloudkms.cryptoKeys.setIamPolicy
Un atacante con este permiso podría darse a sí mismo permisos para usar la clave y descifrar información.
cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
Aquí tienes un desglose conceptual de cómo funciona esta delegación:
La Cuenta de Servicio A tiene acceso directo para descifrar usando una clave específica en KMS.
La Cuenta de Servicio B recibe el permiso
useToDecryptViaDelegation
. Esto le permite solicitar a KMS descifrar datos en nombre de la Cuenta de Servicio A.
El uso de este permiso es implícito en la forma en que el servicio KMS verifica los permisos cuando se realiza una solicitud de descifrado.
Cuando realizas una solicitud de descifrado estándar utilizando la API de Google Cloud KMS (en Python u otro lenguaje), el servicio verifica si la cuenta de servicio solicitante tiene los permisos necesarios. Si la solicitud es realizada por una cuenta de servicio con el permiso useToDecryptViaDelegation
, KMS verifica si esta cuenta tiene permitido solicitar el descifrado en nombre de la entidad que posee la clave.
Configuración para la Delegación
Definir el Rol Personalizado: Crea un archivo YAML (por ejemplo,
custom_role.yaml
) que defina el rol personalizado. Este archivo debe incluir el permisocloudkms.cryptoKeyVersions.useToDecryptViaDelegation
. Aquí tienes un ejemplo de cómo podría verse este archivo:
Crear el Rol Personalizado Usando la CLI de gcloud: Utiliza el siguiente comando para crear el rol personalizado en tu proyecto de Google Cloud:
Reemplace [YOUR_PROJECT_ID]
con el ID de su proyecto de Google Cloud.
Conceder el Rol Personalizado a una Cuenta de Servicio: Asigne su rol personalizado a una cuenta de servicio que estará utilizando este permiso. Utilice el siguiente comando:
Reemplace [YOUR_PROJECT_ID]
y [SERVICE_ACCOUNT_EMAIL]
con su ID de proyecto y el correo electrónico de la cuenta de servicio, respectivamente.
Last updated