本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
多租戶資料庫的可搜尋加密
我們的用戶端加密程式庫已重新命名為 AWS 資料庫加密 SDK。此開發人員指南仍會提供有關 DynamoDB Encryption Client 的資訊。 |
若要在資料庫中實作可搜尋加密,您必須使用AWS KMS 階層式金鑰環 。 AWS KMS 階層式鍵控會產生、加密和解密用來保護記錄的資料金鑰。它也會建立用來產生信標的信標金鑰。搭配多租戶資料庫使用 AWS KMS 階層式金鑰控制時,每個租戶都有不同的分支金鑰和信標金鑰。若要查詢多租戶資料庫中的加密資料,您必須識別用來產生您正在查詢之信標的信標金鑰材料。如需詳細資訊,請參閱使用階層式鍵控進行可搜尋加密。
當您定義多租戶資料庫的信標版本時,請指定您設定的所有標準信標清單、您設定的所有複合信標清單、信標版本和 keySource
。您必須將信標金鑰來源定義為 MultiKeyStore
,並包含 keyFieldName
、本機信標金鑰快取的存留快取時間,以及本機信標金鑰快取的快取大小上限。
如果您設定了任何已簽章的信標 ,則必須將其包含在 中compoundBeaconList
。簽章信標是一種複合信標類型,可對 SIGN_ONLY
和 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
欄位編製索引並執行複雜的查詢。
- keyFieldName
-
keyFieldName 定義存放與用於為指定租用戶產生信標之信標金鑰
branch-key-id
相關聯的 的欄位名稱。當您將新記錄寫入資料庫時,識別用於產生該記錄之任何信
branch-key-id
標金鑰的 會儲存在此欄位中。根據預設,
keyField
是概念欄位,不會明確儲存在資料庫中。 AWS 資料庫加密branch-key-id
會從材料描述中的加密資料金鑰SDK識別 ,並將該值儲存在概念中,keyField
供您在複合信標和簽章信標 中參考。由於材料描述已簽署,因此概念keyField
會被視為已簽署部分。您也可以將 作為
SIGN_ONLY
或SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
欄位包含在密碼編譯動作keyField
中,以明確將 欄位存放在資料庫中。如果您這樣做,keyField
每次將記錄寫入資料庫時,都必須手動將 包含在branch-key-id
中。
查詢多租戶資料庫中的信標
若要查詢信標,您必須在查詢keyField
中包含 ,以識別重新計算信標所需的適當信標金鑰材料。您必須指定與用來產生記錄信標的信標金鑰branch-key-id
相關聯的 。您無法在分支金鑰 ID 供應商branch-key-id
中指定識別租戶的易記名稱。您可以透過下列方式將 包含在查詢keyField
中。
- 複合信標
-
無論您是否明確
keyField
將 存放在記錄中,都可以將keyField
直接包含在複合信標中,做為已簽署的部分。keyField
簽署的 部分為必填。例如,如果您想要從
compoundBeacon
兩個欄位encryptedField
和 建構複合信標 ,signedField
也必須將keyField
包含為已簽署部分。這可讓您在 上執行下列查詢compoundBeacon
。compoundBeacon = E_encryptedFieldValue.S_signedFieldValue.K_
branch-key-id
- 已簽章的信標
-
AWS Database Encryption SDK使用標準和複合信標來提供可搜尋的加密解決方案。這些信標必須至少包含一個加密欄位。不過, AWS 資料庫加密SDK也支援簽署的信標,這些信標可以完全從純文字
SIGN_ONLY
和SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
欄位設定。簽章信標可以從單一部分建構。無論您是否明確
keyField
將 存放在記錄中,都可以從 建構已簽署的信標keyField
,並使用它來建立複合查詢,將keyField
已簽署信標上的查詢與其中一個信標上的查詢結合在一起。例如,您可以執行下列查詢。keyField = K_
branch-key-id
AND compoundBeacon = E_encryptedFieldValue.S_signedFieldValue如需設定簽章信標的說明,請參閱 建立已簽署的信標
- 直接在 上查詢
keyField
-
如果您在密碼編譯動作
keyField
中指定 ,並明確地將 欄位存放在記錄中,則可以建立複合查詢,將信標上的查詢與 上的查詢結合在一起keyField
。keyField
如果您想要查詢標準信標,您可以選擇直接在 上查詢。例如,您可以執行下列查詢。keyField =
branch-key-id
AND standardBeacon = S_standardBeaconValue