延遲刪除密鑰版本

本頁面說明如何設定密鑰版本延遲刪除時長、更新或移除延遲刪除時長,以及還原排定刪除的密鑰版本。

根據預設,當使用者選擇刪除 Secret Manager 中的密鑰版本時,密鑰內容會立即永久刪除。不過,具備 Secret Manager 管理員角色的使用者可以設定延遲刪除密鑰版本,確保密鑰版本不會在收到要求後立即刪除,並在可設定的時間內保持可復原狀態。

如果密鑰已啟用延遲刪除功能,當您刪除密鑰版本時,會發生下列情況:

  • 該版本已停用,因此無法使用。

  • 系統會在延遲期結束時,安排永久刪除該版本。

  • 延遲期限過後,密鑰版本就會永久刪除,無法復原。

優點

這項功能可帶來下列好處:

  • 多一層保護,防止重要密鑰內容意外或惡意遭到破壞。任何具備 Secret Manager Secret 版本管理員角色的使用者,都可以刪除 Secret 版本。這項操作無法復原。設定延遲刪除後,系統就不會立即刪除密鑰版本。您可以授予使用者管理密碼版本生命週期的最低必要存取權,以便監控及防止機密資料遭到意外毀損。

  • 銷毀密鑰版本會觸發 SECRET_VERSION_DESTROY_SCHEDULED 通知 ,傳送至密鑰上設定的 Pub/Sub 主題。具備 Secret Manager 管理員角色的使用者,可以啟用或停用密鑰版本,取消排定的刪除作業並還原密鑰版本。

事前準備

  1. 啟用 Secret Manager API (如果尚未啟用)。

    啟用 API 時所需的角色

    如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

    啟用 API

  2. 設定驗證方法。

    請根據您打算如何使用本頁範例,選取對應的分頁標籤:

    控制台

    使用 Cloud de Confiance 控制台存取 Cloud de Confiance by S3NS 服務和 API 時,不需要設定驗證。

    gcloud

    安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。 登入後,執行下列指令來初始化 Google Cloud CLI:

    gcloud init

    REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。

    詳情請參閱 Cloud de Confiance 驗證說明文件中的「使用 REST 進行驗證」一節。

必要的角色

如要取得設定延遲刪除密鑰版本所需的權限,請要求管理員授予您密鑰的 Secret Manager 管理員 (roles/secretmanager.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

設定延遲刪除

您可以在建立或更新密鑰時,啟用密鑰版本的延遲刪除功能。如要設定延遲銷毀,請使用下列其中一種方法:

控制台

  1. 前往 Cloud de Confiance 控制台的「Secret Manager」頁面。

    前往 Secret Manager

  2. 在「Secret Manager」頁面,點選「建立密鑰」。

  3. 在「建立密鑰」頁面的「名稱」欄位中,輸入密鑰名稱。

  4. 輸入密鑰的值 (例如 abcd1234)。您也可以使用「Upload file」(上傳檔案) 選項,上傳含有密鑰值的文字檔。這項操作會自動建立密鑰版本。

  5. 前往「Delay secret version destroy」(延遲刪除密鑰版本) 專區,然後勾選「Set duration for delayed destruction」(設定延遲刪除時間長度) 核取方塊。

  6. 在「銷毀延遲時間長度」欄位中,輸入延遲時間長度 (以天為單位)。可輸入的最小值為 1 天,最大值為 1000 天。

  7. 點選「建立密鑰」。

    如要為現有密鑰啟用這項功能,請前往「編輯密鑰」頁面,然後設定銷毀延遲時間。

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"
}

延遲刪除不適用於下列情況:

  • 刪除密鑰時,所有密鑰內容和相關密鑰版本都會立即刪除。

  • 如果密鑰設有到期日,且密鑰已到期,則所有密鑰版本都會立即刪除,即使密鑰已啟用延遲刪除功能也一樣。

更新刪除延遲時長

如要更新銷毀延遲時間長度,請使用下列其中一種方法:

控制台

  1. 前往 Cloud de Confiance 控制台的「Secret Manager」頁面。

    前往 Secret Manager

  2. 如要編輯密鑰,請使用下列其中一種方法:

    • 按一下要編輯的密鑰 「Actions」(動作),然後點選「Edit」(編輯)。

    • 按一下密鑰名稱,前往密鑰詳細資料頁面。在密鑰詳細資料頁面中,按一下「編輯密鑰」。

  3. 在「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"
}

受刪除延遲時間影響的密鑰版本取決於下列因素:

  • 首次為密鑰設定延遲刪除時,刪除延遲時間長度會影響密鑰的所有有效 (已啟用和已停用) 版本。

  • 更新或移除刪除延遲時間後,只有在嘗試刪除新版密鑰時,才會反映相關變更。已排定刪除的密鑰版本仍會在排定時間刪除。

停用延遲刪除

如要停用延遲刪除版本功能,請使用下列其中一種方法:

控制台

  1. 前往 Cloud de Confiance 控制台的「Secret Manager」頁面。

    前往 Secret Manager

  2. 如要編輯密鑰,請使用下列任一方法:

    • 按一下要編輯的密鑰 「Actions」(動作),然後點選「Edit」(編輯)。

    • 按一下密鑰名稱,前往密鑰詳細資料頁面。在密鑰詳細資料頁面中,按一下「編輯密鑰」。

  3. 在「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\""
}

排定延遲刪除密鑰版本

如要排定延遲刪除密鑰版本,請使用下列其中一種方法:

控制台

  1. 前往 Cloud de Confiance 控制台的「Secret Manager」頁面。

    前往 Secret Manager

  2. 在「Secret Manager」頁面中,按一下密鑰即可存取其版本。必須為這組密鑰設定延遲刪除版本。

  3. 在密鑰詳細資料頁面的「Versions」(版本) 分頁中,選取要刪除的密鑰版本。

  4. 按一下「動作」,然後按一下「銷毀」。

  5. 在隨即顯示的確認對話方塊中輸入密鑰 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 版本

如要還原已排定刪除的密鑰版本,請啟用或停用該版本。

啟用已排定刪除的密鑰版本

如要啟用已排定刪除的密鑰版本,請使用下列其中一種方法:

控制台

  1. 前往 Cloud de Confiance 控制台的「Secret Manager」頁面。

    前往 Secret Manager

  2. 在「Secret Manager」頁面中,按一下密鑰即可存取其版本。

  3. 在密鑰詳細資料頁面的「Versions」(版本) 分頁中,選取排定刪除的密鑰版本。

  4. 按一下「動作」,然後按一下「啟用」。

  5. 在隨即顯示的確認對話方塊中,按一下「啟用所選版本」。

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\""
}

停用已排定刪除作業的密鑰版本

如要停用已排定刪除的密鑰版本,請使用下列其中一種方法:

控制台

  1. 前往 Cloud de Confiance 控制台的「Secret Manager」頁面。

    前往 Secret Manager

  2. 在「Secret Manager」頁面中,按一下密鑰即可存取其版本。

  3. 在密鑰詳細資料頁面的「Versions」(版本) 分頁中,選取排定刪除的密鑰版本。

  4. 依序點選 「Actions」(動作) 和「Disable」(停用)。

  5. 在隨即顯示的確認對話方塊中,按一下「停用所選版本」。

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\""
}

後續步驟