Шифрование данных с помощью ключей, управляемых клиентом

Область применения: Azure Cosmos DB для PostgreSQL (на базе расширения базы данных Citus до PostgreSQL)

Данные, хранящиеся в кластере Azure Cosmos DB для PostgreSQL, автоматически шифруются с помощью ключей, управляемых корпорацией Майкрософт. Эти ключи называются ключами, управляемыми службой. Azure Cosmos DB для PostgreSQL использует шифрование служба хранилища Azure для шифрования неактивных данных по умолчанию с помощью ключей, управляемых службой. При необходимости можно добавить дополнительный уровень безопасности, включив шифрование с помощью ключей, управляемых клиентом.

Ключи, управляемые службой

Служба Azure Cosmos DB для PostgreSQL использует проверенный криптографический модуль FIPS 140-2 для шифрования неактивных данных. Все данные, включая резервные копии и временные файлы, созданные при выполнении запросов, шифруются на диске. Служба использует 256-разрядный шифр AES, доступный при шифровании службы хранилища Azure. Ключами управляет система. Шифрование хранилища всегда включено, и его нельзя отключить.

Ключи, управляемые клиентом

Во многих организациях требуется полный контроль доступа к данным с помощью управляемого клиентом ключа (CMK). Шифрование данных с помощью ключей, управляемых клиентом для Azure Cosmos DB для PostgreSQL, позволяет использовать собственный ключ для защиты неактивных данных. Он также позволяет организациям реализовать разделение обязанностей в управлении ключами и данными. С помощью шифрования, управляемого клиентом, вы несете ответственность за выполнение операций и полное управление жизненным циклом ключа, разрешениями на использование и аудитом операций.

Шифрование данных с помощью ключей, управляемых клиентом для Azure Cosmos DB для PostgreSQL, устанавливается на уровне сервера. Данные, включая резервные копии, шифруются на диске. Это шифрование включает временные файлы, созданные при выполнении запросов. Для данного кластера ключ, управляемый клиентом, называемый ключом шифрования ключей (KEK), используется для шифрования ключа шифрования данных службы (DEK). KEK представляет собой асимметричный ключ и хранится в принадлежащем клиенту и управляемом им экземпляре Azure Key Vault.

Description
Ключ шифрования данных (DEK) Ключ шифрования данных — это симметричный ключ AES256, используемый для шифрования секции или блока данных. Шифрование каждого блока данных другим ключом создает дополнительные сложности для выполнения атак в отношении зашифрованных данных. Поставщик ресурсов или экземпляр приложения, который шифрует и расшифровывает определенный блок, требует доступа к пакетам DEK. Когда DEK заменяется новым ключом, повторного шифрования этим ключом требуют только данные в его связанном блоке.
Ключ шифрования ключей (KEK) Ключ шифрования ключей — это ключ шифрования, используемый для шифрования ключей DEK. KEK, который никогда не покидает хранилище ключей, позволяет самостоятельно шифровать и управлять ими. Сущность, у которой есть доступ к ключу KEK, может отличаться от сущности, требующей ключа DEK. Так как KEK требуется для расшифровки ключей, KEK фактически является одной точкой и удалением KEK фактически удаляет пакеты DEK.

Примечание.

Azure Key Vault — это облачная система управления ключами. Он высокодоступен и обеспечивает масштабируемое, безопасное хранилище для криптографических ключей RSA, при необходимости поддерживаемое FIPS 140 проверенными аппаратными модулями безопасности (HSM). Хранилище ключей не разрешает прямой доступ к хранимым ключом, но предоставляет службы шифрования и расшифровки для авторизованных сущностей. Хранилище ключей может создать ключ, импортировать его или передать с локального устройства HSM.

Ключи DEK, зашифрованные с помощью ключей KEK, хранятся отдельно. Расшифровать ключи DEK может только сущность с доступом к ключу KEK. Дополнительные сведения см. в разделе "Безопасность неактивных данных".

Как работает шифрование данных с помощью управляемого клиентом ключа

Чтобы кластер использовал управляемые клиентом ключи, хранящиеся в Key Vault для шифрования DEK, администратор Key Vault предоставляет следующие права доступа к серверу:

Description
get Позволяет получить общедоступную часть и свойства ключа в хранилище ключей.
wrapKey Включает шифрование DEK. Зашифрованный DEK хранится в Azure Cosmos DB для PostgreSQL.
unwrapKey Включает расшифровку DEK. Azure Cosmos DB для PostgreSQL требует расшифровки DEK для шифрования и расшифровки данных.

Администратор хранилища ключей может также включить ведение журнала событий аудита Key Vault, чтобы их можно было проверить позже. Когда кластер Azure Cosmos DB для PostgreSQL настроен на использование управляемого клиентом ключа, хранящегося в хранилище ключей, кластер отправляет deK в хранилище ключей для шифрования. Key Vault возвращает зашифрованный ключ DEK, который сохраняется в базе данных пользователя. Аналогично при необходимости сервер отправляет защищенный ключ DEK в хранилище ключей для расшифровки. Аудиторы могут использовать Azure Monitor для просмотра журналов событий аудита Key Vault, если ведение журнала включено.

Screenshot of architecture of data enrcryption with customer-managed keys.

Льготы

Шифрование данных с помощью ключей, управляемых клиентом для Azure Cosmos DB для PostgreSQL, обеспечивает следующие преимущества:

  • Вы полностью управляете доступом к данным с возможностью удаления ключа и делает базу данных недоступной.
  • Полный контроль над жизненным циклом ключа, включая смену ключа в соответствии с конкретными корпоративными политиками.
  • Централизованное управление ключами и их организация в Azure Key Vault.
  • Возможность реализовать разделение обязанностей между сотрудниками службы безопасности, администраторами баз данных и системными администраторами.
  • Включение шифрования не имеет дополнительных эффектов производительности с ключами, управляемыми клиентом, или без них. Azure Cosmos DB для PostgreSQL использует служба хранилища Azure для шифрования данных в сценариях ключей, управляемых клиентом и службами.

Следующие шаги