

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ビーコン
<a name="beacons"></a>


****  

|  | 
| --- |
| クライアント側の暗号化ライブラリの名前が AWS Database Encryption SDK に変更されました。このデベロッパーガイドでは、引き続き [DynamoDB Encryption Client](legacy-dynamodb-encryption-client.md) に関する情報を提供します。 | 

ビーコンは、フィールドに書き込まれるプレーンテキストの値と、実際にデータベースに格納される暗号化された値の間のマップを作成する、切り詰められた Hash-Based Message Authentication Code (HMAC) タグです。ビーコンはフィールドの暗号化状態を変更しません。ビーコンは、フィールドのプレーンテキストの値について HMAC を計算し、それを暗号化された値と一緒に格納します。この HMAC 出力は、そのフィールドのプレーンテキストの値と 1 対 1 (1:1) で一致します。HMAC 出力は切り詰められ、複数の個別のプレーンテキストの値が、切り詰められた同じ HMAC タグにマッピングされます。これらの誤検知により、不正ユーザーは、プレーンテキストの値に関する特徴的な情報を識別しにくくなります。

ビーコンは、[暗号化アクション](concepts.md#crypt-actions)`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`で `ENCRYPT_AND_SIGN`、`SIGN_ONLY`、または とマークされたフィールドからのみ構築できます。ビーコン自体は署名も暗号化もされません。`DO_NOTHING` とマークされているフィールドを使用してビーコンを構築することはできません。

設定するビーコンのタイプによって、実行できるクエリのタイプが決まります。検索可能な暗号化をサポートするビーコンには 2 つのタイプがあります。標準ビーコンは、一致検索を実行します。複合ビーコンは、リテラルプレーンテキスト文字列と標準ビーコンを組み合わせて、複雑なデータベースオペレーションを実行します。[ビーコンを設定](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)」を参照してください。



標準ビーコンが構築されるフィールドは、ビーコンソースと呼ばれます。これは、ビーコンがマッピングする必要があるデータの場所を識別します。ビーコンソースは、暗号化されたフィールドまたは仮想フィールドのいずれかです。各標準ビーコンのビーコンソースは一意である必要があります。同じビーコンソースで 2 つのビーコンを設定することはできません。

標準ビーコンを使用して、暗号化されたフィールドまたは仮想フィールドの等価検索を実行できます。または、複合ビーコンを構築して、より複雑なデータベースオペレーションを実行することもできます。標準ビーコンの整理と管理に役立つように、 AWS Database Encryption SDK には、標準ビーコンの用途を定義する以下のオプション*ビーコンスタイル*が用意されています。詳細については、[「ビーコンスタイルの定義](configure-beacons.md#define-beacon-styles)」を参照してください。

単一の暗号化されたフィールドに対して等価検索を実行する標準ビーコンを作成することも、仮想フィールドを作成して複数の `ENCRYPT_AND_SIGN`、、`SIGN_ONLY`および `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`フィールドの連結に対して等価検索を実行する標準ビーコンを作成することもできます。



**仮想フィールド**  
仮想フィールドは、1 つ以上のソースフィールドから構築された概念的なフィールドです。仮想フィールドを作成しても、レコードに新しいフィールドは書き込まれません。仮想フィールドは、データベースに明示的に格納されません。これは、フィールドの特定のセグメントを識別する方法、またはレコード内の複数のフィールドを連結して特定のクエリを実行する方法についてビーコンに指示を与えるために、標準ビーコン設定で使用されます。仮想フィールドには少なくとも 1 つの暗号化されたフィールドが必要です。  
次の例は、仮想フィールドを使用して実行できる変換とクエリのタイプを示しています。アプリケーションでは、この例で使用されているフィールド例は、ビーコンの[分布](searchable-encryption.md#searchable-encryption-distribution)および[相関](searchable-encryption.md#searchable-encryption-correlated-values)の一意性に関する推奨事項を満たしていない可能性があります。
例えば、`FirstName` および `LastName` フィールドの連結に対して一致検索を実行する場合は、次のいずれかの仮想フィールドを作成することが考えられます。  
+ `FirstName` フィールドの最初の文字と、それに続く `LastName` フィールドから構築される仮想 `NameTag` フィールド (すべて小文字)。この仮想フィールドを使用すると、`NameTag=mjones` をクエリできます。
+ `LastName` フィールドと、それに続く `FirstName` フィールドから構築される仮想 `LastFirst` フィールド。この仮想フィールドを使用すると、`LastFirst=JonesMary` をクエリできます。
または、暗号化されたフィールドの特定のセグメントに対して一致検索を実行する場合は、クエリを実行するセグメントを識別する仮想フィールドを作成します。  
例えば、IP アドレスの最初の 3 つのセグメントを使用して暗号化された `IPAddress` フィールドをクエリする場合は、次の仮想フィールドを作成します。  
+ `Segments(‘.’, 0, 3)` から構築された仮想 `IPSegment` フィールド。この仮想フィールドを使用すると、`IPSegment=192.0.2` をクエリできます。クエリは、「192.0.2」で始まる `IPAddress` の値を持つすべてのレコードを返します。
仮想フィールドは一意である必要があります。2 つの仮想フィールドをまったく同じソースフィールドから構築することはできません。  
仮想フィールドとそれらを使用するビーコンの設定については、「[仮想フィールドの作成](configure-beacons.md#create-virtual-field)」を参照してください。

## 複合ビーコン
<a name="compound-beacon-overview"></a>

複合ビーコンは、クエリのパフォーマンスを改善するインデックスを作成し、より複雑なデータベースオペレーションを実行できるようにします。複合ビーコンを使用して、リテラルプレーンテキスト文字列と標準ビーコンを組み合わせて、単一のインデックスから 2 つの異なるレコードタイプをクエリしたり、ソートキーを使用してフィールドの組み合わせをクエリしたりするなど、暗号化されたレコードに対して複雑なクエリを実行できます。複合ビーコンソリューションの例については、「[ビーコンタイプを選択する](choosing-beacon-type.md)」を参照してください。

複合ビーコンは、標準ビーコン、または標準ビーコンと署名付きフィールドの組み合わせから構築できます。これらは部分のリストから構築されます。すべての複合ビーコンには、ビーコンに含まれる `ENCRYPT_AND_SIGN` フィールドを識別する[暗号化された部分](configure-beacons.md#encrypted-parts)のリストが含まれている必要があります。すべての `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)」を参照してください。