疑難排解 DynamoDB 加密用戶端應用程式中的問題 - AWS 資料庫加密 SDK

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

疑難排解 DynamoDB 加密用戶端應用程式中的問題

注意

我們的客戶端加密庫被重命名為 AWS 數據庫加密SDK。下列主題提供有關版本 1 的資訊。 X-2. Java 和版本 1 DynamoDB 驗證加密客戶端的 xX — 3. 適用於 Python 的 x 個 DynamoDB 密用戶端。如需詳細資訊,請參閱 DynamoDB 版本SDK支援的資AWS 料庫加密

本節說明使用 DynamoDB 加密用戶端時可能遇到的問題,並提供解決這些問題的建議。

若要提供有關 DynamoDB 加密用戶端的意見反應,請在aws-dynamodb-encryption-javaaws-dynamodb-encryption-python GitHub 存放庫中提出問題。

若要提供有關此文件的意見回饋,請使用任何頁面上的意見回饋連結。

存取遭拒

問題:您的應用程式遭拒,無法存取其所需的資源。

建議:了解必要的許可,並將這些許可新增至您的應用程式執行所在的安全性細節。

詳細資訊

若要執行使用 DynamoDB 加密用戶端程式庫的應用程式,呼叫者必須具有使用其元件的權限。否則他們會遭拒,無法存取所需的元素。

  • DynamoDB 加密用戶端不需要 Amazon Web Services (AWS) 帳戶,也不需要任何 AWS 服務。但是,如果您的應用程序使用 AWS,則需要有權使用該帳戶的 AWS 帳戶和用戶。

  • 加密用戶端不需要使用 Amazon DynamoDB。不過,如果使用用戶端的應用程式建立 DynamoDB 表、將項目放入資料表或從表格中取得項目,則呼叫者必須具有在您的. AWS 帳戶如需詳細資訊,請參閱 Amazon DynamoDB 開發人員指南中的存取控制主題

  • 如果您的應用程式在 Python 的 DynamoDB 加密用戶端中使用用戶端協助程式類別,則呼叫者必須具有呼叫 DynamoDB DescribeTable作業的權限。

  • DynamoDB 加密用戶端不需要 AWS Key Management Service ()AWS KMS。不過,如果您的應用程式使用直接KMS材料提供者,或是使用具有提供者商店的最新提供者 AWS KMS,則呼叫者必須具有使用 AWS KMS GenerateDataKey解密作業的權限。

簽章驗證失敗

問題:項目因為簽章驗證失敗而無法解密。此項目也無法如您所願進行加密和簽署。

建議:確保您提供的屬性動作會考量項目中的所有屬性。將項目解密時,請務必提供與用來解密項目之動作相符的屬性動作。

詳細資訊

您提供的屬性動作會告訴 DynamoDB 加密用戶端要加密和簽署哪些屬性、要簽署 (但不加密) 哪些屬性,以及要忽略哪些屬性。

如果您指定的屬性動作並未考量項目中的所有屬性,此項目便無法如您預期的方式進行加密和簽署。如果您在加密項目時提供的屬性動作與您在解密項目時提供的屬性動作不同,則簽章驗證可能會失敗。這是一個特殊問題,出現於新屬性動作尚未傳播到所有主機的分散式應用程式中。

簽章驗證錯誤很難解決。如需協助防範其發生,請在變更資料模型時採取額外的預防措施。如需詳細資訊,請參閱 變更您的資料模型

舊版全域資料表的問題

問題:舊版 Amazon DynamoDB 全域資料表中的項目無法解密,因為簽章驗證失敗。

建議:設定屬性動作,使保留的複寫欄位不會加密或簽署。

詳細資訊

您可以將 DynamoDB 加密用戶端與 Dynam oDB 全域資料表搭配使用。我們建議您使用具有多區域KMS索引鍵的全域資料表,並將索KMS引鍵複寫到複寫全域資料表的所有 AWS 區域 位置。

2019.11.21 版全域表開始,您可以將全域表與 DynamoDB 加密用戶端搭配使用,而無需任何特殊設定。但是,如果您使用全域資料表版本 2017.11.29,則必須確保保留的複寫欄位未加密或簽署。

如果您使用的是全域表格版本 2017.11.29,您必須DO_NOTHING在 Java 或 @DoNotTouch Python 中將下列屬性的屬性動作設定為。

  • aws:rep:deleting

  • aws:rep:updatetime

  • aws:rep:updateregion

如果您正在使用任何其他版本的全域表格,則不需要採取任何動作。

最新提供商的表現不佳

問題:您的應用程式的回應速度較低,尤其是在更新至較新版本的 DynamoDB 加密用戶端之後。

建議:調整 time-to-live 值和快取大小。

詳細資訊

最新的提供者旨在透過允許有限的加密材料重複使用,改善使用 DynamoDB 加密用戶端的應用程式效能。當您為應用程式設定最新的 Provider 時,您必須在改善的效能與快取和重複使用所產生的安全性考量之間取得平衡。

在較新版本的 DynamoDB 加密用戶端中, time-to-live (TTL) 值決定可以使用快取的加密材料提供者 (CMPs) 的時間長度。TTL也會決定「最新的提供者」檢查新版本的頻率CMP。

如果您的使TTL用時間太長,您的應用程式可能會違反您的商業規則或安全標準。如果您TTL太短,頻繁撥打電話給提供者商店可能會導致您的供應商商店限制來自您的應用程式和其他共用您服務帳戶的應用程式的要求。若要解決此問題,請將TTL和快取大小調整為符合延遲和可用性目標的值,並符合您的安全性標準。如需詳細資訊,請參閱 設置一個time-to-live值