En esta página, se muestra cómo crear una clave en Cloud KMS. Una clave puede ser una clave de encriptación simétrica o asimétrica, una clave de firma asimétrica o una clave de firma MAC.
Cuando creas una clave, la agregas a un llavero de claves en una ubicación de Cloud KMS específica. Puedes crear un llavero de claves nuevo o usar uno existente. En esta página, debes generar una clave de Cloud KMS o Cloud HSM nueva y agregarla a un llavero de claves existente. Para crear una clave de Cloud EKM, consulta Crea una clave externa. Para importar una clave de Cloud KMS o Cloud HSM, consulta Importa una clave.
Antes de comenzar
Antes de completar las tareas de esta página, necesitarás lo siguiente:
- Un recurso de proyecto de Google Cloud que contenga tus recursos de Cloud KMS Recomendamos usar un proyecto separado para tus recursos de Cloud KMS que no contenga ningún otro recurso de Google Cloud.
- El nombre y la ubicación del llavero de claves en el que quieres crear la clave. Elige un llavero de claves en una ubicación que esté cerca de tus otros recursos y que admita el nivel de protección deseado. Para ver las ubicaciones disponibles y los niveles de protección que admiten, consulta las ubicaciones de Cloud KMS. Para crear un llavero de claves, consulta Cómo crear un llavero de claves.
- Opcional: Para usar gcloud CLI, prepara tu entorno.
gcloud CLI
En la consola de Google Cloud, activa Cloud Shell.
Funciones obligatorias
Para obtener los permisos que necesitas para crear claves,
pídele a tu administrador que te otorgue el
administrador de Cloud KMS (roles/cloudkms.admin
) en el proyecto o en un recurso superior.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.
Este rol predefinido contiene los permisos necesarios para crear claves. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para crear claves:
-
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 recuperar una clave pública:
cloudkms.cryptoKeyVersions.viewPublicKey
También puedes obtener estos permisos con roles personalizados o, también, otros roles predefinidos.
Crear una clave de encriptación simétrica
Consola
En la consola de Google Cloud, ve a la página Administración de claves.
Haz clic en el nombre del llavero de claves para el que crearás la clave.
Haz clic en Crear clave.
En Nombre de la clave, ingresa un nombre para tu clave.
En Nivel de protección, selecciona Software o HSM.
En Material de clave, selecciona Clave generada.
Para Propósito, selecciona Encriptación/desencriptación simétrica.
Acepta los valores predeterminados de Período de rotación y A partir del.
Haz clic en Crear.
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala la versión más reciente de Google Cloud CLI o actualízala a la versión más reciente.
gcloud kms keys create KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --purpose "encryption" \ --protection-level "PROTECTION_LEVEL"
Reemplaza lo siguiente:
KEY_NAME
: el nombre de la clave.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.LOCATION
: Es la ubicación de Cloud KMS del llavero de claves.PROTECTION_LEVEL
: Es el nivel de protección que se usará para la clave, por ejemplo,software
ohsm
. Puedes omitir la marca--protection-level
para 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 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.
API
En estos ejemplos, se usa curl como un cliente HTTP para demostrar el uso de la API. Para obtener más información sobre el control de acceso, consulta Accede a la API de 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" }}'
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto que contiene el llavero de claves.LOCATION
: Es la ubicación de Cloud KMS del llavero de claves.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.KEY_NAME
: el nombre de la clave.PROTECTION_LEVEL
: Es el nivel de protección de la clave, por ejemplo,SOFTWARE
oHSM
.ALGORITHM
: Es el algoritmo de firma HMAC, por ejemplo,HMAC_SHA256
. Para ver todos los algoritmos HMAC admitidos, consulta Algoritmos de firma HMAC.
Crea una clave de encriptación simétrica con rotación automática personalizada
Cuando creas una clave, puedes especificar su período de rotación, que es el tiempo entre la creación automática de las versiones de claves nuevas. También puedes especificar de forma independiente la próxima fecha de rotación, de modo que la próxima rotación se realice antes o después de un período de rotación a partir de ahora.
Consola
Cuando usas la consola de Google Cloud para crear una clave, Cloud KMS establece el período de rotación y la próxima fecha de rotación de forma automática. Puedes usar los valores predeterminados o especificar valores diferentes.
Para especificar un período de rotación y tiempo de inicio diferentes, cuando creas tu clave, pero antes de hacer clic en el botón Crear, haz lo siguiente:
En Período de rotación de claves, selecciona una opción.
Para A partir del, selecciona la fecha en la que deseas que ocurra la primera rotación automática. Puedes dejar A partir del en su valor predeterminado para iniciar la primera rotación automática un período de rotación de claves desde el momento en que creas la clave.
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala la versión más reciente de Google Cloud CLI o actualízala a la versión más reciente.
gcloud kms keys create KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --purpose "encryption" \ --rotation-period ROTATION_PERIOD \ --next-rotation-time NEXT_ROTATION_TIME
Reemplaza lo siguiente:
KEY_NAME
: el nombre de la clave.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.LOCATION
: Es la ubicación de Cloud KMS del llavero de claves.ROTATION_PERIOD
: Es el intervalo para rotar la clave (por ejemplo,30d
para rotar la clave cada 30 días). El período de rotación debe ser de 1 día como mínimo y 100 años como máximo. Para obtener más información, consulta CryptoKey.rotationPeriod.NEXT_ROTATION_TIME
: Es la marca de tiempo en la que se completa la primera rotación, por ejemplo,"2023-01-01T01:02:03"
. Puedes omitir--next-rotation-time
para programar la primera rotación durante 7 días desde la ejecución del comando. Para obtener más información, consulta CryptoKey.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 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.
API
En estos ejemplos, se usa curl como un cliente HTTP para demostrar el uso de la API. Para obtener más información sobre el control de acceso, consulta Accede a la API de 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"}'
Reemplaza lo siguiente:
PURPOSE
: Es el propósito de la clave.ROTATION_PERIOD
: Es el intervalo para rotar la clave (por ejemplo,30d
para rotar la clave cada 30 días). El período de rotación debe ser de 1 día como mínimo y 100 años como máximo. Para obtener más información, consulta CryptoKey.rotationPeriod.NEXT_ROTATION_TIME
: Es la marca de tiempo en la que se completa la primera rotación, por ejemplo,"2023-01-01T01:02:03"
. Puedes omitir--next-rotation-time
para programar la primera rotación durante 7 días desde la ejecución del comando. Para obtener más información, consulta CryptoKey.nextRotationTime.
Establece la duración del estado "Programada para destrucción"
De forma predeterminada, las versiones de claves en Cloud KMS pasan 30 días en el estado de programación de destrucción (DESTROY_SCHEDULED
) antes de su destrucción. El estado programado para la destrucción, a veces, se denomina estado de eliminación no definitiva. Se puede configurar la duración de las versiones de clave en este estado, con las siguientes restricciones:
- Solo puedes establecer la duración durante la creación de la clave.
- Una vez que se especifica la duración de la clave, no se puede 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 las que son 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 programado para la duración de la destrucción definido por las políticas de la organización. Para obtener más información, consulta Cómo controlar la destrucción de claves.
Si quieres 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 Administración de claves.
Haz clic en el nombre del llavero de claves para el que crearás la clave.
Haz clic en Crear clave.
Establece la configuración de la clave para tu aplicación.
Haz clic en Configuración adicional.
En Duración del estado “Programada para destrucción”, elige la cantidad de días que la clave permanecerá programada para su destrucción antes de destruirse de forma permanente.
Haz clic en Crear clave.
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala la versión más reciente de Google Cloud CLI o actualízala a la versión más reciente.
gcloud kms keys create KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --purpose PURPOSE \ --destroy-scheduled-duration DURATION
Reemplaza lo siguiente:
KEY_NAME
: el nombre de la clave.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.LOCATION
: Es la ubicación de Cloud KMS del llavero de claves.PURPOSE
: Es el propósito de la clave, por ejemplo,encryption
.DURATION
: Es la cantidad de tiempo que la clave permanece en el estado programada para su destrucción antes de destruirse de forma permanente.
Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca --help
.
Recomendamos usar la duración predeterminada de 24 horas para todas las claves, a menos que tengas requisitos normativos o de aplicación específicos que requieran un valor diferente.
Crea una clave asimétrica
Crear una clave de desencriptación asimétrica
Sigue estos pasos para crear una clave de desencriptación asimétrica en el llavero de claves y la ubicación especificados. Estos ejemplos se pueden adaptar para especificar un algoritmo o nivel de protección diferente. 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 de la clave tiene un estado de Generación pendiente. Cuando el estado cambia a Enabled, puedes usar la clave. Para obtener más información sobre los estados de versión de clave, consulta Estados de versión de clave.
Consola
En la consola de Google Cloud, ve a la página Administración de claves.
Haz clic en el nombre del llavero de claves para el que crearás la clave.
Haz clic en Crear clave.
En Nombre de la clave, ingresa un nombre para tu clave.
En Nivel de protección, selecciona Software o HSM.
En Material de clave, selecciona Clave generada.
En Propósito, selecciona Desencriptación asimétrica.
En Algoritmo, selecciona 3072 bit RSA - OAEP Padding - SHA256 Digest. Puedes cambiar este valor en versiones de claves futuras.
Haz clic en Crear.
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala la versión más reciente de Google Cloud CLI o actualízala a la versión más reciente.
gcloud kms keys create KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --purpose "asymmetric-encryption" \ --default-algorithm "ALGORITHM"
Reemplaza lo siguiente:
KEY_NAME
: el nombre de la clave.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.LOCATION
: Es la ubicación de Cloud KMS del llavero de claves.ALGORITHM
: Es el algoritmo que se usará para la clave, por ejemplo,rsa-decrypt-oaep-3072-sha256
. Consulta Algoritmos de encriptación asimétrica para obtener una lista de los algoritmos de encriptación asimétrica compatibles.
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.
API
En estos ejemplos, se usa curl como un cliente HTTP para demostrar el uso de la API. Para obtener más información sobre el control de acceso, consulta Accede a la API de Cloud KMS.
Llama a CryptoKey.create
para crear una clave de desencriptación asimétrica.
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"}}'
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto que contiene el llavero de claves.LOCATION
: Es la ubicación de Cloud KMS del llavero de claves.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.KEY_NAME
: el nombre de la clave.ALGORITHM
: Es el algoritmo que se usará para la clave, por ejemplo,RSA_DECRYPT_OAEP_3072_SHA256
. Consulta Algoritmos de criptografía asimétrica para ver una lista de los algoritmos de criptografía asimétrica compatibles.
Crear una clave de firma asimétrica
Sigue estos pasos para crear una clave de firma asimétrica en la ubicación y el llavero de claves especificados. Estos ejemplos se pueden adaptar para especificar un algoritmo o nivel de protección diferente. 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 de la clave tiene un estado de Generación pendiente. Cuando el estado cambia a Enabled, puedes usar la clave. Para obtener más información sobre los estados de versión de clave, consulta Estados de versión de clave.
Consola
En la consola de Google Cloud, ve a la página Administración de claves.
Haz clic en el nombre del llavero de claves para el que crearás la clave.
Haz clic en Crear clave.
En Nombre de la clave, ingresa un nombre para tu clave.
En Nivel de protección, selecciona Software o HSM.
En Material de clave, selecciona Clave generada.
En Propósito, selecciona Signo asimétrico.
En Algoritmo, selecciona Elliptic Curve P-256 - SHA256 Digest. Puedes cambiar este valor en versiones de claves futuras.
Haz clic en Crear.
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala la versión más reciente de Google Cloud CLI o actualízala a la versión más reciente.
gcloud kms keys create KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --purpose "asymmetric-signing" \ --default-algorithm "ALGORITHM"
Reemplaza lo siguiente:
KEY_NAME
: el nombre de la clave.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.LOCATION
: Es la ubicación de Cloud KMS del llavero de claves.ALGORITHM
: Es el algoritmo que se usará para la clave, por ejemplo,ec-sign-p256-sha256
. Para obtener una lista de los algoritmos compatibles, consulta Algoritmos de firma asimétrica.
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.
API
En estos ejemplos, se usa curl como un cliente HTTP para demostrar el uso de la API. Para obtener más información sobre el control de acceso, consulta Accede a la API de Cloud KMS.
Llama a CryptoKey.create
para crear una clave de firma asimétrica.
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"}}'
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto que contiene el llavero de claves.LOCATION
: Es la ubicación de Cloud KMS del llavero de claves.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.KEY_NAME
: el nombre de la clave.ALGORITHM
: Es el algoritmo que se usará para la clave, por ejemplo,EC_SIGN_P256_SHA256
. Para obtener una lista de los algoritmos compatibles, consulta Algoritmos de firma asimétrica.
Recupera la clave pública
Cuando creas una clave asimétrica, Cloud KMS crea un par de claves pública/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 se encuentra en el formato de correo electrónico con privacidad mejorada (PEM). Para obtener más información, consulta las secciones Consideraciones generales y Codificación textual de la información de la clave pública del sujeto de RFC 7468.
Para descargar la clave pública de una versión de clave asimétrica existente, sigue estos pasos:
Consola
En la consola de Google Cloud, ve a la página Administración de claves.
Haz clic en el nombre del llavero de claves que contiene la clave asimétrica para la que quieres recuperar la clave pública.
Haz clic en el nombre de la clave para la que deseas recuperar la clave pública.
En la fila que corresponde a la versión de clave para la que quieres recuperar la clave pública, haz clic en Ver más
.Haz clic en Obtener clave pública.
La clave pública se muestra en el mensaje. Puedes copiar la clave pública en el portapapeles. Para descargar la clave pública, haz clic en Descargar.
Si no ves la opción Obtener clave pública, verifica lo siguiente:
- La clave es una clave asimétrica.
- La versión de clave está habilitada.
- Tienes el permiso
cloudkms.cryptoKeyVersions.viewPublicKey
.
El nombre de archivo de una clave pública descargada de la consola de Google Cloud tiene el siguiente formato:
KEY_RING-KEY_NAME-KEY_VERSION.pub
Cada parte del nombre del 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 la versión más reciente de Google Cloud CLI o actualízala a la versión más reciente.
gcloud kms keys versions get-public-key KEY_VERSION \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --output-file OUTPUT_FILE_PATH
Reemplaza lo siguiente:
KEY_VERSION
: Es el número de versión de la clave.KEY_NAME
: el nombre de la clave.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.LOCATION
: Es la ubicación de Cloud KMS del llavero de claves.OUTPUT_FILE_PATH
: Es la ruta en la que deseas guardar el archivo de claves públicas, 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 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.
API
En estos ejemplos, se usa curl como un cliente HTTP para demostrar el uso de la API. Para obtener más información sobre el control de acceso, consulta Accede a la API de Cloud KMS.
Recupera la clave pública mediante una llamada 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" \ --request "GET" \ --header "authorization: Bearer TOKEN"
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto que contiene el llavero de claves.LOCATION
: Es la ubicación de Cloud KMS del llavero de claves.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.KEY_NAME
: el nombre de la clave.KEY_VERSION
: Es el número de versión de la clave.
El resultado debería 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": "SOFTWARE" }
Convierte una clave pública al formato JWK
Cloud KMS te permite recuperar una clave pública en formato PEM. Algunas aplicaciones pueden requerir otros formatos de clave, como JSON Web Key (JWK). Para obtener más información sobre el formato JWK, consulta RFC 7517.
Para convertir una clave pública al formato JWK, sigue estos pasos:
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.
Python
Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.
Controla el acceso a claves asimétricas
Un firmante o validador requiere el permiso o función adecuados para la clave asimétrica.
Para un usuario o servicio que realizará las firmas, otorga el permiso
cloudkms.cryptoKeyVersions.useToSign
sobre la clave asimétrica.Para un usuario o servicio que recuperará la clave pública, otorga el permiso
cloudkms.cryptoKeyVersions.viewPublicKey
sobre la clave asimétrica. Para la validación de la firma se necesita la clave pública.
Para conocer más sobre los permisos y las funciones en esta versión de Cloud KMS, consulta Permisos y funciones.
Cómo crear una clave de firma de MAC
Consola
En la consola de Google Cloud, ve a la página Administración de claves.
Haz clic en el nombre del llavero de claves para el que crearás la clave.
Haz clic en Crear clave.
En Nombre de la clave, ingresa un nombre para tu clave.
En Nivel de protección, selecciona Software o HSM.
En Material de clave, selecciona Clave generada.
En Propósito, selecciona Firma/verificación de MAC.
En Algoritmo, selecciona un algoritmo de firma HMAC (opcional).
Haz clic en Crear.
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala la versión más reciente de Google Cloud CLI o actualízala a la versión más reciente.
gcloud kms keys create KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --purpose "mac" \ --default-algorithm "ALGORITHM" \ --protection-level "PROTECTION_LEVEL"
Reemplaza lo siguiente:
KEY_NAME
: el nombre de la clave.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.LOCATION
: Es la ubicación de Cloud KMS del llavero de claves.ALGORITHM
: Es el algoritmo de firma HMAC, por ejemplo,hmac-sha256
. Para ver todos los algoritmos HMAC admitidos, consulta Algoritmos de firma HMAC.PROTECTION_LEVEL
: Es el nivel de protección de la clave, por ejemplo,hsm
. Puedes omitir la marca--protection-level
para 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 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.
API
En estos ejemplos, se usa curl como un cliente HTTP para demostrar el uso de la API. Para obtener más información sobre el control de acceso, consulta Accede a la API de 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" }}'
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto que contiene el llavero de claves.LOCATION
: Es la ubicación de Cloud KMS del llavero de claves.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.KEY_NAME
: el nombre de la clave.PROTECTION_LEVEL
: Es el nivel de protección de la clave, por ejemplo,SOFTWARE
oHSM
.ALGORITHM
: Es el algoritmo de firma HMAC, por ejemploHMAC_SHA256
. Para ver todos los algoritmos HMAC admitidos, consulta Algoritmos de firma HMAC.
¿Qué sigue?
- Obtén información sobre la rotación de claves.
- Obtén más información para crear y validar firmas.
- Obtén más información sobre la encriptación y desencriptación de datos con una clave de RSA.
- Más información sobre la recuperación de una clave pública.