Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
В этом руководстве показано, как приступить к работе с Always Encrypted. В этом руководстве рассматриваются следующие сведения:
- Как зашифровать выбранные столбцы в базе данных.
- Как запрашивать зашифрованные столбцы.
Примечание.
Если вы ищете информацию о Always Encrypted with secure enclaves, ознакомьтесь со следующими руководствами:
Предварительные требования
Для работы с этим руководством необходимы указанные ниже компоненты.
- Пустая база данных в Базе данных SQL Azure, Управляемом экземпляре SQL Azure или SQL Server. В приведенных ниже инструкциях предполагается, что имя базы данных — ContosoHR. Необходимо быть владельцем базы данных (членом роли db_owner ). Сведения о том, как создать базу данных, см. в статье Краткое руководство. Создание отдельной базы данных — База данных SQL Azure или Создание базы данных в SQL Server.
- Необязательно, но рекомендуется, особенно если база данных находится в Azure: хранилище ключей в Azure Key Vault. Сведения о том, как создать хранилище ключей, см. в статье Краткое руководство. Создание хранилища ключей с помощью портала Azure.
- Если хранилище ключей использует модель разрешений политики доступа, убедитесь, что у вас есть следующие разрешения ключа в хранилище ключей:
get, ,listcreate,unwrap key,wrap key, .verifysignСм. раздел Назначить политику доступа к Key Vault. - Если вы используете модель разрешений Azure на основе управления доступом на основе ролей (RBAC), убедитесь, что вам назначена роль Key Vault Crypto Officer для вашего хранилища ключей. См. Предоставление доступа к ключам Key Vault, сертификатам и секретам с помощью управления доступом на основе ролей Azure.
- Если хранилище ключей использует модель разрешений политики доступа, убедитесь, что у вас есть следующие разрешения ключа в хранилище ключей:
- Последняя версия SQL Server Management Studio (SSMS) или последняя версия модулей SqlServer и Az PowerShell. Модуль Az PowerShell требуется только в том случае, если вы используете Azure Key Vault.
Примечание.
Microsoft рекомендует использовать PowerShell 7 или более поздней версии при выполнении скриптов PowerShell always Encrypted. PowerShell 7 обеспечивает улучшенную кроссплатформенную поддержку, более высокую производительность и последнюю совместимость с модулем SqlServer (версии 22+), который необходим для многих сценариев Always Encrypted.
Шаг 1. Создание и заполнение схемы базы данных
На этом шаге вы создадите схему отдела кадров и таблицу Employees . Затем вы заполните таблицу некоторыми данными.
Подключитесь к базе данных. Инструкции о том, как подключиться к базе данных из SSMS, см. в Кратком руководстве: Подключение к базе данных SQL Azure или Управляемому экземпляру SQL Azure и выполнение запросов к ним с помощью SQL Server Management Studio (SSMS) или Кратком руководстве: Подключение к экземпляру SQL Server и выполнение запросов к нему с помощью SQL Server Management Studio (SSMS).
Откройте новое окно запроса для базы данных ContosoHR .
Вставьте и выполните приведенные ниже инструкции, чтобы создать новую таблицу с именем Employees.
CREATE SCHEMA [HR]; GO CREATE TABLE [HR].[Employees] ( [EmployeeID] [int] IDENTITY(1,1) NOT NULL , [SSN] [char](11) NOT NULL , [FirstName] [nvarchar](50) NOT NULL , [LastName] [nvarchar](50) NOT NULL , [Salary] [money] NOT NULL ) ON [PRIMARY];Вставьте и выполните приведенные ниже инструкции, чтобы добавить несколько записей сотрудников в таблицу Employees .
INSERT INTO [HR].[Employees] ( [SSN] , [FirstName] , [LastName] , [Salary] ) VALUES ( '795-73-9838' , N'Catherine' , N'Abel' , $31692 ); INSERT INTO [HR].[Employees] ( [SSN] , [FirstName] , [LastName] , [Salary] ) VALUES ( '990-00-6818' , N'Kim' , N'Abercrombie' , $55415 );
Шаг 2. Шифрование столбцов
На этом шаге вы подготовите главный ключ столбца и ключ шифрования столбцов для Always Encrypted. Затем вы зашифруете столбцы SSN и Зарплата в таблице Employees .
В SSMS есть мастер, который помогает с легкостью настроить Always Encrypted, позволяя создать главный ключ столбца, ключ шифрования столбца и зашифровать выбранные столбцы.
В обозреватель объектов разверните Databases>ContosoHR>Tables.
Щелкните правой кнопкой мыши таблицу Employees и выберите "Шифровать столбцы", чтобы открыть мастер Always Encrypted.
Нажмите кнопку "Далее" на странице "Введение" мастера.
На странице Выбор столбцов.
- Выберите столбцы SSN и Зарплата. Выберите детерминированное шифрование для столбца SSN и случайное шифрование для столбца "Зарплата ". Детерминированное шифрование поддерживает запросы, такие как поиск по точкам, включающих сравнения равенства по зашифрованным столбцам. Случайное шифрование не поддерживает вычисления в зашифрованных столбцах.
- Оставьте CEK-Auto1 (New) в качестве ключа шифрования столбца для обоих столбцов. Этот ключ еще не существует и будет создан мастером.
- Выберите Далее.
На странице "Конфигурация главного ключа" настройте новый главный ключ столбца, который будет создан мастером. Сначала необходимо выбрать, где будет храниться главный ключ столбца. Мастер поддерживает два типа хранилища ключей:
- Azure Key Vault — рекомендуется, если база данных находится в Azure
- Хранилище сертификатов Windows
Как правило, Azure Key Vault рекомендуется использовать, особенно если база данных находится в Azure.
Чтобы использовать Azure Key Vault, выполните приведенные действия.
- Выберите Хранилище ключей Azure.
- Выберите вход и завершите вход в Azure.
- После входа на страницу отобразится список подписок и хранилищ ключей, к которых у вас есть доступ. Выберите подписку Azure, содержащую хранилище ключей, которую вы хотите использовать.
- Выберите нужное хранилище ключей.
- Выберите Далее.
Чтобы использовать хранилище сертификатов Windows, выполните приведенные действия.
Выберите хранилище сертификатов Windows.
Оставьте значение по умолчанию Current User — это укажет мастеру создать сертификат (ваш новый главный ключ столбца) в хранилище Current User.
Выберите Далее.
На странице параметров шифрования на месте дополнительная конфигурация не требуется, так как база данных не включает анклав. Выберите Далее.
На странице "Параметры запуска" вам будет предложено продолжить шифрование или создать скрипт PowerShell для последующего выполнения. Оставьте параметры по умолчанию и нажмите кнопку "Далее".
На странице сводки мастер сообщает о выполняемых действиях. Проверьте правильность всех сведений и нажмите кнопку "Готово".
На странице результатов можно отслеживать ход выполнения операций мастера. Дождитесь успешного завершения всех операций и нажмите кнопку "Закрыть".
(Необязательно) Изучите изменения, внесенные мастером в базу данных.
Разверните ContosoHR>Security>Ключи Always Encrypted, чтобы изучить объекты метаданных для главного ключа столбца и шифрования столбца, созданные мастером.
Вы также можете выполнить приведенные ниже запросы к представлениям системного каталога, содержащим ключевые метаданные.
SELECT * FROM sys.column_master_keys; SELECT * FROM sys.column_encryption_keys SELECT * FROM sys.column_encryption_key_valuesВ обозреватель объектов щелкните правой кнопкой мыши таблицу Employees и выберите Script Table as>CREATE To>New Редактор запросов Window. Откроется новое окно запроса с CREATE TABLE инструкцией для таблицы Employees . Обратите внимание, что в определениях столбцов SSN и Зарплата присутствует выражение ENCRYPTED WITH.
Вы также можете выполнить приведенный ниже запрос к sys.column , чтобы получить метаданные шифрования на уровне столбцов для двух зашифрованных столбцов.
SELECT [name] , [encryption_type] , [encryption_type_desc] , [encryption_algorithm_name] , [column_encryption_key_id] FROM sys.columns WHERE [encryption_type] IS NOT NULL;
Шаг 3. Запрос зашифрованных столбцов
Подключитесь к базе данных с отключенным параметром Always Encrypted для этого подключения.
- Откройте новое окно запроса.
- Щелкните правой кнопкой мыши в любом месте в окне запроса и выберите пункт "Изменение подключения".> Откроется диалоговое окно "Подключение к ядру СУБД".
- Выберите Параметры<<. При этом в диалоговом окне Подключение к ядру СУБД будут отображаться дополнительные вкладки.
- Выберите вкладку Always Encrypted.
- Убедитесь, что параметр Enable Always Encrypted (шифрование столбцов) не выбран.
- Нажмите Подключиться.
Вставьте и выполните следующий запрос. Запрос должен возвращать двоичные зашифрованные данные.
SELECT [SSN], [Salary] FROM [HR].[Employees]
Подключитесь к базе данных, включив Always Encrypted для этого подключения.
- Щелкните правой кнопкой мыши в любом месте в окне запроса и выберите пункт "Изменение подключения".> Откроется диалоговое окно «Подключение к ядру СУБД».
- Выберите Параметры<<. Это приведет к отображению дополнительных вкладок в диалоговом окне Подключение к ядру СУБД.
- Выберите вкладку Always Encrypted.
- Выберите Включить Always Encrypted (шифрование столбцов).
- Нажмите Подключиться.
Повторно выполните тот же запрос. Так как вы подключены к подключению к базе данных с поддержкой Always Encrypted, драйвер клиента в SSMS попытается расшифровать данные, хранящиеся в обоих зашифрованных столбцах. Если вы используете Azure Key Vault, вам может потребоваться войти в Azure.
Включите параметризацию для Always Encrypted. Эта функция позволяет выполнять запросы, фильтрующие данные по зашифрованным столбцам (или вставлять данные в зашифрованные столбцы).
- В главном меню SSMS выберите Запрос.
- Выберите Параметры запроса....
- Перейдите в Выполнение>Дополнительно.
- Убедитесь, что установлен флажок включить параметризацию для Always Encrypted .
- Нажмите ОК.
Вставьте и выполните приведенный ниже запрос, который фильтрует данные по зашифрованному столбцу SSN. Запрос должен возвращать одну строку, содержащую значения обычного текста.
DECLARE @SSN [char](11) = '795-73-9838' SELECT [SSN], [Salary] FROM [HR].[Employees] WHERE [SSN] = @SSNПри необходимости, если вы используете Azure Key Vault, настроенную с моделью разрешений политики доступа, следуйте приведенным ниже инструкциям, чтобы узнать, что происходит при попытке пользователя получить данные открытого текста из зашифрованных столбцов без доступа к главному ключу столбца, защищающим данные.
- Удалите разрешение ключа
unwrapдля себя в политике доступа для хранилища ключей. Подробнее см. в статье Назначение политики доступа Key Vault. - Так как драйвер клиента в SSMS кэширует ключи шифрования столбцов, полученные из хранилища ключей в течение 2 часов, закройте SSMS и снова откройте его. Это гарантирует, что кэш ключей пуст.
- Подключитесь к базе данных, включив Always Encrypted для этого подключения.
- Вставьте и выполните следующий запрос. Запрос должен завершиться ошибкой с сообщением, в котором указано, что у вас отсутствует требуемое
unwrapразрешение.
SELECT [SSN], [Salary] FROM [HR].[Employees]- Удалите разрешение ключа
Следующие шаги
См. также
- Документация по Always Encrypted
- Документация по функции Always Encrypted с безопасными анклавами
- Подготовка ключей Always Encrypted с помощью SQL Server Management Studio
- Настройка постоянного шифрования с помощью PowerShell
- Мастер настройки Always Encrypted
- Выполнение запросов к столбцам с помощью Always Encrypted с использованием SQL Server Management Studio