Каковы плюсы и минусы шифрования в состоянии покоя и шифрования на стороне клиента в таблицах DynamoDb - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть два следующих варианта дизайна для таблицы DynamodB

  1. Использование шифрования в состоянии покоя
  2. Использование шифрования на стороне клиента с AWS управляемым ключом KMS

Пока что исследование, которое я проводил, «Шифрование в состоянии покоя» проще в управлении и отладке, поскольку в нем данные отображаются в виде простого текста в консоли, где, как если бы вы использовали шифрование на стороне клиента, вы должны выполнить дополнительный шаг дешифрования этих данных. информация перед просмотром в целях отладки. Каковы другие преимущества шифрования в состоянии покоя по сравнению с шифрованием на стороне клиента?

Что обеспечит наиболее эффективную производительность среди этих двух? Если бы вам дали выбор, какой из них вы бы выбрали и почему?

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Владелец клиента шифрования DynamoDB [1] здесь. :)

Как и во многих других случаях, какой вариант лучше для вас, зависит от вашего варианта использования и требований безопасности (или соответствия).

Если шифрование на стороне сервера удовлетворяет этим требованиям, то да, это самый простой ответ и потребует наименьшей сложности с вашей стороны. Вы не можете отключить шифрование на стороне сервера DynamoDB, но вам нужно решить, какой уровень контроля вы хотите над KMS CMK, который DynamoDB использует для защиты вашей таблицы [2].

Есть некоторые возможности, которые на стороне клиента шифрование предлагает то, что на стороне сервера нет. Некоторые сценарии ios, в которых шифрование на стороне клиента может помочь вам, включают:

  • У вас есть требование безопасности или соответствия, что все данные должны быть зашифрованы локально, прежде чем они будут отправлены какой-либо службе.
  • В вашей таблице есть элементы, которые необходимо зашифровать под разными мастер-ключами. Например, если у вас есть мультитенантная таблица и вы шифруете данные каждого клиента в соответствии с указанным клиентом c CMK.
  • У вас разные требования безопасности для разных атрибутов элемента. Например, если у вас есть некоторые атрибуты, которые не являются секретными, а некоторые есть, и было бы полезно иметь возможность иметь некоторые части вашей службы или приложения, способные считывать несекретные атрибуты, но не секретные атрибуты. В этом сценарии вы можете настроить клиент шифрования DynamoDB только для подписи этих атрибутов, а не для их шифрования и подписи, что позволит вам сохранить проверку целостности элементов, оставив эти не секретные атрибуты доступными для чтения компонентам, которые не могут расшифровать секретные атрибуты.

Существует также некоторые расходы на шифрование на стороне клиента.

  • Увеличена сложность кода. Если вы работаете в Java или Python, клиент шифрования DynamoDB может решить большую часть сложности для вас, но использовать его все же сложнее, чем не выполнять шифрование на стороне клиента.
  • Увеличение KMS расходы (при условии, что вы используете KMS). Это можно уменьшить с помощью «самого последнего поставщика» [3]; ответ клиента шифрования DynamoDB на повторное использование ключа данных.
  • Снижение видимости консоли. Что касается DynamoDB, если вы выполняете шифрование на стороне клиента, то ваши элементы - это просто данные, которые имеют необычно высокий процент двоичных атрибутов, поэтому консоль не может показать вам открытый текст ваших зашифрованных атрибутов на стороне клиента.

[1] https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/what-is-ddb-encrypt.html

[2] https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/EncryptionAtRest.html

[3] https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/most-recent-provider.html

1 голос
/ 07 апреля 2020
  1. Таблицы DynamoDb всегда зашифрованы в состоянии покоя . Вы не можете отключить его.

    Шифрование на стороне сервера включено во всех данных таблицы DynamoDB и не может быть отключено.

  2. Второй вопрос остается за вами. По некоторым нормативным причинам вам может потребоваться шифрование ваших элементов, которые хранятся в DynamoDb. Если это не требуется, ваша жизнь будет намного проще без этого. В противном случае каждое приложение, которое пишет / читает ваши элементы, должно будет продолжать шифровать и дешифровать элементы, прежде чем они смогут что-либо делать. Это обойдется вам только в плату за KMS, усложнит разработку и обслуживание ваших приложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...