本頁面說明如何設定密鑰版本延遲刪除時長、更新或移除延遲刪除時長,以及還原排定刪除的密鑰版本。
根據預設,當使用者選擇刪除 Secret Manager 中的密鑰版本時,密鑰內容會立即永久刪除。不過,具備 Secret Manager 管理員角色的使用者可以設定延遲刪除密鑰版本,確保密鑰版本不會在收到要求後立即刪除,並在可設定的時間內保持可復原狀態。
如果密鑰已啟用延遲刪除功能,當您刪除密鑰版本時,會發生下列情況:
-
該版本已停用,因此無法使用。
-
系統會在延遲期結束時,安排永久刪除該版本。
-
延遲期限過後,密鑰版本就會永久刪除,無法復原。
優點
這項功能可帶來下列好處:
-
多一層保護,防止重要密鑰內容意外或惡意遭到破壞。任何具備 Secret Manager Secret 版本管理員角色的使用者,都可以刪除 Secret 版本。這項操作無法復原。設定延遲刪除後,系統就不會立即刪除密鑰版本。您可以授予使用者管理密碼版本生命週期的最低必要存取權,以便監控及防止機密資料遭到意外毀損。
-
銷毀密鑰版本會觸發
SECRET_VERSION_DESTROY_SCHEDULED通知 ,傳送至密鑰上設定的 Pub/Sub 主題。具備 Secret Manager 管理員角色的使用者,可以啟用或停用密鑰版本,取消排定的刪除作業並還原密鑰版本。
事前準備
-
啟用 Secret Manager API (如果尚未啟用)。
啟用 API 時所需的角色
如要啟用 API,您必須具備
serviceusage.services.enable權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。 -
設定驗證方法。
請根據您打算如何使用本頁範例,選取對應的分頁標籤:
控制台
使用 Cloud de Confiance 控制台存取 Cloud de Confiance by S3NS 服務和 API 時,不需要設定驗證。
gcloud
安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。 登入後,執行下列指令來初始化 Google Cloud CLI:
gcloud initREST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。
詳情請參閱 Cloud de Confiance 驗證說明文件中的「使用 REST 進行驗證」一節。
必要的角色
如要取得設定延遲刪除密鑰版本所需的權限,請要求管理員授予您密鑰的 Secret Manager 管理員 (roles/secretmanager.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
設定延遲刪除
您可以在建立或更新密鑰時,啟用密鑰版本的延遲刪除功能。如要設定延遲銷毀,請使用下列其中一種方法:
控制台
-
前往 Cloud de Confiance 控制台的「Secret Manager」頁面。
-
在「Secret Manager」頁面,點選「建立密鑰」。
-
在「建立密鑰」頁面的「名稱」欄位中,輸入密鑰名稱。
-
輸入密鑰的值 (例如
abcd1234)。您也可以使用「Upload file」(上傳檔案) 選項,上傳含有密鑰值的文字檔。這項操作會自動建立密鑰版本。 -
前往「Delay secret version destroy」(延遲刪除密鑰版本) 專區,然後勾選「Set duration for delayed destruction」(設定延遲刪除時間長度) 核取方塊。
-
在「銷毀延遲時間長度」欄位中,輸入延遲時間長度 (以天為單位)。可輸入的最小值為 1 天,最大值為 1000 天。
-
點選「建立密鑰」。
gcloud
使用下列任何指令資料前,請先替換以下項目:
- SECRET_ID:密鑰 ID。
- TTL_DURATION:密鑰版本的刪除延遲時間。你可以輸入任何格式的持續時間,例如天數、小時或秒數。最短為 1 天,最長可設為 1000 天。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION
Windows (PowerShell)
gcloud secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION
Windows (cmd.exe)
gcloud secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION
回應中會包含新建立的密鑰。
REST
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID: Cloud de Confiance by S3NS 專案 ID。
- SECRET_ID:密鑰 ID。
- TTL_DURATION:密鑰版本的刪除延遲時間。輸入時間長度 (以秒為單位)。請注意,最短期限為 1 天,最長期限可設為 1,000 天。
HTTP 方法和網址:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID
JSON 要求內文:
{"replication": {"automatic": {}}, "version_destroy_ttl":"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/secrets/SECRET_ID",
"replication":{
"automatic":{
}
},
"createTime":"2023-10-16T17:10:16.345401Z",
"etag":"\"1607d90ee3d84c\"",
"versionDestroyTtl":"TTL_DURATION"
}
延遲刪除不適用於下列情況:
-
刪除密鑰時,所有密鑰內容和相關密鑰版本都會立即刪除。
-
如果密鑰設有到期日,且密鑰已到期,則所有密鑰版本都會立即刪除,即使密鑰已啟用延遲刪除功能也一樣。
更新刪除延遲時長
如要更新銷毀延遲時間長度,請使用下列其中一種方法:
控制台
-
前往 Cloud de Confiance 控制台的「Secret Manager」頁面。
-
如要編輯密鑰,請使用下列其中一種方法:
-
按一下要編輯的密鑰 「Actions」(動作),然後點選「Edit」(編輯)。
-
按一下密鑰名稱,前往密鑰詳細資料頁面。在密鑰詳細資料頁面中,按一下「編輯密鑰」。
-
-
在「Edit secret」(編輯密鑰) 頁面中,前往「Delay secret version destroy」(延遲刪除密鑰版本) 區段。 視需要更新延遲時間,然後按一下「更新密鑰」。
gcloud
使用下列任何指令資料前,請先替換以下項目:
- SECRET_ID:密鑰 ID
- TTL_DURATION:密鑰版本的刪除延遲時間
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION
Windows (PowerShell)
gcloud secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION
Windows (cmd.exe)
gcloud secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION
回應中會包含新建立的密鑰。
REST
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID: Cloud de Confiance by S3NS 專案 ID
- SECRET_ID:Secret 的 ID
- TTL_DURATION:密鑰版本的刪除延遲時長
HTTP 方法和網址:
PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl
JSON 要求內文:
{
"version_destroy_ttl":"TTL_DURATION"
}
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
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
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
$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
您應該會收到如下的 JSON 回覆:
{
"name":"projects/PROJECT_ID/secrets/SECRET_ID",
"replication":{
"automatic":{
}
},
"createTime":"2023-10-16T17:10:16.345401Z",
"etag":"\"1607d90ee3d84c\"",
"versionDestroyTtl":"TTL_DURATION"
}
受刪除延遲時間影響的密鑰版本取決於下列因素:
-
首次為密鑰設定延遲刪除時,刪除延遲時間長度會影響密鑰的所有有效 (已啟用和已停用) 版本。
-
更新或移除刪除延遲時間後,只有在嘗試刪除新版密鑰時,才會反映相關變更。已排定刪除的密鑰版本仍會在排定時間刪除。
停用延遲刪除
如要停用延遲刪除版本功能,請使用下列其中一種方法:
控制台
-
前往 Cloud de Confiance 控制台的「Secret Manager」頁面。
-
如要編輯密鑰,請使用下列任一方法:
-
按一下要編輯的密鑰 「Actions」(動作),然後點選「Edit」(編輯)。
-
按一下密鑰名稱,前往密鑰詳細資料頁面。在密鑰詳細資料頁面中,按一下「編輯密鑰」。
-
-
在「Edit secret」(編輯密鑰) 頁面,前往「Delay secret version destroy」(延遲刪除密鑰版本) 區段。 取消勾選「Set duration for delayed destruction」(設定延遲刪除時長) 核取方塊,然後按一下「Update secret」(更新密鑰)。
gcloud
使用下列任何指令資料前,請先替換以下項目:
- SECRET_ID:Secret 的 ID
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud secrets update SECRET_ID --remove-version-destroy-ttl
Windows (PowerShell)
gcloud secrets update SECRET_ID --remove-version-destroy-ttl
Windows (cmd.exe)
gcloud secrets update SECRET_ID --remove-version-destroy-ttl
REST
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID: Cloud de Confiance by S3NS 專案 ID
- SECRET_ID:Secret 的 ID
HTTP 方法和網址:
PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl
JSON 要求內文:
{}
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
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
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
$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
您應該會收到如下的 JSON 回覆:
{
"name":"projects/PROJECT_ID/secrets/SECRET_ID",
"replication":{
"automatic":{
}
},
"createTime":"2023-10-16T17:10:16.345401Z",
"etag":"\"1607d90ee3d84c\""
}
排定延遲刪除密鑰版本
如要排定延遲刪除密鑰版本,請使用下列其中一種方法:
控制台
-
前往 Cloud de Confiance 控制台的「Secret Manager」頁面。
-
在「Secret Manager」頁面中,按一下密鑰即可存取其版本。必須為這組密鑰設定延遲刪除版本。
-
在密鑰詳細資料頁面的「Versions」(版本) 分頁中,選取要刪除的密鑰版本。
-
按一下「動作」,然後按一下「銷毀」。
-
在隨即顯示的確認對話方塊中輸入密鑰 ID,然後按一下「安排刪除所選版本」。
gcloud
使用下列任何指令資料之前,請先替換以下項目:
- SECRET_VERSION_ID:版本的 ID 或完整 ID
- SECRET_ID:密鑰 ID
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID
Windows (PowerShell)
gcloud secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID
Windows (cmd.exe)
gcloud secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID
REST
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID: Cloud de Confiance by S3NS 專案 ID
- SECRET_ID:Secret 的 ID
- VERSION_ID:版本的 ID 或完整 ID
HTTP 方法和網址:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:destroy
JSON 要求內文:
{}
如要傳送要求,請選擇以下其中一個選項:
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/SECRET_ID/versions/VERSION_ID:destroy"
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/SECRET_ID/versions/VERSION_ID:destroy" | Select-Object -Expand Content
您應該會收到如下的 JSON 回覆:
{
"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"
}
密鑰版本會立即停用,並在延遲刪除時間過後刪除。在「Versions」(版本) 表格的「Scheduled for destruction on」(排定刪除日期) 欄下方,可以查看版本刪除的確切日期和時間。
還原 Secret 版本
如要還原已排定刪除的密鑰版本,請啟用或停用該版本。
啟用已排定刪除的密鑰版本
如要啟用已排定刪除的密鑰版本,請使用下列其中一種方法:
控制台
-
前往 Cloud de Confiance 控制台的「Secret Manager」頁面。
-
在「Secret Manager」頁面中,按一下密鑰即可存取其版本。
-
在密鑰詳細資料頁面的「Versions」(版本) 分頁中,選取排定刪除的密鑰版本。
-
按一下「動作」,然後按一下「啟用」。
-
在隨即顯示的確認對話方塊中,按一下「啟用所選版本」。
gcloud
使用下列任何指令資料之前,請先替換以下項目:
- SECRET_VERSION_ID:版本的 ID 或完整 ID
- SECRET_ID:密鑰 ID
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID
Windows (PowerShell)
gcloud secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID
Windows (cmd.exe)
gcloud secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID
REST
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID: Cloud de Confiance by S3NS 專案 ID
- SECRET_ID:密鑰 ID
- VERSION_ID:版本的 ID 或完整 ID
HTTP 方法和網址:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:enable
JSON 要求內文:
{}
如要傳送要求,請選擇以下其中一個選項:
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/SECRET_ID/versions/VERSION_ID:enable"
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/SECRET_ID/versions/VERSION_ID:enable" | Select-Object -Expand Content
您應該會收到如下的 JSON 回覆:
{
"name":"projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID",
"createTime":"2023-10-16T17:21:55.920036Z",
"state":"ENABLED",
"replicationStatus":{
"automatic":{
}
},
"etag":"\"1607d8b3e8e1bc\""
}
停用已排定刪除作業的密鑰版本
如要停用已排定刪除的密鑰版本,請使用下列其中一種方法:
控制台
-
前往 Cloud de Confiance 控制台的「Secret Manager」頁面。
-
在「Secret Manager」頁面中,按一下密鑰即可存取其版本。
-
在密鑰詳細資料頁面的「Versions」(版本) 分頁中,選取排定刪除的密鑰版本。
-
依序點選 「Actions」(動作) 和「Disable」(停用)。
-
在隨即顯示的確認對話方塊中,按一下「停用所選版本」。
gcloud
使用下列任何指令資料之前,請先替換以下項目:
- SECRET_VERSION_ID:版本的 ID 或完整 ID
- SECRET_ID:密鑰 ID
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID
Windows (PowerShell)
gcloud secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID
Windows (cmd.exe)
gcloud secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID
回應包含已停用的密鑰版本。
REST
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID: Cloud de Confiance by S3NS 專案 ID
- SECRET_ID:密鑰 ID
- VERSION_ID:版本的 ID 或完整 ID
HTTP 方法和網址:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:disable
JSON 要求內文:
{}
如要傳送要求,請選擇以下其中一個選項:
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/SECRET_ID/versions/VERSION_ID:disable"
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/SECRET_ID/versions/VERSION_ID:disable" | Select-Object -Expand Content
您應該會收到如下的 JSON 回覆:
{
"name":"projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID",
"createTime":"2023-10-16T17:21:55.920036Z",
"state":"DISABLED",
"replicationStatus":{
"automatic":{
}
},
"etag":"\"1607d8b3e8e1bc\""
}