Permisos y funciones

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 los llaveros de claves, y estos se encuentran dentro de un proyecto. Los proyectos se pueden organizar aún más en carpetas o de 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 alcance de una función de IAM cambia según el nivel de la jerarquía de recursos en el que se otorga la función. En esta tabla, se muestran las capacidades efectivas que otorga 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 en 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 del proyecto
Llavero de claves Encripta con todas las claves del llavero de claves
Clave Encriptar con solo esa clave

Principios de seguridad

IAM ayuda a aplicar los principios de seguridad interrelacionados de separación de obligaciones y mínimo privilegio:

  • 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 cajero bancario 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 comerciales específicas de ese miembro. Por ejemplo, a un cajero bancario no se le otorga de forma automática la capacidad de aprobar un préstamo de cliente.

Funciones predefinidas

IAM proporciona funciones predefinidas que otorgan acceso a cada tipo de recursos de Google Cloud. Si ninguna función predefinida satisface tus necesidades, puedes crear una función personalizada.

IAM ofrece las siguientes funciones predefinidas para Cloud KMS:

Función Título Descripción Permisos Recurso más bajo
roles/cloudkms.admin Administrador de Cloud KMS Proporciona acceso completo a los recursos de Cloud KMS, excepto a las operaciones de encriptación y desencriptación.
  • cloudkms.cryptoKeyVersions.create
  • cloudkms.cryptoKeyVersions.destroy
  • cloudkms.cryptoKeyVersions.get
  • cloudkms.cryptoKeyVersions.list
  • cloudkms.cryptoKeyVersions.restore
  • cloudkms.cryptoKeyVersions.update
  • cloudkms.cryptoKeys.*
  • cloudkms.importJobs.*
  • cloudkms.keyRings.*
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get
CryptoKey
roles/cloudkms.cryptoKeyDecrypter Desencriptador de CryptoKey de Cloud KMS Proporciona la capacidad de usar los recursos de Cloud KMS solo para operaciones de desencriptación.
  • cloudkms.cryptoKeyVersions.useToDecrypt
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get
CryptoKey
roles/cloudkms.cryptoKeyEncrypter Encriptador de CryptoKey de Cloud KMS Proporciona la capacidad de usar los recursos de Cloud KMS solo para operaciones de encriptación.
  • cloudkms.cryptoKeyVersions.useToEncrypt
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get
CryptoKey
roles/cloudkms.cryptoKeyEncrypterDecrypter Encriptador y desencriptador de CryptoKey de Cloud KMS Proporciona la capacidad de usar los recursos de Cloud KMS solo para operaciones de encriptación y desencriptación.
  • cloudkms.cryptoKeyVersions.useToDecrypt
  • cloudkms.cryptoKeyVersions.useToEncrypt
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get
CryptoKey
roles/cloudkms.cryptoOperator Operador criptográfico de Cloud KMS Habilita todas las operaciones criptográficas.
  • cloudkms.cryptoKeyVersions.useToDecrypt
  • cloudkms.cryptoKeyVersions.useToEncrypt
  • cloudkms.cryptoKeyVersions.useToSign
  • cloudkms.cryptoKeyVersions.useToVerify
  • cloudkms.cryptoKeyVersions.viewPublicKey
  • cloudkms.locations.*
  • resourcemanager.projects.get
roles/cloudkms.importer Importador de Cloud KMS Habilita las operaciones ImportCryptoKeyVersion, CreateImportJob, ListImportJobs y GetImportJob
  • cloudkms.importJobs.create
  • cloudkms.importJobs.get
  • cloudkms.importJobs.list
  • cloudkms.importJobs.useToImport
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get
roles/cloudkms.publicKeyViewer Visualizador de claves CryptoKey públicas de Cloud KMS Habilita las operaciones GetPublicKey
  • cloudkms.cryptoKeyVersions.viewPublicKey
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get
roles/cloudkms.signer Firmante de CryptoKey de Cloud KMS Habilita las operaciones Sign
  • cloudkms.cryptoKeyVersions.useToSign
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get
roles/cloudkms.signerVerifier Verificador y firmante de CryptoKey de Cloud KMS Habilita las operaciones Sign, Verify y GetPublicKey
  • cloudkms.cryptoKeyVersions.useToSign
  • cloudkms.cryptoKeyVersions.useToVerify
  • cloudkms.cryptoKeyVersions.viewPublicKey
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get
roles/cloudkms.verifier Verificador de CryptoKey de Cloud KMS Habilita las operaciones Verify y GetPublicKey.
  • cloudkms.cryptoKeyVersions.useToVerify
  • cloudkms.cryptoKeyVersions.viewPublicKey
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Funciones personalizadas

Además de las funciones predefinidas, puedes crear funciones personalizadas. Las funciones personalizadas te permiten aplicar el principio de menor privilegio, ya que otorgan a la función los permisos mínimos requeridos 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. A fin de obtener más información, consulta Niveles de asistencia para los permisos en funciones personalizadas.

Si quieres 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 manejan diferentes aspectos del ciclo de vida de una clave, puedes otorgarles una función más detallada, como la función de importador de Cloud KMS (roles/cloudkms.importer).
    • Otorga la función de encriptador / desencriptador de Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) a los usuarios o las aplicaciones que leen o escriben datos encriptados.
    • Otorga la función de visualizador de claves públicas de Cloud KMS (roles/cloudkms.publicKeyViewer) a usuarios o aplicaciones que necesiten ver la parte pública de una clave que se usa para encriptación asimétrica.
    • Crea funciones predefinidas que coincidan con los requisitos de tu negocio. Por ejemplo, es posible que el mismo usuario necesite supervisar las cuotas de un proyecto y ver los datos de registro.
  • Para una organización pequeña con requisitos de seguridad simples, puedes optar por un enfoque más simple y otorgarle una función amplia, como Administrador de la organización (roles/resourcemanager.organizationAdmin). Sin embargo, , es posible que este enfoque no se ajuste a sus requisitos actuales.

  • Considera alojar tus claves en un proyecto de Google Cloud independiente de los datos protegidos por esas claves. Un usuario con una función básica o con muchos privilegios en un proyecto, como editor, no puede usar esta función para obtener acceso no autorizado a claves en un proyecto diferente.

  • Evita otorgar la función owner a cualquier miembro. Sin la función owner, ningún miembro del proyecto puede crear una clave y usarla para desencriptar datos o firmar, a menos que cada uno de estos permisos se otorgue 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 detallados de IAM, ese objeto tiene un método testIamPermissions. El método testIamPermissions muestra el conjunto de permisos que se otorgó al emisor para ese objeto.

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 una TestIamPermissionsResponse.

Para ver ejemplos de la invocación de métodos de testIamPermissions, consulta la documentación sobre los permisos de prueba en la documentación de IAM.

¿Qué sigue?

  • Obtén más información sobre cómo IAM centraliza la administración de los permisos y los permisos de acceso para los recursos de Google Cloud.
  • Obtén información sobre los diferentes tipos de objetos de Cloud KMS.