本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用信標
| 我們的用戶端加密程式庫已重新命名為 AWS 資料庫加密 SDK。此開發人員指南仍會提供 DynamoDB Encryption Client 的相關資訊。 |
Beacons 可讓您搜尋加密的記錄,而不會解密要查詢的整個資料庫。信標旨在於新的未填入資料庫中實作。在現有資料庫中設定的任何信標只會映射寫入資料庫的新記錄。信標是根據欄位的純文字值計算,一旦欄位加密,信標就無法映射現有資料。使用信標寫入新記錄後,您就無法更新信標的組態。不過,您可以為新增至記錄的新欄位新增新信標。
設定信標之後,您必須先完成下列步驟,才能開始填入資料庫並對信標執行查詢。
-
建立 AWS KMS 階層式 keyring
若要使用可搜尋加密,您必須使用AWS KMS 階層式 keyring 來產生、加密和解密用於保護記錄的資料金鑰。
設定信標之後,請組合階層式 keyring 先決條件並建立階層式 keyring。
如需為何需要階層式 keyring 的詳細資訊,請參閱使用階層式 keyring 進行可搜尋加密。
-
定義信標版本
指定您的
keyStore、keySource、您設定的所有標準信標清單、您設定的所有複合信標清單、加密組件清單、已簽署組件清單和信標版本。您必須1為信標版本指定 。如需定義 的指引keySource,請參閱 定義您的信標金鑰來源。下列 Java 範例定義單一租戶資料庫的信標版本。如需定義多租戶資料庫信標版本的協助,請參閱多租戶資料庫的可搜尋加密。
-
設定次要索引
設定信標之後,您必須先設定反映每個信標的次要索引,才能搜尋加密的欄位。如需詳細資訊,請參閱使用信標設定次要索引。
-
定義您的密碼編譯動作
用於建構標準信標的所有欄位都必須標記為
ENCRYPT_AND_SIGN。用於建構信標的所有其他欄位都必須標記SIGN_ONLY或SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT。 -
設定 AWS 資料庫加密 SDK 用戶端
若要設定 Database AWS Encryption SDK 用戶端來保護 DynamoDB 資料表中的資料表項目,請參閱適用於 DynamoDB 的 Java 用戶端加密程式庫。
查詢信標
您設定的信標類型決定您可以執行的查詢類型。標準信標使用篩選條件表達式來執行等式搜尋。複合信標結合純文字字串和標準信標,以執行複雜的查詢。當您查詢加密的資料時,您會搜尋信標名稱。
您無法比較兩個標準信標的值,即使它們包含相同的基礎純文字。兩個標準信標將產生兩個不同的 HMAC 標籤,用於相同的純文字值。因此,標準信標無法執行下列查詢。
-
beacon1=beacon2 -
beacon1IN (beacon2) -
valueIN (beacon1,beacon2, ...) -
CONTAINS(beacon1,beacon2)
複合信標可以執行下列查詢。
-
BEGINS_WITH(,其中a)會反映組裝複合信標開頭欄位的整個值。您無法使用運算aBEGINS_WITH子來識別以特定子字串開頭的值。不過,您可以使用BEGINS_WITH(,其中S_)會反映組裝複合信標開頭的部分字首。S_ -
CONTAINS(,其中a)會反映已組裝複合信標包含之欄位的整個值。您無法使用運算aCONTAINS子來識別包含特定子字串或集合內值的記錄。例如,您無法執行查詢,
CONTAINS(其中path, "a"反映集合中的值。a -
您可以比較複合信標的簽章部分。當您比較已簽章的組件時,您可以選擇將加密組件的字首附加到一或多個已簽章的組件,但您無法在任何查詢中包含加密欄位的值。
例如,您可以在
或 上比較已簽章的組件和查詢signedField1=signedField2。valueIN (signedField1,signedField2, ...)您也可以在 上透過查詢來比較已簽章的組件和已加密組件的字首
。signedField1.A_=signedField2.B_ -
,其中fieldBETWEENaANDb和a是簽署的組件。您可以選擇將加密部分的字首附加到一或多個已簽章的組件,但您無法在任何查詢中包含加密欄位的值。b
您必須在複合信標的查詢中包含每個部分的字首。例如,如果您從兩個欄位 encryptedField 和 建構複合信標 compoundBeacon,signedField則必須在查詢信標時包含為這兩個部分設定的字首。
compoundBeacon = E_encryptedFieldValue.S_signedFieldValue