本页介绍了如何为新密钥或现有密钥设置到期日期、更改现有密钥的到期日期,以及从密钥中移除之前设置的任何到期日期。
概览
默认情况下,存储在 Secret Manager 中的 Secret 会一直保留,直到用户将其删除。如果 Secret 只能存储一段已知的有限时间,您可以为其附加到期时间。密文在配置的到期时间到达后,系统会自动将其删除。
如果您没有必须删除密文的要求,请考虑使用 IAM Conditions 或已停用版本状态以安全方式撤消访问权限。
您可以将到期时间输入为时间戳或时长。检索密文元数据时,无论到期时间的提供方式如何,到期时间都会始终以时间戳的形式返回。
您可以随时添加、更新或移除密文的到期时间。
限制
-
密文的到期时间不能小于 60 秒或 100 年以上。
安全使用到期的密文
密文在 Secret Manager 中到期后,密文会以不可逆转的方式删除。如需检测即将到期的密文,最好的方法是在到期之前使用 IAM Conditions 移除使用密文的账号的权限。
如需有效管理对密钥的访问权限,请为授予的权限设置基于时间的条件。
-
设置失效日期:权限应在密钥本身设置的失效日期之前失效。这样,您就可以找出可能仍在意外使用该 Secret 的所有工作流或进程。
-
监控中断情况:如果撤消权限后任何工作流都无法正常运行,您可以快速恢复访问权限,以最大限度地减少任何影响。
-
根据需要进行调整:如果您发现需要更多时间,可以延长密文的到期日期,如果不再需要,甚至可以将其彻底移除。
此外,您还可以根据日志创建提醒,提醒您密文即将过期。如需了解详情,请参阅本文档的到期日志记录部分。
指定时间戳和时长
-
时间戳值必须采用 RFC 3339 格式,例如
2100-01-01T09:00:00-05:00
。 -
时长值的格式必须为秒数,包括 s 后缀,例如
86400s
。
设置密文的到期日期
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Secret Manager API 为密钥设置到期日期和时间。
控制台
-
转到 Google Cloud 控制台中的 Secret Manager 页面。
-
在 Secret Manager 页面上,点击区域性 Secret 标签页,然后点击创建区域性 Secret。
-
在创建地区性 Secret 页面上的名称字段中,输入 Secret 的名称。
-
为 Secret 输入一个值(例如
abcd1234
)。您还可以使用上传文件选项上传包含 Secret 值的文本文件。此操作会自动创建 Secret 版本。 -
从区域列表中选择要存储区域级密钥的位置。
-
前往到期日期,然后选中设置到期日期复选框。
-
请以 月/日/年、小时:分钟(上午/下午)格式输入失效日期和时间,例如
7/31/20, 1:00 AM
。您还可以使用日期和时间选择器输入到期日期和时间。 -
点击创建密钥。
gcloud
使用时间戳创建到期的密文
在使用下面的命令数据之前,请先进行以下替换:
- SECRET_ID:Secret 的 ID 或 Secret 的完全限定标识符
- LOCATION:密钥的 Google Cloud 位置
- TIMESTAMP:采用 RFC 3339 格式的到期时间,例如
2100-01-01T09:00:00-05:00
执行以下命令:
Linux、macOS 或 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"
使用时长创建到期的密文
在使用下面的命令数据之前,请先进行以下替换:
- SECRET_ID:Secret 的 ID 或 Secret 的完全限定标识符
- LOCATION:密钥的 Google Cloud 位置
- DURATION:到期时长(以秒为单位),例如
86400s
执行以下命令:
Linux、macOS 或 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
使用时间戳创建到期的密文
在使用任何请求数据之前,请先进行以下替换:
- LOCATION:密钥的 Google Cloud 位置
- PROJECT_ID:Google Cloud 项目 ID
- SECRET_ID:Secret 的 ID 或 Secret 的完全限定标识符
- TIMESTAMP:采用 RFC 3339 格式的到期时间,例如
2100-01-01T09:00:00-05:00
HTTP 方法和网址:
POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets?secretId=$SECRET_ID
请求 JSON 正文:
{"expire_time": "TIMESTAMP"}
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
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
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$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
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
使用时长创建到期的密文
在使用任何请求数据之前,请先进行以下替换:
- LOCATION:密钥的 Google Cloud 位置
- PROJECT_ID:Google Cloud 项目 ID
- SECRET_ID:Secret 的 ID 或 Secret 的完全限定标识符
- DURATION:到期时长(以秒为单位),例如
86400s
HTTP 方法和网址:
POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID
请求 JSON 正文:
{"ttl": "DURATION"}
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
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
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$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
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
更新密钥的失效日期
如需更新密文的到期日期和时间,请使用以下方法之一:
控制台
-
转到 Google Cloud 控制台中的 Secret Manager 页面。
-
在 Secret Manager 页面上,点击 Regional secrets(区域级 Secret)标签页。
-
如需修改密钥,请在列表中找到相应密钥,然后点击与该密钥关联的
Actions 菜单。在操作菜单中,点击修改。 -
前往到期时间部分。更新到期日期和时间,然后点击更新密钥。
gcloud
使用时间戳更新密文的到期时间
在使用下面的命令数据之前,请先进行以下替换:
- SECRET_ID:Secret 的 ID 或 Secret 的完全限定标识符
- LOCATION:您存储 Secret 数据的 Google Cloud 区域
- TIMESTAMP:采用 RFC 3339 格式的到期时间,例如
2100-01-01T09:00:00-05:00
执行以下命令:
Linux、macOS 或 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"
使用时长更新密文的到期时间
在使用下面的命令数据之前,请先进行以下替换:
- SECRET_ID:Secret 的 ID 或 Secret 的完全限定标识符
- LOCATION:密钥的 Google Cloud 位置
- DURATION:到期时长(以秒为单位),例如
86400s
执行以下命令:
Linux、macOS 或 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
使用时间戳更新密文的到期时间
在使用任何请求数据之前,请先进行以下替换:
- LOCATION:密钥的 Google Cloud 位置
- PROJECT_ID:Google Cloud 项目 ID
- SECRET_ID:Secret 的 ID 或 Secret 的完全限定标识符
- TOKEN:您自己的 Oauth2.0 访问令牌
- TIMESTAMP:采用 RFC 3339 格式的到期时间,例如
2100-01-01T09:00:00-05:00
HTTP 方法和网址:
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=expire_time
请求 JSON 正文:
{"expire_time": "TIMESTAMP"}
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
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
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$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
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
使用时长更新密文的到期时间
在使用任何请求数据之前,请先进行以下替换:
- LOCATION:密钥的 Google Cloud 位置
- PROJECT_ID:Google Cloud 项目 ID
- SECRET_ID:Secret 的 ID 或 Secret 的完全限定标识符
- DURATION:到期时长(以秒为单位),例如
86400s
HTTP 方法和网址:
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=ttl
请求 JSON 正文:
{"ttl": "DURATION"}
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
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
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$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
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
移除密文的到期日期
如需移除密文的到期日期和时间,请使用以下方法之一:
控制台
-
转到 Google Cloud 控制台中的 Secret Manager 页面。
-
在 Secret Manager 页面上,点击 Regional secrets(区域级 Secret)标签页。
-
如需修改密钥,请在列表中找到相应密钥,然后点击与该密钥关联的
Actions 菜单。在操作菜单中,点击修改。 -
前往到期时间部分。取消选中设置到期日期复选框,然后点击更新密文。
gcloud
在使用下面的命令数据之前,请先进行以下替换:
- SECRET_ID:Secret 的 ID 或 Secret 的完全限定标识符
- LOCATION:密钥的 Google Cloud 位置
执行以下命令:
Linux、macOS 或 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
在使用任何请求数据之前,请先进行以下替换:
- LOCATION:密钥的 Google Cloud 位置
- PROJECT_ID:Google Cloud 项目 ID
- SECRET_ID:Secret 的 ID 或 Secret 的完全限定标识符
- TOKEN:您自己的 Oauth2.0 访问令牌
HTTP 方法和网址:
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=ttl
请求 JSON 正文:
{}
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
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
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$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
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "etag": "\"162143305d282d\"" }
到期日志记录
当密钥自动过期时,系统不会生成 Cloud Audit Logs。Secret Manager 会按特定的时间间隔将日志写入 Secret Manager Secret 资源,一直到密文到期。
日志时间 | 密文事件类型 |
---|---|
到期之前的 30 天 | EXPIRES_IN_30_DAYS |
到期之前的 7 天 | EXPIRES_IN_7_DAYS |
到期之前的 1 天 | EXPIRES_IN_1_DAY |
到期之前的 6 小时 | EXPIRES_IN_6_HOURS |
到期之前的 1 小时 | EXPIRES_IN_1_HOUR |
到期时 | EXPIRED |
如需了解如何查看这些日志,请参阅日志记录快速入门指南。您可以创建基于日志的指标,并使用这些指标创建即将到期的提醒。