本頁說明如何為新密鑰或現有密鑰設定到期日、變更現有密鑰的到期日,以及從密鑰中移除先前設定的到期日。
總覽
根據預設,儲存在 Secret Manager 中的密鑰會一直存在,直到使用者刪除為止。如果密鑰只能在已知的一段時間內儲存,您可以為密鑰附加到期時間。密鑰會在設定的到期時間自動刪除。
如果沒有必須刪除密鑰的要求,請考慮使用 IAM 條件或「已停用」版本狀態,以安全的方式撤銷存取權。
您可以輸入時間戳記或時間長度做為有效期限。擷取密鑰中繼資料時,無論到期時間的提供方式為何,系統一律會以時間戳記的形式傳回。
您隨時可以新增、更新或移除密鑰的到期時間。
限制
-
密鑰的到期時間不得少於 60 秒,也不得超過 100 年。
安全使用會過期的密鑰
Secret Manager 中的密鑰到期後,會永久刪除。如要偵測即將過期的密鑰,最好的方法是使用 IAM 條件,在密鑰過期前移除使用該密鑰的帳戶權限。
如要有效管理密鑰存取權,請為授予的權限設定時間條件。
-
設定有效期限:權限的到期日應略早於密鑰到期日。這有助於找出可能仍在使用密鑰的任何工作流程或程序。
-
監控中斷情形:如果權限遭撤銷後,任何工作流程停止運作,您可以快速還原存取權,盡量減少影響。
-
視需要調整:如果發現需要更多時間,可以延長密鑰的到期日,或在不再需要時完全移除密鑰。
此外,您也可以根據記錄建立快訊,在密鑰即將到期時收到警告。詳情請參閱本文件的「記錄到期時間」一節。
指定時間戳記和時間長度
-
時間戳記值必須採用 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」(密鑰管理工具) 頁面中,按一下「Create secret」(建立密鑰)。
-
在「建立密鑰」頁面的「名稱」欄位中,輸入密鑰名稱。
-
輸入密鑰值 (例如
abcd1234
)。您也可以使用「上傳檔案」選項,上傳含有密鑰值的文字檔。這項動作會自動建立密鑰版本。 -
前往「有效期限」,然後勾選「設定到期日」核取方塊。
-
以「月/日/年,時:分 AM/PM」格式輸入到期日期和時間, 例如
7/31/20, 1:00 AM
。您也可以使用日期和時間挑選器輸入到期日期和時間。 -
按一下「建立密鑰」。
gcloud
使用時間戳記建立會過期的密鑰
使用下方的任何指令資料之前,請先替換以下項目:
- SECRET_ID:密鑰的 ID 或密鑰的完整 ID
- TIMESTAMP:RFC 3339 格式的到期時間,例如
2100-01-01T09:00:00-05:00
執行下列指令:
Linux、macOS 或 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"
使用時間長度建立會過期的密鑰
使用下方的任何指令資料之前,請先替換以下項目:
- SECRET_ID:密鑰的 ID 或密鑰的完整 ID
- DURATION:到期時間長度 (以秒為單位),例如
86400s
執行下列指令:
Linux、macOS 或 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
使用時間戳記建立會過期的密鑰
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID Google Cloud
- SECRET_ID:密鑰的 ID 或密鑰的完整 ID
- TIMESTAMP:RFC 3339 格式的到期時間,例如
2100-01-01T09:00:00-05:00
HTTP 方法和網址:
POST https://secretmanager.googleapis.com/v1/projects/$PROJECT_ID/secrets?secretId=$SECRET_ID
JSON 要求主體:
{ "replication": {"automatic": {}}, "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.googleapis.com/v1/projects/$PROJECT_ID/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.googleapis.com/v1/projects/$PROJECT_ID/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\"" }
使用時間長度建立會過期的密鑰
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID Google Cloud
- SECRET_ID:密鑰的 ID 或密鑰的完整 ID
- DURATION:到期時間長度 (以秒為單位),例如
86400s
HTTP 方法和網址:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID
JSON 要求主體:
{ "replication": {"automatic": {}}, "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.googleapis.com/v1/projects/PROJECT_ID/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.googleapis.com/v1/projects/PROJECT_ID/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」頁面。
-
如要編輯密鑰,請在清單中找出密鑰,然後按一下與該密鑰相關聯的「動作」
選單。在「動作」選單中,按一下「編輯」。 -
前往「有效期限」部分。更新到期日期和時間,然後按一下「更新密鑰」。
gcloud
使用時間戳記更新密鑰的到期時間
使用下方的任何指令資料之前,請先替換以下項目:
- SECRET_ID:密鑰的 ID 或密鑰的完整 ID
- TIMESTAMP:RFC 3339 格式的到期時間,例如
2100-01-01T09:00:00-05:00
執行下列指令:
Linux、macOS 或 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"
使用時間長度更新密鑰的到期時間
使用下方的任何指令資料之前,請先替換以下項目:
- SECRET_ID:密鑰的 ID 或密鑰的完整 ID
- DURATION:到期時間長度 (以秒為單位),例如
86400s
執行下列指令:
Linux、macOS 或 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
使用時間戳記更新密鑰的到期時間
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID Google Cloud
- SECRET_ID:密鑰的 ID 或密鑰的完整 ID
- TOKEN:您自己的 Oauth2.0 存取權杖
- TIMESTAMP:RFC 3339 格式的到期時間,例如
2100-01-01T09:00:00-05:00
HTTP 方法和網址:
PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/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.googleapis.com/v1/projects/PROJECT_ID/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.googleapis.com/v1/projects/PROJECT_ID/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\"" }
使用時間長度更新密鑰的到期時間
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID Google Cloud
- SECRET_ID:密鑰的 ID 或密鑰的完整 ID
- DURATION:到期時間長度 (以秒為單位),例如
86400s
HTTP 方法和網址:
PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/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.googleapis.com/v1/projects/PROJECT_ID/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.googleapis.com/v1/projects/PROJECT_ID/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」頁面。
-
如要編輯密鑰,請在清單中找出密鑰,然後按一下與該密鑰相關聯的「Actions」(動作)
選單。在「動作」選單中,按一下「編輯」。 -
前往「有效期限」部分。取消勾選「設定到期日」核取方塊,然後按一下「更新密鑰」。
gcloud
使用下方的任何指令資料之前,請先替換以下項目:
- SECRET_ID:密鑰的 ID 或密鑰的完整 ID
執行下列指令:
Linux、macOS 或 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
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID Google Cloud
- SECRET_ID:密鑰的 ID 或密鑰的完整 ID
- TOKEN:您自己的 Oauth2.0 存取權杖
HTTP 方法和網址:
PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time
JSON 要求主體:
{}
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
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
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
$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
您應該會收到如下的 JSON 回應:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "etag": "\"162143305d282d\"" }
記錄到期時間
密鑰自動過期時,系統不會產生 Cloud 稽核記錄。 Secret Manager 不會傳送通知,而是會在密鑰到期前,以特定間隔將記錄寫入 Secret Manager Secret 資源。
記錄時間 | 祕密事件類型 |
---|---|
30 days before expiration | 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 |
如要瞭解如何查看這些記錄,請參閱 Logging 快速入門指南。您可以建立記錄指標,並使用這些指標為即將到期的憑證建立快訊。