

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Escolha de um tipo de beacon
<a name="choosing-beacon-type"></a>


****  

|  | 
| --- |
| Nossa biblioteca de criptografia do lado do cliente foi renomeada para SDK de criptografia de AWS banco de dados. Este guia do desenvolvedor ainda fornece informações sobre o [DynamoDB Encryption Client](legacy-dynamodb-encryption-client.md). | 

Com a criptografia pesquisável, você pode pesquisar registros criptografados mapeando os valores de texto simples em um campo criptografado com *um beacon*. O tipo de beacon que você configura determina o tipo de consultas que você pode realizar.

É altamente recomendável identificar e planejar os tipos de consultas que você precisa realizar antes de configurar os beacons. Depois de [configurar os beacons](configure-beacons.md), você deve configurar um índice secundário para cada beacon antes de poder pesquisar nos campos criptografados. Para obter mais informações, consulte [Configuração de índices secundários com beacons](ddb-searchable-encryption.md#ddb-beacon-indexes).

Os beacons criam um mapa entre o valor de texto simples gravado em um campo e o valor criptografado que está realmente armazenado em seu banco de dados. Não é possível comparar os valores de dois beacons padrão, mesmo que eles contenham o mesmo texto simples subjacente. Os dois beacons padrão produzirão duas etiquetas de HMAC diferentes para os mesmos valores de texto simples. Como resultado, os beacons padrão não podem realizar as consultas a seguir.
+ `beacon1 = beacon2`
+ `beacon1 IN (beacon2)`
+ `value IN (beacon1, beacon2, ...)`
+ `CONTAINS(beacon1, beacon2)`

Você só pode realizar as consultas acima se comparar as [partes assinadas](configure-beacons.md#signed-parts) dos beacons compostos, com exceção do `CONTAINS` operador, que pode ser usado com beacons compostos para identificar o valor total de um campo criptografado ou assinado que o beacon montado contém. Ao comparar partes assinadas, você pode, opcionalmente, incluir o prefixo de uma [parte criptografada](configure-beacons.md#encrypted-parts), mas não pode incluir o valor criptografado de um campo. Para obter mais informações sobre os tipos de consultas que os beacons padrão e compostos podem realizar, consulte [Consultar beacons](using-beacons.md#querying-beacons).

Considere as seguintes soluções de criptografia pesquisáveis ao analisar seus padrões de acesso ao banco de dados. Os exemplos a seguir definem qual beacon configurar para atender aos diferentes requisitos de criptografia e consulta.

## Beacons padrão
<a name="plan-standard-beacon"></a>

Os [beacons padrão](beacons.md#standard-beacon-overview) só podem realizar pesquisas de igualdade. É possível usar beacons padrão para realizar as consultas a seguir.

### Consultar um único campo criptografado
<a name="se-example1"></a>

Se você quiser identificar registros que contenham um valor específico para um campo criptografado, crie um beacon padrão.

#### Exemplos
<a name="example1"></a>

Para o exemplo a seguir, considere um banco de dados chamado `UnitInspection` que monitora os dados de inspeção de uma instalação de produção. Cada registro no banco de dados contém campos chamados `work_id`, `inspection_date`, `inspector_id_last4` e `unit`. O ID completo do inspetor é um número entre 0 e 99.999.999. No entanto, para garantir que o conjunto de dados seja distribuído uniformemente, ele armazena apenas os últimos quatro dígitos `inspector_id_last4` da ID do inspetor. Cada campo no banco de dados é identificado pela chave primária `work_id`. Os campos `inspector_id_last4` e `unit` são marcados `ENCRYPT_AND_SIGN` nas [ações criptográficas](concepts.md#crypt-actions).

Veja a seguir um exemplo de uma entrada de texto sem formatação no banco de dados `UnitInspection`.

```
{
    "work_id": "1c7fcff3-6e74-41a8-b7f7-925dc039830b",
    "inspection_date": 2023-06-07,
    "inspector_id_last4": 8744,
    "unit": 229304973450   
}
```

**Consultar um único campo criptografado em um registro**  
Se o campo `inspector_id_last4` precisar ser criptografado, mas você ainda precisar consultá-lo para obter correspondências exatas, construa um beacon padrão a partir do campo `inspector_id_last4`. Em seguida, use o beacon padrão para criar um índice secundário. É possível usar esse índice secundário para consultar o campo `inspector_id_last4` criptografado.

Para obter ajuda sobre a configuração de beacons padrão, consulte [Configuração de beacons padrão](configure-beacons.md#config-standard-beacons).

### Consultar um campo virtual
<a name="se-example2"></a>

Um [campo virtual](beacons.md#virtual-field) é um campo conceitual construído a partir de um ou mais campos de origem. Se você quiser realizar pesquisas de igualdade para um segmento específico de um campo criptografado ou realizar pesquisas de igualdade na concatenação de vários campos, construa um beacon padrão a partir de um campo virtual. Todos os campos virtuais devem incluir pelo menos um campo de origem criptografado.

#### Exemplos
<a name="example2"></a>

Os exemplos a seguir criam campos virtuais para o banco de dados `Employees`. Veja a seguir um exemplo de um registro de texto sem formatação no banco de dados `Employees`.

```
{
    "EmployeeID": 101,
    "SSN": 000-00-0000,
    "LastName": "Jones",
    "FirstName": "Mary",
    "Address": {
                "Street": "123 Main",
                "City": "Anytown",
                "State": "OH",
                "ZIPCode": 12345
    }
}
```

**Consultar um segmento de um campo criptografado**  
Neste exemplo, o campo `SSN` é criptografado.  
Se você quiser consultar o campo `SSN` usando os últimos quatro dígitos de um número de previdência social, crie um campo virtual que identifique o segmento que você planeja consultar.  
Um campo `Last4SSN` virtual, construído a partir de `Suffix(4)` permite que você faça consultas `Last4SSN=0000`. Use esse campo virtual para construir um beacon padrão. Em seguida, use o beacon padrão para criar um índice secundário. É possível usar esse índice secundário para fazer consultas no campo virtual. Essa consulta retorna todos os registros com um valor `SSN` que termina com os últimos quatro dígitos que você especificou.

**Consultar a concatenação de vários campos**  
O exemplo a seguir demonstra os tipos de transformações e consultas que você pode realizar com um campo virtual. No aplicativo, os campos de exemplo usados neste exemplo podem não atender às recomendações de exclusividade de [distribuição](searchable-encryption.md#searchable-encryption-distribution) e [correlação](searchable-encryption.md#searchable-encryption-correlated-values) para beacons.
Se você quiser realizar pesquisas de igualdade em uma concatenação dos campos `FirstName` e `LastName`, é possível criar um campo virtual `NameTag`, construído a partir da primeira letra do campo `FirstName`, seguida pelo campo `LastName`, tudo em minúsculas. Use esse campo virtual para construir um beacon padrão. Em seguida, use o beacon padrão para criar um índice secundário. É possível usar esse índice secundário para fazer consultas `NameTag=mjones` no campo virtual.  
Pelo menos um dos campos de origem deve ser criptografado. `FirstName` ou `LastName` podem ser criptografados, ou ambos podem ser criptografados. Todos os campos de origem de texto simples devem ser marcados como `SIGN_ONLY` ou `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` em suas ações [criptográficas](concepts.md#crypt-actions).

Para obter ajuda na configuração de campos virtuais e os beacons que os usam, consulte [Criar um campo virtual](configure-beacons.md#create-virtual-field).

## Beacons compostos
<a name="plan-compound-beacons"></a>

Os [beacons compostos](beacons.md#compound-beacon-overview) criam um índice a partir de cadeias de texto simples literais e beacons padrão para realizar operações complexas de banco de dados. É possível usar beacons compostos para realizar as consultas a seguir.

### Consulte uma combinação de campos criptografados em um único índice
<a name="se-example3"></a>

Se você precisar consultar uma combinação de campos criptografados em um único índice, crie um beacon composto que combine os beacons padrão individuais construídos para cada campo criptografado para formar um único índice.

Depois de configurar o beacon composto, é possível criar um índice secundário que especifica o beacon composto como a chave de partição para realizar consultas de correspondência exata ou usar uma chave de classificação para realizar consultas mais complexas. Os índices secundários que especificam o beacon composto como chave de classificação podem realizar consultas de correspondência exata e consultas complexas mais personalizadas.

#### Exemplos
<a name="example3"></a>

Para os exemplos a seguir, considere um banco de dados chamado `UnitInspection` que monitora os dados de inspeção de uma instalação de produção. Cada registro no banco de dados contém campos chamados `work_id`, `inspection_date`, `inspector_id_last4` e `unit`. O ID completo do inspetor é um número entre 0 e 99.999.999. No entanto, para garantir que o conjunto de dados seja distribuído uniformemente, ele armazena apenas os últimos quatro dígitos `inspector_id_last4` da ID do inspetor. Cada campo no banco de dados é identificado pela chave primária `work_id`. Os campos `inspector_id_last4` e `unit` são marcados `ENCRYPT_AND_SIGN` nas [ações criptográficas](concepts.md#crypt-actions).

Veja a seguir um exemplo de uma entrada de texto sem formatação no banco de dados `UnitInspection`.

```
{
    "work_id": "1c7fcff3-6e74-41a8-b7f7-925dc039830b",
    "inspection_date": 2023-06-07,
    "inspector_id_last4": 8744,
    "unit": 229304973450
}
```

**Realizar pesquisas de igualdade em uma combinação de campos criptografados**  
Se você quiser consultar o banco de dados `UnitInspection` para obter correspondências exatas em `inspector_id_last4.unit`, primeiro crie beacons padrão distintos para os campos `inspector_id_last4` e `unit`. Em seguida, crie um beacon composto a partir dos dois beacons padrão.  
Depois de configurar o beacon composto, crie um índice secundário que especifica o beacon composto como a chave de partição. Use esse índice secundário para consultar as correspondências exatas em `inspector_id_last4.unit`. Por exemplo, você pode consultar esse beacon para encontrar uma lista das inspeções que um inspetor realizou para uma determinada unidade.

**Execute consultas complexas em uma combinação de campos criptografados**  
Se você quiser consultar o banco de dados `UnitInspection` em `inspector_id_last4` e `inspector_id_last4.unit`, primeiro crie beacons padrão distintos para os campos `inspector_id_last4` e `unit`. Em seguida, crie um beacon composto a partir dos dois beacons padrão.  
Depois de configurar o beacon composto, crie um índice secundário que especifica o beacon composto como a chave de classificação. Use esse índice secundário para consultar o banco de dados `UnitInspection` em busca de entradas que começam com um determinado inspetor ou consultar o banco de dados para obter uma lista de todas as unidades dentro de um intervalo de ID de unidade específico que foram inspecionadas por um determinado inspetor. Também é possível realizar pesquisas de correspondência exata em `inspector_id_last4.unit`.

Para obter ajuda com a configuração de beacons compostos, consulte [Configurar beacons compostos](configure-beacons.md#config-compound-beacons).

### Consulte uma combinação de campos de texto simples criptografados em um único índice
<a name="se-example4"></a>

Se você precisar consultar uma combinação de campos criptografados de texto simples em um único índice, crie um beacon composto que combine os beacons padrão individuais e campos de texto simples para formar um único índice. [Os campos de texto simples usados para construir o farol composto devem estar marcados `SIGN_ONLY` ou `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` em suas ações criptográficas.](concepts.md#crypt-actions)

Depois de configurar o beacon composto, é possível criar um índice secundário que especifica o beacon composto como a chave de partição para realizar consultas de correspondência exata ou usar uma chave de classificação para realizar consultas mais complexas. Os índices secundários que especificam o beacon composto como chave de classificação podem realizar consultas de correspondência exata e consultas complexas mais personalizadas.

#### Exemplos
<a name="example4"></a>

Para os exemplos a seguir, considere um banco de dados chamado `UnitInspection` que monitora os dados de inspeção de uma instalação de produção. Cada registro no banco de dados contém campos chamados `work_id`, `inspection_date`, `inspector_id_last4` e `unit`. O ID completo do inspetor é um número entre 0 e 99.999.999. No entanto, para garantir que o conjunto de dados seja distribuído uniformemente, ele armazena apenas os últimos quatro dígitos `inspector_id_last4` da ID do inspetor. Cada campo no banco de dados é identificado pela chave primária `work_id`. Os campos `inspector_id_last4` e `unit` são marcados `ENCRYPT_AND_SIGN` nas [ações criptográficas](concepts.md#crypt-actions).

Veja a seguir um exemplo de uma entrada de texto sem formatação no banco de dados `UnitInspection`.

```
{
    "work_id": "1c7fcff3-6e74-41a8-b7f7-925dc039830b",
    "inspection_date": 2023-06-07,
    "inspector_id_last4": 8744,
    "unit": 229304973450
}
```

**Realizar pesquisas de igualdade em uma combinação de campos**  
Se você quiser consultar o banco de dados `UnitInspection` para inspeções conduzidas por um inspetor específico em uma data específica, primeiro crie um beacon padrão para o campo `inspector_id_last4`. O campo `inspector_id_last4` é marcado como `ENCRYPT_AND_SIGN` nas [ações criptográficas](concepts.md#crypt-actions). Todas as partes criptografadas exigem seu próprio beacon padrão. O campo `inspection_date` está marcado `SIGN_ONLY` e não requer um beacon padrão. Em seguida, crie um beacon composto a partir do campo `inspection_date` e do beacon `inspector_id_last4` padrão.  
Depois de configurar o beacon composto, crie um índice secundário que especifica o beacon composto como a chave de partição. Use esse índice secundário para consultar os bancos de dados em busca de registros com correspondências exatas com um determinado inspetor e data de inspeção. Por exemplo, você pode consultar o banco de dados para obter uma lista de todas as inspeções realizadas pelo inspetor cujo ID termina em `8744` em uma data específica.

**Execute consultas complexas em uma combinação de campos**  
Se você quiser consultar o banco de dados para inspeções conduzidas dentro de um intervalo `inspection_date`, ou consultar o banco de dados para inspeções conduzidas em uma determinada `inspection_date` restringida por `inspector_id_last4` ou `inspector_id_last4.unit`, primeiro crie beacons padrão distintos para os campos `inspector_id_last4` e `unit`. Em seguida, crie um beacon composto a partir do campo `inspection_date` de texto simples e dos dois beacons padrão.  
Depois de configurar o beacon composto, crie um índice secundário que especifica o beacon composto como a chave de classificação. Use esse índice secundário para realizar consultas para inspeções realizadas em datas específicas por um inspetor específico. Por exemplo, você pode consultar o banco de dados para obter uma lista de todas as unidades inspecionadas na mesma data. Ou você pode consultar o banco de dados para obter uma lista de todas as inspeções realizadas em uma unidade específica entre um determinado intervalo de datas de inspeção.

Para obter ajuda com a configuração de beacons compostos, consulte [Configurar beacons compostos](configure-beacons.md#config-compound-beacons).