

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

# 信標
<a name="beacons"></a>


****  

|  | 
| --- |
| 我們的用戶端加密程式庫已重新命名為 AWS 資料庫加密 SDK。此開發人員指南仍提供有關 [DynamoDB 加密用戶端](legacy-dynamodb-encryption-client.md)的資訊。 | 

信標是截斷的雜湊型訊息驗證碼 (HMAC) 標籤，可在寫入欄位的純文字值與實際存放在資料庫中的加密值之間建立映射。信標不會變更 欄位的加密狀態。信標會透過欄位的純文字值計算 HMAC，並將其與加密值一起存放。此 HMAC 輸出是該欄位純文字值的一對一 (1：1) 比對。HMAC 輸出會截斷，讓多個不同的純文字值對應至相同的截斷 HMAC 標籤。這些誤報會限制未經授權的使用者識別純文字值辨別資訊的能力。

信標只能從[密碼編譯動作](concepts.md#crypt-actions)`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`中標記為 `ENCRYPT_AND_SIGN`、 `SIGN_ONLY`或 的欄位建構。信標本身不會簽署或加密。您無法以標記為 的欄位建構信標`DO_NOTHING`。

您設定的信標類型會決定您可以執行的查詢類型。支援可搜尋加密的信標有兩種類型。*標準信標*會執行相等性搜尋。*複合信標*結合文字純文字字串和標準信標，以執行複雜的資料庫操作。[設定信標](configure-beacons.md)之後，您必須為每個信標設定次要索引，才能搜尋加密的欄位。如需詳細資訊，請參閱[使用信標設定次要索引](ddb-searchable-encryption.md#ddb-beacon-indexes)。

**Topics**
+ [標準信標](#standard-beacon-overview)
+ [複合信標](#compound-beacon-overview)

## 標準信標
<a name="standard-beacon-overview"></a>

標準信標是在資料庫中實作可搜尋加密的最簡單方法。他們只能對單一加密或虛擬欄位執行等式搜尋。若要了解如何設定標準信標，請參閱[設定標準信標](configure-beacons.md#config-standard-beacons)。



標準信標建構來源的欄位稱為*信標來源*。它可識別信標需要映射的資料位置。信標來源可以是加密欄位或*虛擬欄位*。每個標準信標中的信標來源必須是唯一的。您無法設定具有相同信標來源的兩個信標。

標準信標可用於對加密或虛擬欄位執行等式搜尋。或者，它們可用來建構複合信標，以執行更複雜的資料庫操作。為了協助您組織和管理標準信標， AWS 資料庫加密 SDK 提供下列選用*信標樣式*，可定義標準信標的預期用途。如需詳細資訊，請參閱[定義信標樣式](configure-beacons.md#define-beacon-styles)。

您可以建立執行單一加密欄位相等性搜尋的標準信標，也可以建立建立虛擬欄位，在多個 `ENCRYPT_AND_SIGN`、 `SIGN_ONLY`和 `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` 欄位的串連上執行相等性搜尋的標準信標。



**虛擬欄位**  
虛擬欄位是從一或多個來源欄位建構的概念欄位。建立虛擬欄位不會將新欄位寫入您的記錄。虛擬欄位不會明確存放在您的資料庫中。它用於標準信標組態，提供信標指示，說明如何識別欄位的特定區段，或串連記錄中的多個欄位以執行特定查詢。虛擬欄位至少需要一個加密欄位。  
下列範例示範您可以使用虛擬欄位執行的轉換和查詢類型。在應用程式中，此範例中使用的範例欄位可能不符合信標的[分佈](searchable-encryption.md#searchable-encryption-distribution)和[相互關聯](searchable-encryption.md#searchable-encryption-correlated-values)唯一性建議。
例如，如果您想要對 `FirstName`和 `LastName` 欄位的串連執行等式搜尋，您可以建立下列其中一個虛擬欄位。  
+ 虛擬`NameTag`欄位，從`FirstName`欄位的第一個字母開始建構，後面接著 `LastName` 欄位，全部小寫。此虛擬欄位可讓您查詢 `NameTag=mjones`。
+ 虛擬`LastFirst`欄位，由 `LastName` 欄位建構，後面接著 `FirstName` 欄位。此虛擬欄位可讓您查詢 `LastFirst=JonesMary`。
或者，如果您想要對加密欄位的特定區段執行相等性搜尋，請建立虛擬欄位來識別您要查詢的區段。  
例如，如果您想要使用 IP 地址的前三個區段來查詢加密`IPAddress`欄位，請建立下列虛擬欄位。  
+ 由 建構的虛擬`IPSegment`欄位`Segments(‘.’, 0, 3)`。此虛擬欄位可讓您查詢 `IPSegment=192.0.2`。查詢會傳回`IPAddress`值開頭為 "192.0.2" 的所有記錄。
虛擬欄位必須是唯一的。兩個虛擬欄位無法從完全相同的來源欄位建構。  
如需設定虛擬欄位和使用它們的信標的說明，請參閱[建立虛擬欄位](configure-beacons.md#create-virtual-field)。

## 複合信標
<a name="compound-beacon-overview"></a>

複合信標會建立索引，以改善查詢效能，並可讓您執行更複雜的資料庫操作。您可以使用複合信標來結合文字純文字字串和標準信標，對加密的記錄執行複雜的查詢，例如從單一索引查詢兩種不同的記錄類型，或使用排序索引鍵查詢欄位組合。如需更多複合信標解決方案範例，請參閱[選擇信標類型](choosing-beacon-type.md)。

複合信標可以從標準信標或標準信標和已簽章欄位的組合建構。它們是從組件清單建構而成。所有複合信標都應包含[加密部分的](configure-beacons.md#encrypted-parts)清單，以識別信標中包含`ENCRYPT_AND_SIGN`的欄位。每個`ENCRYPT_AND_SIGN`欄位都必須由標準信標識別。更複雜的複合信標也可能包含識別信標中包含的純文字`SIGN_ONLY`或`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`欄位的[已簽章部分](configure-beacons.md#signed-parts)清單，以及識別複合信標組合欄位的所有可能方式的[建構函數部分](configure-beacons.md#constructor-parts)清單。

**注意**  
 AWS Database Encryption SDK 也支援*簽署的信標*，這些信標可以完全從純文字`SIGN_ONLY`和`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`欄位設定。已簽章的信標是一種複合信標，可對已簽章但未加密的欄位編製索引並執行複雜的查詢。如需詳細資訊，請參閱[建立簽章的信標](configure.md#signed-beacons)。

如需設定複合信標的說明，請參閱[設定複合信標](configure-beacons.md#config-compound-beacons)。

您設定複合信標的方式決定其可執行的查詢類型。例如，您可以選用一些加密和已簽章的組件，以便在查詢中提供更多彈性。如需複合信標可執行之查詢類型的詳細資訊，請參閱 [查詢信標](using-beacons.md#querying-beacons)。