Escolha de um tipo de beacon - AWS Criptografia de banco SDK

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

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.

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, você deve configurar um índice secundário para cada beacon antes de poder pesquisar nos campos criptografados. Para ter mais informações, consulte Configuração de índices secundários com beacons.

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 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, 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.

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

Os beacons padrão só podem realizar pesquisas de igualdade. É possível usar beacons padrão para realizar as consultas a seguir.

Consultar um único campo criptografado

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

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.

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.

Consultar um campo virtual

Um campo virtual é 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.

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
nota

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 e correlação 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.

Para obter ajuda na configuração de campos virtuais e os beacons que os usam, consulte Criar um campo virtual.

Beacons compostos

Os beacons compostos 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

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.

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.

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.

Consulte uma combinação de campos de texto simples criptografados em um único índice

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.

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.

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.

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. 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.