En esta página, se describe cómo establecer una fecha de vencimiento para un Secret nuevo o existente, cambiar la fecha de vencimiento de un Secret existente y quitar cualquier fecha de vencimiento establecida anteriormente de un Secret.
Descripción general
De forma predeterminada, los secretos almacenados en Secret Manager existen hasta que un usuario los borra. Si un secreto solo se debe almacenar por un tiempo limitado conocido, puedes adjuntarle un tiempo de vencimiento. En el momento de vencimiento configurado de un secreto, se borra de forma automática.
Si no tienes requisitos que requieran que se borre el secreto, considera usar las Condiciones de IAM o el estado de versión inhabilitada para revocar el acceso de manera segura.
Puedes ingresar una hora de vencimiento como una marca de tiempo o una duración. Cuando se recuperan metadatos de secreto, el vencimiento siempre se muestra como una marca de tiempo, sin importar cómo se proporcionó.
Se puede agregar, actualizar o quitar un vencimiento de un secreto en cualquier momento.
Limitaciones
-
El vencimiento de un secreto no puede estar a menos de 60 segundos o a más de 100 años de distancia.
Usa secretos vencidos de forma segura
Cuando un secreto vence en Secret Manager, se borra de forma irreversible. La mejor manera de detectar secretos que se vencen pronto es usar Condiciones de IAM para quitar los permisos de las cuentas que usan el secreto antes del vencimiento.
Para administrar el acceso a los secretos de manera eficaz, establece una condición basada en el tiempo en los permisos otorgados.
-
Establece una fecha de vencimiento: Los permisos deben vencer poco antes de que venza el secreto. Esto te permite identificar cualquier flujo de trabajo o proceso que aún pueda estar usando el secreto de forma inesperada.
-
Supervisa las interrupciones: Si algún flujo de trabajo deja de funcionar después de que se revoquen los permisos, puedes restablecer el acceso rápidamente para minimizar cualquier impacto.
-
Haz los ajustes necesarios: Si necesitas más tiempo, puedes extender la fecha de vencimiento del secreto o incluso quitarlo por completo si ya no lo necesitas.
Además, es posible crear alertas basadas en advertencias de registros de secretos que vencerán pronto. Para obtener información, consulta la sección Registro de vencimiento de este documento.
Especifica marcas de tiempo y duraciones
-
Los valores de la marca de tiempo deben tener el formato RFC 3339, por ejemplo,
2100-01-01T09:00:00-05:00
. -
Los valores de duración deben tener el formato de la cantidad de segundos, incluido el sufijo s, por ejemplo,
86400s
.
Establece la fecha de vencimiento de un secreto
Puedes establecer una fecha y hora de vencimiento en un secreto con la consola de Google Cloud, Google Cloud CLI o la API de Secret Manager.
Console
-
Ve a la página de Secret Manager en la consola de Google Cloud.
-
En la página de Secret Manager, haz clic en la pestaña Secretos regionales y, luego, en Crear secreto regional.
-
En la página Crear secreto regional, ingresa un nombre para el secreto en el campo Nombre.
-
Ingresa un valor para el secreto (por ejemplo,
abcd1234
). 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 Secret. -
En la lista Región, elige la ubicación en la que deseas que se almacene tu Secret regional.
-
Ve a Vencimiento y, luego, selecciona la casilla de verificación Establecer fecha de vencimiento.
-
Ingresa la fecha y hora de vencimiento en el formato Mes/Día/Año, Hora:Minuto a.m./p.m., por ejemplo,
7/31/20, 1:00 AM
. También puedes usar el selector de fecha y hora para ingresar la fecha y hora de vencimiento. -
Haz clic en Crear secreto.
gcloud
Crea un secreto vencido con una marca de tiempo
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
- LOCATION: La ubicación de Google Cloud del secreto
- TIMESTAMP: La hora de vencimiento en formato RFC 3339, por ejemplo,
2100-01-01T09:00:00-05:00
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets create SECRET_ID --location=LOCATION \ --expire-time "TIMESTAMP"
Windows (PowerShell)
gcloud secrets create SECRET_ID --location=LOCATION ` --expire-time "TIMESTAMP"
Windows (cmd.exe)
gcloud secrets create SECRET_ID --location=LOCATION ^ --expire-time "TIMESTAMP"
Crea un secreto vencido con una duración
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
- LOCATION: La ubicación de Google Cloud del secreto
- DURATION: Es la duración del vencimiento en segundos, por ejemplo,
86400s
.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets create SECRET_ID --location=LOCATION \ --ttl "DURATION"
Windows (PowerShell)
gcloud secrets create SECRET_ID --location=LOCATION ` --ttl "DURATION"
Windows (cmd.exe)
gcloud secrets create SECRET_ID --location=LOCATION ^ --ttl "DURATION"
REST
Crea un secreto vencido con una marca de tiempo
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: La ubicación de Google Cloud del secreto
- PROJECT_ID: El ID del proyecto de Google Cloud
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
- TIMESTAMP: La hora de vencimiento en formato RFC 3339, por ejemplo,
2100-01-01T09:00:00-05:00
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:
{"expire_time": "TIMESTAMP"}
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-09-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
Crea un secreto vencido con una duración
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: La ubicación de Google Cloud del secreto
- PROJECT_ID: El ID del proyecto de Google Cloud
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
- DURATION: Es la duración del vencimiento en segundos, por ejemplo,
86400s
.
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:
{"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.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-09-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
Actualiza la fecha de vencimiento de un secreto
Para actualizar la fecha y hora de vencimiento del secreto, usa uno de los siguientes métodos:
Console
-
Ve a la página de Secret Manager en la consola de Google Cloud.
-
En la página de Secret Manager, haz clic en la pestaña Secretos regionales.
-
Para editar un Secret, búscalo en la lista y, luego, haz clic en el menú
Acciones asociado con ese Secret. En el menú Acciones, haz clic en Editar. -
Ve a la sección Vencimiento. Actualiza la fecha y hora de vencimiento, y haz clic en Actualizar secreto.
gcloud
Actualiza el vencimiento de un secreto con una marca de tiempo
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
- LOCATION: La región de Google Cloud en la que almacenaste los datos secretos
- TIMESTAMP: La hora de vencimiento en formato RFC 3339, por ejemplo,
2100-01-01T09:00:00-05:00
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets update SECRET_ID --location=LOCATION \ --expire-time "TIMESTAMP"
Windows (PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION ` --expire-time "TIMESTAMP"
Windows (cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION ^ --expire-time "TIMESTAMP"
Actualiza el vencimiento de un secreto con una duración
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
- LOCATION: La ubicación de Google Cloud del secreto
- DURATION: Es la duración del vencimiento en segundos, por ejemplo,
86400s
.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets update SECRET_ID --location=LOCATION \ --ttl "DURATION"
Windows (PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION ` --ttl "DURATION"
Windows (cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION ^ --ttl "DURATION"
REST
Actualiza el vencimiento de un secreto con una marca de tiempo
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: La ubicación de Google Cloud del secreto
- PROJECT_ID: El ID del proyecto de Google Cloud
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
- TOKEN: Tu propio token de acceso de Oauth2.0
- TIMESTAMP: La hora de vencimiento en formato RFC 3339, por ejemplo,
2100-01-01T09:00:00-05:00
Método HTTP y URL:
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=expire_time
Cuerpo JSON de la solicitud:
{"expire_time": "TIMESTAMP"}
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 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=expire_time"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$headers = @{ "Authorization" = "Bearer TOKEN" }
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=expire_time" | 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-09-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
Actualiza el vencimiento de un secreto con una duración
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: La ubicación de Google Cloud del secreto
- PROJECT_ID: El ID del proyecto de Google Cloud
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
- DURATION: Es la duración del vencimiento en segundos, por ejemplo,
86400s
.
Método HTTP y URL:
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=ttl
Cuerpo JSON de la solicitud:
{"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 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=ttl"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$headers = @{ "Authorization" = "Bearer TOKEN" }
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=ttl" | 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-09-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
Quita la fecha de vencimiento de un secreto
Para quitar la fecha y hora de vencimiento del secreto, usa uno de los siguientes métodos:
Console
-
Ve a la página de Secret Manager en la consola de Google Cloud.
-
En la página de Secret Manager, haz clic en la pestaña Secretos regionales.
-
Para editar un Secret, búscalo en la lista y, luego, haz clic en el menú
Acciones asociado con ese Secret. En el menú Acciones, haz clic en Editar. -
Ve a la sección Vencimiento. Desmarca la casilla de verificación Establecer fecha de vencimiento y, luego, haz clic en Actualizar Secret.
gcloud
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
- LOCATION: La ubicación de Google Cloud del secreto
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets update SECRET_ID --location=LOCATION \ --remove-expiration
Windows (PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION ` --remove-expiration
Windows (cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION ^ --remove-expiration
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: La ubicación de Google Cloud del secreto
- PROJECT_ID: El ID del proyecto de Google Cloud
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
- TOKEN: Tu propio token de acceso de Oauth2.0
Método HTTP y URL:
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=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 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=ttl"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$headers = @{ "Authorization" = "Bearer TOKEN" }
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=ttl" | 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-09-04T03:58:38.200877Z", "etag": "\"162143305d282d\"" }
Registro de vencimiento
Los registros de auditoría de Cloud no se producen cuando un secreto vence automáticamente. En cambio, Secret Manager escribe registros en el recurso Secret de Secret Manager en intervalos específicos hasta llegar al vencimiento de un secreto.
Tiempo de registro | Tipo de evento secreto |
---|---|
30 días antes del vencimiento | EXPIRES_IN_30_DAYS |
7 días antes del vencimiento | EXPIRES_IN_7_DAYS |
1 día antes del vencimiento | EXPIRES_IN_1_DAY |
6 horas antes del vencimiento | EXPIRES_IN_6_HOURS |
1 hora antes del vencimiento | EXPIRES_IN_1_HOUR |
a su vencimiento | EXPIRED |
Consulta la guía de inicio rápido de Logging para obtener información para ver estos registros. Puedes crear métricas basadas en registros y usarlas para crear alertas de próximos vencimientos.