En Cloud KMS, los recursos se organizan en una jerarquía. Esta jerarquía te ayuda a administrar y otorgar acceso a los recursos en varios niveles de detalle. Las claves se encuentran dentro de llaveros de claves y estos existen dentro de un proyecto. Las conexiones de EKM también existen dentro de un proyecto. Los proyectos se pueden organizar en carpetas o organizaciones.
En este tema, se proporcionan más detalles sobre la jerarquía de recursos dentro de Cloud KMS. Para obtener más información sobre los recursos de Google Cloud en general, consulta Jerarquía de recursos.
Jerarquía de recursos
El permiso de una función de IAM cambia según el nivel de la jerarquía de recursos en la que se otorga la función. En esta tabla, se muestran las capacidades efectivas otorgadas por la función de encriptador de CryptoKey de Cloud KMS (roles/cloudkms.cryptoKeyEncrypter
) en diferentes niveles de la jerarquía.
Puedes administrar el acceso a claves o llaveros de claves, pero no a versiones de claves individuales.
Jerarquía de recursos | Función |
---|---|
Organización | Encripta con todas las claves de todos los proyectos de la organización |
Carpeta | Encripta con todas las claves en todos los proyectos de la carpeta |
Proyecto | Encripta con todas las claves en el proyecto |
Llavero de claves | Encripta con todas las claves en el llavero de claves |
Clave | Encripta solo con esa clave |
Principios de seguridad
IAM ayuda a aplicar los principios de seguridad interrelacionados de la separación de obligaciones y del privilegio mínimo:
Cuando aplicas el principio de separación de obligaciones, ningún miembro tiene todo el acceso necesario para completar una función empresarial fundamental. Por ejemplo, un emisor de una cuenta bancaria solo puede retirar fondos de una cuenta cuando el titular de la cuenta está presente físicamente e inicia la transacción.
Cuando aplicas el principio de privilegio mínimo, un miembro solo tiene el nivel mínimo de acceso necesario para completar las funciones empresariales específicas de ese miembro. Por ejemplo, a un emisor del banco no se le otorga de forma automática la capacidad de aprobar un préstamo del cliente.
Funciones predefinidas
IAM proporciona funciones predefinidas que otorgan acceso para cada tipo de recursos de Google Cloud. Si ninguna función predefinida cumple con tus necesidades, puedes crear una función personalizada.
IAM ofrece las siguientes funciones predefinidas para Cloud KMS:
Role | Permissions |
---|---|
Cloud KMS Admin( Provides access to Cloud KMS resources, except for access to restricted resource types and cryptographic operations. Lowest-level resources where you can grant this role:
|
|
Cloud KMS Autokey Admin( Enables management of AutokeyConfig. |
|
Cloud KMS Autokey User( Grants ability to use KeyHandle resources. |
|
Cloud KMS CryptoKey Decrypter( Provides ability to use Cloud KMS resources for decrypt operations only. Lowest-level resources where you can grant this role:
|
|
Cloud KMS CryptoKey Decrypter Via Delegation( Enables Decrypt operations via other Google Cloud services |
|
Cloud KMS CryptoKey Encrypter( Provides ability to use Cloud KMS resources for encrypt operations only. Lowest-level resources where you can grant this role:
|
|
Cloud KMS CryptoKey Encrypter/Decrypter( Provides ability to use Cloud KMS resources for encrypt and decrypt operations only. Lowest-level resources where you can grant this role:
|
|
Cloud KMS CryptoKey Encrypter/Decrypter Via Delegation( Enables Encrypt and Decrypt operations via other Google Cloud services |
|
Cloud KMS CryptoKey Encrypter Via Delegation( Enables Encrypt operations via other Google Cloud services |
|
Cloud KMS Crypto Operator( Enables all Crypto Operations. |
|
Cloud KMS EkmConnections Admin( Enables management of EkmConnections. |
|
Cloud KMS Expert Raw AES-CBC Key Manager( Enables raw AES-CBC keys management. |
|
Cloud KMS Expert Raw AES-CTR Key Manager( Enables raw AES-CTR keys management. |
|
Cloud KMS Expert Raw PKCS#1 Key Manager( Enables raw PKCS#1 keys management. |
|
Cloud KMS Importer( Enables ImportCryptoKeyVersion, CreateImportJob, ListImportJobs, and GetImportJob operations |
|
Cloud KMS Protected Resources Viewer( Enables viewing protected resources. |
|
Cloud KMS CryptoKey Public Key Viewer( Enables GetPublicKey operations |
|
Cloud KMS CryptoKey Signer( Enables Sign operations |
|
Cloud KMS CryptoKey Signer/Verifier( Enables Sign, Verify, and GetPublicKey operations |
|
Cloud KMS CryptoKey Verifier( Enables Verify and GetPublicKey operations |
|
Cloud KMS Viewer( Enables Get and List operations. |
|
Funciones personalizadas
Además de las funciones predefinidas, puedes crear funciones personalizadas. Las funciones personalizadas te permiten aplicar el principio de privilegio mínimo y otorgarles los permisos mínimos necesarios para realizar una tarea determinada.
Una función personalizada incluye uno o más de los permisos enumerados en la referencia de IAM.
Los permisos relacionados con la API de Cloud Key Management Service comienzan con la string cloudkms
.
Si deseas obtener más información, consulta Niveles de asistencia para los permisos en funciones personalizadas.
Si deseas obtener información sobre los permisos necesarios para invocar un método específico de la API de Cloud Key Management Service, consulta la referencia de la API de ese método.
Lineamientos generales para administrar el acceso en Cloud KMS
Te recomendamos que evites usar funciones básicas en todo el proyecto, como owner
, editor
y viewer
. Estas funciones no separan la capacidad de administrar claves de la capacidad de usarlas para operaciones criptográficas y no se recomiendan para entornos de producción. En su lugar, usa funciones predefinidas o crea funciones personalizadas que reflejen los requisitos de tu negocio.
Los siguientes ejemplos ayudan a ilustrar algunos lineamientos de seguridad adecuados:
Para una organización grande o compleja, puedes decidir un enfoque como el siguiente:
- Otorga a los miembros de tu equipo de seguridad de TI la función de administrador de Cloud KMS (
roles/cloudkms.admin
) en todos los proyectos. Si diferentes miembros del equipo controlan diferentes aspectos del ciclo de vida de una clave, puedes otorgar a esos miembros una función más detallada, como la función de importador de Cloud KMS (roles/cloudkms.importer
). - Otorga la función Encriptador / Desencriptador de Cloud KMS (
roles/cloudkms.cryptoKeyEncrypterDecrypter
) a los usuarios o aplicaciones que leen o escriben datos encriptados. - Otorga la función de visualizador de claves públicas de Cloud KMS (
roles/cloudkms.publicKeyViewer
) a los usuarios o aplicaciones que necesitan ver la parte pública de una clave que se usa para la encriptación asimétrica. - Crea funciones predefinidas que coincidan con los requisitos de tu empresa. Por ejemplo, es posible que el mismo usuario necesite supervisar las cuotas de un proyecto y ver los datos de registro.
- Otorga a los miembros de tu equipo de seguridad de TI la función de administrador de Cloud KMS (
Para una organización pequeña con requisitos de seguridad simples, puedes optar por un enfoque más sencillo y otorgar un rol amplio, como Administrador de la organización (
roles/resourcemanager.organizationAdmin
). Sin embargo, es posible que este enfoque no se ajuste a tus requisitos continuos.Considera alojar tus claves en un proyecto de Google Cloud separado de los datos protegidos por esas claves. Un usuario con un rol básico o de alto privilegio en un proyecto, como
editor
, no puede usar este rol para obtener acceso no autorizado a claves en un proyecto diferente.Evita otorgar la función
owner
a cualquier miembro. Sin la funciónowner
, ningún miembro del proyecto puede crear una clave y usarla para desencriptar datos o firmar, a menos que se otorgue cada uno de estos permisos a ese miembro. Para otorgar acceso de administrador general sin otorgar la capacidad de encriptar o desencriptar, otorga la función de administrador de Cloud KMS (roles/cloudkms.admin
).Para limitar el acceso a los datos encriptados, como los datos del cliente, puedes restringir quién puede acceder a la clave y quién puede usarla para la desencriptación. Si es necesario, puedes crear funciones personalizadas detalladas para cumplir con los requisitos de tu negocio.
Cómo verificar permisos
Para cada tipo de objeto de Cloud KMS en el que puedes establecer permisos de IAM detallados, ese objeto tiene un método testIamPermissions
.
El método testIamPermissions
muestra el conjunto de permisos que se otorgaron al emisor para ese objeto.
- Para los llaveros de claves, puedes invocar el método
cloudkms.keyRings.testIamPermissions
. - Para las claves, puedes invocar el método
cloudkms.cryptoKeys.testIamPermissions
. - En trabajos de importación de claves, puedes invocar el método
cloudkms.keyRings.importJobs.testIamPermissions
. - Para las conexiones EKM, puedes invocar el método
cloudkms.ekmConnections.testIamPermissions
.
No puedes configurar permisos de IAM en una versión de clave, por lo que el tipo de objeto CryptoKeyVersion
no tiene este método.
El método testIamPermissions
de un objeto muestra un TestIamPermissionsResponse
.
Si deseas obtener ejemplos para invocar métodos de testIamPermissions
, consulta la documentación a fin de probar los permisos en la documentación de IAM.
¿Qué sigue?
- Descubre cómo IAM centraliza la administración de los permisos y los niveles de acceso para los recursos de Google Cloud.
- Comprende los diferentes tipos de objetos de Cloud KMS.