En este tema se explica cómo gestionar el acceso a los recursos de Cloud KMS.
Información general
Para gestionar el acceso a los recursos de Cloud KMS, como claves y conjuntos de claves, debes asignar roles de Gestión de Identidades y Accesos (IAM). Puedes conceder o restringir la capacidad de realizar operaciones criptográficas específicas, como rotar una clave o cifrar datos. Puedes conceder roles de gestión de identidades y accesos en los siguientes elementos:
- Una clave directamente
- Un conjunto de claves, heredado por todas las claves de ese conjunto
- Un Google Cloud proyecto, heredado por todas las claves del proyecto
- Una Google Cloud carpeta, heredada por todas las claves de todos los proyectos de la carpeta
- Una organización Google Cloud , heredada por todas las claves de las carpetas de la organización
Para ver una lista completa de las acciones de Cloud KMS y los roles y permisos de IAM, consulta Permisos y roles. Para ver una lista completa de los recursos de Cloud KMS y cómo se relacionan entre sí, consulta Recursos de Cloud KMS.
Antes de empezar
Para completar estas tareas, necesitas permiso para administrar recursos de Cloud KMS en el proyecto Google Cloud . El rol 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the required API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the required API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
- Crea un recurso, como un conjunto de claves.
- Obtén los IDs de recurso de los recursos creados, como un conjunto de claves, una clave y una versión de clave.
Para conceder a un principal permisos para encriptar (pero no desencriptar) datos, asigna el rol
roles/cloudkms.cryptoKeyEncrypter
a la clave.Para conceder permisos a un principal para encriptar y desencriptar datos, asigna el rol
roles/cloudkms.cryptoKeyEncrypterDecrypter
a la clave.Para conceder a una entidad permisos para verificar (pero no firmar) datos, asigna el rol
roles/cloudkms.publicKeyViewer
a la clave.Para conceder permisos a una entidad de seguridad para firmar y verificar datos, asigna el rol
roles/cloudkms.signerVerifier
a la clave.Para conceder permisos a una entidad principal para gestionar una clave, asigna el rol
roles/cloudkms.admin
a la clave.- Consulta más información sobre los permisos y roles de Cloud KMS.
- Crea una clave.
- Cifra y descifra datos.
Solo las entidades de IAM con los roles Propietario (roles/owner
) o Administrador de Cloud KMS (roles/cloudkms.admin
) pueden conceder o revocar el acceso a los recursos de Cloud KMS.
Conceder roles en un recurso
En el siguiente ejemplo se concede un rol 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 la CLI de Google Cloud.
gcloud kms keys add-iam-policy-binding key \ --keyring key-ring \ --location location \ --member principal-type:principal-email \ --role roles/role
Sustituye key por el nombre de la clave. Sustituye key-ring por el nombre del conjunto de claves en el que se encuentra la clave. Sustituye location por la ubicación de Cloud KMS del conjunto de claves. Sustituye principal-type y principal-email por el tipo de principal y la dirección de correo del principal. Sustituye role por el nombre del rol que quieras añadir.
C#
Para ejecutar este código, primero debes configurar un entorno de desarrollo de C# e instalar el SDK de Cloud KMS para C#.
Go
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Go e instalar el SDK de Go de Cloud KMS.
Java
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Java e instalar el SDK de Java de Cloud KMS.
Node.js
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Node.js e instalar el SDK de Node.js de Cloud KMS.
PHP
Para ejecutar este código, primero debes consultar información sobre cómo usar PHP en Google Cloud e instalar el SDK de PHP de Cloud KMS.
Python
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Python e instalar el SDK de Python de Cloud KMS.
Ruby
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Ruby e instalar el SDK de Ruby de Cloud KMS.
Revocar el acceso a un recurso
Para quitar el acceso de una entidad a una clave de Cloud KMS, sigue estos pasos:
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala o actualiza a la versión más reciente de la CLI de Google Cloud.
gcloud kms keys remove-iam-policy-binding key \ --keyring key-ring \ --location location \ --member principal-type:principal-email \ --role roles/role-name
Sustituye key por el nombre de la clave. Sustituye key-ring por el nombre del conjunto de claves en el que se encuentra la clave. Sustituye location por la ubicación de Cloud KMS del conjunto de claves. Sustituye principal-type y principal-email por el tipo de principal y la dirección de correo del principal. Sustituye role-name por el nombre del rol que quieras 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 debes configurar un entorno de desarrollo de C# e instalar el SDK de Cloud KMS para C#.
Go
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Go e instalar el SDK de Go de Cloud KMS.
Java
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Java e instalar el SDK de Java de Cloud KMS.
Node.js
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Node.js e instalar el SDK de Node.js de Cloud KMS.
PHP
Para ejecutar este código, primero debes consultar información sobre cómo usar PHP en Google Cloud e instalar el SDK de PHP de Cloud KMS.
Python
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Python e instalar el SDK de Python de Cloud KMS.
Ruby
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Ruby e instalar el SDK de Ruby de Cloud KMS.
Ver los permisos de un recurso
Para ver la política de IAM de una clave de Cloud KMS, sigue estos pasos:
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala o actualiza a la versión más reciente de la CLI de Google Cloud.
gcloud kms keys get-iam-policy key \ --keyring key-ring \ --location location
Sustituye key por el nombre de la clave. Sustituye key-ring por el nombre del conjunto de claves en el que se encuentra la clave. Sustituye location por la ubicación de Cloud KMS del conjunto 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 debes configurar un entorno de desarrollo de C# e instalar el SDK de Cloud KMS para C#.
Go
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Go e instalar el SDK de Go de Cloud KMS.
Java
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Java e instalar el SDK de Java de Cloud KMS.
Node.js
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Node.js e instalar el SDK de Node.js de Cloud KMS.
PHP
Para ejecutar este código, primero debes consultar información sobre cómo usar PHP en Google Cloud e instalar el SDK de PHP de Cloud KMS.
Python
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Python e instalar el SDK de Python de Cloud KMS.
Ruby
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Ruby e instalar el SDK de Ruby de Cloud KMS.
Principio de mínimos accesos
Para aplicar el principio de mínimos accesos, concede el conjunto de permisos más limitado al objeto de nivel más bajo de la jerarquía de recursos.
Esta lista no es exhaustiva. Consulta la lista completa de permisos y roles de Cloud KMS.
Jerarquía y herencia
Los enlaces de políticas se pueden especificar en el proyecto, el llavero de claves, la clave, la tarea de importación y otros recursos de Cloud KMS.
Como las claves pertenecen a llaveros de claves y los llaveros de claves pertenecen a proyectos, una entidad con un rol o un permiso específico en un nivel superior de esa jerarquía hereda los mismos permisos en los recursos secundarios. Es decir, un usuario que tenga el rol de owner
en un proyecto también será owner
en todos los llaveros y claves de ese proyecto. Del mismo modo, si a un usuario se le asigna el rol cloudkms.admin
en un llavero, tendrá los permisos asociados en todas las claves de ese llavero.
No ocurre lo contrario: un usuario que tiene un permiso en una clave, pero no en el llavero de claves superior, no tiene permisos en ese llavero de claves.