Общие сведения об управлении ключами для Always Encrypted

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Always Encrypted использует два типа криптографических ключей для защиты данных: один ключ для шифрования данных, а другой — для шифрования ключа, шифрующего данные. Ключ шифрования столбца шифрует ваши данные, мастер-ключ столбца шифрует ключ шифрования столбца. В этой статье приведен подробный обзор процесса управления этими ключами.

При обсуждении ключей Always Encrypted и управления ключами важно понимать различие между фактическими криптографическими ключами и объектами метаданных, описывающими ключи. Для обозначения фактических криптографических ключей служат термины ключ шифрования столбца и главный ключ столбца . Применительно к описаниям ключа постоянного шифрования в базе данных используются метаданные ключа шифрования столбца и метаданные главного ключа шифрования .

  • Ключи шифрования столбцов — это ключи шифрования содержимого, используемые для шифрования данных. Как следует из названия, ключи шифрования столбцов применяются для шифрования данных в столбцах базы данных. Вы можете зашифровать один или несколько столбцов с одним ключом шифрования столбцов или использовать несколько ключей шифрования столбцов в зависимости от требований приложения. Ключи шифрования столбцов являются зашифрованными. В базе данных хранятся только зашифрованные значения ключей шифрования столбцов (в составе метаданных ключа шифрования столбца). Метаданные ключа шифрования столбца хранятся в представлениях каталога sys.column_encryption_keys (Transact-SQL) и sys.column_encryption_key_values (Transact-SQL) . Длина ключей шифрования столбцов, используемых с алгоритмом AES-256, составляет 256 бит.

  • Главные ключи столбцов являются ключами, защищающими ключи шифрования столбцов. Главные ключи столбцов должны храниться в надежном хранилище ключей, например хранилище сертификатов Windows, хранилище ключей Azure или аппаратном модуле безопасности. В базе данных содержатся только метаданные о главных ключах столбцов (тип хранилища ключей и местоположение). Метаданные главного ключа столбца хранятся в представлении каталога sys.column_master_keys (Transact-SQL) .

Метаданные ключа в системе базы данных не содержат главных ключей столбцов обычного текста или ключей шифрования столбцов с открытым текстом. Базы данных содержат только сведения о типе и расположении главных ключей столбцов и зашифрованные значения ключей шифрования столбцов. Это означает, что ключи с открытым текстом никогда не попадают в систему базы данных, что гарантирует безопасность данных, защищенных с помощью постоянного шифрования, даже в случае компрометации базы данных. Чтобы убедиться, что система базы данных не может получить доступ к ключам открытого текста, обязательно запустите средства управления ключами на другом компьютере, отличном от того, где размещена база данных. Дополнительные сведения см. в разделе "Вопросы безопасности для управления ключами ".

Так как база данных содержит только зашифрованные данные (в защищенных столбцах Always Encrypted) и не может получить доступ к ключам обычного текста, он не может расшифровать данные. Это означает, что запросы к всегда зашифрованным столбцам будут возвращать зашифрованные значения, поэтому клиентские приложения, которые должны шифровать или расшифровывать защищенные данные, должны иметь доступ к главному ключу столбца и связанным ключам шифрования столбцов. Дополнительные сведения см. в разделе Разработка приложений с помощью Always Encrypted.

Задачи управления ключами

Процесс управления ключами можно разделить на следующие высокоуровневые задачи:

  • Подготовка ключей: создание физических ключей в доверенном хранилище ключей (например, в хранилище сертификатов Windows, Azure Key Vault или аппаратном модуле безопасности), шифрование ключей шифрования столбцов с помощью главных ключей столбцов и создание метаданных для обоих типов ключей в базе данных.

  • Смена ключей: периодически замена существующего ключа новым ключом. Возможно, потребуется сменить ключ, если ключ скомпрометирован или в соответствии с политиками вашей организации или правилами соответствия требованиям, которые требуют смены криптографических ключей.

Роли управления ключами

Существует две разные роли пользователей, которые управляют ключами Always Encrypted; администраторы безопасности и администраторы баз данных (DBAs):

  • Администратор безопасности: создает ключи шифрования столбцов и главные ключи столбцов и управляет хранилищами ключей, содержащими главные ключи столбцов. Для выполнения этих задач администратору безопасности необходимо иметь доступ к ключам и хранилищу ключей, но не требует доступа к базе данных.
  • DBA: управляет метаданными о ключах в базе данных. Для выполнения ключевых задач администрирования DBA необходимо иметь возможность управлять метаданными ключей в базе данных, но не требуется доступ к ключам или хранилищу ключей, содержащему мастер-ключи столбцов.

С учетом указанных выше ролей существует два разных способа реализации задач управления ключами для постоянного шифрования — с разделением ролейи без разделения ролей. В зависимости от потребностей организации можно выбрать процесс управления ключами, лучше всего соответствующий вашим требованиям.

Управление ключами с разделением ролей

Если при управлении ключами Always Encrypted используется разделение обязанностей, то роли администратора безопасности и администратора базы данных (DBA) в организации выполняют разные сотрудники. Процесс управления ключами с разделением ролей гарантирует, что базы данных не имеют доступа к ключам или хранилищам ключей, в которых хранятся фактические ключи, а администраторы безопасности не имеют доступа к базе данных, содержащей конфиденциальные данные. Управление ключами с разделением ролей рекомендуется, если ваша цель — убедиться, что базы данных в вашей организации не могут получить доступ к конфиденциальным данным.

Примечание.

Администраторы безопасности создают ключи и работают с ними в открытом виде, поэтому они не должны выполнять свои задачи на тех же компьютерах, на которых размещена система баз данных, или на компьютерах, к которым имеют доступ администраторы баз данных либо любые другие лица, которые могут быть потенциальными злоумышленниками.

Управление ключами без разделения ролей

Если ключи Always Encrypted управляются без разделения ролей, один пользователь может принимать роли администратора безопасности и DBA, что означает, что пользователь должен иметь доступ к ключам и хранилищам ключей и метаданным ключей и управлять ими. Управление ключами без разделения ролей рекомендуется для организаций с помощью модели DevOps или если база данных размещается в облаке, а основная цель — ограничить доступ к конфиденциальным данным администраторам облака (но не локальным базам данных).

Средства управления ключами Always Encrypted

Для управления ключами постоянного шифрования можно использовать среду SQL Server Management Studio (SSMS) и PowerShell.

Вопросы безопасности для управления ключами

Основной целью постоянного шифрования является обеспечение безопасности конфиденциальных данных, хранящихся в базе данных, даже в случае компрометации системы базы данных или среды ее размещения. Далее приведены примеры атак на систему безопасности и использования постоянного шифрования для препятствия утечке важных данных.

  • Злонамеренный пользователь базы данных с высоким уровнем привилегий, например администратор базы данных, выполняющий запросы к столбцам конфиденциальных данных.
  • Злонамеренный администратор компьютера с экземпляром SQL Server, проверяющий память процесса SQL Server или файлы дампа процесса SQL Server.
  • Злонамеренный оператор ЦОД, выполняющий запросы к базе данных клиента, изучающий файлы дампа SQL Server или проверяющий память компьютера, размещающего данные клиента в облаке.
  • Вредоносные программы, запущенные на компьютере, содержащем базу данных.

Чтобы обеспечить эффективность Always Encrypted в предотвращении этих атак, процесс управления ключами должен гарантировать, что главные ключи столбцов и ключи шифрования столбцов, а также учетные данные в хранилище ключей, содержащего главные ключи столбцов, никогда не отображаются потенциальному злоумышленнику. Ниже приведен ряд обязательных для выполнения рекомендаций.

  • Никогда не создавайте главные ключи столбцов или ключи шифрования столбцов на компьютере с базой данных. Ключи следует создавать на отдельном компьютере, который либо выделен для управления ключами, либо является компьютером с приложениями, которым доступ к ключам требуется в любом случае. Это означает, что никогда не следует запускать средства, используемые для создания ключей, на компьютере с базой данных, так как, если злоумышленник получит доступ к компьютеру, используемому для подготовки или обслуживания ключей Always Encrypted, он может получить ключи, даже если они появляются в памяти этого средства на короткое время.
  • Чтобы процесс управления ключами непреднамеренно не раскрывал главные ключи столбцов или ключи шифрования столбцов, важно определить потенциальных злоумышленников и угрозы безопасности перед определением и реализацией процесса управления ключами. Например, если ваша цель заключается в том, чтобы базы данных не имели доступа к конфиденциальным данным, то DBA не может отвечать за создание ключей. Однако DBA может управлять метаданными ключей в базе данных, так как метаданные не содержат ключи открытого текста.