En esta página, se describe cómo establecer una fecha de vencimiento para un secreto nuevo o existente, cambiar la fecha de vencimiento de un secreto existente y quitar cualquier fecha de vencimiento establecida previamente de un secreto.
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 para 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 revocan los permisos, puedes restablecer el acceso rápidamente para minimizar el 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 es necesario.
Además, es posible crear alertas basadas en advertencias de registros de secretos que vencerán pronto. Para obtener más información, consulta la sección Registro de vencimiento de este documento.
Cómo especificar 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
.
Cómo establecer la fecha de vencimiento de un secreto
Puedes establecer una fecha y hora de vencimiento para un secreto con la consola de Google Cloud , Google Cloud CLI o la API de Secret Manager.
Console
-
En la consola de Google Cloud , ve a la página Secret Manager.
-
En la página de Secret Manager, haz clic en Crear secreto.
-
En la página Crear secreto, 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 secreto. -
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 AM/PM, 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: ID del secreto o identificador completamente calificado del secreto
- TIMESTAMP: Es 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 \ --replication-policy "automatic" \ --expire-time "TIMESTAMP"
Windows (PowerShell)
gcloud secrets create SECRET_ID ` --replication-policy "automatic" ` --expire-time "TIMESTAMP"
Windows (cmd.exe)
gcloud secrets create SECRET_ID ^ --replication-policy "automatic" ^ --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: ID del secreto o identificador completamente calificado 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 \ --replication-policy "automatic" \ --ttl "DURATION"
Windows (PowerShell)
gcloud secrets create SECRET_ID ` --replication-policy "automatic" ` --ttl "DURATION"
Windows (cmd.exe)
gcloud secrets create SECRET_ID ^ --replication-policy "automatic" ^ --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:
- PROJECT_ID: El Google Cloud ID del proyecto
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
- TIMESTAMP: Es 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.googleapis.com/v1/projects/$PROJECT_ID/secrets?secretId=$SECRET_ID
Cuerpo JSON de la solicitud:
{ "replication": {"automatic": {}}, "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.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/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:
- PROJECT_ID: El Google Cloud ID del proyecto
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
- DURATION: Es la duración del vencimiento en segundos, por ejemplo,
86400s
.
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": {}}, "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/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
-
En la consola de Google Cloud , ve a la página Secret Manager.
-
Para editar un secreto, ubícalo en la lista y, luego, haz clic en el menú
Acciones asociado a ese secreto. 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: ID del secreto o identificador completamente calificado del secreto
- TIMESTAMP: Es 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 \ --expire-time "TIMESTAMP"
Windows (PowerShell)
gcloud secrets update SECRET_ID ` --expire-time "TIMESTAMP"
Windows (cmd.exe)
gcloud secrets update SECRET_ID ^ --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: ID del secreto o identificador completamente calificado 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 \ --ttl "DURATION"
Windows (PowerShell)
gcloud secrets update SECRET_ID ` --ttl "DURATION"
Windows (cmd.exe)
gcloud secrets update SECRET_ID ^ --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:
- PROJECT_ID: El Google Cloud ID del proyecto
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
- TOKEN: Tu propio token de acceso de OAuth 2.0
- TIMESTAMP: Es 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.googleapis.com/v1/projects/PROJECT_ID/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.googleapis.com/v1/projects/PROJECT_ID/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.googleapis.com/v1/projects/PROJECT_ID/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:
- PROJECT_ID: El Google Cloud ID del proyecto
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
- DURATION: Es la duración del vencimiento en segundos, por ejemplo,
86400s
.
Método HTTP y URL:
PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/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.googleapis.com/v1/projects/PROJECT_ID/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.googleapis.com/v1/projects/PROJECT_ID/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\"" }
Cómo quitar 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
-
En la consola de Google Cloud , ve a la página Secret Manager.
-
Para editar un secreto, ubícalo en la lista y, luego, haz clic en el menú
Acciones asociado a ese secreto. 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 secreto.
gcloud
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets update SECRET_ID \ --remove-expiration
Windows (PowerShell)
gcloud secrets update SECRET_ID ` --remove-expiration
Windows (cmd.exe)
gcloud secrets update SECRET_ID ^ --remove-expiration
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El Google Cloud ID del proyecto
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
- TOKEN: Tu propio token de acceso de OAuth 2.0
Método HTTP y URL:
PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time
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.googleapis.com/v1/projects/PROJECT_ID/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.googleapis.com/v1/projects/PROJECT_ID/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", "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 sobre cómo ver estos registros. Puedes crear métricas basadas en registros y usarlas para crear alertas de próximos vencimientos.
¿Qué sigue?
- Obtén más información para configurar programas de rotación para los secretos.
- Obtén más información para habilitar las claves de encriptación administradas por el cliente (CMEK) para Secret Manager.