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


Подготовка ключа компьютера для содержащихся групп доступности в Linux и контейнерах

Применимо к:SQL Server в Linux

В этой статье приведен пример подготовки ключа компьютера для SQL Server, работающего в Linux, в автономной группе доступности(AG).

Содержащаяся группа доступности — это группа доступности, которая поддерживает:

  • Управление объектами метаданных (пользователями, именами входа, разрешениями, агент SQL Server заданиями и т. д.) на уровне группы доступности в дополнение к уровню экземпляра.

  • Специализированные системные базы данных в группе доступности.

Примеры в этой статье предназначены для SQL Server в контейнерах Linux, но можно использовать те же действия для SQL Server на Linux, запуска на физических машинах, виртуальных машинах и в развертывании на основе Kubernetes.

Внимание

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

Обзор ключа компьютера

В SQL Server на Linux ключ компьютера играет важную роль в защите обмена данными и данными. В следующей таблице описаны основные функции.

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

При работе с SQL Server 2022 (16.x) в Linux и автономными группами доступности необходимо синхронизировать ключи компьютера между репликами SQL Server. Этот процесс позволяет использовать главный ключ службы (SMK) в автономной master базе данных для расшифровки и шифрования.

Подготовка контейнера SQL Server на автономном узле для запуска пользовательского ключа компьютера

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

  1. Создайте файл ключа компьютера с помощью OpenSSL (в файл с именем machine-key.bin) с помощью следующего скрипта.

    openssl rand -out machine-key.bin 44
    printf '\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' | dd of=machine-key.bin bs=1 seek=0 count=12 conv=notrunc
    cat machine-key.bin | base64
    

    Предыдущий скрипт выполняет следующие действия:

    1. Создайте 44-байтовый двоичный файл machine-key.bin, содержащий случайные данные.
    2. Перезапись первых 12 байтов с фиксированным заголовком. Это может измениться в будущем.
    3. Кодируйте machine-key.bin в base64 формате и печатайте его в консоли.
  2. Запустите контейнер, включив файл к ключу компьютера контейнера SQL Server.

    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=yourpassword" -p 14331:1433 --name sqlcontainer --hostname sqlcontainer -v ~/machine-key.bin:/var/opt/mssql/secrets/machine-key -d mcr.microsoft.com/mssql/server:2022-latest
    
  3. Убедитесь, что machine-key.bin на хост-компьютере используется machine-key.bin контейнер SQL Server, развернутый на предыдущем шаге.

    cat machine-key.bin | base64
    

    Пример выходных данных:

    AQAAAAAAAAAAAAAA//////////////////////////////////////////8=
    
  4. В контейнере проверьте ключ. Сначала подключитесь к интерактивному терминалу в контейнере.

    docker exec -it sqlcontainer "bash"
    

    Затем проверьте ключ.

    cat machine-key | base64
    

    Пример выходных данных:

    AQAAAAAAAAAAAAAA//////////////////////////////////////////8=
    

Вы можете использовать те же действия во всех развертываниях контейнеров SQL Server, которые вы планируете использовать в качестве реплик в автономной группе доступности. Необходимо использовать один и тот же ключ компьютера и не создавать разные ключи компьютера для каждого развертывания контейнеров SQL Server.