En esta página se explica cómo crear una clave en Cloud KMS. Una clave puede ser una clave de cifrado simétrica o asimétrica, una clave de firma asimétrica o una clave de firma MAC.
Cuando creas una clave, la añades a un conjunto de claves en una ubicación de Cloud KMS específica. Puedes crear un nuevo llavero o usar uno que ya tengas. En esta página, se genera una clave de Cloud KMS o Cloud HSM y se añade a un conjunto de claves. Para crear una clave de Cloud EKM, consulta Crear una clave externa. Para importar una clave de Cloud KMS o Cloud HSM, consulta Importar una clave.
Antes de empezar
Antes de completar las tareas de esta página, necesitas lo siguiente:
- Un recurso de proyecto que contenga tus recursos de Cloud KMS. Google Cloud Te recomendamos que uses un proyecto independiente para tus recursos de Cloud KMS que no contenga ningún otro recurso. Google Cloud
- El nombre y la ubicación del conjunto de claves en el que quieras crear la clave. Elige un llavero en una ubicación cercana a tus otros recursos y que admita el nivel de protección que hayas elegido. Para ver las ubicaciones disponibles y los niveles de protección que admiten, consulta Ubicaciones de Cloud KMS. Para crear un conjunto de claves, consulta Crear un conjunto de claves.
- Opcional: Para usar la CLI de gcloud, prepara tu entorno.
In the Google Cloud console, activate Cloud Shell.
Roles obligatorios
Para obtener los permisos que necesitas para crear claves, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de Cloud KMS (
roles/cloudkms.admin
) en el proyecto o en un recurso principal. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.Este rol predefinido contiene los permisos necesarios para crear claves. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para crear claves, se necesitan los siguientes permisos:
-
cloudkms.cryptoKeys.create
-
cloudkms.cryptoKeys.get
-
cloudkms.cryptoKeys.list
-
cloudkms.cryptoKeyVersions.create
-
cloudkms.cryptoKeyVersions.get
-
cloudkms.cryptoKeyVersions.list
-
cloudkms.keyRings.get
-
cloudkms.keyRings.list
-
cloudkms.locations.get
-
cloudkms.locations.list
-
resourcemanager.projects.get
-
Para obtener una clave pública, sigue estos pasos:
cloudkms.cryptoKeyVersions.viewPublicKey
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Crear una clave de cifrado simétrica
Consola
En la consola de Google Cloud , ve a la página Gestión de claves.
Haga clic en el nombre del conjunto de claves para el que creará una clave.
Haz clic en Crear clave.
En Key name (Nombre de la clave), escribe el nombre de la clave.
En Nivel de protección, selecciona Software o HSM.
En Material de la clave, selecciona Clave generada.
En Propósito, selecciona Encriptado y desencriptado simétrico.
Acepta los valores predeterminados de Periodo de rotación y Empezar el.
Haz clic en Crear.
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 create KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --purpose "encryption" \ --protection-level "PROTECTION_LEVEL"
Haz los cambios siguientes:
KEY_NAME
: el nombre de la clave.KEY_RING
: el nombre del conjunto de claves que contiene la clave.LOCATION
: la ubicación de Cloud KMS del conjunto de claves.PROTECTION_LEVEL
: el nivel de protección que se va a usar para la clave (por ejemplo,software
ohsm
). Puedes omitir la marca--protection-level
en las clavessoftware
.
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.
API
En estos ejemplos se usa curl como cliente HTTP para mostrar cómo se usa la API. Para obtener más información sobre el control de acceso, consulta el artículo sobre cómo acceder a la API Cloud KMS.
Para crear una clave, usa el método
CryptoKey.create
:curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys?crypto_key_id=KEY_NAME" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data '{"purpose": "ENCRYPT_DECRYPT", "versionTemplate": { "protectionLevel": "PROTECTION_LEVEL", "algorithm": "ALGORITHM" }}'
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene el conjunto de claves.LOCATION
: la ubicación de Cloud KMS del conjunto de claves.KEY_RING
: el nombre del conjunto de claves que contiene la clave.KEY_NAME
: el nombre de la clave.PROTECTION_LEVEL
: el nivel de protección de la clave (por ejemplo,SOFTWARE
oHSM
).ALGORITHM
: el algoritmo de firma HMAC. Por ejemplo,HMAC_SHA256
. Para ver todos los algoritmos HMAC admitidos, consulta Algoritmos de firma HMAC.
Crear una clave de cifrado simétrica con rotación automática personalizada
Cuando creas una clave, puedes especificar su periodo de rotación, que es el tiempo que transcurre entre la creación automática de nuevas versiones de la clave. También puedes especificar de forma independiente la próxima hora de rotación para que se produzca antes o después de un periodo de rotación a partir de ahora.
Consola
Cuando usas la Google Cloud consola para crear una clave, Cloud KMS define automáticamente el periodo de rotación y la próxima hora de rotación. Puede usar los valores predeterminados o especificar otros.
Para especificar un periodo de rotación y una hora de inicio diferentes, cuando crees tu clave, pero antes de hacer clic en el botón Crear, sigue estos pasos:
En Periodo de rotación de claves, selecciona una opción.
En A partir del, selecciona la fecha en la que quieras que se produzca la primera rotación automática. Puedes dejar Empezar el con su valor predeterminado para iniciar la primera rotación automática un periodo de rotación de claves después de crear la clave.
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 create KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --purpose "encryption" \ --rotation-period ROTATION_PERIOD \ --next-rotation-time NEXT_ROTATION_TIME
Haz los cambios siguientes:
KEY_NAME
: el nombre de la clave.KEY_RING
: el nombre del conjunto de claves que contiene la clave.LOCATION
: la ubicación de Cloud KMS del conjunto de claves.ROTATION_PERIOD
: el intervalo para rotar la clave. Por ejemplo,30d
para rotar la clave cada 30 días. El periodo de rotación debe ser de al menos 1 día y de 100 años como máximo. Para obtener más información, consulta CryptoKey.rotationPeriod.NEXT_ROTATION_TIME
: la marca de tiempo en la que se debe completar la primera rotación. Por ejemplo,2023-01-01T01:02:03
. Puedes omitir--next-rotation-time
para programar la primera rotación para un periodo de rotación a partir de cuando ejecutes el comando. Para obtener más información, consultaCryptoKey.nextRotationTime
.
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.
API
En estos ejemplos se usa curl como cliente HTTP para mostrar cómo se usa la API. Para obtener más información sobre el control de acceso, consulta el artículo sobre cómo acceder a la API Cloud KMS.
Para crear una clave, usa el método
CryptoKey.create
:curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys?crypto_key_id=KEY_NAME" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data '{"purpose": "PURPOSE", "rotationPeriod": "ROTATION_PERIOD", "nextRotationTime": "NEXT_ROTATION_TIME"}'
Haz los cambios siguientes:
PURPOSE
: el propósito de la clave.ROTATION_PERIOD
: el intervalo para rotar la clave. Por ejemplo,30d
para rotar la clave cada 30 días. El periodo de rotación debe ser de al menos 1 día y de 100 años como máximo. Para obtener más información, consulta CryptoKey.rotationPeriod.NEXT_ROTATION_TIME
: la marca de tiempo en la que se debe completar la primera rotación. Por ejemplo,2023-01-01T01:02:03
. Para obtener más información, consultaCryptoKey.nextRotationTime
.
Definir la duración del estado "Eliminación programada"
De forma predeterminada, las versiones de las claves de Cloud KMS permanecen 30 días en el estado Programada para la destrucción (
DESTROY_SCHEDULED
) antes de destruirse. El estado de programación para la destrucción a veces se denomina estado de eliminación lógica. La duración durante la que las versiones de la clave permanecen en este estado se puede configurar, con las siguientes restricciones:- Solo puedes definir la duración al crear la clave.
- Una vez que se haya especificado la duración de la clave, no se podrá cambiar.
- La duración se aplica a todas las versiones de la clave que se creen en el futuro.
- La duración mínima es de 24 horas para todas las claves, excepto para las claves de solo importación, que tienen una duración mínima de 0.
- La duración máxima es de 120 días.
- La duración predeterminada es de 30 días.
Es posible que tu organización tenga un valor mínimo de duración programada para la destrucción definido por las políticas de la organización. Para obtener más información, consulta Control key destruction (Destrucción de claves de control).
Para crear una clave que use una duración personalizada para el estado Programada para destrucción, sigue estos pasos:
Consola
En la consola de Google Cloud , ve a la página Gestión de claves.
Haga clic en el nombre del conjunto de claves para el que creará una clave.
Haz clic en Crear clave.
Configura los ajustes de la clave de tu aplicación.
Haz clic en Configuración adicional.
En Duración del estado "programado para destrucción", elige el número de días que la clave permanecerá en el estado programado para destrucción antes de destruirse definitivamente.
Haz clic en Crear clave.
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 create KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --purpose PURPOSE \ --destroy-scheduled-duration DURATION
Haz los cambios siguientes:
KEY_NAME
: el nombre de la clave.KEY_RING
: el nombre del conjunto de claves que contiene la clave.LOCATION
: la ubicación de Cloud KMS del conjunto de claves.PURPOSE
: el propósito de la clave; por ejemplo,encryption
.DURATION
: el tiempo que la clave permanece en el estado programada para la eliminación antes de eliminarse de forma permanente.
Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca
--help
.Te recomendamos que uses la duración predeterminada de 30 días para todas las claves, a menos que tengas requisitos específicos de la aplicación o normativos que exijan un valor diferente.
Crear una clave asimétrica
En las siguientes secciones se explica cómo crear claves asimétricas.
Crear una clave de desencriptado asimétrica
Sigue estos pasos para crear una clave de desencriptado asimétrica en el conjunto de claves y la ubicación especificados. Estos ejemplos se pueden adaptar para especificar otro nivel de protección u otro algoritmo. Para obtener más información y valores alternativos, consulta Algoritmos y Niveles de protección.
Cuando creas la clave por primera vez, la versión inicial tiene el estado Generación pendiente. Cuando el estado cambie a Habilitado, podrás usar la llave. Para obtener más información sobre los estados de las versiones de clave, consulte Estados de las versiones de clave.
Consola
En la consola de Google Cloud , ve a la página Gestión de claves.
Haga clic en el nombre del conjunto de claves para el que creará una clave.
Haz clic en Crear clave.
En Key name (Nombre de la clave), escribe el nombre de la clave.
En Nivel de protección, selecciona Software o HSM.
En Material de la clave, selecciona Clave generada.
En Propósito, selecciona Desencriptado asimétrico.
En Algorithm (Algoritmo), selecciona 3072 bit RSA - OAEP Padding - SHA256 Digest (RSA de 3072 bits - Relleno OAEP - Digestión SHA256). Puedes cambiar este valor en versiones futuras de la clave.
Haz clic en Crear.
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 create KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --purpose "asymmetric-encryption" \ --default-algorithm "ALGORITHM"
Haz los cambios siguientes:
KEY_NAME
: el nombre de la clave.KEY_RING
: el nombre del conjunto de claves que contiene la clave.LOCATION
: la ubicación de Cloud KMS del conjunto de claves.ALGORITHM
: el algoritmo que se va a usar para la clave. Por ejemplo,rsa-decrypt-oaep-3072-sha256
. Para ver una lista de los algoritmos de cifrado asimétrico admitidos, consulta Algoritmos de cifrado asimétrico.
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.
API
En estos ejemplos se usa curl como cliente HTTP para mostrar cómo se usa la API. Para obtener más información sobre el control de acceso, consulta el artículo sobre cómo acceder a la API Cloud KMS.
Crea una clave de desencriptado asimétrica llamando a
CryptoKey.create
.curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys?crypto_key_id=KEY_NAME" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data '{"purpose": "ASYMMETRIC_DECRYPT", "versionTemplate": {"algorithm": "ALGORITHM"}}'
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene el conjunto de claves.LOCATION
: la ubicación de Cloud KMS del conjunto de claves.KEY_RING
: el nombre del conjunto de claves que contiene la clave.KEY_NAME
: el nombre de la clave.ALGORITHM
: el algoritmo que se va a usar para la clave (por ejemplo,RSA_DECRYPT_OAEP_3072_SHA256
). Para ver una lista de los algoritmos de cifrado asimétrico admitidos, consulta Algoritmos de cifrado asimétrico.
Crear una clave de firma asimétrica
Sigue estos pasos para crear una clave de firma asimétrica en el llavero y la ubicación especificados. Estos ejemplos se pueden adaptar para especificar otro nivel de protección u otro algoritmo. Para obtener más información y valores alternativos, consulta Algoritmos y Niveles de protección.
Cuando creas la clave por primera vez, la versión inicial tiene el estado Generación pendiente. Cuando el estado cambie a Habilitado, podrás usar la llave. Para obtener más información sobre los estados de las versiones de clave, consulte Estados de las versiones de clave.
Consola
En la consola de Google Cloud , ve a la página Gestión de claves.
Haga clic en el nombre del conjunto de claves para el que creará una clave.
Haz clic en Crear clave.
En Key name (Nombre de la clave), escribe el nombre de la clave.
En Nivel de protección, selecciona Software o HSM.
En Material de la clave, selecciona Clave generada.
En Propósito, selecciona Firma asimétrica.
En Algorithm (Algoritmo), selecciona Elliptic Curve P-256 - SHA256 Digest (Curva elíptica P-256 - Digest SHA256). Puedes cambiar este valor en versiones futuras de la clave.
Haz clic en Crear.
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 create KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --purpose "asymmetric-signing" \ --default-algorithm "ALGORITHM"
Haz los cambios siguientes:
KEY_NAME
: el nombre de la clave.KEY_RING
: el nombre del conjunto de claves que contiene la clave.LOCATION
: la ubicación de Cloud KMS del conjunto de claves.ALGORITHM
: el algoritmo que se va a usar para la clave (por ejemplo,ec-sign-p256-sha256
). Para ver una lista de los algoritmos admitidos, consulta Algoritmos de firma asimétricos.
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.
API
En estos ejemplos se usa curl como cliente HTTP para mostrar cómo se usa la API. Para obtener más información sobre el control de acceso, consulta el artículo sobre cómo acceder a la API Cloud KMS.
Crea una clave de firma asimétrica llamando a
CryptoKey.create
.curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys?crypto_key_id=KEY_NAME" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data '{"purpose": "ASYMMETRIC_SIGN", "versionTemplate": {"algorithm": "ALGORITHM"}}'
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene el conjunto de claves.LOCATION
: la ubicación de Cloud KMS del conjunto de claves.KEY_RING
: el nombre del conjunto de claves que contiene la clave.KEY_NAME
: el nombre de la clave.ALGORITHM
: el algoritmo que se va a usar para la clave (por ejemplo,EC_SIGN_P256_SHA256
). Para ver una lista de los algoritmos admitidos, consulta Algoritmos de firma asimétrica.
Obtener la clave pública
Cuando creas una clave asimétrica, Cloud KMS crea un par de claves pública y privada. Puedes recuperar la clave pública de una clave asimétrica habilitada en cualquier momento después de que se genere la clave.
La clave pública está en formato de correo electrónico con privacidad mejorada (PEM). Para obtener más información, consulta las secciones General Considerations y Textual Encoding of Subject Public Key Info de la RFC 7468.
Para descargar la clave pública de una versión de clave asimétrica, sigue estos pasos:
Consola
En la consola de Google Cloud , ve a la página Gestión de claves.
Haga clic en el nombre del conjunto de claves que contiene la clave asimétrica de la que quiere obtener la clave pública.
Haga clic en el nombre de la clave de la que quiera obtener la clave pública.
En la fila correspondiente a la versión de la clave de la que quieras obtener la clave pública, haz clic en Ver más
.Haz clic en Descargar clave pública.
La clave pública se muestra en la petición. Puedes copiar la clave pública en el portapapeles. Para descargar la clave pública, haga clic en Descargar.
Si no ves la opción Obtener clave pública, comprueba lo siguiente:
- La clave es una clave asimétrica.
- La versión de la clave está habilitada.
- Tienes el permiso
cloudkms.cryptoKeyVersions.viewPublicKey
.
El nombre de archivo de una clave pública descargada de la consola Google Cloud tiene el siguiente formato:
KEY_RING-KEY_NAME-KEY_VERSION.pub
Cada parte del nombre de archivo está separada por un guion. Por ejemplo:
ringname-keyname-version.pub
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 versions get-public-key KEY_VERSION \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --public-key-format PUBLIC_KEY_FORMAT \ --output-file OUTPUT_FILE_PATH
Haz los cambios siguientes:
KEY_VERSION
: número de versión de la clave.KEY_NAME
: el nombre de la clave.KEY_RING
: el nombre del conjunto de claves que contiene la clave.LOCATION
: la ubicación de Cloud KMS del conjunto de claves.PUBLIC_KEY_FORMAT
: el formato en el que quieres exportar la clave pública. Para los algoritmos PQC (vista previa), usanist-pqc
. Para todas las demás claves, puede usarpem
u omitir este parámetro.OUTPUT_FILE_PATH
: la ruta en la que quieres guardar el archivo de clave pública. Por ejemplo,public-key.pub
.
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.
API
En estos ejemplos se usa curl como cliente HTTP para mostrar cómo se usa la API. Para obtener más información sobre el control de acceso, consulta el artículo sobre cómo acceder a la API Cloud KMS.
Recupera la clave pública llamando al método CryptoKeyVersions.getPublicKey.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION/publicKey?public_key_format=PUBLIC_KEY_FORMAT" \ --request "GET" \ --header "authorization: Bearer TOKEN"
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene el conjunto de claves.LOCATION
: la ubicación de Cloud KMS del conjunto de claves.KEY_RING
: el nombre del conjunto de claves que contiene la clave.KEY_NAME
: el nombre de la clave.KEY_VERSION
: número de versión de la clave.PUBLIC_KEY_FORMAT
: el formato en el que quieres exportar la clave pública. Para los algoritmos PQC (vista previa), usaNIST_PQC
. Para todas las demás claves, puede usarPEM
u omitir este parámetro.
Si se omite el formato de clave pública de una clave no PQC, el resultado será similar al siguiente:
{ "pem": "-----BEGIN PUBLIC KEY-----\nQ29uZ3JhdHVsYXRpb25zLCB5b3UndmUgZGlzY292ZX JlZCB0aGF0IHRoaXMgaXNuJ3QgYWN0dWFsbHkgYSBwdWJsaWMga2V5ISBIYXZlIGEgbmlj ZSBkYXkgOik=\n-----END PUBLIC KEY-----\n", "algorithm": "ALGORITHM", "pemCrc32c": "2561089887", "name": "projects/PROJECT_ID/locations/LOCATION/keyRings/ KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/ KEY_VERSION", "protectionLevel": "PROTECTION_LEVEL" }
En el caso de un algoritmo PQC con formato de clave pública
NIST_PQC
, el resultado es similar al siguiente:{ "publicKeyFormat": "NIST_PQC", "publicKey": { "crc32cChecksum": "1985843562", "data": "kdcOIrFCC5kN8S4i0+R+AoSc9gYIJ9jEQ6zG235ZmCQ=" } "algorithm": "ALGORITHM", "name": "projects/PROJECT_ID/locations/LOCATION/keyRings/ KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/ KEY_VERSION", "protectionLevel": "PROTECTION_LEVEL" }
Convertir una clave pública al formato JWK
Cloud KMS te permite obtener una clave pública en formato PEM. Es posible que algunas aplicaciones requieran otros formatos de clave, como JSON Web Key (JWK). Para obtener más información sobre el formato JWK, consulta el estándar RFC 7517.
Para convertir una clave pública al formato JWK, sigue estos pasos:
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.
Python
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Python e instalar el SDK de Python de Cloud KMS.
Controlar el acceso a las claves asimétricas
Un firmante o validador requiere el permiso o el rol adecuado en la clave asimétrica.
Concede el permiso
cloudkms.cryptoKeyVersions.useToSign
a un usuario o servicio que vaya a realizar la firma en la clave asimétrica.Concede el permiso
cloudkms.cryptoKeyVersions.viewPublicKey
a un usuario o servicio que vaya a obtener la clave pública de la clave asimétrica. La clave pública es obligatoria para validar la firma.
Consulta información sobre los permisos y los roles de la versión de Cloud KMS en Permisos y roles.
Crear una clave de firma MAC
Consola
En la consola de Google Cloud , ve a la página Gestión de claves.
Haga clic en el nombre del conjunto de claves para el que creará una clave.
Haz clic en Crear clave.
En Key name (Nombre de la clave), escribe el nombre de la clave.
En Nivel de protección, selecciona Software o HSM.
En Material de la clave, selecciona Clave generada.
En Propósito, selecciona Firma o verificación de MAC.
Opcional: en Algoritmo, selecciona un algoritmo de firma HMAC.
Haz clic en Crear.
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 create KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --purpose "mac" \ --default-algorithm "ALGORITHM" \ --protection-level "PROTECTION_LEVEL"
Haz los cambios siguientes:
KEY_NAME
: el nombre de la clave.KEY_RING
: el nombre del conjunto de claves que contiene la clave.LOCATION
: la ubicación de Cloud KMS del conjunto de claves.ALGORITHM
: el algoritmo de firma HMAC. Por ejemplo,hmac-sha256
. Para ver todos los algoritmos HMAC admitidos, consulta Algoritmos de firma HMAC.PROTECTION_LEVEL
: el nivel de protección de la clave (por ejemplo,hsm
). Puedes omitir la marca--protection-level
en las clavessoftware
.
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.
API
En estos ejemplos se usa curl como cliente HTTP para mostrar cómo se usa la API. Para obtener más información sobre el control de acceso, consulta el artículo sobre cómo acceder a la API Cloud KMS.
Para crear una clave, usa el método
CryptoKey.create
:curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys?crypto_key_id=KEY_NAME" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data '{"purpose": "MAC", "versionTemplate": { "protectionLevel": "PROTECTION_LEVEL", "algorithm": "ALGORITHM" }}'
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene el conjunto de claves.LOCATION
: la ubicación de Cloud KMS del conjunto de claves.KEY_RING
: el nombre del conjunto de claves que contiene la clave.KEY_NAME
: el nombre de la clave.PROTECTION_LEVEL
: el nivel de protección de la llave (por ejemplo,SOFTWARE
oHSM
).ALGORITHM
: el algoritmo de firma HMAC, por ejemplo,HMAC_SHA256
. Para ver todos los algoritmos HMAC admitidos, consulta Algoritmos de firma HMAC.
Siguientes pasos
- Consulta información sobre la rotación de claves.
- Consulta información sobre cómo crear y validar firmas.
- Consulta información sobre cómo encriptar y desencriptar datos con una clave RSA.
- Consulta información sobre cómo obtener una clave pública.
-