本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
哪些欄位已加密並簽署?
我們的用戶端加密程式庫已重新命名為 AWS 資料庫加密 SDK。本開發人員指南仍提供 DynamoDB 加密用戶端的相關資訊。 |
適用於 DynamoDB 的 AWS 資料庫加密開發套件是專為 Amazon DynamoDB 應用程式設計的用戶端加密程式庫。Amazon DynamoDB 會將資料存放在資料表中,這些資料是項目的集合。每個項目都是屬性的集合。每個屬性都有名稱和數值。適用於 DynamoDB 的 AWS 資料庫加密開發套件會加密屬性的值。接著,它會透過屬性計算簽章。您可以指定哪些屬性值要加密,以及哪些屬性值要包含在簽章中。
加密可保護屬性值的機密性。簽署可提供所有已簽署屬性的完整性及其彼此的關係,並可提供驗證。它可讓您偵測對整體項目的未授權變更 (包括新增或刪除屬性),或是替換已加密的值。
在加密項目中,有些資料會保持純文字格式,包括資料表名稱、所有屬性名稱、未加密的屬性值、主索引鍵 (分割索引鍵和排序索引鍵) 屬性的名稱和值,以及屬性類型。請勿在這些欄位中存放敏感性資訊。
如需 DynamoDB 的資 AWS 料庫加密 SDK 如何運作的詳細資訊,請參閱。AWS 資料庫加密 SDK 的運作方式
加密屬性值
DynamoDB 的 AWS 資料庫加密 SDK 會加密您指定之屬性的值 (但不會加密屬性名稱或類型)。若要決定加密的是哪些屬性值,請使用屬性動作。
例如,這個項目包括 example
和 test
屬性。
'example': 'data', 'test': 'test-value', ...
如果您將 example
屬性加密,但不加密 test
屬性,結果如下所示。已加密的 example
屬性值是二進位資料,而不是字串。
'example': Binary(b"'b\x933\x9a+s\xf1\xd6a\xc5\xd5\x1aZ\xed\xd6\xce\xe9X\xf0T\xcb\x9fY\x9f\xf3\xc9C\x83\r\xbb\\"), 'test': 'test-value' ...
每個項目的主索引鍵屬性 (分區索引鍵和排序索引鍵) 必須保留為純文字,因為 DynamoDB 會使用這些屬性來尋找表格中的項目。這些屬性應加以簽署,但不要加密。
適用於 DynamoDB 的 AWS 資料庫加密 SDK 可為您識別主要金鑰屬性,並確保其值已簽署但未加密。而且,如果您找出您的主要索引鍵,然後試著將它加密,則用戶端會擲出例外狀況。
客戶端將材料描述存儲在一個新屬性(aws_dbe_head
)中,該屬性將其添加到物件中。材料描述描述了項目的加密和簽名方式。用戶端會使用此資訊來驗證並解密項目。儲存材料描述的欄位未加密。
簽署項目
將指定的屬性值加密後,DynamoDB 的資料 AWS 庫加密 SDK 會根據材料描述、加密內容以及標記ENCRYPT_AND_SIGN的每個欄位或屬性動作的規範化,計算雜湊型訊息驗證碼 (HMAC) 和數位簽章。SIGN_ONLYSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXTECDSA 簽章預設為啟用,但不是必要的。客戶端將 HMAC 和簽名存儲在添加到項目的新屬性(aws_dbe_foot
)中。