En esta página se describe cómo usar una clave de encriptado de Cloud Key Management Service creada manualmente con Cloud Storage, lo que incluye definir claves predeterminadas en los segmentos y añadir claves a objetos concretos. Una clave de cifrado de Cloud KMS es una clave de cifrado gestionada por el cliente (CMEK). Estas claves se crean y gestionan a través de Cloud KMS, y se almacenan como claves de software en un clúster de HSM o externamente.
Si prefieres usar la función Autokey de Cloud KMS para generar conjuntos de claves y claves bajo demanda que protejan tus segmentos de Cloud Storage y los objetos que contienen, consulta el artículo Usar Autokey con recursos de Cloud Storage. Para decidir qué tipo de clave es el más adecuado para ti al comparar CMEK con Cloud KMS con Autokey y el cifrado predeterminado de Google, consulta la comparación entre CMEK y Google-owned and Google-managed encryption keys.
Antes de empezar
Antes de usar esta función en Cloud Storage, debes hacer lo siguiente:
Habilita la API Cloud KMS en el proyecto que almacenará tus claves de cifrado.
Tener permisos suficientes para el proyecto que almacenará tus claves de cifrado:
Si eres el propietario del proyecto en el que se almacenarán tus claves, lo más probable es que tengas el permiso necesario.
Si tienes previsto crear conjuntos de claves y claves de cifrado, debes tener los permisos
cloudkms.keyRings.create
ycloudkms.cryptoKeys.create
.Tanto si tienes pensado usar llaveros y claves nuevos como si ya tienes, debes tener permiso
cloudkms.cryptoKeys.setIamPolicy
para las claves que vayas a usar para el cifrado.Este permiso te permite dar acceso a las claves de Cloud KMS a los agentes de servicio de Cloud Storage.
Los permisos anteriores se incluyen en el rol Administrador de Cloud KMS.
Consulta Usar IAM con Cloud KMS para obtener instrucciones sobre cómo obtener este u otros roles de Cloud KMS.
Tener un llavero de claves de Cloud KMS y tener al menos una clave en el llavero.
El conjunto de claves debe estar en la misma ubicación que los datos que quieras cifrar, pero puede estar en otro proyecto. Para ver las ubicaciones de Cloud KMS disponibles, consulta Ubicaciones de Cloud KMS.
Tener permisos suficientes para trabajar con objetos de tu segmento de Cloud Storage:
Si eres el propietario del proyecto que contiene el cubo, lo más probable es que tengas el permiso necesario.
Si usas IAM, debes tener el
storage.objects.create
permiso para escribir objetos en el segmento y el permisostorage.objects.get
para leer objetos del segmento. Consulta Usar permisos de gestión de identidades y accesos para obtener instrucciones sobre cómo conseguir un rol, como Administrador de objetos de Storage, que tenga estos permisos.Si usas LCAs, debes tener el permiso
WRITER
a nivel de segmento para escribir objetos en el segmento y el permisoREADER
a nivel de objeto para leer objetos del segmento. Consulta Configurar ACLs para obtener instrucciones sobre cómo hacerlo.
-
Obtén la dirección de correo del agente de servicio asociado al proyecto que contiene tu segmento de Cloud Storage. Al realizar este paso, se crea automáticamente el agente de servicio si aún no existe.
Asignar una clave de Cloud KMS a un agente de servicio
Para usar las CMEKs, concede al agente de servicio de Cloud Storage asociado a tu cubo el permiso para usar tu clave de Cloud KMS para cifrar y descifrar:
Consola
- En la Google Cloud consola, ve a la página Gestión de claves.
Haga clic en el nombre del conjunto de claves que contiene la clave que quiere usar.
Selecciona la casilla de la clave que quieras.
La pestaña Permisos del panel de la ventana de la derecha estará disponible.
En el cuadro de diálogo Añadir principales, especifica la dirección de correo del agente de servicio de Cloud Storage al que vas a conceder acceso.
En el menú desplegable Selecciona un rol, elige Encargado del encriptado y desencriptado de la clave criptográfica Cloud KMS.
Haz clic en Añadir.
Para saber cómo obtener información detallada sobre los errores de las operaciones de Cloud Storage en la consola, consulta la sección Solución de problemas. Google Cloud
Línea de comandos
Usa el comando gcloud storage service-agent
con la marca --authorize-cmek
para dar al agente de servicio asociado a tu segmento permiso para cifrar y descifrar objetos con tu clave de Cloud KMS:
gcloud storage service-agent --project=PROJECT_STORING_OBJECTS --authorize-cmek=KEY_RESOURCE
Donde:
PROJECT_STORING_OBJECTS
es el ID o el número del proyecto que contiene los objetos que quieres cifrar o descifrar. Por ejemplo,my-pet-project
.KEY_RESOURCE
es el recurso de clave de Cloud KMS.
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
.Crea un archivo JSON que contenga la siguiente información:
{ "policy": { "bindings": { "role": "roles/cloudkms.cryptoKeyEncrypterDecrypter", "members": "serviceAccount:SERVICE_AGENT_EMAIL_ADDRESS" }, } }
Donde
SERVICE_AGENT_EMAIL_ADDRESS
es la dirección de correo asociada a tu agente de servicios. 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"
Donde:
JSON_FILE_NAME
es la ruta del archivo JSON que has creado en el paso 2.KEY_RESOURCE
es tu recurso de clave de Cloud KMS.
API XML
La API XML no se puede usar para asignar un Cloud KMS a un agente de servicio. Usa una de las otras herramientas de Cloud Storage, como la CLI de gcloud.
Usar claves de cifrado predeterminadas
Definir la clave predeterminada de un segmento
Para añadir, cambiar o quitar la clave de Cloud KMS que se usa de forma predeterminada cuando se escriben objetos en un segmento, sigue estos pasos:
Consola
- En la Google Cloud consola, ve a la página Segmentos de Cloud Storage.
En la lista de segmentos, haz clic en el nombre del segmento que quieras.
En la página Detalles del segmento, haga clic en la pestaña Configuración.
Haga clic en el icono de lápiz asociado a la entrada Tipo de cifrado.
Define o elimina la clave de Cloud KMS predeterminada del segmento.
Si el contenedor no usa una clave de Cloud KMS, selecciona el botón de radio Clave gestionada por el cliente y, a continuación, elige una de las claves disponibles en el menú desplegable asociado.
Si el contenedor usa una clave de Cloud KMS, cámbiala en el menú desplegable o quítala seleccionando el botón de radio Google-managed encryption key.
Haz clic en Guardar.
Para saber cómo obtener información detallada sobre los errores de las operaciones de Cloud Storage en la consola, consulta la sección Solución de problemas. Google Cloud
Línea de comandos
Usa el comando gcloud storage buckets update
con la marca adecuada:
gcloud storage buckets update gs://BUCKET_NAME FLAG
Donde:
BUCKET_NAME
es el nombre del segmento correspondiente. Por ejemplo,my-bucket
.FLAG
es el ajuste deseado para la clave predeterminada del segmento. Se debe utilizar uno de los formatos indicados a continuación.--default-encryption-key=
y un recurso de clave de Cloud KMS, si quieres añadir o cambiar una clave predeterminada.--clear-default-encryption-key
, si quieres quitar la clave predeterminada del segmento.
Si la acción se realiza correctamente, la respuesta tendrá este aspecto:
Updating gs://my-bucket/... Completed 1
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.
En el siguiente ejemplo se define una clave de cifrado gestionada por el cliente predeterminada en un segmento:
En el siguiente ejemplo se elimina la clave de cifrado gestionada por el cliente predeterminada de un segmento:
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.
En el siguiente ejemplo se define una clave de cifrado gestionada por el cliente predeterminada en un segmento:
En el siguiente ejemplo se elimina la clave de cifrado gestionada por el cliente predeterminada de un segmento:
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.
En el siguiente ejemplo se define una clave de cifrado gestionada por el cliente predeterminada en un segmento:
En el siguiente ejemplo se elimina la clave de cifrado gestionada por el cliente predeterminada de un segmento:
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.
En el siguiente ejemplo se define una clave de cifrado gestionada por el cliente predeterminada en un segmento:
En el siguiente ejemplo se elimina la clave de cifrado gestionada por el cliente predeterminada de un segmento:
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.
En el siguiente ejemplo se define una clave de cifrado gestionada por el cliente predeterminada en un segmento:
En el siguiente ejemplo se elimina la clave de cifrado gestionada por el cliente predeterminada de un segmento:
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.
En el siguiente ejemplo se define una clave de cifrado gestionada por el cliente predeterminada en un segmento:
En el siguiente ejemplo se elimina la clave de cifrado gestionada por el cliente predeterminada de un segmento:
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.
En el siguiente ejemplo se define una clave de cifrado gestionada por el cliente predeterminada en un segmento:
En el siguiente ejemplo se elimina la clave de cifrado gestionada por el cliente predeterminada de un segmento:
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.
En el siguiente ejemplo se define una clave de cifrado gestionada por el cliente predeterminada en un segmento:
En el siguiente ejemplo se elimina la clave de cifrado gestionada por el cliente predeterminada de un segmento:
APIs REST
API JSON
Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado
Authorization
.Crea un archivo JSON que contenga la siguiente información:
{ "encryption": { "defaultKmsKeyName": "KEY_RESOURCE" } }
Donde
KEY_RESOURCE
es tu recurso de clave de Cloud KMS.Para eliminar la clave de Cloud KMS predeterminada de un segmento, usa lo siguiente en el archivo JSON:
{ "encryption": { "defaultKmsKeyName": null } }
Usa
cURL
para llamar a la API JSON con una solicitud dePATCH
contenedor: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"
Donde:
JSON_FILE_NAME
es la ruta del archivo JSON que has creado en el paso 2.BUCKET_NAME
es el nombre del segmento correspondiente. Por ejemplo,my-bucket
.
API XML
Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado
Authorization
.Crea un archivo XML que contenga la siguiente información:
<EncryptionConfiguration> <DefaultKmsKeyName>KEY_RESOURCE</DefaultKmsKeyName> </EncryptionConfiguration>
Donde
KEY_RESOURCE
es tu recurso de clave de Cloud KMS.Para eliminar la clave de Cloud KMS predeterminada de un segmento, usa lo siguiente en el archivo XML:
<EncryptionConfiguration></EncryptionConfiguration>
Usa
cURL
para llamar a la API XML con una solicitudPUT
Bucket y el parámetro de cadena de consultaencryptionConfig
:curl -X PUT --data-binary @XML_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME?encryptionConfig"
Donde:
XML_FILE_NAME
es la ruta del archivo XML que has creado en el paso 2.BUCKET_NAME
es el nombre del segmento correspondiente. Por ejemplo,my-bucket
.
Ver la clave predeterminada de un segmento
Para ver la clave de Cloud KMS que está definida como predeterminada para tu segmento, sigue estos pasos:
Consola
- En la Google Cloud consola, ve a la página Segmentos de Cloud Storage.
En la lista de segmentos, haz clic en el nombre del segmento que quieras.
En la página Detalles del segmento, haga clic en la pestaña Configuración.
La clave predeterminada actual de tu contenedor aparece en el campo Clave de cifrado.
Para saber cómo obtener información detallada sobre los errores de las operaciones de Cloud Storage en la consola, consulta la sección Solución de problemas. Google Cloud
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)"
Donde BUCKET_NAME
es el nombre del cubo cuya clave quieres ver. Por ejemplo, my-bucket
.
Si la acción se realiza correctamente, la respuesta tendrá este aspecto:
default_kms_key: KEY_RESOURCE
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.
Para ver la clave de KMS predeterminada, sigue las instrucciones para mostrar los metadatos de un segmento y busca el campo de clave de KMS predeterminada en la respuesta.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.
Para ver la clave de KMS predeterminada, sigue las instrucciones para mostrar los metadatos de un segmento y busca el campo de clave de KMS predeterminada en la respuesta.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.
Para ver la clave de KMS predeterminada, sigue las instrucciones para mostrar los metadatos de un segmento y busca el campo de clave de KMS predeterminada en la respuesta.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.
Para ver la clave de KMS predeterminada, sigue las instrucciones para mostrar los metadatos de un segmento y busca el campo de clave de KMS predeterminada en la respuesta.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.
Para ver la clave de KMS predeterminada, sigue las instrucciones para mostrar los metadatos de un segmento y busca el campo de clave de KMS predeterminada en la respuesta.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.
Para ver la clave de KMS predeterminada, sigue las instrucciones para mostrar los metadatos de un segmento y busca el campo de clave de KMS predeterminada en la respuesta.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.
Para ver la clave de KMS predeterminada, sigue las instrucciones para mostrar los metadatos de un segmento y busca el campo de clave de KMS predeterminada en la respuesta.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
Bucket que incluya elfields
que quieras:curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=encryption"
Donde
BUCKET_NAME
es el nombre del cubo cuya clave quieres ver. Por ejemplo,my-bucket
.La respuesta tiene este aspecto:
{ "encryption" : { "defaultKmsKeyName": "KEY_RESOURCE" }, }
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
Bucket 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"
Donde
BUCKET_NAME
es el nombre del cubo cuya clave quieres ver. Por ejemplo,my-bucket
.La respuesta tiene este aspecto:
<EncryptionConfiguration> <DefaultKmsKeyName>KEY_RESOURCE</DefaultKmsKeyName> </EncryptionConfiguration>
Cifrar un objeto con una clave de Cloud KMS
Puedes encriptar un objeto concreto con una clave de Cloud KMS. Esto resulta útil si quieres usar una clave diferente del conjunto de claves predeterminado del contenedor o si no tienes ningún conjunto de claves predeterminado en el contenedor. El nombre del recurso de clave que se usa para cifrar el objeto se almacena en los metadatos del objeto.
Consola
La consola Google Cloud no se puede usar para especificar claves de Cloud KMS por objeto. Usa la CLI de gcloud 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=KEY_RESOURCE
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,gs://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
.KEY_RESOURCE
es el recurso de clave de Cloud KMS que quieres usar para encriptar 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
.Añade los datos del objeto al cuerpo de la petición.
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" \ "https://storage.googleapis.com/upload/storage/v1/b/BUCKET_NAME/o?uploadType=media&name=OBJECT_NAME&kmsKeyName=KEY_RESOURCE"
Donde:
OBJECT
es la ruta al objeto que vas a 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 segmento al que subes el objeto. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre codificado como URL del objeto que estás subiendo. Por ejemplo,pets/dog.png
, codificado como URLpets%2Fdog.png
.KEY_RESOURCE
es el recurso de clave de Cloud KMS.
API XML
Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado
Authorization
.Añade los datos del objeto al cuerpo de la petición.
Usa
cURL
para llamar a la API XML con una solicitud dePUT
Object: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"
Donde:
OBJECT
es la ruta al objeto que vas a 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 segmento al que subes el objeto. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre codificado como URL del objeto que estás subiendo. Por ejemplo,pets/dog.png
, codificado como URLpets%2Fdog.png
.KEY_RESOURCE
es tu recurso de clave de Cloud KMS.
Rotar de una clave proporcionada por el cliente a una clave de Cloud KMS
Si tus objetos están cifrados con claves de cifrado proporcionadas por el cliente, puedes rotarlas para usar claves de Cloud KMS reescribiendo el objeto:
Consola
La consola Google Cloud no se puede usar para cambiar las claves de cifrado de objetos concretos. Usa la CLI de gcloud 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=KMS_KEY --decryption-keys=CSEK_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
.KMS_KEY
es el recurso de clave de Cloud KMS que quieres usar para encriptar el objeto.CSEK_KEY
es la clave de cifrado proporcionada por el cliente que se usa en 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-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"
Donde:
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 como URL del objeto cuyas claves vas a rotar. Por ejemplo,pets/dog.png
, codificado como URLpets%2Fdog.png
.KEY_RESOURCE
es el recurso de clave de Cloud KMS.
API XML
La API XML no admite la rotación de una clave de cifrado proporcionada por el cliente a una clave de Cloud KMS mediante la reescritura de objetos. Para hacer una rotación de este tipo con la API XML, debes hacer lo siguiente:
.
Identificar la clave usada para cifrar un objeto
Para encontrar la clave de Cloud KMS que se ha usado para cifrar un objeto, sigue estos pasos:
Consola
- En la Google Cloud consola, ve a la página Segmentos de Cloud Storage.
En la lista de segmentos, haga clic en el nombre del segmento que contiene el objeto que quiere.
Se abrirá la página Detalles del segmento, con la pestaña Objetos seleccionada.
Desplázate hasta el objeto, que puede estar en una carpeta.
En la columna Cifrado, coloca el cursor sobre la entrada del objeto que quieras.
El nombre y la versión de la clave se muestran con el siguiente 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)"
Donde:
BUCKET_NAME
es el nombre del contenedor que contiene el objeto cifrado. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre del objeto cifrado. Por ejemplo,pets/dog.png
.
Si la acción se realiza correctamente, la respuesta tendrá este aspecto:
kms_key: projects/my-pet-project/locations/LOCATION_NAME/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME/cryptoKeyVersions/VERSION_NUMBER
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.
Para ver la clave de KMS asociada a un objeto, sigue las instrucciones para mostrar los metadatos de un objeto y busca el campo del nombre de la clave de KMS en la respuesta.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.
Para ver la clave de KMS asociada a un objeto, sigue las instrucciones para mostrar los metadatos de un objeto y busca el campo del nombre de la clave de KMS en la respuesta.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.
Para ver la clave de KMS asociada a un objeto, sigue las instrucciones para mostrar los metadatos de un objeto y busca el campo del nombre de la clave de KMS en la respuesta.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.
Para ver la clave de KMS asociada a un objeto, sigue las instrucciones para mostrar los metadatos de un objeto y busca el campo del nombre de la clave de KMS en la respuesta.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.
Para ver la clave de KMS asociada a un objeto, sigue las instrucciones para mostrar los metadatos de un objeto y busca el campo del nombre de la clave de KMS en la respuesta.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.
Para ver la clave de KMS asociada a un objeto, sigue las instrucciones para mostrar los metadatos de un objeto y busca el campo del nombre de la clave de KMS en la respuesta.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)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?fields=kmsKeyName"
Donde:
BUCKET_NAME
es el nombre del contenedor que contiene el objeto cifrado. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre codificado como URL del objeto cifrado. Por ejemplo,pets/dog.png
, codificado como URLpets%2Fdog.png
.
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 solicitud deGET
Object:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME?encryption"
Donde:
BUCKET_NAME
es el nombre del contenedor que contiene el objeto cifrado. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre codificado como URL del objeto cifrado. Por ejemplo,pets/dog.png
, codificado como URLpets%2Fdog.png
.
Descifrar un objeto
El descifrado de un objeto cifrado con una clave de Cloud KMS se realiza automáticamente siempre que el agente de servicio correspondiente tenga acceso a la clave. Para obtener más información, consulta Agentes de servicio con CMEKs.
Siguientes pasos
- Más información sobre las CMEKs en Cloud Storage
- Consulta otras opciones de cifrado disponibles en Cloud Storage.
- Rota tus claves de Cloud KMS.
- Consulta otros productos que se pueden usar con Cloud KMS.
- Consulta información sobre las restricciones de la política de organización
restrictNonCmekServices
yrestrictCmekCryptoKeyProjects
para tener más control sobre el uso de las claves de Cloud KMS.