En esta página, se muestra cómo usar Cloud Key Management Service (Cloud KMS) para hacer lo siguiente operaciones de clave simétrica:
- Encripta texto o contenido binario (texto simple) con Cloud KMS .
- Desencriptar cifrado que se encriptó con una clave de Cloud KMS
Si quieres usar una clave asimétrica para encriptación, consulta Encriptación y desencriptar datos con una clave asimétrica Para obtener información sobre la encriptación simétrica sin procesar, consulta encriptación simétrica sin procesar.
Antes de comenzar
Asegúrate de que el usuario que llama a los métodos de encriptación y desencriptación tenga los
cloudkms.cryptoKeyVersions.useToEncrypt
y Los permisoscloudkms.cryptoKeyVersions.useToDecrypt
en la clave.Una forma de permitirle a un usuario que encripte o desencripte es agregar el usuario a las funciones de IAM
roles/cloudkms.cryptoKeyEncrypter
,roles/cloudkms.cryptoKeyDecrypter
oroles/cloudkms.cryptoKeyEncrypterDecrypter
para esa clave. El rolroles/cloudkms.admin
no proporciona estos dos permisos. Para obtener más información, consulta el artículo sobre permisos y funciones.
Encriptar
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 encrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --plaintext-file FILE_TO_ENCRYPT \ --ciphertext-file ENCRYPTED_OUTPUT
Reemplaza lo siguiente:
KEY_NAME
: Es el nombre de la clave que deseas usar para la encriptación.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.LOCATION
: Es la ubicación de Cloud KMS que contiene la clave. de Google.FILE_TO_ENCRYPT
: Es la ruta de acceso al archivo que deseas. encriptar.ENCRYPTED_OUTPUT
: Es la ruta en la que deseas guardar la resultado encriptado.
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.
Cuando se usa JSON y la API de REST, el contenido debe estar codificado en base64 antes de poder que Cloud KMS pueda encriptar.
Para encriptar datos, haz una solicitud POST
y proporciona el proyecto y
información clave y especifica el texto codificado en Base64 que se encriptará en la
Campo plaintext
del cuerpo de la solicitud
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:encrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"PLAINTEXT_TO_ENCRYPT\"}"
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto que contiene el llavero y la clave que deseas usar para la encriptación.LOCATION
: Es la ubicación de Cloud KMS que contiene el llavero de claves.KEY_RING
: Es el llavero de claves que contiene la clave que deseas usar. para la encriptación.KEY_NAME
: Es el nombre de la clave que deseas usar para la encriptación.PLAINTEXT_TO_ENCRYPT
: Son los datos de texto simple que deseas. para encriptar. El texto simple debe estar codificado en Base64 antes de llamar al métodoencrypt
.
Esta es una carga útil de ejemplo con datos codificados en Base64:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Decrypt
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 decrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --ciphertext-file FILE_TO_DECRYPT \ --plaintext-file DECRYPTED_OUTPUT
Reemplaza lo siguiente:
KEY_NAME
: Es el nombre de la clave que deseas usar para la desencriptación.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.LOCATION
: Es la ubicación de Cloud KMS que contiene la clave. de Google.FILE_TO_DECRYPT
: Es la ruta de acceso al archivo que deseas desencriptar.DECRYPTED_OUTPUT
: Es la ruta en la que deseas guardar la resultado desencriptado.
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.
El texto desencriptado que se muestra en el archivo JSON de Cloud KMS codificado en base64.
Para desencriptar datos encriptados, haz una solicitud POST
y proporciona la información del proyecto y de la clave correspondientes, y especifica el texto encriptado (también conocido como texto cifrado) que se desencriptará en el campo ciphertext
del cuerpo de la solicitud.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:decrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"ENCRYPTED_DATA\"}"
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto que contiene el llavero de claves. que quieres usar para la desencriptación.LOCATION
: Es la ubicación de Cloud KMS que contiene la clave. de Google.KEY_RING
: Es el llavero de claves que contiene la clave que deseas usar. para la desencriptación.KEY_NAME
: Es el nombre de la clave que deseas usar para la desencriptación.ENCRYPTED_DATA
: Son los datos encriptados que deseas desencriptar.
Esta es una carga útil de ejemplo con datos codificados en Base64:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
¿Qué sigue?
- Obtén más información sobre la encriptación simétrica sin procesar.
- Lee más sobre la encriptación de sobre.
- Prueba los datos de encriptación y desencriptación con Codelab de Cloud KMS.