En esta página, se describe cómo usar una clave de encriptación de Cloud Key Management Service con Cloud Storage, lo que incluye la configuración de claves predeterminadas en los buckets y la adición de claves a objetos individuales. Una clave de encriptación de Cloud KMS es una clave de encriptación administrada por el cliente (CMEK). Estas claves se crean y administran a través de Cloud KMS y se almacenan como claves de software, en un clúster de HSM o de forma externa.
Creación manual o automática de claves
Puedes crear CMEK de forma manual o usar la clave automática de Cloud KMS (Vista previa). Autokey simplifica la creación y la administración de CMEK mediante la automatización del aprovisionamiento y la asignación. Con la clave automática, no necesitas aprovisionar llaveros de claves, claves y cuentas de servicio con anticipación. En cambio, se generan a pedido como parte de la creación de recursos de Cloud Storage.
El uso de claves generadas por Autokey puede ayudarte a alinearte de manera coherente con los estándares de la industria y las prácticas recomendadas para la seguridad de los datos, como el nivel de protección, la separación de obligaciones, la rotación de claves, la ubicación y el nivel de detalle de la clave. Para obtener más información, consulta Descripción general de las claves automáticas.
Antes de comenzar
Antes de usar esta función en Cloud Storage, debes realizar las siguientes acciones:
Habilita la API de Cloud KMS del proyecto que almacenará tus claves de encriptación.
Obtén los permisos suficientes en el proyecto que almacenará tus claves de encriptación:
Si eres propietario del proyecto que almacenará tus claves, lo más probable es que tengas el permiso necesario.
Si planeas crear claves y llaveros de claves de encriptación nuevos, debes tener los permisos
cloudkms.keyRings.create
ycloudkms.cryptoKeys.create
.Ya sea que planees usar claves o llaveros de claves nuevos o existentes, debes tener el permiso
cloudkms.cryptoKeys.setIamPolicy
para las claves que usarás en la encriptación.Este permiso te permite otorgar a los agentes de servicio de Cloud Storage acceso a las claves de Cloud KMS.
Los permisos anteriores se encuentran en la función de administrador de Cloud KMS.
Consulta Usa IAM con Cloud KMS para más instrucciones sobre cómo obtener estas o algunas otras funciones de Cloud KMS.
Obtén un llavero de claves de Cloud KMS y al menos una clave dentro de este.
El llavero de claves debe estar en la misma ubicación que los datos que deseas encriptar, pero puede estar en un proyecto diferente. Para conocer las ubicaciones de Cloud KMS disponibles, consulta las ubicaciones de Cloud KMS.
Ten permiso suficiente para trabajar con objetos en tu bucket de Cloud Storage:
Si eres propietario del proyecto que contiene el bucket, es probable que tengas el permiso necesario.
Si usas IAM, deberías tener el permiso
storage.objects.create
para escribir objetos en el bucket ystorage.objects.get
a fin de leer objetos del bucket. Consulta la sección sobre cómo usar permisos de IAM si quieres ver las instrucciones para obtener una función, como Administrador de objetos de almacenamiento, que tenga estos permisos.Si usas LCA, deberías tener un permiso
WRITER
para buckets a fin de escribir objetos en el bucket y un permisoREADER
para objetos a fin de leer objetos del bucket. Consulta la configuración de las LCA y obtén instrucciones para realizar esto.
-
Obtén la dirección de correo electrónico del agente de servicio asociado con el proyecto que contiene tu bucket de Cloud Storage. Si realizas este paso, crearás de forma automática el agente de servicio si no existe en la actualidad.
Asigna una clave de Cloud KMS a un agente de servicio
Para usar los CMEK, otorga permiso al agente de servicio de Cloud Storage asociado con tu bucket para usar tu clave de Cloud KMS para encriptar y desencriptar:
Console
- Abre el navegador de claves de Cloud Key Management Service en la consola de Google Cloud.
Abrir el navegador de claves de Cloud KMS Haz clic en el nombre del llavero de claves que contiene la clave que deseas usar.
Selecciona la casilla de verificación de la clave que deseas.
La pestaña Permisos en el panel de la ventana derecha estará disponible.
En el cuadro de diálogo Agregar principales, especifica la dirección de correo electrónico del agente de servicio de Cloud Storage al que vas a otorgar acceso.
En el menú desplegable Seleccionar un rol, selecciona Encriptador/desencriptador de CryptoKey de Cloud KMS.
Haz clic en Agregar.
Para obtener información sobre cómo ver detalles de errores acerca de operaciones fallidas de Cloud Storage en la consola de Google Cloud, consulta Solución de problemas.
Línea de comandos
Usa el comando gcloud storage service-agent
con la marca --authorize-cmek
a fin de otorgarle permiso al agente de servicio asociado con tu bucket para encriptar y desencriptar objetos con tu clave de Cloud KMS:
gcloud storage service-agent --project=PROJECT_STORING_OBJECTS --authorize-cmek=KEY_RESOURCE
Aquí:
PROJECT_STORING_OBJECTS
es el ID o el número del proyecto que contiene los objetos que deseas encriptar o desencriptar. Por ejemplo,my-pet-project
.KEY_RESOURCE
es el recurso de clave de Cloud KMS.
Bibliotecas cliente
C#
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C#.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Go
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Go.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Java.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Node.js.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
PHP
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage PHP.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Python.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ruby
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Ruby.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
API de REST
API de JSON
Tener la gcloud CLI instalada e inicializadapara generar un token de acceso para el encabezado
Authorization
.Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado
Authorization
.Crea un archivo JSON que contenga la siguiente información:
{ "policy": { "bindings": { "role": "roles/cloudkms.cryptoKeyEncrypterDecrypter", "members": "serviceAccount:SERVICE_AGENT_EMAIL_ADDRESS" }, } }
En el ejemplo anterior,
SERVICE_AGENT_EMAIL_ADDRESS
es la dirección de correo electrónico asociada a tu agente de servicio. Por ejemplo,service-7550275089395@gs-project-accounts.iam.gserviceaccount.com
Usa
cURL
para llamar a la API de Cloud KMS con una solicitudPOST setIamPolicy
:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://cloudkms.googleapis.com/v1/KEY_RESOURCE:setIamPolicy"
Aquí:
JSON_FILE_NAME
es la ruta de acceso del archivo JSON que creaste en el paso 2.KEY_RESOURCE
es el recurso de clave de Cloud KMS.
API de XML
La API de XML no se puede usar para asignar Cloud KMS a un agente de servicio. En su lugar, usa una de las otras herramientas de Cloud Storage, como la gcloud CLI.
Usa las claves de encriptación predeterminadas
Establece la clave predeterminada de un bucket
Sigue los pasos que se indican a continuación para agregar, cambiar o quitar la clave de Cloud KMS que se usa de forma predeterminada cuando los objetos se escriben en un bucket:
Console
- En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.
En la lista de buckets, haz clic en el nombre del bucket deseado.
En la página de detalles del bucket haz clic en la pestaña Configuración.
Haz clic en el ícono de lápiz asociado a la entrada Tipo de encriptación.
Configura o quita la clave de Cloud KMS predeterminada para el bucket.
Si el bucket no usa actualmente una clave de Cloud KMS, marca el botón de selección Clave administrada por el cliente y, luego, selecciona una de las claves disponibles en el menú desplegable asociado.
Si actualmente el bucket usa una clave de Cloud KMS, cambia la clave de Cloud KMS en el menú desplegable o quita la clave de Cloud KMS mediante el botón de selección Clave administrada por Google.
Haz clic en Guardar.
Para obtener información sobre cómo ver detalles de errores acerca de operaciones fallidas de Cloud Storage en la consola de Google Cloud, consulta Solución de problemas.
Línea de comandos
Usa el comando gcloud storage buckets update
con la marca adecuada:
gcloud storage buckets update gs://BUCKET_NAME FLAG
Aquí:
BUCKET_NAME
es el nombre del bucket correspondiente. Por ejemplo,my-bucket
.FLAG
es la configuración deseada para la clave predeterminada en el bucket. Usa uno de los siguientes formatos:--default-encryption-key=
y un recurso de clave de Cloud KMS, si deseas agregar o cambiar una clave predeterminada.--clear-default-encryption-key
, si deseas quitar la clave predeterminada del bucket.
Si se ejecuta de forma correcta, la respuesta se ve de la siguiente manera:
Updating gs://my-bucket/... Completed 1
Bibliotecas cliente
C++
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C++.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
En el siguiente ejemplo, se establece una clave de encriptación predeterminada administrada por el cliente en un bucket:
En el siguiente ejemplo, se quita de un bucket la clave de encriptación predeterminada administrada por el cliente:
C#
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C#.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
En el siguiente ejemplo, se establece una clave de encriptación predeterminada administrada por el cliente en un bucket:
En el siguiente ejemplo, se quita de un bucket la clave de encriptación predeterminada administrada por el cliente:
Go
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Go.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
En el siguiente ejemplo, se establece una clave de encriptación predeterminada administrada por el cliente en un bucket:
En el siguiente ejemplo, se quita de un bucket la clave de encriptación predeterminada administrada por el cliente:
Java
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Java.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
En el siguiente ejemplo, se establece una clave de encriptación predeterminada administrada por el cliente en un bucket:
En el siguiente ejemplo, se quita de un bucket la clave de encriptación predeterminada administrada por el cliente:
Node.js
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Node.js.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
En el siguiente ejemplo, se establece una clave de encriptación predeterminada administrada por el cliente en un bucket:
En el siguiente ejemplo, se quita de un bucket la clave de encriptación predeterminada administrada por el cliente:
PHP
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage PHP.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
En el siguiente ejemplo, se establece una clave de encriptación predeterminada administrada por el cliente en un bucket:
En el siguiente ejemplo, se quita de un bucket la clave de encriptación predeterminada administrada por el cliente:
Python
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Python.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
En el siguiente ejemplo, se establece una clave de encriptación predeterminada administrada por el cliente en un bucket:
En el siguiente ejemplo, se quita de un bucket la clave de encriptación predeterminada administrada por el cliente:
Ruby
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Ruby.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
En el siguiente ejemplo, se establece una clave de encriptación predeterminada administrada por el cliente en un bucket:
En el siguiente ejemplo, se quita de un bucket la clave de encriptación predeterminada administrada por el cliente:
API de REST
API de JSON
Tener la gcloud CLI instalada e inicializadaa fin de generar un token de acceso para el encabezado
Authorization
.Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado
Authorization
.Crea un archivo JSON que contenga la siguiente información:
{ "encryption": { "defaultKmsKeyName": "KEY_RESOURCE" } }
En el ejemplo anterior,
KEY_RESOURCE
es el recurso de clave de Cloud KMS.Para quitar la clave de Cloud KMS predeterminada de un bucket, usa lo siguiente en el archivo JSON:
{ "encryption": { "defaultKmsKeyName": null } }
Usa
cURL
para llamar a la API de JSON con una solicitud de bucketPATCH
:curl -X PATCH --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=encryption"
Aquí:
JSON_FILE_NAME
es la ruta de acceso del archivo JSON que creaste en el paso 2.BUCKET_NAME
es el nombre del bucket correspondiente. Por ejemplo,my-bucket
API de XML
Tener la gcloud CLI instalada e inicializadaa fin de generar un token de acceso para el encabezado
Authorization
.Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado
Authorization
.Crea un archivo XML que contenga la siguiente información:
<EncryptionConfiguration> <DefaultKmsKeyName>KEY_RESOURCE</DefaultKmsKeyName> </EncryptionConfiguration>
En el ejemplo anterior,
KEY_RESOURCE
es el recurso de clave de Cloud KMS.Para quitar la clave de Cloud KMS predeterminada de un bucket, usa lo siguiente en el archivo XML:
<EncryptionConfiguration></EncryptionConfiguration>
Usa
cURL
para llamar a la API de XMLPUT
con una solicitud de bucketencryptionConfig
y un parámetro de string de consulta .curl -X PUT --data-binary @XML_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME?encryptionConfig"
Aquí:
XML_FILE_NAME
es la ruta de acceso del archivo XML que creaste en el paso 2.BUCKET_NAME
es el nombre del bucket correspondiente. Por ejemplo,my-bucket
.
Ve la clave predeterminada de un bucket
Sigue los pasos a continuación para ver la clave de Cloud KMS que actualmente está configurada como predeterminada en tu bucket:
Console
- En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.
En la lista de buckets, haz clic en el nombre del bucket deseado.
En la página de detalles del bucket haz clic en la pestaña Configuración.
La clave predeterminada actual de tu bucket aparece en el campo Clave de encriptación.
Para obtener información sobre cómo ver detalles de errores acerca de operaciones fallidas de Cloud Storage en la consola de Google Cloud, consulta Solución de problemas.
Línea de comandos
Usa el comando gcloud storage buckets describe
con la marca --format
:
gcloud storage buckets describe gs://BUCKET_NAME --format="default(default_kms_key)"
En el ejemplo anterior, BUCKET_NAME
es el nombre del bucket cuya clave deseas ver. Por ejemplo, my-bucket
.
Si se ejecuta de forma correcta, la respuesta se ve de la siguiente manera:
default_kms_key: KEY_RESOURCE
Bibliotecas cliente
C++
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C++.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
C#
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C#.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
A fin de ver la clave de KMS predeterminada, sigue las instrucciones para mostrar los metadatos de un bucket y busca el campo de clave de KMS predeterminado en la respuesta.Go
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Go.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
A fin de ver la clave de KMS predeterminada, sigue las instrucciones para mostrar los metadatos de un bucket y busca el campo de clave de KMS predeterminado en la respuesta.Java
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Java.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
A fin de ver la clave de KMS predeterminada, sigue las instrucciones para mostrar los metadatos de un bucket y busca el campo de clave de KMS predeterminado en la respuesta.Node.js
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Node.js.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
A fin de ver la clave de KMS predeterminada, sigue las instrucciones para mostrar los metadatos de un bucket y busca el campo de clave de KMS predeterminado en la respuesta.PHP
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage PHP.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
A fin de ver la clave de KMS predeterminada, sigue las instrucciones para mostrar los metadatos de un bucket y busca el campo de clave de KMS predeterminado en la respuesta.Python
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Python.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
A fin de ver la clave de KMS predeterminada, sigue las instrucciones para mostrar los metadatos de un bucket y busca el campo de clave de KMS predeterminado en la respuesta.Ruby
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Ruby.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
A fin de ver la clave de KMS predeterminada, sigue las instrucciones para mostrar los metadatos de un bucket y busca el campo de clave de KMS predeterminado en la respuesta.API de REST
API de JSON
Tener la gcloud CLI instalada e inicializadaa fin de generar un token de acceso para el encabezado
Authorization
.Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado
Authorization
.Usa
cURL
para llamar a la API de JSON con una solicitud de bucketGET
que incluya losfields
deseados:curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=encryption"
En el ejemplo anterior,
BUCKET_NAME
es el nombre del bucket cuya clave deseas ver. Por ejemplo,my-bucket
.La respuesta se ve como el siguiente ejemplo:
{ "encryption" : { "defaultKmsKeyName": "KEY_RESOURCE" }, }
API de XML
Tener la gcloud CLI instalada e inicializadaa fin de generar un token de acceso para el encabezado
Authorization
.Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado
Authorization
.Usa
cURL
para llamar a la API de XML con una solicitud de bucketGET
que incluya el parámetro de consultaencryption
:curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME?encryptionConfig"
En el ejemplo anterior,
BUCKET_NAME
es el nombre del bucket cuya clave deseas ver. Por ejemplo,my-bucket
.La respuesta se ve como el siguiente ejemplo:
<EncryptionConfiguration> <DefaultKmsKeyName>KEY_RESOURCE</DefaultKmsKeyName> </EncryptionConfiguration>
Encripta un objeto con una clave de Cloud KMS
Puedes encriptar un objeto individual con una clave de Cloud KMS. Esto es útil si deseas usar una clave diferente a la clave predeterminada establecida en el bucket o si no tienes una clave predeterminada establecida en el bucket. El nombre del recurso de clave que se usó para encriptar el objeto que se almacena en los metadatos del objeto.
Console
La consola de Google Cloud no se puede usar para especificar claves de Cloud KMS por objeto. En su lugar, usa gcloud CLI o las bibliotecas cliente.
Línea de comandos
Usa el comando gcloud storage cp
con la marca --encryption-key
:
gcloud storage cp SOURCE_DATA gs://BUCKET_NAME/OBJECT_NAME --encryption-key=KEY_RESOURCE
Aquí:
SOURCE_DATA
es la ubicación de origen de los datos que encriptas. Puede ser cualquier ubicación de origen compatible con el comandocp
. Por ejemplogs://my-bucket/pets/old-dog.png
.BUCKET_NAME
es el nombre del bucket de destino para este comando de copia. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre del objeto final encriptado. Por ejemplo,pets/new-dog.png
.KEY_RESOURCE
es el recurso de clave de Cloud KMS que deseas usar para encriptar el objeto.
Bibliotecas cliente
C++
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C++.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
C#
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C#.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Go
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Go.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Java.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Node.js.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
PHP
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage PHP.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Python.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ruby
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Ruby.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
API de REST
API de JSON
Tener la gcloud CLI instalada e inicializadapara generar un token de acceso para el encabezado
Authorization
.Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado
Authorization
.Agrega los datos del objeto al cuerpo de la solicitud.
Usa
cURL
para llamar a la API de JSON con una solicitud de objetoPOST
:curl -X POST --data-binary @OBJECT \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: OBJECT_CONTENT_TYPE" \ "https://storage.googleapis.com/upload/storage/v1/b/BUCKET_NAME/o?uploadType=media&name=OBJECT_NAME&kmsKeyName=KEY_RESOURCE"
Aquí:
OBJECT
es la ruta de acceso al objeto que deseas subir. Por ejemplo,Desktop/dog.png
.OBJECT_CONTENT_TYPE
es el tipo de contenido del objeto. Por ejemplo,image/png
.BUCKET_NAME
es el nombre del bucket al que subes el objeto. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre codificado en URL del objeto que deseas subir. Por ejemplo,pets/dog.png
, codificado en URL comopets%2Fdog.png
.KEY_RESOURCE
es el recurso de claves de Cloud KMS.
API de XML
Tener la gcloud CLI instalada e inicializadapara generar un token de acceso para el encabezado
Authorization
.Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado
Authorization
.Agrega los datos del objeto al cuerpo de la solicitud.
Usa
cURL
para llamar a la API de XML con una solicitud de objetoPUT
:curl -X PUT --data-binary @OBJECT \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: OBJECT_CONTENT_TYPE" \ -H "x-goog-encryption-kms-key-name: KEY_RESOURCE" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"
Aquí:
OBJECT
es la ruta de acceso al objeto que deseas subir. Por ejemplo,Desktop/dog.png
.OBJECT_CONTENT_TYPE
es el tipo de contenido del objeto. Por ejemplo,image/png
.BUCKET_NAME
es el nombre del bucket al que subes el objeto. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre codificado en URL del objeto que deseas subir. Por ejemplo,pets/dog.png
, codificado en URL comopets%2Fdog.png
.KEY_RESOURCE
es el recurso de clave de Cloud KMS.
Rota una clave proporcionada por el cliente a una clave de Cloud KMS
Si tus objetos se encriptan con claves de encriptación proporcionadas por el cliente, vuelve a escribir el objeto para rotarlas y usar las claves de Cloud KMS.
Console
La consola de Google Cloud no se puede usar para cambiar las claves de encriptación por objeto. En su lugar, usa gcloud CLI o las bibliotecas cliente.
Línea de comandos
Usa el comando gcloud storage objects update
con las marcas adecuadas:
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --encryption-key=KMS_KEY --decryption-keys=CSEK_KEY
Aquí:
BUCKET_NAME
es el nombre del bucket que contiene el objeto cuya clave deseas rotar. Por ejemplo,my-bucket
OBJECT_NAME
es el nombre del objeto cuya clave deseas rotar. Por ejemplo,pets/dog.png
KMS_KEY
es el recurso de clave de Cloud KMS que deseas usar para encriptar el objeto.CSEK_KEY
es la clave de encriptación proporcionada por el cliente actual que se usa en el objeto.
Bibliotecas cliente
C++
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C++.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
C#
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C#.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Go
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Go.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Java.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Node.js.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
PHP
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage PHP.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Python.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ruby
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Ruby.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
API de REST
API de JSON
Tener la gcloud CLI instalada e inicializadaa fin de generar un token de acceso para el encabezado
Authorization
.Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado
Authorization
.Usa
cURL
para llamar a la API de JSON con una solicitud de objetoPOST
:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Length: 0" \ -H "x-goog-copy-source-encryption-algorithm: AES256" \ -H "x-goog-copy-source-encryption-key: OLD_ENCRYPTION_KEY" \ -H "x-goog-copy-source-encryption-key-sha256: HASH_OF_OLD_KEY" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME/rewriteTo/b/BUCKET_NAME/o/OBJECT_NAME?kmsKeyName=KEY_RESOURCE"
Aquí:
OLD_ENCRYPTION_KEY
es la clave AES-256 actual que se usó para encriptar el objeto.HASH_OF_OLD_KEY
es el hash SHA-256 actual para tu clave AES-256.BUCKET_NAME
es el nombre del depósito que contiene el objeto pertinente. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre codificado en URL del objeto cuyas claves deseas rotar. Por ejemplo,pets/dog.png
, codificado en URL comopets%2Fdog.png
.KEY_RESOURCE
es el recurso de claves de Cloud KMS.
API de XML
La API de XML no admite la rotación de una clave de encriptación proporcionada por el cliente a una clave de Cloud KMS mediante la reescritura del objeto. Para realizar esta rotación con la API de XML, debes hacer lo siguiente:
.
Identifica la clave que se usa para encriptar un objeto
Para encontrar la clave de Cloud KMS que se usó para encriptar un objeto, haz lo siguiente:
Console
- En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.
En la lista de buckets, haz clic en el nombre del bucket que contiene el objeto deseado.
Se abrirá la página Detalles del bucket y se seleccionará la pestaña Objetos.
Navega hasta el objeto, que puede estar en una carpeta.
En la columna Encriptación, coloca el cursor sobre la entrada del objeto que desees.
El nombre y la versión de la clave aparecen en el formato:
LOCATION/KEY_RING_NAME/KEY_NAME/KEY_VERSION
Línea de comandos
Usa el comando gcloud storage objects describe
con la marca --format
:
gcloud storage objects describe gs://BUCKET_NAME/OBJECT_NAME --format="default(kms_key)"
Aquí:
BUCKET_NAME
es el nombre del bucket que contiene el objeto encriptado. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre del objeto encriptado. Por ejemplo,pets/dog.png
Si se ejecuta de forma correcta, la respuesta se ve de la siguiente manera:
kms_key: projects/my-pet-project/locations/LOCATION_NAME/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME/cryptoKeyVersions/VERSION_NUMBER
Bibliotecas cliente
C++
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C++.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
C#
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C#.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Para la clave de KMS asociada con un objeto, sigue las instrucciones para mostrar los metadatos de un objeto y busca el campo del nombre de clave de KMS en la respuesta.Go
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Go.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Para la clave de KMS asociada con un objeto, sigue las instrucciones para mostrar los metadatos de un objeto y busca el campo del nombre de clave de KMS en la respuesta.Java
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Java.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Para la clave de KMS asociada con un objeto, sigue las instrucciones para mostrar los metadatos de un objeto y busca el campo del nombre de clave de KMS en la respuesta.Node.js
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Node.js.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Para la clave de KMS asociada con un objeto, sigue las instrucciones para mostrar los metadatos de un objeto y busca el campo del nombre de clave de KMS en la respuesta.PHP
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage PHP.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Para la clave de KMS asociada con un objeto, sigue las instrucciones para mostrar los metadatos de un objeto y busca el campo del nombre de clave de KMS en la respuesta.Python
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Python.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ruby
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Ruby.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Para la clave de KMS asociada con un objeto, sigue las instrucciones para mostrar los metadatos de un objeto y busca el campo del nombre de clave de KMS en la respuesta.API de REST
API de JSON
Tener la gcloud CLI instalada e inicializadaa fin de generar un token de acceso para el encabezado
Authorization
.Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado
Authorization
.Usa
cURL
para llamar a la API de JSON con una solicitud de objetoGET
:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?fields=kmsKeyName"
Aquí:
BUCKET_NAME
es el nombre del bucket que contiene el objeto encriptado. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre codificado en URL del objeto encriptado. Por ejemplo,pets/dog.png
, codificado en URL comopets%2Fdog.png
.
API de XML
Tener la gcloud CLI instalada e inicializadaa fin de generar un token de acceso para el encabezado
Authorization
.Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado
Authorization
.Usa
cURL
para llamar a la API de XML con una solicitud de objetoGET
:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME?encryption"
Aquí:
BUCKET_NAME
es el nombre del bucket que contiene el objeto encriptado. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre codificado en URL del objeto encriptado. Por ejemplo,pets/dog.png
, codificado en URL comopets%2Fdog.png
.
Desencripta un objeto
La desencriptación de un objeto encriptado con una clave de Cloud KMS se realiza de forma automática siempre que el agente de servicio relevante tenga acceso a la clave. Para obtener más información, consulta Agentes de servicio con los CMEK.
¿Qué sigue?
- Obtén más información sobre los CMEK en Cloud Storage.
- Obtén más información sobre otras opciones de encriptación disponibles en Cloud Storage.
- Rota tus claves de Cloud KMS
- Explora otros productos que pueden funcionar con Cloud KMS.
- Obtén información sobre las restricciones de las políticas de la organización
restrictNonCmekServices
yrestrictCmekCryptoKeyProjects
para tener más control sobre el uso de las claves de Cloud KMS.