En esta página, se explica cómo configurar la destrucción diferida de versiones de secretos, actualizar o quitar la duración de la demora en la destrucción y restablecer las versiones de secretos que están programadas para su destrucción.
Cuando destruyes una versión de secreto, el material secreto se destruye de forma inmediata y permanente. Como administrador de Secret Manager, puedes configurar la destrucción retrasada de las versiones de secretos para que no se destruyan de inmediato cuando se soliciten y se puedan recuperar durante una duración configurable.
Cuando la destrucción diferida está habilitada en el Secret y destruyes una versión de Secret, ocurre lo siguiente:
- La versión está inhabilitada, lo que impide su uso.
- El sistema programa la versión para su destrucción permanente al final del período de demora.
- Después de que venza el período de demora, la versión del secreto se destruirá de forma irrevocable y permanente.
Beneficios
Esta función ofrece los siguientes beneficios:
Una capa adicional de protección contra la destrucción accidental o maliciosa de material secreto fundamental Cualquier usuario con el rol de Administrador de versiones de secretos de Secret Manager puede destruir una versión de secreto. Esta acción es irreversible. Si configuras la destrucción diferida, puedes evitar la destrucción inmediata de las versiones del secreto. Puedes otorgar a los usuarios el acceso mínimo necesario para administrar el ciclo de vida de las versiones de secretos, ya que puedes supervisar y evitar cualquier destrucción accidental de datos sensibles.
La destrucción de una versión de secreto activa una notificación SECRET_VERSION_DESTROY_SCHEDULED en los temas de Pub/Sub configurados en el secreto. Como administrador de Secret Manager, puedes cancelar la destrucción programada y restablecer la versión secreta. Para ello, debes habilitar o inhabilitar la versión secreta.
Antes de comenzar
Enable the Secret Manager API.
Configura la autenticación.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.
Roles obligatorios
Para obtener los permisos que necesitas para configurar la destrucción diferida de versiones de secretos, pídele a tu administrador que te otorgue el rol de administrador de Secret Manager (
roles/secretmanager.admin
) en el secreto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Cómo configurar la destrucción demorada
Puedes habilitar la destrucción diferida de una versión de Secret cuando lo creas o cuando lo actualizas.
Console
En la consola de Google Cloud, ve a la página Secret Manager.
Sigue los pasos necesarios para crear un Secret.
Ve a la sección Retrasar la destrucción de la versión del secreto.
Selecciona la casilla de verificación Establecer la duración de la destrucción demorada.
En el campo Destruction delay duration, ingresa la duración en días. El valor mínimo que puedes ingresar es de 1 día, mientras que el valor máximo es de 1,000 días.
Haz clic en Crear secreto.
Para habilitar esta función en un Secret existente, ve a la página Editar Secret y, luego, configura la duración de la demora de destrucción.
gcloud
Para configurar la duración de la demora de destrucción en el secreto, usa el comando gcloud secrets create.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- SECRET_ID: El ID del secreto o el identificador completamente calificado del secreto.
- TTL_DURATION: Es la duración de la demora de destrucción de las versiones del secreto. Puedes ingresar la duración en cualquier formato, por ejemplo, días, horas o segundos. La duración mínima requerida es de 1 día, mientras que la duración máxima se puede establecer en 1,000 días.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION
Windows (PowerShell)
gcloud secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION
Windows (cmd.exe)
gcloud secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION
La respuesta contiene el Secret recién creado.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID del proyecto de Google Cloud.
- SECRET_ID: El ID del secreto o el identificador completamente calificado del secreto.
- TTL_DURATION: Es la duración de la demora de destrucción para las versiones del secreto. Ingresa la duración en segundos. Ten en cuenta que la duración mínima requerida es de 1 día, mientras que la duración máxima se puede establecer en 1,000 días.
Método HTTP y URL:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID
Cuerpo JSON de la solicitud:
{"replication": {"automatic": {}}, "version_destroy_ttl":"TTL_DURATION"}
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.googleapis.com/v1/projects/PROJECT_ID/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.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name":"projects/PROJECT_ID/secrets/SECRET_ID", "replication":{ "automatic":{ } }, "createTime":"2023-10-16T17:10:16.345401Z", "etag":"\"1607d90ee3d84c\"", "versionDestroyTtl":"TTL_DURATION" }
La destrucción diferida no se aplica en las siguientes situaciones:
- Cuando se borra un Secret, todo el material secreto y las versiones de Secret relacionadas se borran de inmediato.
- Cuando se establece una fecha de vencimiento en el Secret y este vence, todas las versiones del Secret se destruyen de inmediato, incluso si la destrucción diferida está habilitada en el Secret.
Actualiza la duración del retraso de la destrucción
Console
En la consola de Google Cloud, ve a la página Secret Manager.
Edita tu secreto con una de las siguientes opciones:
- Haz clic en Más acciones asociado con el secreto que deseas editar y, luego, selecciona Editar en el menú.
- Haz clic en el nombre del secret para ir a la página Detalles del secret. En la página Detalles del secreto, haz clic en Editar secreto.
Ve a la sección Retrasar la destrucción de la versión del secreto.
En el campo Destruction delay duration, ingresa la duración actualizada.
Haz clic en Actualizar secreto.
gcloud
Para actualizar la duración de la demora de destrucción, usa el comando gcloud secrets update.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
- TTL_DURATION: Es la duración de la demora de destrucción de las versiones del secreto.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION
Windows (PowerShell)
gcloud secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION
Windows (cmd.exe)
gcloud secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION
La respuesta contiene el Secret recién creado.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
- TTL_DURATION: Es la duración de la demora de destrucción de las versiones del secreto.
Método HTTP y URL:
PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl
Cuerpo JSON de la solicitud:
{ "version_destroy_ttl":"TTL_DURATION" }
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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl"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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name":"projects/PROJECT_ID/secrets/SECRET_ID", "replication":{ "automatic":{ } }, "createTime":"2023-10-16T17:10:16.345401Z", "etag":"\"1607d90ee3d84c\"", "versionDestroyTtl":"TTL_DURATION" }
Las versiones de secretos que se ven afectadas por la duración de la demora en la destrucción dependen de lo siguiente:
- Cuando se configura la destrucción diferida por primera vez en el Secret, la duración del retraso de destrucción afecta a todas las versiones activas (habilitadas e inhabilitadas) del Secret.
- Cuando se actualiza o quita la duración de la demora de destrucción, los cambios solo se reflejan en las versiones de Secret nuevas en las que se intenta la acción de destrucción. Las versiones de Secret que ya están programadas para su destrucción se seguirán destruyendo en el momento programado.
Inhabilita la destrucción diferida
Console
En la consola de Google Cloud, ve a la página Secret Manager.
Edita tu secreto con una de las siguientes opciones:
- Haz clic en Más acciones asociado con el secreto que deseas editar y, luego, selecciona Editar en el menú.
- Haz clic en el nombre del secret para ir a la página Detalles del secret. En la página Detalles del secreto, haz clic en Editar secreto.
Ve a la sección Retrasar la destrucción de la versión del secreto.
Desmarca la casilla de verificación Establecer la duración de la destrucción demorada.
Haz clic en Actualizar secreto.
gcloud
Para quitar la duración de la demora de destrucción, usa el comando gcloud secrets update.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets update SECRET_ID --remove-version-destroy-ttl
Windows (PowerShell)
gcloud secrets update SECRET_ID --remove-version-destroy-ttl
Windows (cmd.exe)
gcloud secrets update SECRET_ID --remove-version-destroy-ttl
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
Método HTTP y URL:
PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl
Cuerpo JSON de la solicitud:
{}
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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl"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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name":"projects/PROJECT_ID/secrets/SECRET_ID", "replication":{ "automatic":{ } }, "createTime":"2023-10-16T17:10:16.345401Z", "etag":"\"1607d90ee3d84c\"" }
Prueba la destrucción demorada de las versiones de secretos
Console
En la consola de Google Cloud, ve a la página Secret Manager.
Haz clic en el nombre del secreto. Aparecerá la página Secret details.
En la página Detalles del secreto, en la tabla Versiones, selecciona una versión de secreto.
En la columna Acciones, haz clic en
Ver más y, luego, en Destruir.En el cuadro de diálogo que aparece, haz clic en Programar la destrucción de las versiones seleccionadas.
gcloud
Para destruir una versión de un Secret, usa el comando gcloud secrets versions destroy.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- SECRET_VERSION_ID: el ID de la versión o el identificador completamente calificado de la versión
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID
Windows (PowerShell)
gcloud secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID
Windows (cmd.exe)
gcloud secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
- VERSION_ID: el ID de la versión o el identificador completamente calificado de la versión
Método HTTP y URL:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:destroy
Cuerpo JSON de la solicitud:
{}
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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:destroy"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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:destroy" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name":"projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID", "createTime":"2023-10-16T17:21:55.920036Z", "state":"DISABLED", "replicationStatus":{ "automatic":{ } }, "etag":"\"1607d8b2fc1cf4\"", "scheduledDestroyTime":"2023-10-16T17:26:57.459395960Z" }
La versión del secreto se inhabilita de inmediato y se programa para su destrucción después de que venza la duración de la demora en la destrucción. Puedes ver la fecha y hora exactas en las que se destruirá la versión en la columna Programada para destrucción el de la tabla Versiones.
Cómo restablecer versiones de secretos
Puedes habilitar o inhabilitar una versión de secreto programada para su destrucción.
Habilita una versión de Secret que está programada para su destrucción
Console
En la consola de Google Cloud, ve a la página Secret Manager.
Haz clic en el nombre del secreto. Aparecerá la página Secret details.
En la página Detalles del secreto, en la tabla Versiones, selecciona una versión de secreto que esté programada para su destrucción.
En la columna Acciones, haz clic en
Ver más y, luego, en Habilitar.En el cuadro de diálogo que aparece, haz clic en Habilitar versiones seleccionadas.
gcloud
Para habilitar una versión de Secret que está programada para su destrucción, usa el comando gcloud secrets versions enable.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- SECRET_VERSION_ID: el ID de la versión o el identificador completamente calificado de la versión
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID
Windows (PowerShell)
gcloud secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID
Windows (cmd.exe)
gcloud secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
- VERSION_ID: el ID de la versión o el identificador completamente calificado de la versión
Método HTTP y URL:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:enable
Cuerpo JSON de la solicitud:
{}
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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:enable"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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:enable" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name": "projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID", "createTime": "2024-09-04T06:41:57.859674Z", "state": "ENABLED", "etag": "\"1621457b3c1459\"" }
Inhabilita una versión de un Secret que está programada para su destrucción
Console
En la consola de Google Cloud, ve a la página Secret Manager.
Haz clic en el nombre del secreto. Aparecerá la página Secret details.
En la página Detalles del secreto, en la tabla Versiones, selecciona una versión de secreto que esté programada para su destrucción.
En la columna Acciones, haz clic en
Ver más y, luego, en Inhabilitar.En el cuadro de diálogo que aparece, haz clic en Inhabilitar las versiones seleccionadas.
gcloud
Para inhabilitar una versión de Secret que está programada para destruirse, usa el comando gcloud secrets versions disable.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- SECRET_VERSION_ID: el ID de la versión o el identificador completamente calificado de la versión
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID
Windows (PowerShell)
gcloud secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID
Windows (cmd.exe)
gcloud secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID
La respuesta contiene la versión inhabilitada del secreto.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
- VERSION_ID: el ID de la versión o el identificador completamente calificado de la versión
Método HTTP y URL:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:disable
Cuerpo JSON de la solicitud:
{}
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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:disable"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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:disable" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name":"projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID", "createTime":"2023-10-16T17:21:55.920036Z", "state":"DISABLED", "replicationStatus":{ "automatic":{ } }, "etag":"\"1607d8b3e8e1bc\"" }
¿Qué sigue?
- Obtén más información para garantizar la integridad de los datos.
- Obtén información sobre las prácticas recomendadas.
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-12-22 (UTC)