En esta página, se describe cómo puedes crear secretos nuevos con claves de encriptación administradas por el cliente (CMEK) y actualizar los secretos existentes para usar claves CMEK.
Descripción general
CMEK agrega un nivel adicional de seguridad y control sobre tus datos sensibles almacenados como secretos regionales. Puedes usar CMEK para cumplir con los siguientes objetivos:
- Tener control total sobre las claves de encriptación que se usan para proteger tus secretos
- Usar tu propio sistema de administración de claves con políticas de seguridad, capacidades de auditoría y funciones de cumplimiento potencialmente más estrictas
- Cumplir con las reglamentaciones de soberanía de los datos manteniendo las claves dentro de tu propia infraestructura.
- Definir controles de acceso detallados para tus claves de encriptación, especificando quién puede usarlas y para qué propósitos
Limitaciones:
El uso de CMEK con secretos regionales tiene las siguientes limitaciones:
- Cloud Key Management Service Autokey (vista previa) no es compatible con los secretos regionales.
- La ubicación de la clave CMEK debe ser la misma que la ubicación del secreto regional.
Antes de comenzar
- Habilita la API de Secret Manager una vez por proyecto.
- Asigna la función de administrador de Secret Manager (
roles/secretmanager.admin) en el proyecto, la carpeta o la organización. Autentícate en la API de Secret Manager con una de las siguientes formas:
- Si usas bibliotecas cliente para acceder a la API de Secret Manager, configura las credenciales predeterminadas de la aplicación.
- Si usas Google Cloud CLI para acceder a la API de Secret Manager, usa tus credenciales de Google Cloud CLI para autenticarte.
- Para autenticar una llamada REST, usa las credenciales de Google Cloud CLI o las credenciales predeterminadas de la aplicación.
Para habilitar CMEK y crear las claves y los llaveros de claves CMEK que necesitas para este paso, consulta Habilita las claves de encriptación administradas por el cliente para Secret Manager.
Crea un secreto regional con encriptación CMEK
Para crear un secreto nuevo con encriptación CMEK, usa uno de los siguientes métodos:
Console
-
En la Cloud de Confiance consola, ve a la Secret Manager página.
-
En la página Secret Manager , haz clic en la pestaña Secretos regionales y, luego, haz clic en Crear secreto regional.
-
En el campo Nombre de la página Crear secreto regional, ingresa un nombre para el secreto. Un nombre de secreto puede contener letras mayúsculas y minúsculas, números, guiones y guiones bajos. La longitud máxima permitida para un nombre es de 255 caracteres.
-
Ingresa un valor para el secreto (por ejemplo,
abcd1234). El valor del secreto puede tener cualquier formato pero no debe superar los 64 KiB. También puedes subir un archivo de texto que contenga el valor del secreto con la opción Subir archivo. Esta acción crea automáticamente la versión del secreto. -
Elige la ubicación en la que deseas almacenar tu secreto regional de la lista Región.
-
En Encriptación, selecciona Clave de encriptación administrada por el cliente (CMEK) y, luego, elige tu clave CMEK de la lista Clave de encriptación. Asegúrate de que tu clave CMEK exista en la ubicación especificada y que tu proyecto de Secret Manager tenga los permisos necesarios para usar la clave.
-
Haz clic en Crear secreto.
gcloud
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- SECRET_ID: Es el ID del secreto.
- LOCATION: Es la Cloud de Confiance by S3NS ubicación en la que deseas crear el secreto.
- KMS_PROJECT_ID: Es el ID de tu Cloud de Confiance by S3NS proyecto que ejecuta Cloud Key Management Service.
- KMS_KEY_LOCATION: Es la ubicación de tu clave de Cloud KMS. Debe ser la misma ubicación que tu secreto.
- YOUR_KEY_RING: Es el nombre del llavero de claves en Cloud KMS en el que almacenaste tu clave CMEK.
- YOUR_CMEK_KEY: Es la clave de encriptación administrada por el cliente (CMEK) específica que creaste dentro del llavero de claves elegido en Cloud KMS.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets create SECRET_ID --location=LOCATION --regional-kms-key-name="projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"
Windows (PowerShell)
gcloud secrets create SECRET_ID --location=LOCATION --regional-kms-key-name="projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"
Windows (cmd.exe)
gcloud secrets create SECRET_ID --location=LOCATION --regional-kms-key-name="projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: Es la Cloud de Confiance by S3NS ubicación en la que deseas crear el secreto.
- PROJECT_ID: Es el Cloud de Confiance by S3NS ID del proyecto de.
- SECRET_ID: Es el ID del secreto.
- KMS_PROJECT_ID: Es el ID de tu Cloud de Confiance by S3NS proyecto que ejecuta Cloud Key Management Service.
- KMS_KEY_LOCATION: Es la ubicación de tu clave de Cloud KMS. Debe ser la misma ubicación que tu secreto.
- YOUR_KEY_RING: Es el nombre del llavero de claves en Cloud KMS en el que almacenaste tu clave CMEK.
- YOUR_CMEK_KEY: Es la clave de encriptación administrada por el cliente (CMEK) específica que creaste dentro del llavero de claves elegido en Cloud KMS.
Método HTTP y URL:
POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID
Cuerpo JSON de la solicitud:
{"customer_managed_encryption": {"kms_key_name": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"}}
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{
"name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
"createTime": "2024-03-27T13:30:07.437859Z",
"etag": "\"1614a467b60423\""
"customerManagedEncryption": {
"kmsKeyName": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
}
}
Actualiza un secreto existente para usar CMEK
Para actualizar un secreto existente para usar CMEK, usa uno de los siguientes métodos:
Console
-
En la Cloud de Confiance consola, ve a la Secret Manager página.
-
En la página Secret Manager, haz clic en la pestaña Secretos regionales.
-
Para editar un secreto, usa uno de los siguientes métodos:
-
Ubica el secreto en la lista y haz clic en el Acciones menú asociado a ese secreto. En el menú Acciones, haz clic en Editar.
-
Haz clic en el nombre del secreto para ir a la página de detalles del secreto. En la página de detalles del secreto, haz clic en Editar secreto.
-
-
En la página Editar secreto, ve a la sección Encriptación.
-
En Encriptación, selecciona Clave de encriptación administrada por el cliente (CMEK) y, luego, elige tu clave CMEK de la lista Clave de encriptación. Asegúrate de que tu clave CMEK exista en la ubicación especificada y que tu proyecto de Secret Manager tenga los permisos necesarios para usar la clave.
-
Haz clic en Actualizar secreto.
gcloud
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- SECRET_ID: Es el ID del secreto.
- LOCATION: Es la Cloud de Confiance by S3NS ubicación del secreto.
- KMS_PROJECT_ID: Es el ID de tu Cloud de Confiance by S3NS proyecto que ejecuta Cloud Key Management Service.
- KMS_KEY_LOCATION: Es la ubicación de tu clave de Cloud KMS. Debe ser la misma ubicación que tu secreto.
- YOUR_KEY_RING: Es el nombre del llavero de claves en Cloud KMS en el que almacenaste tu clave CMEK.
- YOUR_CMEK_KEY: Es la clave de encriptación administrada por el cliente (CMEK) específica que creaste dentro del llavero de claves elegido en Cloud KMS.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets update SECRET_ID --location=LOCATION --regional-kms-key-name="projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"
Windows (PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION --regional-kms-key-name="projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"
Windows (cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION --regional-kms-key-name="projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: Es la Cloud de Confiance by S3NS ubicación del secreto.
- PROJECT_ID: Es el Cloud de Confiance by S3NS ID del proyecto de.
- SECRET_ID: Es el ID del secreto.
- KMS_PROJECT_ID: Es el ID de tu Cloud de Confiance by S3NS proyecto que ejecuta Cloud Key Management Service.
- KMS_KEY_LOCATION: Es la ubicación de tu clave de Cloud KMS. Debe ser la misma ubicación que tu secreto.
- YOUR_KEY_RING: Es el nombre del llavero de claves en Cloud KMS en el que almacenaste tu clave CMEK.
- YOUR_CMEK_KEY: Es la clave de encriptación administrada por el cliente (CMEK) específica que creaste dentro del llavero de claves elegido en Cloud KMS.
Método HTTP y URL:
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=customer_managed_encryption
Cuerpo JSON de la solicitud:
{"customer_managed_encryption": {"kms_key_name": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"}}"
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=customer_managed_encryption"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=customer_managed_encryption" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{
"name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
"createTime": "2024-03-27T13:30:07.437859Z",
"etag": "\"16211daf5f29c5\""
"customerManagedEncryption": {
"kmsKeyName": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
}
}