En esta página se describe cómo usar tu propia clave de cifrado, denominada clave de cifrado proporcionada por el cliente, con Cloud Storage. Para ver otras opciones de cifrado en Cloud Storage, consulta Opciones de cifrado de datos.
Generar tu propia clave de cifrado
Hay muchas formas de generar una clave de cifrado AES-256 codificada en Base64. Aquí tienes varios ejemplos:
C++
Para obtener más información, consulta la documentación de referencia de la API C++ de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
C#
Para obtener más información, consulta la documentación de referencia de la API C# de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Go
Para obtener más información, consulta la documentación de referencia de la API Go de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Java
Para obtener más información, consulta la documentación de referencia de la API Java de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Node.js
Para obtener más información, consulta la documentación de referencia de la API Node.js de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
PHP
Para obtener más información, consulta la documentación de referencia de la API PHP de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python
Para obtener más información, consulta la documentación de referencia de la API Python de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Ruby
Para obtener más información, consulta la documentación de referencia de la API Ruby de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Subir contenido con tu clave de cifrado
Para usar claves de cifrado proporcionadas por el cliente para subir un objeto, sigue estos pasos:
Consola
La consola de Google Cloud no se puede usar para subir un objeto con una clave de cifrado proporcionada por el cliente. Usa la CLI de Google Cloud o las bibliotecas de 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=YOUR_ENCRYPTION_KEY
Donde:
SOURCE_DATA
es la ubicación de origen de los datos que quieres cifrar. Puede ser cualquier ubicación de origen compatible con el comandocp
. Por ejemplo, un archivo local comoDesktop/dogs.png
u otro objeto de Cloud Storage comogs://my-bucket/pets/old-dog.png
.BUCKET_NAME
es el nombre del segmento de destino de este comando de copia. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre del objeto final cifrado. Por ejemplo,pets/new-dog.png
.YOUR_ENCRYPTION_KEY
es la clave AES-256 que quieres usar para cifrar el objeto subido.
Bibliotecas de cliente
C++
Para obtener más información, consulta la documentación de referencia de la API C++ de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
C#
Para obtener más información, consulta la documentación de referencia de la API C# de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Go
Para obtener más información, consulta la documentación de referencia de la API Go de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Java
Para obtener más información, consulta la documentación de referencia de la API Java de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Node.js
Para obtener más información, consulta la documentación de referencia de la API Node.js de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
PHP
Para obtener más información, consulta la documentación de referencia de la API PHP de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python
Para obtener más información, consulta la documentación de referencia de la API Python de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Ruby
Para obtener más información, consulta la documentación de referencia de la API Ruby de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
APIs REST
API JSON
Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado
Authorization
.Usa
cURL
para llamar a la API JSON con una solicitud dePOST
Object:curl -X POST --data-binary @OBJECT \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: OBJECT_CONTENT_TYPE" \ -H "x-goog-encryption-algorithm: AES256" \ -H "x-goog-encryption-key: YOUR_ENCRYPTION_KEY" \ -H "x-goog-encryption-key-sha256: HASH_OF_YOUR_KEY" \ "https://storage.googleapis.com/upload/storage/v1/b/BUCKET_NAME/o?uploadType=media&name=OBJECT_NAME"
Donde:
OBJECT
es la ruta al objeto que vas a subir. Por ejemplo,Desktop/dogs.png
.OBJECT_CONTENT_TYPE
es el tipo de contenido del objeto. Por ejemplo,image/png
.YOUR_ENCRYPTION_KEY
es la clave AES de 256 bits que se usa para cifrar el objeto subido.HASH_OF_YOUR_KEY
es el hash SHA-256 de tu clave AES-256.BUCKET_NAME
es el nombre del segmento al que vas a subir el objeto. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre codificado por URL del objeto que estás subiendo. Por ejemplo,pets/dog.png
, codificado como URLpets%2Fdog.png
.
Consulta Encabezados de solicitud de cifrado para obtener más información sobre los encabezados específicos del cifrado.
API XML
Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado
Authorization
.Usa
cURL
para llamar a la API XML con una solicitudPUT
OBJECT:curl -X -i PUT --data-binary @OBJECT \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: OBJECT_CONTENT_TYPE" \ -H "x-goog-encryption-algorithm: AES256" \ -H "x-goog-encryption-key: YOUR_ENCRYPTION_KEY" \ -H "x-goog-encryption-key-sha256: HASH_OF_YOUR_KEY" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"
Donde:
OBJECT
es la ruta al objeto que vas a subir. Por ejemplo,Desktop/dogs.png
.OBJECT_CONTENT_TYPE
es el tipo de contenido del objeto. Por ejemplo,image/png
.YOUR_ENCRYPTION_KEY
es la clave AES de 256 bits que se usa para cifrar el objeto subido.HASH_OF_YOUR_KEY
es el hash SHA-256 de tu clave AES-256.BUCKET_NAME
es el nombre del segmento al que vas a subir el objeto. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre codificado por URL del objeto que estás subiendo. Por ejemplo,pets/dog.png
, codificado como URLpets%2Fdog.png
.
Consulta Encabezados de solicitud de cifrado para obtener más información sobre los encabezados específicos del cifrado.
Descargar objetos que has cifrado
Para descargar un objeto almacenado en Cloud Storage que esté encriptado con una clave de encriptado proporcionada por el cliente, sigue estos pasos:
Consola
La consola Google Cloud no se puede usar para descargar objetos cifrados con claves de cifrado proporcionadas por el cliente. Usa la CLI de Google Cloud o las bibliotecas de cliente.
Línea de comandos
Usa el comando gcloud storage cp
con la marca --decryption-keys
:
gcloud storage cp gs://BUCKET_NAME/OBJECT_NAME OBJECT_DESTINATION --decryption-keys=YOUR_ENCRYPTION_KEY
Donde:
BUCKET_NAME
es el nombre del segmento que contiene el objeto que estás descargando. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre del objeto que vas a descargar. Por ejemplo,pets/dog.png
.OBJECT_DESTINATION
es la ubicación en la que quieres guardar el objeto. Por ejemplo,Desktop
.YOUR_ENCRYPTION_KEY
es la clave AES-256 que se ha usado para cifrar el objeto cuando se ha subido.
Bibliotecas de cliente
C++
Para obtener más información, consulta la documentación de referencia de la API C++ de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
C#
Para obtener más información, consulta la documentación de referencia de la API C# de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Go
Para obtener más información, consulta la documentación de referencia de la API Go de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Java
Para obtener más información, consulta la documentación de referencia de la API Java de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Node.js
Para obtener más información, consulta la documentación de referencia de la API Node.js de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
PHP
Para obtener más información, consulta la documentación de referencia de la API PHP de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python
Para obtener más información, consulta la documentación de referencia de la API Python de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Ruby
Para obtener más información, consulta la documentación de referencia de la API Ruby de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
APIs REST
API JSON
Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado
Authorization
.Usa
cURL
para llamar a la API JSON con una solicitud deGET
Object:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-encryption-algorithm: AES256" \ -H "x-goog-encryption-key: YOUR_ENCRYPTION_KEY" \ -H "x-goog-encryption-key-sha256: HASH_OF_YOUR_KEY" \ -o "SAVE_TO_LOCATION" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?alt=media"
Donde:
YOUR_ENCRYPTION_KEY
es la clave AES-256 que has usado para cifrar el objeto.HASH_OF_YOUR_KEY
es el hash SHA-256 de tu clave AES-256.SAVE_TO_LOCATION
es la ubicación en la que quieres guardar el objeto. Por ejemplo,Desktop/dog.png
.BUCKET_NAME
es el nombre del segmento desde el que se descarga el objeto. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre codificado en URL del objeto que estás descargando. Por ejemplo,pets/dog.png
, codificado como URLpets%2Fdog.png
.
Consulta Encabezados de solicitud de cifrado para obtener más información sobre los encabezados específicos del cifrado.
API XML
Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado
Authorization
.Usa
cURL
para llamar a la API XML con una solicitudGET
OBJECT:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-encryption-algorithm: AES256" \ -H "x-goog-encryption-key: YOUR_ENCRYPTION_KEY" \ -H "x-goog-encryption-key-sha256: HASH_OF_YOUR_KEY" \ -o "SAVE_TO_LOCATION" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"
Donde:
YOUR_ENCRYPTION_KEY
es la clave AES-256 que has usado para cifrar el objeto.HASH_OF_YOUR_KEY
es el hash SHA-256 de tu clave AES-256.SAVE_TO_LOCATION
es la ubicación en la que quieres guardar el objeto. Por ejemplo,Desktop/dog.png
.BUCKET_NAME
es el nombre del segmento desde el que se descarga el objeto. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre codificado en URL del objeto que estás descargando. Por ejemplo,pets/dog.png
, codificado como URLpets%2Fdog.png
.
Consulta Encabezados de solicitud de cifrado para obtener más información sobre los encabezados específicos del cifrado.
Rotar las claves de cifrado
Para rotar una clave de cifrado proporcionada por el cliente, sigue estos pasos:
Consola
La consola Google Cloud no se puede usar para rotar las claves de cifrado proporcionadas por el cliente. En su lugar, usa la CLI de Google Cloud o las bibliotecas de 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=NEW_KEY --decryption-keys=OLD_KEY
Donde:
BUCKET_NAME
es el nombre del segmento que contiene el objeto cuya clave vas a rotar. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre del objeto cuya clave vas a rotar. Por ejemplo,pets/dog.png
.NEW_KEY
es la nueva clave de cifrado proporcionada por el cliente que quiere usar para cifrar el objeto.OLD_KEY
es la clave de cifrado proporcionada por el cliente que se usa para cifrar el objeto.
Bibliotecas de cliente
C++
Para obtener más información, consulta la documentación de referencia de la API C++ de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
C#
Para obtener más información, consulta la documentación de referencia de la API C# de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Go
Para obtener más información, consulta la documentación de referencia de la API Go de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Java
Para obtener más información, consulta la documentación de referencia de la API Java de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Node.js
Para obtener más información, consulta la documentación de referencia de la API Node.js de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
PHP
Para obtener más información, consulta la documentación de referencia de la API PHP de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python
Para obtener más información, consulta la documentación de referencia de la API Python de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Ruby
Para obtener más información, consulta la documentación de referencia de la API Ruby de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
APIs REST
API JSON
Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado
Authorization
.Usa
cURL
para llamar a la API JSON con una solicitud dePOST
Object:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Length: 0" \ -H "x-goog-encryption-algorithm: AES256" \ -H "x-goog-encryption-key: NEW_ENCRYPTION_KEY" \ -H "x-goog-encryption-key-sha256: HASH_OF_NEW_KEY" \ -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"
Donde:
NEW_ENCRYPTION_KEY
es la nueva clave AES-256 que se usa para cifrar tu objeto.HASH_OF_NEW_KEY
es el hash SHA-256 de tu nueva clave AES-256.OLD_ENCRYPTION_KEY
es la clave AES-256 actual que se usa para cifrar tu objeto.HASH_OF_OLD_KEY
es el hash SHA-256 actual de tu clave AES-256.BUCKET_NAME
es el nombre del contenedor que contiene el objeto pertinente. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre codificado por URL del objeto cuyas claves vas a rotar. Por ejemplo,pets/dog.png
, codificado como URLpets%2Fdog.png
.
Consulta Encabezados de solicitud de cifrado para obtener más información sobre los encabezados específicos del cifrado.
API XML
La API XML no admite la rotación de una clave de cifrado proporcionada por el cliente mediante la reescritura de objetos. Para aplicar una clave proporcionada por el cliente a un objeto mediante la API XML, debes hacer lo siguiente:
Siguientes pasos
Consulta más información sobre las claves de cifrado proporcionadas por el cliente.
Consulta cómo rotar tu clave de encriptado proporcionada por el cliente a una clave de Cloud KMS.