Retrasar la destrucción de las versiones del Secret

En esta página, se explica cómo configurar la demora en la destrucción de las versiones del Secret, la actualización o quitar la duración del retraso de la destrucción y restablecer las versiones programadas para su destrucción.

Cuando destruyes una versión de un secreto, el material del secreto se destruye de inmediato y de forma permanente. Como administrador de Secret Manager, puedes configurar la demora en la destrucción de versiones de Secrets, para que la versión del Secret no se destruya inmediatamente después y sigue siendo recuperable durante un tiempo configurable.

Cuando se habilita la demora en la destrucción del secreto y destruyes uno versión, 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 retraso.
  • Una vez que vence el período de retraso, la versión del Secret es irrevocable y permanente antes de que se destruyan.

Beneficios

Esta función proporciona los siguientes beneficios:

Antes de comenzar

  • Habilita Secret Manager API.

    Habilita la 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.

    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

A fin de obtener los permisos que necesitas para configurar la demora en la destrucción de las versiones del Secret, solicita a tu administrador que te otorgue el Rol de IAM 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.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Configurar la demora en la destrucción

Puedes habilitar la demora en la destrucción de una versión del secreto cuando lo creas. o cuando actualizas el secreto.

Console

  1. En la consola de Google Cloud, ve a la página Secret Manager.

    Ir a Secret Manager

  2. Sigue los pasos necesarios para crear un secreto.

  3. Ve a la sección Retrasar la destrucción de la versión del secreto.

  4. Selecciona la casilla de verificación Establecer la duración para la demora en la destrucción.

  5. En el campo Duración del retraso de la destrucción, ingresa la duración en días. El valor mínimo que puede ingresar es de 1 día, mientras que el valor máximo es de 1,000 días.

  6. Haz clic en Crear secreto.

Para habilitar esta función en un secreto existente, ve a Editar secreto y, luego, configurarás la duración del retraso de la destrucción.

gcloud

Para configurar la duración de la demora en la destrucción del Secret, usa la Comando gcloud beta secret create.

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • SECRET_ID: Es el ID del secreto o el identificador completamente calificado del secreto.
  • TTL_DURATION: la duración del retraso de la destrucción del del Secret. Puedes ingresar la duración en cualquier formato, por ejemplo, días, horas o segundos. El La duración mínima requerida es de 1 día, mientras que la duración máxima puede establecerse en 1,000 días.

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud beta secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows (PowerShell)

gcloud beta secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows (cmd.exe)

gcloud beta secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION

La respuesta contiene el secreto recién creado.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es el ID del proyecto de Google Cloud en el que quieres crear el Secret
  • SECRET_ID: Es el ID del secreto o el identificador completamente calificado del secreto.
  • TTL_DURATION: Es la duración del retraso de la destrucción de las versiones del Secret. Ingresar y 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. hasta 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 Content

Deberí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 secreto, todo el material de este y las versiones de los Secrets relacionadas se borran de inmediato.
  • Cuando se configura una fecha de vencimiento en el Secret y este vence, todas las versiones del Secret se destruyen de inmediato, incluso si está habilitada la demora en la destrucción en el secreto.

Duración del retraso de la destrucción de las actualizaciones

Console

  1. En la consola de Google Cloud, ve a la página Secret Manager.

    Ir a Secret Manager

  2. Edita tu secreto mediante una de las siguientes opciones:

    • Haz clic en Más acciones asociadas con el Secret que quieres 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 En la página Detalles del Secret, haz clic en Editar Secret.
  3. Ve a la sección Retrasar la destrucción de la versión del secreto.

  4. En el campo Duración del retraso de la destrucción, ingresa la duración actualizada.

  5. Haz clic en Update Secret.

gcloud

Para actualizar la duración de la demora en la destrucción, usa la gcloud beta secret update.

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • SECRET_ID: Es el ID del secreto o el identificador completamente calificado del secreto.
  • TTL_DURATION: Es la duración del retraso de la destrucción de las versiones del Secret.

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud beta secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows (PowerShell)

gcloud beta secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows (cmd.exe)

gcloud beta secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION

La respuesta contiene el secreto actualizado.

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: Es el ID del secreto o el identificador completamente calificado del secreto.
  • TTL_DURATION: Es la duración del retraso de la destrucción de las versiones 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:

{
  "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 Content

Deberí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 del Secret que se ven afectadas por la duración del retraso de la destrucción dependen sobre lo siguiente:

  • Cuando se configura la demora en la destrucción por primera vez en el Secret, el La duración del retraso de la destrucción afecta a todas las versiones activas (habilitadas e inhabilitadas) del Secret.
  • Cuando se actualiza o quita la duración del retraso de la destrucción, los cambios se reflejan solo en las versiones nuevas del secreto en las que se intenta realizar la acción de destrucción. El secreto las versiones que ya están programadas para su destrucción seguirán siendo destruidas al momento de la destrucción programada.

Inhabilitar la demora en la destrucción

Console

  1. En la consola de Google Cloud, ve a la página Secret Manager.

    Ir a Secret Manager

  2. Edita tu secreto mediante una de las siguientes opciones:

    • Haz clic en Más acciones asociadas con el Secret que quieres 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 En la página Detalles del Secret, haz clic en Editar Secret.
  3. Ve a la sección Retrasar la destrucción de la versión del secreto.

  4. Desmarca la casilla de verificación Establecer la duración para la demora en la destrucción.

  5. Haz clic en Update Secret.

gcloud

Para quitar la duración de la demora en la destrucción, usa la gcloud beta secret update.

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • SECRET_ID: Es el ID del secreto o el identificador completamente calificado del secreto.

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud beta secrets update SECRET_ID --remove-version-destroy-ttl

Windows (PowerShell)

gcloud beta secrets update SECRET_ID --remove-version-destroy-ttl

Windows (cmd.exe)

gcloud beta secrets update SECRET_ID --remove-version-destroy-ttl

La respuesta contiene el secreto actualizado.

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: Es el ID del secreto o el identificador completamente calificado 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:

{}

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 Content

Deberí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 demora en la destrucción de las versiones del Secret

Console

  1. En la consola de Google Cloud, ve a la página Secret Manager.

    Ir a Secret Manager

  2. Haz clic en el nombre del Secret. Aparecerá la página Detalles del secreto.

  3. En la página Detalles del Secret, en la tabla Versiones, selecciona una versión del Secret.

  4. En la columna Acciones, haz clic en Ver más, y, luego, en Destruir.

  5. En el diálogo que aparece, haz clic en Programar destrucción de las versiones seleccionadas.

gcloud

Para destruir una versión del Secret, usa el Comando gcloud beta secret version destroy.

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • SECRET_VERSION_ID: Es el ID de la versión o el identificador completamente calificado de la versión.
  • SECRET_ID: Es el ID del secreto o el identificador completamente calificado del secreto.

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud beta secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID

Windows (PowerShell)

gcloud beta secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID

Windows (cmd.exe)

gcloud beta secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID

La respuesta contiene la versión destruida del Secret.

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: Es el ID del secreto o el identificador completamente calificado del secreto.
  • VERSION_ID: Es 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 Content

Deberí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 Secret se inhabilita de inmediato y se programa su destrucción después de vence la duración del retraso de la destrucción. Puedes ver la fecha y hora exactas en las que la versión se destruirá en la columna Destrucción programada para el en la tabla Versiones.

Restablecer versiones del Secret

Puedes restablecer una versión del Secret programada para su destrucción habilitando o inhabilitando la versión del Secret.

Habilita una versión del Secret programada para su destrucción

Console

  1. En la consola de Google Cloud, ve a la página Secret Manager.

    Ir a Secret Manager

  2. Haz clic en el nombre del Secret. Aparecerá la página Detalles del secreto.

  3. En la página Detalles del Secret, en la tabla Versiones, selecciona una versión del Secret. que está programada para su destrucción.

  4. En la columna Acciones, haz clic en Ver más, y, luego, haz clic en Habilitar.

  5. En el cuadro de diálogo que aparece, haz clic en Habilitar versiones seleccionadas.

gcloud

Para habilitar una versión del Secret programada para su destrucción, usa la Comando gcloud beta Secret Versions enable.

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • SECRET_VERSION_ID: Es el ID de la versión o el identificador completamente calificado de la versión.
  • SECRET_ID: Es el ID del secreto o el identificador completamente calificado del secreto.

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud beta secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID

Windows (PowerShell)

gcloud beta secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID

Windows (cmd.exe)

gcloud beta secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID

La respuesta contiene la versión habilitada del Secret.

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: Es el ID del secreto o el identificador completamente calificado del secreto.
  • VERSION_ID: Es 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 Content

Deberí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":"ENABLED",
  "replicationStatus":{
     "automatic":{

     }
  },
  "etag":"\"1607d8b3e8e1bc\""
}

Inhabilita una versión del Secret que está programada para su destrucción

Console

  1. En la consola de Google Cloud, ve a la página Secret Manager.

    Ir a Secret Manager

  2. Haz clic en el nombre del Secret. Aparecerá la página Detalles del secreto.

  3. En la página Detalles del Secret, en la tabla Versiones, selecciona una versión del Secret. que está programada para su destrucción.

  4. En la columna Acciones, haz clic en Ver más, Luego, haz clic en Inhabilitar.

  5. En el cuadro de diálogo que aparece, haz clic en Inhabilitar las versiones seleccionadas.

gcloud

Para inhabilitar una versión del Secret que está programada para su destrucción, usa la Comando gcloud beta secret updates deploy.

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • SECRET_VERSION_ID: Es el ID de la versión o el identificador completamente calificado de la versión.
  • SECRET_ID: Es el ID del secreto o el identificador completamente calificado del secreto.

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud beta secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID

Windows (PowerShell)

gcloud beta secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID

Windows (cmd.exe)

gcloud beta 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: Es el ID del secreto o el identificador completamente calificado del secreto.
  • VERSION_ID: Es 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 Content

Deberí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?