本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 DynamoDB 密用戶端
注意
我們的客戶端加密庫被重命名為 AWS 數據庫加密SDK。下列主題提供有關版本 1 的資訊。 X-2. 適用於 Java 和版本 1 的 x 個加密用戶端。 X — 3. 適用於 Python 的 x 個 DynamoDB 密用戶端。如需詳細資訊,請參閱 DynamoDB 版本SDK支援的資AWS 料庫加密。
本主題說明適用於 Python 的 DynamoDB 加密用戶端的一些功能,這些功能可能在其他程式設計語言實作中找不到這些功能。這些功能旨在讓您以最安全的方式更輕鬆地使用 DynamoDB 加密用戶端。若非遇到罕見的使用案例,我們都建議您使用這些功能。
如需使用 DynamoDB 加密用戶端進行程式設計的詳細資訊,請參閱本指南中的 Python 範例
用戶端協助程式類別
適用於 Python 的 DynamoDB 加密用戶端包含數個用戶端協助程式類別,這些用戶端協助程式類別會鏡像 DynamoDB 的 3 個類別。這些輔助程式類別的設計可讓您更輕鬆地將加密和簽署新增至現有 DynamoDB 應用程式,並避免最常見的問題,如下所示:
-
通過向對象添加主鍵的覆蓋操作,或者在AttributeActions對
AttributeActions
象明確告訴客戶端加密主鍵時拋出異常,防止您加密項目中的主鍵。如果AttributeActions
物件中的預設動作為DO_NOTHING
,則用戶端協助程式類別會將該動作用於主索引鍵。否則會使用SIGN_ONLY
。 -
建立TableInfo 物件並根據對 DynamoDB 的呼叫填入 DynamoDB 加密內容。這有助於確保 DynamoDB 加密內容正確無誤,而且用戶端可以識別主要金鑰。
-
當您寫入 DynamoDB 表格或從中讀取資料表項目時
get_item
,可透明地加密和解密資料表項目的 Support 援方法,例如和。put_item
只有update_item
方法不受支援。
您可以使用用戶端協助程式類別,而無須直接與較低層級的項目加密程式互動。只有在需要於項目加密程式中設定進階選項時,才使用這些類別。
用戶端協助程式類別包括:
-
EncryptedTable
適用於在 DynamoDB 中使用表格 資源的應用程式,一次處理一個表格。 -
EncryptedResource
適用於在 DynamoDB 中使用服務資源 類別進行批次處理的應用程式。 -
EncryptedClient
適用於在 DynamoDB 中使用較低層級用戶端 的應用程式。
若要使用用戶端協助程式類別,呼叫者必須具有在目標資料表上呼叫 DynamoDB DescribeTable作業的權限。
TableInfo 類
此TableInfo
如果您使用的是用戶端協助程式類別,其將為您建立並使用 TableInfo
物件。否則,您可以明確建立一個物件。如需範例,請參閱使用項目加密程式。
當您呼叫TableInfo
物件上的refresh_indexed_attributes
方法時,它會透過呼叫 DynamoDB DescribeTable作業來填入物件的屬性值。查詢資料表會比進行索引名稱的硬編碼可靠得多。此TableInfo
類別也包含提encryption_context_values
供 DynamoDB 加密內容所需值的屬性。
若要使用此方refresh_indexed_attributes
法,呼叫者必須具有在目標資料表上呼叫 DynamoDB DescribeTable作業的權限。
Python 中的屬性動作
屬性動作會告知項目加密程式要對項目的每個屬性執行什麼動作。若要指定 Python 中的屬性動作,請建立具有預設動作和特定屬性之任何例外狀況的 AttributeActions
物件。有效值會在 CryptoAction
列舉類型中加以定義。
重要
使用屬性動作加密表格項目後,從資料模型新增或移除屬性可能會導致簽章驗證錯誤,讓您無法解密資料。如需更詳細的說明,請參閱變更您的資料模型。
DO_NOTHING = 0 SIGN_ONLY = 1 ENCRYPT_AND_SIGN = 2
例如,此 AttributeActions
物件會建立 ENCRYPT_AND_SIGN
作為所有屬性的預設值,並指定 ISBN
和 PublicationYear
屬性的例外狀況。
actions = AttributeActions( default_action=CryptoAction.ENCRYPT_AND_SIGN, attribute_actions={ 'ISBN': CryptoAction.DO_NOTHING, 'PublicationYear': CryptoAction.SIGN_ONLY } )
若您使用的是用戶端協助程式類別,您不需要指定主索引鍵屬性的屬性動作。用戶端協助程式類別可防止您將主索引鍵加密。
若未使用用戶端協助程式類別,且預設動作為 ENCRYPT_AND_SIGN
,則必須指定主索引鍵的動作。建議的主索引鍵動作為 SIGN_ONLY
。為了簡化此操作,請使用該set_index_keys
方法,該方法使用 SIGN _ 作ONLY為主鍵,或者使用 DO_NOTHING,當這是默認操作時。
警告
請勿加密主索引鍵的屬性。它們必須保持純文字格式,以便 DynamoDB 可以在不執行完整表格掃描的情況下尋找項目。
actions = AttributeActions( default_action=CryptoAction.ENCRYPT_AND_SIGN, ) actions.set_index_keys(*table_info.protected_index_keys())