En este tema, se muestra cómo administrar el acceso a los recursos de Cloud KMS.
Descripción general
Para administrar el acceso a los recursos de Cloud KMS, como las claves y los llaveros de claves, debes otorgar las funciones de administración de identidades y accesos (IAM). Puedes otorgar o restringir la capacidad de realizar operaciones criptográficas específicas, como rotar una clave o encriptar datos. Puedes otorgar funciones de IAM en las siguientes ubicaciones:
- Una clave directamente
- Un llavero de claves heredado por todas las claves de ese llavero de claves
- Un proyecto de Google Cloud, heredado por todas las claves del proyecto
- Una carpeta de Google Cloud, heredada por todas las claves en todos los proyectos de la carpeta
- Una organización de Google Cloud, heredada por todas las claves en las carpetas de la organización
Para obtener una lista completa de las acciones y las funciones de IAM de Cloud KMS, consulta Permisos y funciones. Para obtener una lista completa de los recursos de Cloud KMS y cómo se relacionan entre sí, consulta Recursos de Cloud KMS.
Antes de comenzar
Para completar estas tareas, necesitas permiso para administrar los recursos de Cloud KMS en el proyecto de Google Cloud. La función de administrador de Cloud KMS (roles/cloudkms.admin
) incluye los permisos necesarios.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the required API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the required API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Crea un recurso, como un llavero de claves.
- Obtén los IDs de recursos para los recursos creados, como un llavero de claves, una clave y una versión de clave.
Solo los principales de IAM con las funciones de Propietario (roles/owner
) o Administrador de Cloud KMS (roles/cloudkms.admin
) pueden otorgar o revocar el acceso a los recursos de Cloud KMS.
Otorga funciones en un recurso
En el siguiente ejemplo, se otorga una función que proporciona acceso a una clave de Cloud KMS:
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala o actualiza a la versión más reciente de Google Cloud CLI.
gcloud kms keys add-iam-policy-binding key \ --keyring key-ring \ --location location \ --member principal-type:principal-email \ --role roles/role
Reemplaza key por el nombre de la clave. Reemplaza key-ring por el nombre del llavero de claves en el que se encuentra la clave. Reemplaza location por la ubicación de Cloud KMS para el llavero de claves. Reemplaza principal-type y principal-email por el tipo de principal y la dirección de correo electrónico del principal. Reemplaza role por el nombre de la función que deseas agregar.
C#
Para ejecutar este código, primero configura un entorno de desarrollo de C# e instala el SDK de C# para Cloud KMS.
Go
Para ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Cloud KMS.
Java
Para ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Cloud KMS.
Node.js
Para ejecutar este código, primero configura un entorno de desarrollo de Node.js y, luego, instala el SDK de Node.js para Cloud KMS.
PHP
Para ejecutar este código, primero obtén información sobre cómo usar PHP en Google Cloud y, luego, instala el SDK de PHP para Cloud KMS.
Python
Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.
Ruby
Para ejecutar este código, primero configura un entorno de desarrollo de Ruby y, luego, instala el SDK de Ruby para Cloud KMS.
Revoca el acceso a un recurso
Para quitar el acceso de una principal a una clave de Cloud KMS, haz lo siguiente:
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala o actualiza a la versión más reciente de Google Cloud CLI.
gcloud kms keys remove-iam-policy-binding key \ --keyring key-ring \ --location location \ --member principal-type:principal-email \ --role roles/role-name
Reemplaza key por el nombre de la clave. Reemplaza key-ring por el nombre del llavero de claves en el que se encuentra la clave. Reemplaza location por la ubicación de Cloud KMS para el llavero de claves. Reemplaza principal-type y principal-email por el tipo de principal y la dirección de correo electrónico del principal. Reemplaza role-name por el nombre de la función que deseas quitar.
Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca --help
.
C#
Para ejecutar este código, primero configura un entorno de desarrollo de C# e instala el SDK de C# para Cloud KMS.
Go
Para ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Cloud KMS.
Java
Para ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Cloud KMS.
Node.js
Para ejecutar este código, primero configura un entorno de desarrollo de Node.js y, luego, instala el SDK de Node.js para Cloud KMS.
PHP
Para ejecutar este código, primero obtén información sobre cómo usar PHP en Google Cloud y, luego, instala el SDK de PHP para Cloud KMS.
Python
Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.
Ruby
Para ejecutar este código, primero configura un entorno de desarrollo de Ruby y, luego, instala el SDK de Ruby para Cloud KMS.
Visualiza los permisos de un recurso
Para ver la política de IAM de una clave de Cloud KMS, haz lo siguiente:
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala o actualiza a la versión más reciente de Google Cloud CLI.
gcloud kms keys get-iam-policy key \ --keyring key-ring \ --location location
Reemplaza key por el nombre de la clave. Reemplaza key-ring por el nombre del llavero de claves en el que se encuentra la clave. Reemplaza location por la ubicación de Cloud KMS para el llavero de claves.
Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca --help
.
C#
Para ejecutar este código, primero configura un entorno de desarrollo de C# e instala el SDK de C# para Cloud KMS.
Go
Para ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Cloud KMS.
Java
Para ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Cloud KMS.
Node.js
Para ejecutar este código, primero configura un entorno de desarrollo de Node.js y, luego, instala el SDK de Node.js para Cloud KMS.
PHP
Para ejecutar este código, primero obtén información sobre cómo usar PHP en Google Cloud y, luego, instala el SDK de PHP para Cloud KMS.
Python
Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.
Ruby
Para ejecutar este código, primero configura un entorno de desarrollo de Ruby y, luego, instala el SDK de Ruby para Cloud KMS.
Principio de privilegio mínimo
Para practicar el principio de menor privilegio, otorgue el conjunto de permisos más limitado al objeto más bajo en la jerarquía de recursos.
A fin de otorgar a un principal permisos para encriptar (pero no desencriptar) datos, otorga la función
roles/cloudkms.cryptoKeyEncrypter
en la clave.A fin de otorgar a un principal permisos para encriptar y desencriptar datos, otorga la función
roles/cloudkms.cryptoKeyEncrypterDecrypter
en la clave.Para otorgar a un principal permisos a fin de verificar (pero no firmar) datos, otorga la función
roles/cloudkms.publicKeyViewer
en la clave.A fin de otorgar a un principal permisos para firmar y verificar datos, otorga la función
roles/cloudkms.signerVerifier
en la clave.A fin de otorgar a un principal permisos para administrar una clave, otorga la función
roles/cloudkms.admin
en la clave.
Esta no es una lista exhaustiva. Consulta permisos y funciones de Cloud KMS para obtener una lista completa de los permisos y las funciones.
Jerarquía y herencia
Las vinculaciones de políticas se pueden especificar en el proyecto, el llavero de claves, la clave, el trabajo de importación y otros recursos de Cloud KMS.
Debido a que las claves pertenecen a llaveros de claves y estos, a su vez, pertenecen a proyectos, un principal con una función o un permiso específico en el nivel más alto de esa jerarquía hereda los mismos permisos sobre los recursos secundarios. En otras palabras, un usuario que tiene la función de owner
en un proyecto también es owner
de todos los llaveros de claves y las claves de ese proyecto. De manera similar, si un usuario recibe la función de cloudkms.admin
sobre un llavero de claves, tiene los permisos asociados para las claves que este contiene.
Lo inverso no ocurre. Es decir, un usuario que tiene permiso para acceder a una clave, pero que no tiene el permiso sobre el llavero de claves superior no tiene permisos para ese llavero de claves.
¿Qué sigue?
- Obtén más información sobre los permisos y las funciones en Cloud KMS.
- Crea una clave.
- Encripta y desencripta datos.