Устранение распространенных неполадок Always Encrypted с безопасными анклавами
Область применения: SQL Server 2019 (15.x) и более поздних версий — Windows только База данных SQL Azure
В этой статье описывается, как определить и устранить распространенные проблемы, которые могут возникнуть при выполнении инструкций Transact-SQL (TSQL) с использованием Always Encrypted с безопасными анклавами.
Сведения о том, как выполнять запросы с использованием безопасных анклавов, см. в разделе Выполнение инструкций Transact-SQL с помощью безопасных анклавов.
Ошибки при подключении к базе данных
Чтобы выполнить инструкции с помощью безопасного анклава, необходимо включить Always Encrypted, указать протокол аттестации и, если применимо, URL-адрес аттестации для подключения к базе данных, как описано в предварительных требованиях для выполнения инструкций с использованием безопасных анклавах. Однако подключение завершится ошибкой, если указать протокол аттестации, но ваш База данных SQL Azure или целевой экземпляр SQL Server не поддерживает безопасные анклава или неправильно настроен.
- Если вы используете База данных SQL Azure с анклавами Intel SGX, убедитесь, что база данных использует конфигурацию оборудования серии DC. Дополнительные сведения см. в разделе "Включение анклавов Intel SGX" для базы данных SQL Azure.
- Если вы используете База данных SQL Azure с анклавами VBS, убедитесь, что для свойства базы данныхEnclaveType задано значение VBS. Дополнительные сведения см. в разделе "Включение анклавов VBS" для базы данных SQL Azure.
- Если вы используете SQL Server 2019 (15.x) или более поздней версии, проверьте правильность настройки безопасного анклава для вашего экземпляра. Дополнительные сведения см. в статье Настройка безопасного анклава в SQL Server.
Ошибки аттестации при использовании Аттестации Microsoft Azure
Примечание.
Этот раздел применяется только к База данных SQL Azure с анклавами Intel SGX.
Прежде чем драйвер клиента отправит инструкцию T-SQL на логический сервер Azure SQL для выполнения, драйвер активирует следующий рабочий процесс аттестации анклава с помощью Аттестации Microsoft Azure.
- Драйвер клиента передает URL-адрес аттестации, указанный в подключении к базе данных, на логический сервер Azure SQL.
- Логический сервер Azure SQL собирает свидетельства об анклаве, среде его размещения и коде, выполняемом в анклаве. Затем сервер отправляет поставщику аттестации запрос на аттестацию, указанный в URL-адресе аттестации.
- Поставщик аттестации проверяет свидетельство на соответствие настроенной политике и выдает токен аттестации логическому серверу Azure SQL. Поставщик аттестации подписывает токен аттестации с помощью закрытого ключа.
- Логический сервер Azure SQL отправляет токен аттестации драйверу клиента.
- Клиент обращается к поставщику аттестации по указанному URL-адресу аттестации для получения открытого ключа и проверяет подпись в токене аттестации.
Неверные настройки могут привести к тому, что на различных этапах указанного выше рабочего процесса будут происходить ошибки. Ниже приведены распространенные ошибки аттестации, их первопричины и рекомендуемые действия по их устранению.
- Логическому серверу Azure SQL не удается подключиться к поставщику аттестации в службе "Аттестация Azure" (шаг 2 указанного выше рабочего процесса), указанному в URL-адресе аттестации. К вероятным причинам относятся:
- Неверный или неполный URL-адрес аттестации. Дополнительные сведения см. в разделе Определение URL-адреса аттестации для политики аттестации.
- Поставщик аттестации был случайно удален.
- Брандмауэр разрешает доступ к поставщику аттестации, но запрещает доступ к службам Майкрософт.
- Временная ошибка сети, которая приводит к недоступности поставщика аттестации.
- Логический сервер SQL Azure не авторизован для отправки запросов аттестации поставщику аттестации. Убедитесь, что администратор поставщика аттестации добавил серверу базы данных роль "Читатель аттестации".
- Сбой проверки политики аттестации (на шаге 3 приведенного выше рабочего процесса).
- Наиболее вероятной основной причиной является неверная политика аттестации. Убедитесь, что вы используете политику, рекомендованную Майкрософт. Дополнительные сведения см. в разделе Создание и настройка поставщика аттестации.
- Сбой проверки политики может также происходить из-за бреши в системе безопасности, приводящего к компрометации анклава на стороне сервера.
- Клиентскому приложению не удается подключиться к поставщику аттестации и получить открытый ключ подписи (на шаге 5). К вероятным причинам относятся:
- Настройка брандмауэров между приложением и поставщиком аттестации может блокировать подключения. Чтобы устранить неполадки с заблокированным подключением, проверьте, что вы можете подключиться к конечной точке OpenID поставщика аттестации. Например, используйте веб-браузер на компьютере, на котором размещено приложение, чтобы узнать, можно ли подключиться к конечной точке OpenID. Дополнительные сведения см. в разделе Конфигурация метаданных — Get.
Ошибки аттестации при использовании службы защиты узла
Примечание.
Этот раздел относится только к SQL Server 2019 (15.x) и более поздним версиям.
Прежде чем драйвер клиента отправляет инструкцию T-SQL в SQL Server для выполнения, драйвер активирует следующий рабочий процесс аттестации анклава с помощью службы защиты узлов (HGS).
- Драйвер клиента вызывает SQL Server для запуска аттестации.
- SQL Server собирает доказательства о его анклавах, его среде размещения и коде, работающем внутри анклава. SQL Server запрашивает сертификат работоспособности из экземпляра HGS, на котором размещен SQL Server, был зарегистрирован. Дополнительные сведения см. в статье Регистрация компьютера в службе защиты узла.
- HGS проверяет доказательства и выдает сертификат работоспособности SQL Server. HGS подписывает сертификат работоспособности с помощью своего закрытого ключа.
- SQL Server отправляет сертификат работоспособности драйверу клиента.
- Драйвер клиента обращается в HGS по URL-адресу аттестации, указанному для подключения к базе данных, чтобы получить открытый ключ HGS. Драйвер клиента проверяет подпись в сертификате работоспособности.
Неверные настройки могут привести к тому, что на различных этапах указанного выше рабочего процесса будут происходить ошибки. Ниже приведены некоторые распространенные ошибки аттестации, их первопричины и рекомендуемые действия по их устранению.
- SQL Server не может подключиться к HGS (шаг 2 приведенного выше рабочего процесса) из-за периодических сетевых ошибок. Чтобы устранить проблему подключения, администратор компьютера SQL Server должен проверить, что компьютер может подключиться к компьютеру HGS.
- Сбой проверки на шаге 3. Чтобы устранить проблему проверки, выполните следующие действия.
- Администратор компьютера SQL Server должен работать с администратором клиентского приложения, чтобы убедиться, что компьютер SQL Server зарегистрирован в том же экземпляре HGS, что и экземпляр, на который ссылается URL-адрес аттестации на стороне клиента.
- Администратор компьютера SQL Server должен подтвердить, что компьютер SQL Server может успешно проверить, следуя инструкциям на шаге 5. Убедитесь, что узел может успешно проверить.
- Клиентскому приложению не удается подключиться к HGS и получить открытый ключ подписи (на шаге 5). Скорее всего, причина:
- Настройка одного из брандмауэров между приложением и поставщиком аттестации может блокировать подключения. Убедитесь, что компьютер, на котором размещается приложение, может подключиться к компьютеру HGS.
Ошибки шифрования на месте
В этом разделе перечислены распространенные ошибки, которые могут возникнуть при использовании инструкций ALTER TABLE
/ALTER COLUMN
для шифрования на месте (в дополнение к ошибкам аттестации, описанным в предыдущих разделах). Дополнительные сведения см. в статье Настройка шифрования столбцов на месте с помощью Always Encrypted с безопасными анклавами.
- Ключ шифрования столбца, который вы пытаетесь использовать для шифрования, расшифровки или повторного шифрования данных, не является ключом с поддержкой анклава. Дополнительные сведения о предварительных требованиях для шифрования на месте см. в разделе о предварительных требованиях. Сведения о подготовке ключей с поддержкой анклава см. в статье Подготовка ключей с поддержкой анклава.
- Вы не включили Always Encrypted и вычисления анклава для подключения к базе данных. См. раздел Необходимые условия для выполнения инструкций, использующих безопасные анклавы.
- Инструкция
ALTER TABLE
/ALTER COLUMN
активирует криптографическую операцию и изменяет тип данных столбца или задает параметры сортировки с кодовой страницей, отличной от текущей кодовой страницы параметров сортировки. Объединение криптографических операций с изменениями на странице типа данных или параметров сортировки не допускается. Чтобы устранить эту проблему, используйте отдельные инструкции: одну инструкцию для изменения типа данных или кодовой страницы параметров сортировки и вторую для шифрования на месте.
Ошибки при выполнении конфиденциальных запросов DML с использованием безопасных анклавов
В этом разделе перечислены распространенные ошибки, которые могут возникнуть при выполнении конфиденциальных запросов DML с использованием безопасных анклавов (в дополнение к ошибкам аттестации, описанным в предыдущих разделах).
- Ключ шифрования столбца, настроенный для запрашиваемого столбца, не является ключом с поддержкой анклава.
- Вы не включили Always Encrypted и вычисления анклава для подключения к базе данных. Дополнительные сведения см. в разделе Необходимые условия для выполнения инструкций, использующих безопасные анклавы.
- Столбец, к которому выполняется запрос, использует детерминированное шифрование. Конфиденциальные запросы DML, использующие безопасные анклавы, не поддерживают работу с детерминированным шифрованием. Сведения о том, как изменить тип шифрования на случайный, см. в статье Включение Always Encrypted с безопасными анклавами для существующих зашифрованных столбцов.
- Столбец строки, для которого выполняется запрос, использует параметры сортировки, отличные от BIN2 или UTF-8. Измените параметры сортировки на BIN2 или UTF-8. Дополнительные сведения см. в разделе Инструкции DML с использованием безопасных анклавов.
- Запрос активирует неподдерживаемую операцию. Список операций, поддерживаемых внутри анклавов, см. в разделе Инструкции DML с использованием безопасных анклавов.
Следующие шаги
См. также
- Выполнение инструкций Transact-SQL с помощью безопасных анклавов
- Настройка шифрования столбцов на месте с помощью Always Encrypted с безопасными анклавами
- Создание и использование индексов в столбцах с помощью Always Encrypted с безопасными анклавами
- Начало работы с Always Encrypted с безопасными анклавами