本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用信標
我們的用戶端加密程式庫已重新命名為 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
-
beacon1
IN (beacon2
) -
value
IN (beacon1
,beacon2
, ...) -
CONTAINS(
beacon1
,beacon2
)
複合信標可以執行下列查詢。
-
BEGINS_WITH(
,其中a
)
會反映組裝複合信標開頭欄位的整個值。您無法使用運算a
BEGINS_WITH
子來識別以特定子字串開頭的值。不過,您可以使用BEGINS_WITH(
,其中S_
)
會反映組裝複合信標開頭的部分字首。S_
-
CONTAINS(
,其中a
)
會反映已組裝複合信標包含之欄位的整個值。您無法使用運算a
CONTAINS
子來識別包含特定子字串或集合內值的記錄。例如,您無法執行查詢,
CONTAINS(
其中path
, "a
"
反映集合中的值。a
-
您可以比較複合信標的簽章部分。當您比較已簽章的組件時,您可以選擇將加密組件的字首附加到一或多個已簽章的組件,但您無法在任何查詢中包含加密欄位的值。
例如,您可以在
或 上比較已簽章的組件和查詢signedField1
=signedField2
。value
IN (signedField1
,signedField2
, ...)您也可以在 上透過查詢來比較已簽章的組件和已加密組件的字首
。signedField1.A_
=signedField2.B_
-
,其中field
BETWEENa
ANDb
和a
是簽署的組件。您可以選擇將加密部分的字首附加到一或多個已簽章的組件,但您無法在任何查詢中包含加密欄位的值。b
您必須在複合信標的查詢中包含每個部分的字首。例如,如果您從兩個欄位 encryptedField
和 建構複合信標 compoundBeacon
,signedField
則必須在查詢信標時包含為這兩個部分設定的字首。
compoundBeacon = E_
encryptedFieldValue
.S_signedFieldValue