Поделиться через


Руководство: Начало работы с Always Encrypted с анклавами VBS в базе данных Azure SQL

Применимо к: База данных SQL Azure

В этом руководстве описано, как приступить к работе с Always Encrypted с безопасными анклавами в базе данных SQL Azure, используя анклавы безопасности на основе виртуализации (VBS). Буду рассмотрены следующие темы.

  • Как создать среду для тестирования и оценки Always Encrypted с анклавами VBS.
  • Шифрование данных на месте и выдача полнофункциональных конфиденциальных запросов к зашифрованным столбцам с помощью SQL Server Management Studio (SSMS).

Предварительные условия

Требования инструмента

Для этого учебника требуется SQL Server Management Studio (SSMS). Вы можете использовать PowerShell или Azure CLI для включения анклавов VBS.

Скачайте последнюю версию SQL Server Management Studio (SSMS).

Шаг 1. Создание и настройка сервера и базы данных

На этом шаге вы создадите новый логический сервер базы данных SQL Azure и новую базу данных.

Перейдите к Краткому руководству: Создание одной базы данных — Azure SQL Database и следуйте инструкциям в разделе «Создание одной базы данных», чтобы создать новый логический сервер Azure SQL Database и новую базу данных.

Внимание

Убедитесь, что вы создаете пустую базу данных с именем ContosoHR (а не примером базы данных).

Шаг 2. Включение анклава VBS

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

  1. Откройте портал Azure и найдите базу данных, для которой требуется включить безопасные анклава.

  2. В параметрах безопасности выберите "Шифрование данных".

  3. В меню "Шифрование данных" выберите вкладку Always Encrypted.

  4. Установите Включить безопасные анклавы в положение ON. Если для него уже задано значение ON, перейдите к следующему шагу.

    Снимок экрана включения безопасных анклавов в существующей базе данных в портале Azure.

  5. Нажмите кнопку "Сохранить", чтобы сохранить конфигурацию Always Encrypted.

Шаг 3. Заполнение базы данных

На этом шаге вы создадите таблицу и заполните ее данными, которые позже будут зашифрованы и запрошены.

  1. Откройте среду SSMS и подключитесь к базе данных ContosoHR на логическом сервере Azure SQL, созданном без включения Always Encrypted для подключения к базе данных.

    1. В диалоговом окне Подключение к серверу укажите полное имя сервера (например, myserver135.database.windows.net) и введите имя и пароль администратора, указанные при создании сервера.

    2. Выберите "Параметры >> " и перейдите на вкладку "Свойства подключения". Обязательно выберите базу данных ContosoHR (а не базу данных по умолчанию master ).

    3. Выберите вкладку Always Encrypted.

    4. Убедитесь, что флажок Включить Always Encrypted (шифрование столбцов)не установлен.

      Снимок экрана подключения к серверу с помощью SSMS при отключённой Always Encrypted.

    5. Нажмите Подключиться.

  2. Создайте новую таблицу с именем 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];
    GO
    
  3. Добавьте несколько записей о сотрудниках в таблицу 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);
    

Шаг 4. Обеспечение ключей с поддержкой анклава

На этом шаге вы создадите главный ключ столбца и ключ шифрования столбца, который разрешает вычисления анклава.

  1. С помощью экземпляра SSMS из предыдущего шага в обозревателе объектов разверните базу данных и перейдите к разделу Безопасность>Always Encrypted Keys.

  2. Подготовьте новый главный ключ столбца с поддержкой анклава:

    1. Щелкните правой кнопкой мыши Ключи Always Encrypted и выберите Новый главный ключ столбца....
    2. Введите имя нового главного ключа столбца: CMK1.
    3. Убедитесь, что выбран параметр Разрешить вычисления анклава. (Если для базы данных включен безопасный анклав, он должен быть включен по умолчанию, так как ваша база данных использует конфигурацию оборудования серии DC.)
    4. Выберите Azure Key Vault (рекомендуется) или Хранилище сертификатов Windows (текущий пользователь или локальный компьютер).
      • Если выбрать Azure Key Vault, войдите в Azure, выберите подписку Azure, содержащую хранилище ключей, которое вы хотите использовать, и выберите хранилище ключей. Выберите "Создать ключ", чтобы создать новый ключ.
      • Если выбрать Хранилище сертификатов Windows, нажмите кнопку "Создать сертификат ", чтобы создать сертификат. Снимок экрана настройки разрешения вычислений в анклаве в SSMS при создании нового главного ключа столбца.
    5. Нажмите ОК.
  3. Создайте ключ шифрования столбцов с поддержкой анклава:

    1. Щелкните правой кнопкой мыши на ключах Always Encrypted и выберите новый ключ шифрования столбца.
    2. Введите имя для нового ключа шифрования столбцов: CEK1.
    3. В раскрывающемся списке Главный ключ столбца выберите ключ, созданный на предыдущих шагах.
    4. Нажмите ОК.

Шаг 5. Шифрование некоторых столбцов на месте

На этом шаге вы выполните шифрование данных, хранящихся в столбцах SSN и Salary в анклаве на стороне сервера, а затем протестируете запрос SELECT к данным.

  1. Откройте новый экземпляр SSMS и подключитесь к базе данных с включенной функцией Always Encrypted для подключения к базе данных.

    1. Создайте новый экземпляр SSMS.

    2. В диалоговом окне Подключение к серверу укажите полное имя сервера (например, myserver135.database.windows.net) и введите имя и пароль администратора, указанные при создании сервера.

    3. Выберите "Параметры >> " и перейдите на вкладку "Свойства подключения". Обязательно выберите базу данных ContosoHR (а не базу данных по умолчанию master ).

    4. Выберите вкладку Always Encrypted.

    5. Установите флажок Enable Always Encrypted (шифрование столбцов).

    6. Выберите "Включить безопасные анклавы".

    7. Установите протокол на None. См. снимок экрана ниже.

      Снимок экрана диалогового окна SSMS

    8. Нажмите Подключиться.

    9. Если отобразится запрос на включение параметризации для запросов Always Encrypted, нажмите кнопку Включить.

  2. Используя тот же экземпляр SSMS (с включенной функцией Always Encrypted), откройте новое окно запроса и выполните шифрование столбцов SSN и Salary с помощью приведенных ниже инструкций.

    ALTER TABLE [HR].[Employees]
    ALTER COLUMN [SSN] [char] (11) COLLATE Latin1_General_BIN2
    ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
    WITH
    (ONLINE = ON);
    
    ALTER TABLE [HR].[Employees]
    ALTER COLUMN [Salary] [money]
    ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
    WITH
    (ONLINE = ON);
    
    ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
    

    Примечание.

    Инструкция ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE очищает кэш плана запросов для базы данных в приведенном выше скрипте. Изменив таблицу, необходимо очистить планы всех пакетов и хранимых процедур, которые обращаются к таблице, чтобы обновить сведения о параметрах шифрования.

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

    SELECT * FROM [HR].[Employees];
    

Шаг 6. Выполнение полнофункциональных запросов к зашифрованным столбцам

Вы можете выполнить полнофункциональные запросы к зашифрованным столбцам. Некоторая обработка запросов будет выполняться в анклаве на стороне сервера.

  1. В экземпляре SSMS с включенной функцией Always Encrypted убедитесь, что параметризация для Always Encrypted также включена.

    1. Выберите пункт Инструменты в главном меню SSMS.
    2. Выберите Параметры.
    3. Перейдите к Выполнение запроса>SQL Server>Расширенные параметры.
    4. Убедитесь, что установлен флажок Включить параметризацию для Always Encrypted.
    5. Нажмите ОК.
  2. Откройте новое окно запроса, а затем вставьте и выполните приведенный ниже запрос. Запрос должен возвратить соответствующие заданным условиям поиска значения и строки в виде открытого текста.

    DECLARE @SSNPattern [char](11) = '%6818';
    DECLARE @MinSalary [money] = $1000;
    SELECT * FROM [HR].[Employees]
    WHERE SSN LIKE @SSNPattern AND [Salary] >= @MinSalary;
    
  3. Попробуйте выполнить тот же запрос еще раз в экземпляре SSMS с отключенной функцией Always Encrypted. Должен произойти сбой.

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

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

См. также