本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
哪些欄位已加密並簽署?
我們的用戶端加密程式庫已重新命名為 AWS 資料庫加密 SDK。此開發人員指南仍會提供 DynamoDB Encryption Client 的相關資訊。 |
適用於 DynamoDB 的 AWS Database Encryption SDK 是用戶端加密程式庫,專為 Amazon DynamoDB 應用程式而設計。Amazon DynamoDB 將資料存放在資料表中,這是項目的集合。每個項目都是屬性的集合。每個屬性都有名稱和數值。適用於 DynamoDB 的 AWS Database Encryption SDK 會加密屬性的值。接著,它會透過屬性計算簽章。您可以指定哪些屬性值要加密,以及哪些屬性值要包含在簽章中。
加密可保護屬性值的機密性。簽署可提供所有已簽署屬性的完整性及其彼此的關係,並可提供驗證。它可讓您偵測對整體項目的未授權變更 (包括新增或刪除屬性),或是替換已加密的值。
在加密項目中,部分資料會保留純文字,包括資料表名稱、所有屬性名稱、未加密的屬性值、主索引鍵 (分割區索引鍵和排序索引鍵) 屬性的名稱和值,以及屬性類型。請勿在這些欄位中存放敏感性資訊。
如需 DynamoDB AWS 資料庫加密開發套件運作方式的詳細資訊,請參閱AWS 資料庫加密 SDK 的運作方式。
注意
DynamoDB 專用 AWS 資料庫加密 SDK 主題中所有提及的屬性動作都是指密碼編譯動作。
加密屬性值
適用於 DynamoDB 的 AWS Database Encryption 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 Database Encryption SDK 會為您識別主要金鑰屬性,並確保其值已簽章,但不會加密。而且,如果您找出您的主要索引鍵,然後試著將它加密,則用戶端會擲出例外狀況。
用戶端會將材料描述存放在新增至項目的新屬性 (aws_dbe_head
) 中。材料描述說明項目的加密和簽署方式。用戶端會使用此資訊來驗證並解密項目。存放材料描述的欄位不會加密。
簽署項目
加密指定的屬性值後,DynamoDB 的 AWS Database Encryption SDK 會計算雜湊型訊息驗證碼 (HMACs) 和數位簽章,而不是材料描述、加密內容和屬性動作SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
中標記為 ENCRYPT_AND_SIGN
、 SIGN_ONLY
或 的每個欄位的正式化。ECDSA 簽章預設為啟用,但並非必要。用戶端會將 HMACs 和簽章存放在新增至項目的新屬性 (aws_dbe_foot
) 中。