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 de MAC.
Cuando creas una clave, debes agregarla 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, generarás una clave nueva de Cloud KMS o Cloud HSM y la agregarás 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 Cómo importar una clave.
Antes de comenzar
Antes de completar las tareas de esta página, necesitas lo siguiente:
- Un recurso de proyecto Google Cloud para contener tus recursos de Cloud KMS. Te recomendamos que uses un proyecto independiente 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 deseas crear tu clave. Elige un llavero en una ubicación cercana a tus otros recursos y que admita el nivel de protección que elegiste. Para ver las ubicaciones disponibles y los niveles de protección que admiten, consulta Ubicaciones de Cloud KMS. Para crear un llavero de claves, consulta Crea un llavero de claves.
- Opcional: Para usar gcloud CLI, prepara tu entorno.
En la consola de Google Cloud , activa Cloud Shell.
Roles obligatorios
Para obtener los permisos que necesitas para crear claves, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto o un recurso principal:
- Administrador de Cloud KMS (
roles/cloudkms.admin) -
Para crear claves de HSM de usuario único, se requiere el rol de Creador de claves de HSM de usuario único de Cloud KMS (
roles/cloudkms.hsmSingleTenantKeyCreator).
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen 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, haz lo siguiente:
cloudkms.cryptoKeyVersions.viewPublicKey -
Para crear claves de HSM de usuario único, sigue estos pasos:
-
cloudkms.singleTenantHsmInstances.get -
cloudkms.singleTenantHsmInstances.use
-
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Crea una clave de encriptación simétrica
Console
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 la clave.
En Nivel de protección, selecciona Software, HSM o HSM de un solo arrendatario.
Si seleccionaste HSM de usuario único, selecciona la instancia de HSM de usuario único en la que deseas crear la clave.
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 o actualiza a la versión más reciente de Google Cloud CLI.
Para crear una clave de software o de Cloud HSM multiusuario, usa el comando kms keys create:
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: el nombre del llavero de claves que incluye la claveLOCATION: 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,softwareohsm. Puedes omitir la marca--protection-levelpara las clavessoftware.
Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca --help.
--crypto-key-backend al comando kms keys create:
gcloud kms keys create KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--purpose "encryption" \
--protection-level "hsm-single-tenant" \
--crypto-key-backend="projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"
Reemplaza lo siguiente:
INSTANCE_PROJECT: Es el identificador del proyecto en el que existe tu instancia de HSM de Cloud de un solo arrendatario.INSTANCE_NAME: Es el nombre de la instancia de Cloud HSM de un solo arrendatario en la que deseas crear la clave. Para obtener más información sobre las instancias de Cloud HSM de usuario único, consulta Crea y administra una instancia de Cloud HSM de usuario único.
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 de software o de Cloud HSM multiusuario, 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: la ubicación de Cloud KMS del llavero de claves.KEY_RING: el nombre del llavero de claves que incluye la claveKEY_NAME: Es el nombre de la clave.PROTECTION_LEVEL: Es el nivel de protección de la clave, por ejemplo,SOFTWAREoHSM.ALGORITHM: Es el algoritmo de firma HMAC, por ejemplo,HMAC_SHA256. Para ver todos los algoritmos HMAC compatibles, consulta Algoritmos de firma HMAC.
PROTECTION_LEVEL en HSM_SINGLE_TENANT y agrega la marca --crypto-key-backend al comando kms keys 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": "HSM_SINGLE_TENANT",
"algorithm": "ALGORITHM",
"crypto-key-backend": "projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME" }}'
Reemplaza lo siguiente:
INSTANCE_PROJECT: Es el identificador del proyecto en el que existe tu instancia de HSM de Cloud de un solo arrendatario.INSTANCE_NAME: Es el nombre de la instancia de Cloud HSM de un solo arrendatario en la que deseas crear la clave. Para obtener más información sobre las instancias de Cloud HSM de usuario único, consulta Crea y administra una instancia de Cloud HSM de usuario único.
Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca --help.
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 que transcurre entre la creación automática de 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 produzca antes o después de un período de rotación a partir de ahora.
Console
Cuando usas la Google Cloud consola para crear una clave, Cloud KMS establece el período de rotación y la próxima hora de rotación de forma automática. Puedes usar los valores predeterminados o especificar otros valores.
Para especificar un período de rotación y una fecha de inicio diferentes, haz lo siguiente durante la creación de la clave, antes de hacer clic en el botón Crear:
En Período de rotación de claves, selecciona una opción.
En A partir del, selecciona la fecha en la que deseas que se produzca la primera rotación automática. Puedes dejar A partir del con su valor predeterminado para iniciar la primera rotación automática un período de rotación de claves después de que crees 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 Google Cloud CLI.
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: el nombre del llavero de claves que incluye la claveLOCATION: la ubicación de Cloud KMS del llavero de claves.ROTATION_PERIOD: Es el intervalo para rotar la clave, por ejemplo,30dpara rotar la clave cada 30 días. El período de rotación debe ser de al menos 1 día y, como máximo, de 100 años. Para obtener más información, consulta CryptoKey.rotationPeriod.NEXT_ROTATION_TIME: Es la marca de tiempo en la que se completará la primera rotación, por ejemplo,2023-01-01T01:02:03. Puedes omitir--next-rotation-timepara programar la primera rotación para un período de rotación a partir del momento en que ejecutas 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 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,30dpara rotar la clave cada 30 días. El período de rotación debe ser de al menos 1 día y, como máximo, de 100 años. Para obtener más información, consulta CryptoKey.rotationPeriod.NEXT_ROTATION_TIME: Es la marca de tiempo en la que se completará la primera rotación, por ejemplo,2023-01-01T01:02:03. Para obtener más información, consulta:CryptoKey.nextRotationTime.
Cómo establecer la duración del estado "Programada para destrucción"
De forma predeterminada, las versiones de clave en Cloud KMS pasan 30 días en el estado programado para su destrucción (DESTROY_SCHEDULED) antes de destruirse. A veces, el estado programado para destrucción se denomina estado de borrado no definitivo. La duración durante la cual las versiones de claves permanecen en este estado es configurable, 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 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 Controla la destrucción de las claves.
Para crear una clave que use una duración personalizada para el estado programada para destrucción, sigue estos pasos:
Console
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.
Configura los parámetros de configuración de la clave para tu aplicación.
Haz clic en Configuración adicional.
En Duración del estado "Programada para su 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 o actualiza a la versión más reciente de Google Cloud CLI.
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: el nombre del llavero de claves que incluye la claveLOCATION: 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.
Te recomendamos que uses la duración predeterminada de 30 días 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
En las siguientes secciones, se muestra cómo crear claves asimétricas.
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 nivel de protección o un algoritmo 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 el estado Pendiente de generarse. Cuando el estado cambie a Habilitada, podrás usar la clave. Para obtener más información sobre los estados de versión de clave, consulta Estados de versión de clave.
Console
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 la clave.
En Nivel de protección, selecciona Software, HSM o HSM de un solo arrendatario.
Si seleccionaste HSM de usuario único, selecciona la instancia de HSM de usuario único en la que deseas crear la clave.
En Material de clave, selecciona Clave generada.
En Propósito, selecciona Desencriptación asimétrica.
En Algorithm, selecciona 3072 bit RSA - OAEP Padding - SHA256 Digest. Puedes cambiar este valor en versiones de clave futuras.
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 Google Cloud CLI.
gcloud kms keys create KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--purpose "asymmetric-encryption" \
--default-algorithm "ALGORITHM" \
--protection-level "PROTECTION_LEVEL"
Reemplaza lo siguiente:
KEY_NAME: el nombre de la clave.KEY_RING: el nombre del llavero de claves que incluye la claveLOCATION: 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. Para obtener una lista de los algoritmos de encriptación asimétrica compatibles, consulta Algoritmos de encriptación asimétrica.PROTECTION_LEVEL: Es el nivel de protección que deseas usar para la clave.
hsm-single-tenant, agrega la marca --cryptoKeyBackend y especifica el identificador de recurso de la instancia de Cloud HSM de usuario único en la que deseas crear la clave:
--crypto-key-backend "projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"
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.
Crea una clave de desencriptación asimétrica con el métodoCryptoKey.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", "protectionLevel": "PROTECTION_LEVEL", "versionTemplate": {"algorithm": "ALGORITHM"}}'
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto que contiene el llavero de claves.LOCATION: la ubicación de Cloud KMS del llavero de claves.KEY_RING: el nombre del llavero de claves que incluye la claveKEY_NAME: el nombre de la clave.ALGORITHM: Es el algoritmo que se usará para la clave, por ejemplo,RSA_DECRYPT_OAEP_3072_SHA256. Para obtener una lista de los algoritmos de encriptación asimétrica compatibles, consulta Algoritmos de encriptación asimétrica.PROTECTION_LEVEL: Es el nivel de protección que deseas usar para la clave.
PROTECTION_LEVEL como HSM_SINGLE_TENANT y agrega el campo cryptoKeyBackend al cuerpo del comando con el identificador de recurso de la instancia de HSM de usuario único de Cloud en la que deseas importar la clave:
"cryptoKeyBackend": "projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"
Crear una clave de firma asimétrica
Sigue estos pasos para crear una clave de firma asimétrica en el llavero de claves y la ubicación especificados. Estos ejemplos se pueden adaptar para especificar un nivel de protección o un algoritmo 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 el estado Pendiente de generarse. Cuando el estado cambie a Habilitada, podrás usar la clave. Para obtener más información sobre los estados de versión de clave, consulta Estados de versión de clave.
Console
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 la clave.
En Nivel de protección, selecciona Software, HSM o HSM de un solo arrendatario.
Si seleccionaste HSM de usuario único, selecciona la instancia de HSM de usuario único en la que deseas crear la clave.
En Material de clave, selecciona Clave generada.
En Propósito, selecciona Firma asimétrica.
En Algorithm, selecciona Elliptic Curve P-256 - SHA256 Digest. Puedes cambiar este valor en versiones de clave futuras.
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 Google Cloud CLI.
gcloud kms keys create KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--purpose "asymmetric-signing" \
--default-algorithm "ALGORITHM" \
--protection-level "PROTECTION_LEVEL"
Reemplaza lo siguiente:
KEY_NAME: el nombre de la clave.KEY_RING: el nombre del llavero de claves que incluye la claveLOCATION: 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 admitidos, consulta Algoritmos de firma asimétrica.PROTECTION_LEVEL: Es el nivel de protección que deseas usar para la clave.
PROTECTION_LEVEL en hsm-single-tenant y agrega la marca --cryptoKeyBackend para especificar el identificador de recurso de la instancia de Cloud HSM de usuario único en la que deseas crear la clave:
--crypto-key-backend "projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"
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.