亞馬遜加密用戶端概念 - AWS 資料庫加密 SDK

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

亞馬遜加密用戶端概念

注意

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

本主題說明 Amazon DynamoDB 加密用戶端中使用的概念和術語。

若要瞭解 DynamoDB 加密用戶端的元件如何互動,請參閱。加密用戶端的運作方式

密碼編譯資料提供者 (CMP)

實作 DynamoDB 加密用戶端時,您的首要任務之一是選取加密材料提供者 (CMP) (也稱為加密材料提供者)。您的選擇會決定其餘的大部分實作。

密碼編譯資料提供者 (CMP) 會收集、整合及傳回項目加密程式用來加密並簽署資料表項目的密碼編譯資料。CMP 會決定要使用的加密演算法,以及如何產生及保護加密和簽署金鑰。

CMP 會與項目加密程式互動。項目加密程式會請求 CMP 提供加密和解密資料,而 CMP 會將這些資料傳回給項目加密程式。然後,項目加密程式會使用密碼編譯資料將項目加密並簽署,或驗證並解密。

您會在設定用戶端時指定 CMP。您可以建立相容的自訂 CMP,或使用程式庫的其中一個 CMP。大多數 CMP 都適用於多種程式設計語言。

項目加密程式

項目加密程式是較低層級的元件,可為 DynamoDB 加密用戶端執行密碼編譯作業。其將請求密碼編譯資料提供者 (CMP) 提供密碼編譯資料,然後使用 CMP 傳回的資料將資料表項目加密並簽署,或驗證並解密。

您可以直接與項目加密程式互動,或使用您的程式庫所提供的協助程式。例如,適用於 Java 的 DynamoDB 加密用戶端包含可與使用的AttributeEncryptor協助程式類別DynamoDBMapper,而不是直接與DynamoDBEncryptor項目加密程式互動。Python 程式庫包括 EncryptedTableEncryptedClientEncryptedResource 協助程式類別,這些類別會替您與項目加密程式互動。

屬性動作

屬性動作會告知項目加密程式要對項目的每個屬性執行什麼動作。

屬性動作值可以是下列其中一項:

  • 加密並簽署 — 加密屬性值。在項目簽章中包含屬性 (名稱和值)。

  • 僅簽署 — 將屬性包括在項目簽名中。

  • 執行任何動作 — 不加密或簽署屬性。

對於可以儲存敏感資料的任何屬性,請使用加密並簽署。針對主索引鍵屬性 (分割區索引鍵和排序索引鍵),使用僅簽署資料描述屬性和簽章屬性不會進行簽署或加密。您不需要指定這些屬性的屬性動作。

請仔細選擇屬性動作。如有疑問,請使用加密並簽署。一旦您使用 DynamoDB 加密用戶端來保護您的資料表項目,就無法變更屬性的動作,而不會冒著簽章驗證錯誤的風險。如需詳細資訊,請參閱 變更您的資料模型

警告

請勿加密主索引鍵的屬性。它們必須保持純文字格式,以便 DynamoDB 可以在不執行完整表格掃描的情況下尋找項目。

如果 DynamoDB 加密內容識別出您的主索引鍵屬性,如果您嘗試加密,用戶端將會擲回錯誤。

您用來為每種程式設計語言指定屬性動作的技巧都不同。而且,該技巧可以專屬於您所使用的協助程式類別。

如需詳細資訊,請參閱程式設計語言的文件。

資料描述

已加密資料表項目的資料描述包含資料表項目加密和簽署方式的相關資訊 (例如加密演算法)。密碼編譯資料提供者 (CMP) 會在整合可供加密和簽署的密碼編譯資料時記錄資料描述。稍後,當它需要整合密碼編譯資料來驗證和解密項目時,它會使用資料描述作為其指南。

在 DynamoDB 加密用戶端中,材料說明涉及三個相關元素:

請求的資料描述

有些密碼編譯資料提供者 (CMP) 可讓您指定進階選項,例如加密演算法。為了指出您的選擇,您可以在加密表格項目的請求中,將名稱-值配對新增至 DynamoDB 加密內容的材料描述屬性。此元素又稱為請求的資料描述。請求的資料描述中的有效值由您所選的 CMP 定義。

注意

由於資料描述可能覆寫安全的預設值,除非您有充分理由要使用請求的資料描述,否則建議您將其省略。

實際資料描述

密碼編譯資料提供者 (CMP) 傳回的資料描述又稱為實際資料描述。它會描述 CMP 在整合密碼編譯資料時所用的實際值。通常包含請求的資料描述及新增和變更 (如果有)。

資料描述屬性

用戶端會在已加密項目的資料描述屬性中儲存實際資料描述。資料描述屬性名稱為 amzn-ddb-map-desc,而其值為實際資料描述。用戶端會使用資料描述屬性中的值來驗證並解密項目。

DynamoDB 加密內容

DynamoDB 加密內容會將表格和項目的相關資訊提供給加密材料提供者 (CMP)。在進階實作中,DynamoDB 加密內容可以包含要求的材料描述。

當您加密表格項目時,DynamoDB 加密內容會以密碼編譯方式繫結至加密的屬性值。解密時,如果 DynamoDB 加密內容與用於加密的 DynamoDB 加密內容不完全相符、區分大小寫,則解密作業會失敗。如果您直接與項目加密程式互動,則必須在呼叫加密或解密方法時提供 DynamoDB 加密內容。大多數助手都會為您建立 DynamoDB 加密內容。

注意

DynamoDB 加密用戶端中的 DynamoDB 加密內容與 AWS Key Management Service () AWS KMS 和中的加密內容無關。AWS Encryption SDK

DynamoDB 加密內容可以包含下列欄位。所有欄位和值都是選用的。

  • 資料表名稱

  • 分割區索引鍵名稱

  • 排序索引鍵名稱

  • 屬性名稱值組

  • 請求的資料描述

提供者存放區

提供者存放區 是一個可傳回密碼編譯資料提供者 (CMP) 的元件。提供者存放區可以建立 CMP,或從另一個來源 (例如另一個提供者存放區) 取得。提供者存放區會在持久性儲存體中儲存其建立的 CMP 版本,而存放的每個 CMP 都是依照請求者的資料名稱與版本號碼進行識別。

DynamoDB 加密用戶端中的最新提供者會從提供者存放區取得其 CMP,但您可以使用提供者存放區為任何元件提供 CMP。每個最近提供者都與一個提供者存放區相關聯,但提供者存放區可以將 CMP 提供給多部主機上的許多請求者。

提供者存放區會隨需建立新的 CMP 版本,並傳回新的和現有版本。它也會傳回特定資料名稱的最新版本號碼。這使請求者能夠得知提供者存放區何時有可請求的新版 CMP。

DynamoDB 加密用戶端包含一個提供者存放區 MetaStore,可使用儲存在 DynamoDB 中的金鑰建立包裝的 CMP,並使用內部 DynamoDB 加密用戶端進行加密。

進一步了解