本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用信標
我們的用戶端加密程式庫已重新命名為 AWS 資料庫加密 SDK。本開發人員指南仍提供 DynamoDB 加密用戶端的相關資訊。 |
信標 (Beacon) 可讓您搜尋加密的記錄,而無需解密所查詢的整個資料庫。信標的設計是要在新的、未填入的資料庫中實作。在現有資料庫中設定的任何信標只會對應寫入資料庫的新記錄。信標是根據欄位的純文字值計算的,一旦欄位經過加密,信標就無法對應現有資料。使用信標寫入新記錄之後,就無法更新信標的組態。不過,您可以為新增至記錄的新欄位新增信標。
設定信標之後,您必須先完成下列步驟,才能開始填入資料庫並對信標執行查詢。
-
建立 AWS KMS 階層式金鑰圈
若要使用可搜尋的加密,您必須使用AWS KMS 階層式金鑰環來產生、加密和解密用於保護記錄的資料金鑰。
設定信標之後,請組合階層式金鑰圈先決條件並建立階層式金鑰圈。
如需有關為何需要階層式金鑰圈的詳細資訊,請參閱使用階層式金鑰圈進行可搜尋的加密。
-
定義信標版本
指定您的
keyStore
keySource
、您設定的所有標準信標清單、您設定的所有複合信標清單、加密零件清單、已簽署零件的清單,以及信標版本。您必須1
為信標版本指定。如需定義您的指引keySource
,請參閱定義您的指標金鑰來源。下列 Java 範例會定義單一承租人資料庫的信標版本。如需定義多租戶資料庫之信標版本的說明,請參閱多租戶資料庫的可搜尋加密。
-
設定次要索引
設定信標之後,您必須先設定反映每個信標的次要索引,才能搜尋加密欄位。如需詳細資訊,請參閱 使用信標設定次要索引。
-
定義您的密碼編譯動作
必須標記用於建構標準信標的所有欄位
ENCRYPT_AND_SIGN
。用於構造信標的所有其他字段必須標記SIGN_ONLY
或SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
。 -
設定資 AWS 料庫加密 SDK 用戶端
若要設定可保護 DynamoDB 表格中表項目的 AWS 資料庫加密 SDK 用戶端,請參閱 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
運算子來識別包含特定子字串或集合中值的記錄。例如,您無法執行
反映集合中值的查詢a
CONTAINS(
。path
, "a
" -
您可以比較複合信標的簽名部分。比較已簽署零件時,您可以選擇性地將加密零件的前置詞附加到一或多個已簽署零件,但不能在任何查詢中包含加密欄位的值。
例如,您可以比較已簽署的零件,並在
或上進行查詢signedField1
=signedField2
。value
IN (signedField1
,signedField2
, ...)您也可以透過上的查詢來比較已簽署零件與加密零件的字首
。signedField1.A_
=signedField2.B_
-
,在哪裡field
BETWEENa
ANDb
和簽名a
的部分。您可以選擇性地將加密零件的前置詞附加到一或多個已簽署零件,但不能在任何查詢中包含加密欄位的值。b
您必須包含在複合信標的查詢中的每個零件的前置詞。例如,如果您從兩個欄位建構複合信標 compoundBeacon
signedField
,encryptedField
並且在查詢信標時,必須包含為這兩個部分設定的首碼。
compoundBeacon = E_
encryptedFieldValue
.S_signedFieldValue