外部金鑰存放區故障診斷 - AWS Key Management Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

外部金鑰存放區故障診斷

大多數外部金鑰存放區問題的解決方式,會以每次例外狀況時 AWS KMS 顯示的錯誤訊息表示,或嘗試將外部金鑰存放區連線至其外部金鑰存放區代理失敗時 AWS KMS 傳回的連線錯誤碼表示。但是,有些問題有點複雜。

診斷外部金鑰存放區的問題時,請先找出原因。這將縮小補救措施的範圍,並使您更有效地進行故障排除。

  • AWS KMS — 問題可能位於 內 AWS KMS,例如外部金鑰存放區組態 中的不正確值。

  • 外部 — 問題可能源自 之外 AWS KMS,包括外部金鑰存放區代理、外部金鑰管理器、外部金鑰或VPC端點服務的組態或操作問題。

  • 網路:這可能是連線或網路問題,例如代理端點、連接埠或私有DNS名稱或網域的問題。

注意

當外部金鑰存放區上的管理操作失敗時,其會產生數個不同的例外狀況。但是KMSInvalidStateException,與外部金鑰存放區外部組態或連線狀態相關的所有失敗都會傳回 AWS KMS 密碼編譯操作。若要識別問題,請使用隨附的錯誤訊息文字。

在連線程序完成之前,ConnectCustomKeyStore操作會快速成功。若要確定連接程序是否成功,請檢視外部金鑰存放區的連接狀態。如果連接程序失敗,則 AWS KMS 會傳回連接錯誤代碼,說明原因並建議解決方法。

外部金鑰存放區的故障診斷工具

AWS KMS 提供數種工具,可協助您識別和解決外部金鑰存放區及其金鑰的問題。將這些工具與外部金鑰存放區代理和外部金鑰管理器隨附的工具搭配使用。

注意

您的外部金鑰存放區代理和外部金鑰管理器可能會提供更簡單的方法來建立和維護您的外部金鑰存放區及其KMS金鑰。如需詳細資訊,請參閱外部工具的文件。

AWS KMS 例外狀況和錯誤訊息

AWS KMS 提供有關其遇到的任何問題的詳細錯誤訊息。您可以在AWS Key Management Service API參考 和 中找到有關 AWS KMS 例外狀況的其他資訊 AWS SDKs。即使您使用 AWS KMS 主控台,也可能會發現這些參考很實用。例如,請參閱 CreateCustomKeyStores 操作的錯誤清單。

若要最佳化外部金鑰存放區代理的效能, AWS KMS 會根據代理的可靠性,在 5 分鐘的指定彙總期間內傳回例外狀況。如果發生 500 個內部伺服器錯誤、503 Service Unavailable 或連線逾時,具有高可靠性的代理會傳回KMSInternalException並觸發自動重試,以確保請求最終成功。不過,可靠性低的代理會傳回 KMSInvalidStateException。如需詳細資訊,請參閱監控外部金鑰存放區

如果問題出現在不同的 AWS 服務中,例如當您使用外部KMS金鑰存放區中的金鑰來保護其他服務中的資源時 AWS ,該 AWS 服務可能會提供其他資訊,以協助您識別問題。如果 AWS 服務不提供訊息,您可以在記錄KMS金鑰使用的CloudTrail 日誌中檢視錯誤訊息。

CloudTrail 日誌

每項 AWS KMS API操作,包括 AWS KMS 主控台中的動作,都會記錄在 AWS CloudTrail 日誌中。 會 AWS KMS 記錄日誌項目,以取得成功和失敗的操作。對於失敗的操作,日誌項目會包含 AWS KMS 例外狀況名稱 (errorCode) 和錯誤訊息 (errorMessage)。您可以使用此資訊來協助您識別和解決錯誤。如需範例,請參閱使用外部KMS金鑰存放區中的金鑰解密失敗

日誌項目也包含請求 ID。如果請求到達外部金鑰存放區代理,則您可以使用日誌項目中的請求 ID,在代理日誌中尋找相應的請求 (如果代理提供的話)。

CloudWatch 指標

AWS KMS 會記錄有關外部金鑰存放區操作和效能的詳細 Amazon CloudWatch 指標,包括延遲、限流、代理錯誤、外部金鑰管理器狀態、TLS憑證過期前的天數,以及回報的代理身分驗證憑證使用年限。您可以使用這些指標來開發外部金鑰存放區和 CloudWatch 警示操作的資料模型,以便在問題發生之前提醒您即將發生的問題。

重要

AWS KMS 建議您建立 CloudWatch 警示來監控外部金鑰存放區指標。這些警報會在問題發生之前提醒您早期跡象。

監控圖表

AWS KMS 會在 AWS KMS 主控台中每個外部金鑰存放區的詳細資訊頁面上顯示外部金鑰存放區 CloudWatch 指標的圖形。您可以使用圖表中的資料,協助找出錯誤來源、偵測即將發生的問題、建立基準,以及改善 CloudWatch 警示閾值。如需有關解釋監控圖表及使用其資料的詳細資訊,請參閱 監控外部金鑰存放區

顯示外部金鑰存放區和KMS金鑰

AWS KMS 會在 AWS KMS 主控台的外部金鑰存放區中,以及回應 DescribeCustomKeyStoresDescribeKey操作時,顯示外部KMS金鑰存放區和 金鑰的詳細資訊。這些顯示包含外部金鑰存放區的特殊欄位和KMS金鑰,其中包含可用於疑難排解的資訊,例如外部金鑰存放區的連線狀態,以及與KMS金鑰相關聯的外部金鑰 ID。如需詳細資訊,請參閱 檢視外部金鑰存放區

XKS Proxy 測試用戶端

AWS KMS 提供開放原始碼測試用戶端,可驗證您的外部金鑰存放區代理是否符合AWS KMS 外部金鑰存放區代理API規格 。您可以使用此測試用戶端來識別並解決外部金鑰存放區代理的問題。

組態錯誤

建立外部金鑰存放區時,您可以指定包含外部金鑰存放區的組態的屬性值,例如代理身分驗證憑證 代理URI端點 代理URI路徑 VPC端點服務名稱 。當 AWS KMS 偵測到屬性值中的錯誤時,操作會失敗,並傳回指出錯誤值的錯誤。

許多組態問題可以透過修正不正確的值來解決。您可以修復無效的代理URI路徑或代理身分驗證憑證,而無需中斷外部金鑰存放區連線。如需這些值的定義,包括唯一性要求,請參閱 備妥先決條件。如需有關更新這些值的指示,請參閱 編輯外部金鑰存放區屬性

為了避免代理URI路徑和代理身分驗證憑證值發生錯誤,在建立或更新外部金鑰存放區時,請將 AWS KMS 代理組態檔案上傳至主控台。這是 JSON型檔案,具有由外部金鑰存放區代理或外部金鑰管理器提供的代理URI路徑和代理身分驗證憑證值。您無法將代理組態檔案與 AWS KMS API 操作搭配使用,但您可以使用檔案中的值來協助您提供符合代理中值的API請求參數值。

一般組態錯誤

例外狀況CustomKeyStoreInvalidStateException (CreateKey)、KMSInvalidStateException (密碼編譯操作)、XksProxyInvalidConfigurationException (管理操作,CreateKey 除外)

連接錯誤代碼XKS_PROXY_INVALID_CONFIGURATIONXKS_PROXY_INVALID_TLS_CONFIGURATION

對於具有公有端點連線的外部金鑰存放區, 會在您建立和更新外部金鑰存放區時 AWS KMS 測試屬性值。對於具有VPC端點服務連線 的外部金鑰存放區, AWS KMS 會在您連線和更新外部金鑰存放區時測試 屬性值。

注意

即使嘗試將外部金鑰存放區連接至其外部金鑰存放區代理失敗,非同步的 ConnectCustomKeyStore 操作仍可能成功。在這種情況下,沒有例外狀況,但是外部金鑰存放區的連接狀態為 Failed (失敗),連接錯誤代碼會說明錯誤訊息。如需詳細資訊,請參閱外部金鑰存放區連接錯誤

如果 AWS KMS 偵測到屬性值發生錯誤,操作會失敗,並XksProxyInvalidConfigurationException傳回下列其中一個錯誤訊息。

由於URI路徑無效,外部金鑰存放區代理拒絕請求。驗證外部金鑰存放區的URI路徑,並視需要更新。
  • 代理URI路徑是 AWS KMS 請求代理 的基本路徑APIs。如果此路徑不正確,則對代理的所有請求都會失敗。若要檢視外部金鑰存放區的目前代理URI路徑,請使用 AWS KMS 主控台或 DescribeCustomKeyStores操作。若要尋找正確的代理URI路徑,請參閱外部金鑰存放區代理文件。如需更正代理URI路徑值的說明,請參閱 編輯外部金鑰存放區屬性

  • 外部金鑰存放區代理的代理URI路徑可能會隨著外部金鑰存放區代理或外部金鑰管理器的更新而變更。如需有關這些變更的資訊,請參閱外部金鑰存放區代理或外部金鑰管理器的文件。

XKS_PROXY_INVALID_TLS_CONFIGURATION

AWS KMS 無法建立與外部金鑰存放區代理的TLS連線。驗證TLS組態,包括其憑證。
  • 所有外部金鑰存放區代理都需要TLS憑證。TLS 憑證必須由外部金鑰存放區支援的公有憑證授權機構 (CA) 發行。如需支援的 清單CAs,請參閱 AWS KMS 外部金鑰存放區代理API規格中的信任憑證授權機構。

  • 對於公有端點連線,TLS憑證上的主旨一般名稱 (CN) 必須與外部金鑰存放區代理的代理URI端點中的網域名稱相符。例如,如果公有端點是 https://myproxy.xks.example.com,則憑證上的 TLSCN TLS 必須為 myproxy.xks.example.com*.xks.example.com

  • 對於VPC端點服務連線,TLS憑證上的主旨一般名稱 (CN) 必須與VPC端點服務 的私有DNS名稱相符。例如,如果私有DNS名稱為 myproxy-private.xks.example.com,則TLS憑證上的 CN 必須為 myproxy-private.xks.example.com*.xks.example.com

  • TLS 憑證無法過期。若要取得TLS憑證的過期日期,請使用SSL工具,例如 Open SSL。若要監控與外部金鑰存放區相關聯的TLS憑證過期日期,請使用 XksProxyCertificateDaysToExpire CloudWatch 指標。TLS 憑證過期日期的天數也會顯示在 AWS KMS 主控台的監控區段中。

  • 如果您使用的是公有端點連線,請使用SSL測試工具來測試您的SSL組態。TLS 連線錯誤可能是由於憑證鏈結不正確所造成。

VPC 端點服務連線組態錯誤

例外狀況XksProxyVpcEndpointServiceNotFoundExceptionXksProxyVpcEndpointServiceInvalidConfigurationException

除了一般連線問題之外,在建立、連線或更新具有VPC端點服務連線的外部金鑰存放區時,您可能會遇到下列問題。 會在建立連線更新外部金鑰存放區時, AWS KMS 測試具有VPC端點服務連線的外部金鑰存放區的屬性值。當管理操作因組態錯誤而失敗時,會產生下列例外狀況:

XksProxyVpcEndpointServiceNotFoundException

原因可能為下列之一:

  • 不正確的VPC端點服務名稱。確認外部金鑰存放區的VPC端點服務名稱正確,且符合外部金鑰存放區的代理URI端點值。若要尋找VPC端點服務名稱,請使用 Amazon VPC主控台DescribeVpcEndpointServices操作。若要尋找現有外部金鑰存放區的VPC端點服務名稱和代理URI端點,請使用 AWS KMS 主控台或 DescribeCustomKeyStores操作。如需詳細資訊,請參閱 檢視外部金鑰存放區

  • VPC 端點服務可能位於與外部金鑰存放區 AWS 區域 不同的 中。確認VPC端點服務和外部金鑰存放區位於相同區域。(區域名稱的外部名稱,例如 us-east-1,是VPC端點服務名稱的一部分,例如 com.amazonaws.vpce.us-east-1vpce-svc-example。) 如需外部金鑰存放區VPC端點服務的需求清單,請參閱 VPC 端點服務。您無法將VPC端點服務或外部金鑰存放區移至不同的區域。不過,您可以在與VPC端點服務相同的區域中建立新的外部金鑰存放區。如需詳細資訊,請參閱 設定VPC端點服務連線建立外部金鑰存放區

  • AWS KMS 不是VPC端點服務的允許主體。VPC 端點服務的允許主體清單必須包含 cks.kms.<region>.amazonaws.com值,例如 cks.kms.eu-west-3.amazonaws.com。如需有關新增此值的指示,請參閱《AWS PrivateLink 指南》中的管理許可

XksProxyVpcEndpointServiceInvalidConfigurationException

當VPC端點服務不符合下列其中一項要求時,就會發生此錯誤:

  • 至少VPC需要兩個私有子網路,每個子網路位於不同的可用區域中。如需將子網路新增至 的說明VPC,請參閱 Amazon VPC使用者指南 中的在 中建立子網路VPC

  • 您的VPC端點服務類型必須使用網路負載平衡器,而非閘道負載平衡器。

  • VPC 端點服務不需要接受 (需要接受必須是 false)。如果需要手動接受每個連線請求, AWS KMS 則無法使用VPC端點服務連線到外部金鑰存放區代理。如需詳細資訊,請參閱《AWS PrivateLink 指南》中的接受或拒絕連接請求

  • VPC 端點服務必須具有私有DNS名稱,該名稱是公有網域的子網域。例如,如果私有DNS名稱為 https://myproxy-private.xks.example.com,則 xks.example.comexample.com網域必須具有公有DNS伺服器。若要檢視或變更VPC端點服務的私有DNS名稱,請參閱 AWS PrivateLink 指南 中的管理VPC端點服務DNS的名稱

  • 私有DNS名稱的網域網域驗證狀態必須為 verified。若要檢視和更新私有DNS名稱網域的驗證狀態,請參閱 步驟 5:確認您的私有DNS名稱網域。新增必要的文字記錄後,可能需要幾分鐘的時間才會顯示更新的驗證狀態。

    注意

    只有在私有DNS網域是公有網域的子網域時,才能驗證私有網域。否則,即使您新增必要的TXT記錄,私有DNS網域的驗證狀態也不會變更。

  • VPC 端點服務的私有DNS名稱必須符合外部金鑰存放區的代理URI端點值。對於具有VPC端點服務連線的外部金鑰存放區,代理URI端點後面必須https://接有VPC端點服務的私有DNS名稱。若要檢視代理URI端點值,請參閱 檢視外部金鑰存放區。若要變更代理URI端點值,請參閱 編輯外部金鑰存放區屬性

外部金鑰存放區連接錯誤

將外部金鑰存放區連接至其外部金鑰存放區代理的程序大約需要五分鐘才能完成。除非快速失敗,ConnectCustomKeyStore否則操作會傳回 200 HTTP 回應和沒有屬性的JSON物件。不過,這個初始回應並不表示連接已成功。若要判斷外部金鑰存放區是否已連接,請參閱其連接狀態。如果連線失敗,外部金鑰存放區的連線狀態會變更為 ,FAILED並 AWS KMS 傳回連線錯誤代碼,說明失敗的原因。

注意

如果自訂金鑰存放區的狀態為 FAILED,在嘗試重新連接之前,您必須中斷連接自訂金鑰存放區。您無法連接具有 FAILED 連接狀態的自訂金鑰存放區。

若要檢視外部金鑰存放區的連接狀態:

  • DescribeCustomKeyStores回應中,檢視 ConnectionState元素的值。

  • 在 AWS KMS 主控台中,連線狀態會顯示在外部金鑰存放區資料表中。此外,在每個外部金鑰存放區的詳細資訊頁面上,Connection state (連接狀態) 會顯示在 General configuration (一般組態) 區段中。

當連接狀態為 FAILED 時,連接錯誤代碼有助於解釋錯誤。

若要檢視連接錯誤代碼:

  • DescribeCustomKeyStores回應中,檢視 ConnectionErrorCode元素的值。只有當 ConnectionStateFAILED 時,此元素才會出現在 DescribeCustomKeyStores 回應中。

  • 若要在 AWS KMS 主控台中檢視連線錯誤碼,請在外部金鑰存放區的詳細資訊頁面上,將滑鼠游標移至失敗值上方。

    自訂金鑰存放區詳細資訊頁面上的連接錯誤代碼

外部金鑰存放區的連接錯誤代碼

下列連接錯誤代碼適用於外部金鑰存放區

INTERNAL_ERROR

AWS KMS 由於內部錯誤,無法完成請求。重試 請求。若為 ConnectCustomKeyStore 請求,請先中斷連接自訂金鑰存放區,再重試連接。

INVALID_CREDENTIALS

在指定的外部金鑰存放區代理上,一個或兩個 XksProxyAuthenticationCredential 值無效。

NETWORK_ERRORS

網路錯誤 AWS KMS 導致無法將自訂金鑰存放區連接至其後端金鑰存放區。

XKS_PROXY_ACCESS_DENIED

AWS KMS 請求會被拒絕存取外部金鑰存放區代理。如果外部金鑰存放區代理有授權規則,請確認其允許 AWS KMS 代表您與代理通訊。

XKS_PROXY_INVALID_CONFIGURATION

組態錯誤導致外部金鑰存放區無法連接到其代理。驗證 XksProxyUriPath 的值。

XKS_PROXY_INVALID_RESPONSE

AWS KMS 無法從外部金鑰存放區代理解譯回應。如果您重複看到此連接錯誤代碼,則請通知您的外部金鑰存放區代理廠商。

XKS_PROXY_INVALID_TLS_CONFIGURATION

AWS KMS 無法連線至外部金鑰存放區代理,因為TLS組態無效。確認外部金鑰存放區代理支援 TLS 1.2 或 1.3。此外,請確認TLS憑證未過期、與XksProxyUriEndpoint值中的主機名稱相符,以及由包含在信任憑證授權機構清單中的信任憑證授權機構簽署。

XKS_PROXY_NOT_REACHABLE

AWS KMS 無法與您的外部金鑰存放區代理通訊。確認 XksProxyUriEndpointXksProxyUriPath 正確無誤。使用外部金鑰存放區代理的工具來驗證代理處於作用中狀態且可在其網路上使用。此外,請確認您的外部金鑰管理器執行個體運作正常。如果代理報告所有外部金鑰管理器執行個體都無法使用,則連接嘗試失敗,並顯示此連接錯誤代碼。

XKS_PROXY_TIMED_OUT

AWS KMS 可以連線至外部金鑰存放區代理,但代理在分配 AWS KMS 的時間內不會回應 。如果您重複看到此連接錯誤代碼,則請通知您的外部金鑰存放區代理廠商。

XKS_VPC_ENDPOINT_SERVICE_INVALID_CONFIGURATION

Amazon VPC端點服務組態不符合 AWS KMS 外部金鑰存放區的需求。

  • VPC 端點服務必須是呼叫者 中介面端點的端點服務 AWS 帳戶。

  • 它必須至少將網路負載平衡器 (NLB) 連接到兩個子網路,每個子網路都位於不同的可用區域中。

  • Allow principals 清單必須包含 區域的 AWS KMS 服務主體,cks.kms.<region>.amazonaws.com例如 cks.kms.us-east-1.amazonaws.com

  • 不得要求接受連接請求。

  • 它必須具有私有DNS名稱。具有VPC_ENDPOINT_SERVICE連線能力的外部金鑰存放區的私有DNS名稱在其 中必須是唯一的 AWS 區域。

  • 私有DNS名稱的網域必須具有 的驗證狀態verified

  • TLS 憑證會指定可連線端點的私有DNS主機名稱。

XKS_VPC_ENDPOINT_SERVICE_NOT_FOUND

AWS KMS 找不到用來與外部金鑰存放區代理通訊的VPC端點服務。確認 XksProxyVpcEndpointServiceName 是否正確, AWS KMS 且服務主體在 Amazon VPC端點服務上有服務取用者許可。

延遲和逾時錯誤

例外狀況CustomKeyStoreInvalidStateException (CreateKey)、KMSInvalidStateException (密碼編譯操作)、XksProxyUriUnreachableException (管理操作)

連接錯誤代碼XKS_PROXY_NOT_REACHABLEXKS_PROXY_TIMED_OUT

當 AWS KMS 無法在 250 毫秒逾時間隔內聯絡代理時,它會傳回例外狀況。 CreateCustomKeyStoreUpdateCustomKeyStore傳回 XksProxyUriUnreachableException。密碼編譯操作會傳回標準,KMSInvalidStateException並顯示描述問題的錯誤訊息。如果ConnectCustomKeyStore失敗, 會 AWS KMS 傳回描述問題的連線錯誤代碼

逾時錯誤可能是暫時性的問題,可透過重試請求來解決。如果問題仍然存在,請確認您的外部金鑰存放區代理處於作用中狀態並已連線至網路,且其代理URI端點、代理URI路徑和VPC端點服務名稱 (如果有的話) 在外部金鑰存放區中正確。此外,請確認您的外部金鑰管理器靠近 AWS 區域 外部金鑰存放區的 。如果需要更新任何這些值,請參閱 編輯外部金鑰存放區屬性

若要追蹤延遲模式,請使用 XksProxyLatency CloudWatch 主控台的監控區段 AWS KMS 中的指標和平均延遲圖表 (根據該指標)。您的外部金鑰存放區代理也可能會產生追蹤延遲和逾時的日誌和指標。

XksProxyUriUnreachableException

AWS KMS 無法與外部金鑰存放區代理通訊。這可能是暫時性的網路問題。如果您重複看到此錯誤,請確認您的外部金鑰存放區代理處於作用中狀態,並已連線至網路,且其端點在您的外部金鑰存放區中URI正確。
  • 外部金鑰存放區代理未在 250 毫秒逾時間隔內回應 AWS KMS 代理API請求。這可能表示代理發生暫時性的網路問題或者操作或效能問題。如果重試無法解決問題,請通知您的外部金鑰存放區代理管理員。

延遲和逾時錯誤通常顯示為連接失敗。當ConnectCustomKeyStore操作失敗時,外部金鑰存放區的連線狀態會變更為 ,FAILED並 AWS KMS 傳回解釋錯誤的連線錯誤代碼。如需連接錯誤代碼和解決錯誤的建議清單,請參閱 外部金鑰存放區的連接錯誤代碼All custom key stores (所有自訂金鑰存放區) 和 External key stores (外部金鑰存放區) 的連接代碼清單適用於外部金鑰存放區。下列連接錯誤與延遲和逾時有關。

XKS_PROXY_NOT_REACHABLE

-或-

CustomKeyStoreInvalidStateException, KMSInvalidStateException, XksProxyUriUnreachableException

AWS KMS 無法與外部金鑰存放區代理通訊。確認您的外部金鑰存放區代理處於作用中狀態,並已連線至網路,且其URI路徑和端點URIVPC或服務名稱在您的外部金鑰存放區中正確無誤。

此錯誤可能發生的原因如下:

  • 外部金鑰存放區代理處於非作用中狀態,或未連接至網路。

  • 外部金鑰存放區組態中的代理URI端點 代理URI路徑 VPC端點服務名稱 (如適用) 值發生錯誤。若要檢視外部金鑰存放區組態,請使用 DescribeCustomKeyStores操作或在 AWS KMS 主控台中檢視外部金鑰存放區的詳細資訊頁面

  • 與 AWS KMS 外部金鑰存放區 proxy. AWS KMS communication 之間的網路路徑上可能存在網路組態錯誤,例如連接埠錯誤。與連接埠 443 上的外部金鑰存放區代理通訊。此值不可設定。

  • 當外部金鑰存放區代理報告 (在GetHealthStatus回應中) 所有外部金鑰管理員執行個體都是 時UNAVAILABLEConnectCustomKeyStore操作會失敗,並顯示 ConnectionErrorCodeXKS_PROXY_NOT_REACHABLE。如需說明,請參閱外部金鑰管理器文件。

  • 此錯誤可能是由於外部金鑰管理器與 AWS 區域 具有外部金鑰存放區的 之間有很長的實體距離所造成。 AWS 區域 與外部金鑰管理器之間的 ping 延遲 (網路往返時間 (RTT)) 不得超過 35 毫秒。您可能必須在 AWS 區域 更接近外部金鑰管理器的 中建立外部金鑰存放區,或將外部金鑰管理員移至更接近 的資料中心 AWS 區域。

XKS_PROXY_TIMED_OUT

-或-

CustomKeyStoreInvalidStateException, KMSInvalidStateException, XksProxyUriUnreachableException

AWS KMS 拒絕請求,因為外部金鑰存放區代理沒有及時回應。重試 請求。如果您重複看到此錯誤,請向外部金鑰存放區代理管理員報告。

此錯誤可能發生的原因如下:

  • 此錯誤可能是由於外部金鑰管理器與外部金鑰存放區代理之間有很長的實際距離。如果可能,請將外部金鑰存放區代理移至更接近外部金鑰管理器的位置。

  • 當代理並非設計用來處理來自 的請求量和頻率時,可能會發生逾時錯誤 AWS KMS。如果您的 CloudWatch 指標指出持續問題,請通知您的外部金鑰存放區代理管理員。

  • 當外部金鑰管理器與外部金鑰存放VPC區 Amazon 之間的連線無法正常運作時,可能會發生逾時錯誤。如果您使用的是 AWS Direct Connect,請確認您的 VPC和外部金鑰管理器可以有效通訊。如需解決任何問題的協助,請參閱 AWS Direct Connect 使用者指南中的疑難排解 AWS Direct Connect

XKS_PROXY_TIMED_OUT

-或-

CustomKeyStoreInvalidStateException, KMSInvalidStateException, XksProxyUriUnreachableException

外部金鑰存放區代理沒有在規定時間內回應請求。重試 請求。如果您重複看到此錯誤,請向外部金鑰存放區代理管理員報告。
  • 此錯誤可能是由於外部金鑰管理器與外部金鑰存放區代理之間有很長的實際距離。如果可能,請將外部金鑰存放區代理移至更接近外部金鑰管理器的位置。

身分驗證憑證錯誤

例外狀況CustomKeyStoreInvalidStateException (CreateKey)、KMSInvalidStateException (密碼編譯操作)、XksProxyIncorrectAuthenticationCredentialException (CreateKey 以外的管理操作)

您可以在外部金鑰存放區代理 AWS KMS 上建立和維護 的身分驗證憑證。然後在建立外部金鑰存放區時告知 AWS KMS 憑證值。若要變更身分驗證憑證,請在外部金鑰存放區代理上進行變更。然後,更新外部金鑰存放區的憑證。如果代理輪換憑證,則必須更新外部金鑰存放區的憑證

如果外部金鑰存放區代理無法驗證使用外部金鑰存放區的代理身分驗證憑證簽署的請求,則效果取決於請求:

  • CreateCustomKeyStoreUpdateCustomKeyStoreXksProxyIncorrectAuthenticationCredentialException 失敗。

  • ConnectCustomKeyStore 成功,但連接失敗。連接狀態為 FAILED,連接錯誤代碼為 INVALID_CREDENTIALS。如需詳細資訊,請參閱 外部金鑰存放區連接錯誤

  • 密碼編譯操作KMSInvalidStateException會傳回外部金鑰存放區中的所有外部組態錯誤和連線狀態錯誤。隨附的錯誤訊息描述了問題。

外部金鑰存放區代理拒絕了請求,因為它無法對 AWS KMS進行身分驗證。驗證外部金鑰存放區的憑證,並在必要時更新。

此錯誤可能發生的原因如下:

  • 外部金鑰存放區的存取金鑰 ID 或私密存取金鑰與外部金鑰存放區代理上建立的值不符。

    若要修正此錯誤,請更新外部金鑰存放區的代理身分驗證憑證。您可以在不中斷外部金鑰存放區連接的情況下進行此變更。

  • AWS KMS 與外部金鑰存放區代理之間的反向代理可能會以使 SigV4 簽章失效的方式操作HTTP標頭。若要修正此錯誤,請通知代理管理員。

金鑰狀態錯誤

例外狀況KMSInvalidStateException

KMSInvalidStateException 用於自訂KMS金鑰存放區中金鑰的兩個不同用途。

  • 當 等管理操作CancelKeyDeletion失敗並傳回此例外狀況時,表示KMS金鑰的金鑰狀態與 操作不相容。

  • 當自訂KMS金鑰存放區中金鑰的密碼編譯操作失敗時KMSInvalidStateException,它可能會指出KMS金鑰的金鑰狀態有問題。但是 AWS KMS ,密碼編譯操作KMSInvalidStateException會傳回外部金鑰存放區中的所有外部組態錯誤和連線狀態錯誤。若要識別問題,請使用例外狀況隨附的錯誤訊息。

若要尋找操作所需的金鑰狀態 AWS KMS API,請參閱 金鑰的 AWS KMS 金鑰狀態。若要尋找KMS金鑰的金鑰狀態,請在客戶受管金鑰頁面上檢視KMS金鑰的狀態欄位。或者,使用 DescribeKey操作並在回應中檢視 KeyState元素。如需詳細資訊,請參閱 識別和檢視金鑰

注意

外部金鑰存放區中KMS金鑰的金鑰狀態,不會指示與其相關聯外部金鑰 的狀態相關的任何內容。如需有關外部金鑰狀態的資訊,請使用外部金鑰管理器和外部金鑰存放區代理工具。

CustomKeyStoreInvalidStateException 是指外部金鑰存放區的連線狀態,而不是KMS金鑰的金鑰狀態

自訂存放區中KMS金鑰的密碼編譯操作可能會失敗,因為KMS金鑰的金鑰狀態為 UnavailablePendingDeletion。(已停用的金鑰會傳回 DisabledException。)

  • 只有當您故意在 AWS KMS 主控台中停用Disabled金鑰或使用 DisableKey操作時,KMS金鑰才會具有KMS金鑰狀態。當KMS金鑰停用時,您可以檢視和管理金鑰,但無法在密碼編譯操作中使用金鑰。若要修正此問題,請啟用金鑰。如需詳細資訊,請參閱 啟用和停用金鑰

  • 當外部金鑰存放區與其外部金鑰存放區代理中斷連線時,金鑰KMS具有金鑰Unavailable狀態。若要修正無法使用的KMS金鑰,請重新連接外部金鑰存放區 。重新連接外部金鑰存放區後,外部金鑰存放區中KMS金鑰的金鑰狀態會自動還原至其先前的狀態,例如 EnabledDisabled

    當KMS金鑰已排定刪除,且處於其等待期間時,金鑰具有PendingDeletion金鑰狀態。待刪除KMS金鑰的金鑰狀態錯誤表示不應刪除金鑰,因為該金鑰用於加密,或解密時需要。若要重新啟用KMS金鑰,請取消排定的刪除,然後啟用金鑰 。如需詳細資訊,請參閱 排程金鑰刪除

解密錯誤

例外狀況KMSInvalidStateException

當使用外部KMS金鑰存放區中的金鑰進行解密操作失敗時, 會 AWS KMS 傳回KMSInvalidStateException密碼編譯操作用於外部金鑰存放區上所有外部組態錯誤和連線狀態錯誤的標準。指出問題的錯誤訊息。

若要解密使用雙重加密來加密的密文,外部金鑰管理器會首先使用外部金鑰來解密密文外層。然後使用 AWS KMS AWS KMS 金鑰中的KMS金鑰材料來解密密碼文字的內部層。外部金鑰管理器或 AWS KMS可拒絕無效或損毀的密文。

解密失敗時,KMSInvalidStateException 會伴隨下列錯誤訊息。它指出請求中的密文或選用的加密內容有問題。

外部金鑰存放區代理拒絕請求,因為指定的密文或其他已驗證的資料已損毀、遺失或無效。
  • 當外部金鑰存放區代理或外部金鑰管理器回報加密文字或其加密內容無效時,通常會指出傳送至 的Decrypt請求中加密文字或加密內容發生問題 AWS KMS。對於 Decrypt 操作, AWS KMS 會傳送代理與在Decrypt請求中接收到的相同密碼文字和加密內容。

    此錯誤可能是由傳輸過程中的網路問題所引起,例如翻轉位。重試 Decrypt 請求。如果問題仍然存在,請確認密文沒有被更改或損壞。此外,請確認 Decrypt 請求中的加密內容 AWS KMS 符合加密資料之請求中的加密內容。

外部金鑰存放區代理提交用於解密的密文或加密內容已損毀、遺失或無效。
  • 當 AWS KMS 拒絕從代理收到的密碼文字時,表示外部金鑰管理器或代理傳回無效或損毀的密碼文字給 AWS KMS。

    此錯誤可能是由傳輸過程中的網路問題所引起,例如翻轉位。重試 Decrypt 請求。如果問題仍然存在,請確認外部金鑰管理器正常運作,且外部金鑰存放區代理不會變更從外部金鑰管理器接收的密碼文字,然後再傳回 AWS KMS。

外部金鑰錯誤

外部金鑰是外部金鑰管理器中的密碼編譯金鑰,可作為KMS金鑰的外部金鑰材料。 AWS KMS 無法直接存取外部金鑰。它必須要求外部金鑰管理器 (透過外部金鑰存放區代理) 使用外部金鑰來加密資料或解密密文。

當您在外部金鑰存放區中建立KMS金鑰時,您可以在外部金鑰管理器中指定外部金鑰的 ID。建立金鑰後,您無法變更外部KMS金鑰 ID。為了防止KMS金鑰發生問題,CreateKey此操作會要求外部金鑰存放區代理驗證外部金鑰的 ID 和組態。如果外部金鑰不符合與KMS金鑰搭配使用的要求CreateKey則操作會失敗,並出現識別問題的例外狀況和錯誤訊息。

不過,建立KMS金鑰後可能會發生問題。如果密碼編譯操作由於外部金鑰問題而失敗,則操作會失敗並傳回 KMSInvalidStateException 和指出問題的錯誤訊息。

CreateKey 外部金鑰的錯誤

例外狀況XksKeyAlreadyInUseExceptionXksKeyNotFoundExceptionXksKeyInvalidConfigurationException

CreateKey 操作會嘗試驗證您在外部金鑰 ID (主控台) 或 XksKeyId(API) 參數中提供的外部金鑰的 ID 和屬性。此練習旨在在您嘗試使用外部金鑰與 KMS 金鑰之前及早偵測錯誤。

使用中的外部金鑰

外部KMS金鑰存放區中的每個金鑰都必須使用不同的外部金鑰。當 CreateKey識別KMS金鑰的外部金鑰 ID (XksKeyId) 在外部金鑰存放區中不是唯一的時,它會使用 失敗XksKeyAlreadyInUseException

如果您IDs針對相同的外部金鑰使用多個 , CreateKey 將無法識別重複項目。不過,具有相同外部金鑰的KMS金鑰無法互操作,因為它們具有不同的 AWS KMS 金鑰材料和中繼資料。

找不到外部金鑰

當外部金鑰存放區代理回報無法使用金鑰的外部金鑰 ID (XksKeyId) 找到外部KMS金鑰時,CreateKey操作會失敗,並XksKeyNotFoundException傳回下列錯誤訊息。

外部金鑰存放區代理拒絕了請求,因為它找不到外部金鑰。

此錯誤可能發生的原因如下:

  • KMS 金鑰的外部金鑰 (XksKeyId) ID 可能無效。若要查找外部金鑰代理用來識別外部金鑰的 ID,請參閱外部金鑰存放區代理或外部金鑰管理器文件。

  • 可能已從外部金鑰管理器刪除外部金鑰。若要進行調查,請使用外部金鑰管理器工具。如果永久刪除外部金鑰,請使用不同的外部金鑰搭配KMS金鑰。如需外部金鑰的清單或要求,請參閱 外部KMS金鑰存放區中金鑰的需求

未滿足外部金鑰要求

當外部金鑰存放區代理回報外部金鑰不符合與KMS金鑰搭配使用的要求時CreateKey操作會失敗,並XksKeyInvalidConfigurationException傳回下列其中一個錯誤訊息。

外部金鑰的金鑰規格必須為 AES_256。指定外部金鑰的金鑰規格為 <key-spec>.
  • 外部金鑰必須是金鑰規格為 AES_256 的 256 位元對稱加密金鑰。如果指定的外部金鑰是不同的類型,請指定符合此要求的外部金鑰 ID。

外部金鑰的狀態必須為 ENABLED。指定的外部金鑰狀態為 <status>.
  • 必須在外部金鑰管理器中啟用外部金鑰。如果指定的外部金鑰未啟用,請使用外部金鑰管理器工具來啟用它,或指定已啟用的外部金鑰。

外部金鑰的金鑰用量必須包含 ENCRYPT和 DECRYPT。指定外部金鑰的金鑰使用方式為 <key-usage>.
  • 外部金鑰必須設定為在外部金鑰管理器中進行加密和解密。如果指定的外部金鑰不包含這些操作,請使用外部金鑰管理器工具變更操作,或指定其他外部金鑰。

外部金鑰的密碼編譯操作錯誤

例外狀況KMSInvalidStateException

當外部金鑰存放區代理找不到與KMS金鑰相關聯的外部金鑰,或外部金鑰不符合與KMS金鑰搭配使用的要求時,密碼編譯操作會失敗。

與建立金鑰之前偵測到的外部金鑰問題相比,在密碼編譯操作期間偵測到的外部KMS金鑰問題更難解決。建立金鑰後,您無法變更外部KMS金鑰 ID。如果KMS金鑰尚未加密任何資料,您可以刪除KMS金鑰,並使用不同的外部金鑰 ID 建立新的金鑰。不過,任何其他KMS金鑰都無法解密使用KMS金鑰產生的密碼文字,即使是具有相同外部金鑰的金鑰,因為金鑰會有不同的金鑰中繼資料和不同的 AWS KMS 金鑰材料。相反,盡可能使用外部金鑰管理器工具來解決外部金鑰問題。

當外部金鑰存放區代理報告外部金鑰問題時,密碼編譯操作會傳回 KMSInvalidStateException 以及可識別問題的錯誤訊息。

找不到外部金鑰

當外部金鑰存放區代理回報無法使用金鑰的外部金鑰 ID (XksKeyId) 找到外部KMS金鑰時,密碼編譯操作會傳回KMSInvalidStateException具有下列錯誤訊息的 。

外部金鑰存放區代理拒絕了請求,因為它找不到外部金鑰。

此錯誤可能發生的原因如下:

  • KMS 金鑰的外部金鑰 (XksKeyId) ID 不再有效。

    若要尋找與金鑰相關聯的外部KMS金鑰 ID,請檢視KMS金鑰 的詳細資訊。若要查找外部金鑰代理用來識別外部金鑰的 ID,請參閱外部金鑰存放區代理或外部金鑰管理器文件。

    AWS KMS 在外部金鑰存放區中建立KMS金鑰時,驗證外部金鑰 ID。不過,ID 可能會變得無效,特別是如果外部金鑰 ID 值是別名或可變名稱。您無法變更與現有金鑰相關聯的外部KMS金鑰 ID。若要解密KMS金鑰下加密的任何密碼文字,您必須重新建立外部金鑰與現有外部金鑰 ID 的關聯。

    如果您尚未使用KMS金鑰來加密資料,則可以使用有效的外部KMS金鑰 ID 建立新的金鑰。不過,如果您已使用 KMS 金鑰產生密碼文字,即使使用相同的外部金鑰,也無法使用任何其他KMS金鑰來解密密碼文字。

  • 可能已從外部金鑰管理器刪除外部金鑰。若要進行調查,請使用外部金鑰管理器工具。如果可能,請嘗試從外部金鑰管理器的複本或備份中復原金鑰材料。如果永久刪除外部金鑰,則在關聯KMS金鑰下加密的任何密碼文字都無法復原。

外部金鑰組態錯誤

當外部金鑰存放區代理回報外部金鑰不符合與KMS金鑰搭配使用的要求時,密碼編譯操作會KMSInvalidStateException傳回下列其中一個錯誤訊息。

外部金鑰存放區代理拒絕了請求,因為外部金鑰不支持請求的操作。
  • 外部金鑰必須同時支援加密和解密。如果金鑰用途不包含加密和解密,請使用外部金鑰管理器工具來變更金鑰用途。

外部金鑰存放區代理拒絕了請求,因為外部金鑰管理器中未啟用外部金鑰。
  • 外部金鑰必須已啟用並且可用於外部金鑰管理器。如果外部金鑰的狀態不是 Enabled,請使用外部金鑰管理器工具來啟用它。

代理問題

例外狀況:

CustomKeyStoreInvalidStateException (CreateKey)、KMSInvalidStateException (密碼編譯操作)、UnsupportedOperationExceptionXksProxyUriUnreachableExceptionXksProxyInvalidResponseException (CreateKey 以外的管理操作))

外部金鑰存放區代理會介導 AWS KMS 與外部金鑰管理器之間的所有通訊。它將一般 AWS KMS 請求轉換為外部金鑰管理員可以理解的格式。如果外部金鑰存放區代理不符合AWS KMS 外部金鑰存放區代理API規格 ,或者如果 未正常運作,或無法與 通訊 AWS KMS,您將無法在外部金鑰存放區中建立或使用KMS金鑰。

雖然許多錯誤提到外部金鑰存放區代理,因為它在外部金鑰存放區架構中起著關鍵作用,但這些問題可能源於外部金鑰管理器或外部金鑰。

本節中的問題與外部金鑰存放區代理的設計或操作問題有關。解決這些問題可能需要變更代理軟體。請諮詢您的代理管理員。為了協助診斷代理問題, AWS KMS 提供 XKS Proxy Text Client ,這是一個開放原始碼測試用戶端,可驗證您的外部金鑰存放區代理是否符合AWS KMS 外部金鑰存放區代理API規格

CustomKeyStoreInvalidStateExceptionKMSInvalidStateExceptionXksProxyUriUnreachableException

外部金鑰存放區代理處於運作不佳狀態。如果您重複看到此訊息,請通知外部金鑰存放區代理管理員。
  • 此錯誤表示外部金鑰存放區代理中存在操作問題或軟體錯誤。您可以找到產生每個錯誤之 AWS KMS API操作的 CloudTrail 日誌項目。重試操作可能會解決此錯誤。但是,如果問題仍然存在,請通知您的外部金鑰存放區代理管理員。

  • 當外部金鑰存放區代理報告 (在GetHealthStatus回應中) 所有外部金鑰管理員執行個體都是 時UNAVAILABLE, 會嘗試建立或更新外部金鑰存放區失敗,但此例外狀況。如果此錯誤仍然存在,請參閱外部金鑰管理器文件。

CustomKeyStoreInvalidStateExceptionKMSInvalidStateExceptionXksProxyInvalidResponseException

AWS KMS 無法從外部金鑰存放區代理解譯回應。如果您重複看到此錯誤,請咨詢您的外部金鑰存放區代理管理員。
  • AWS KMS 當代理傳回 AWS KMS 無法剖析或解譯的未定義回應時, 操作會產生此例外狀況。由於暫時的外部問題或偶發的網絡錯誤,偶爾會發生此錯誤。但是,如果它持續存在,可能表示外部金鑰存放區代理不符合AWS KMS 外部金鑰存放區代理API規格 。通知您的外部金鑰存放區管理員或廠商。

CustomKeyStoreInvalidStateExceptionKMSInvalidStateExceptionUnsupportedOperationException

外部金鑰存放區代理拒絕了請求,因為其不支援請求的密碼編譯操作。

  • 外部金鑰存放區代理應支援外部金鑰存放區代理規格 中APIs定義的所有代理。 AWS KMS API 此錯誤表示代理不支援與請求相關的操作。通知您的外部金鑰存放區管理員或廠商。

代理授權問題

例外狀況CustomKeyStoreInvalidStateExceptionKMSInvalidStateException

某些外部金鑰存放區代理會實作使用其外部金鑰的授權需求。允許外部金鑰存放區代理 (但不是必需的) 來設計和實作授權方案,該方案允許特定使用者在特定條件下請求特定操作。例如,代理可能允許使用者使用特定的外部金鑰進行加密,但無法使用它進行解密。如需詳細資訊,請參閱外部金鑰存放區代理授權 (選用)

Proxy 授權是以中繼資料為基礎,這些中繼資料 AWS KMS 包含在對 Proxy 的請求中。只有在請求來自VPC端點,且呼叫者與KMS金鑰位於相同 帳戶中時, awsSourceVpcawsSourceVpce 欄位才會包含在中繼資料中。

"requestMetadata": { "awsPrincipalArn": string, "awsSourceVpc": string, // optional "awsSourceVpce": string, // optional "kmsKeyArn": string, "kmsOperation": string, "kmsRequestId": string, "kmsViaService": string // optional }

當代理因授權失敗而拒絕請求時,相關 AWS KMS 操作會失敗。 CreateKey會傳回 CustomKeyStoreInvalidStateException. AWS KMS cryptographic 操作傳回 KMSInvalidStateException。兩者都使用下列錯誤訊息:

外部金鑰存放區代理拒絕存取該操作。確認使用者和外部金鑰都已獲得針對此操作的授權,然後再試一次請求。
  • 若要解決錯誤,請使用外部金鑰管理器或外部金鑰存放區代理工具來確定授權失敗的原因。然後,更新導致未授權請求的程序,或使用外部金鑰存放區代理工具來更新授權政策。您無法在 AWS KMS中解決此錯誤。