Соединитель SQL Server, приложение
Область применения: SQL Server
Дополнительные сведения о соединителе SQL Server приведены в этой статье. Дополнительные сведения о соединителе SQL Server см. в статье "Расширяемое управление ключами" с помощью Azure Key Vault (SQL Server), инструкции по настройке для управления расширяемыми ключами с помощью Azure Key Vault и использование соединителя SQL Server с функциями шифрования SQL.
Примечание.
Хотя идентификатор Microsoft Entra — это новое имя Azure Active Directory (Azure AD), чтобы предотвратить нарушение существующих сред, Azure AD по-прежнему остается в некоторых жестко закодированных элементах, таких как поля пользовательского интерфейса, поставщики подключений, коды ошибок и командлеты. В этой статье два имени являются взаимозаменяемыми.
А. Инструкции по обслуживанию для соединителя SQL Server
Смена ключей
Azure Key Vault поддерживает смену ключей, которая является процессом создания нового ключа и обновления приложений для использования нового ключа. Смена ключей — это рекомендация по обеспечению безопасности, которая помогает защитить данные в случае компрометации ключа. Соединитель SQL Server поддерживает смену ключей. Старые ключи не следует удалять, так как может потребоваться восстановить базу данных с помощью старого ключа. Чтобы повернуть ключ, выполните действия, описанные в разделе "Поворот асимметричного ключа" с новым ключом AKV или новой версией ключа AKV.
Обновление соединителя SQL Server
Версии 1.0.0.440 и старше были заменены и больше не поддерживаются в рабочих средах. Версии 1.0.1.0 и более новые поддерживаются в рабочих средах. Воспользуйтесь приведенными ниже инструкциями, чтобы выполнить обновление до последней версии в Центре загрузки Майкрософт.
Обновление
- Остановите работу службы SQL Server с помощью диспетчера конфигурации SQL Server
- Удалите старую версию с помощью раздела Панель управления\Программы\Программы и компоненты
- Имя приложения: Соединитель SQL Server для Microsoft Azure Key Vault
- Версия: 15.0.300.96 (или более ранняя версия)
- Дата файла DLL: 01.30.2018 (или более ранняя версия)
- Установка (обновление) новых Соединитель SQL Server для Microsoft Azure Key Vault
- Версия: 15.0.2000.440
- Дата файла DLL: 09.11.2020
- Запустите службу SQL Server
- Доступны тестовые зашифрованные базы данных
Откат
Остановите работу службы SQL Server с помощью диспетчера конфигурации SQL Server
Удалите новую версию с помощью раздела Панель управления\Программы\Программы и компоненты
- Имя приложения: Соединитель SQL Server для Microsoft Azure Key Vault
- Версия: 15.0.2000.440
- Дата файла DLL: 11.24.2020
Установите старую версию соединителя SQL Server для хранилища ключей Microsoft Azure
- Версия: 15.0.300.96
- Дата файла DLL: 01.30.2018
Запустите службу SQL Server
Убедитесь, что базы данных с помощью TDE доступны
После проверки работы обновления можно удалить старую папку соединителя SQL Server (если вы решили переименовать ее вместо удаления на шаге 3).
Старые версии соединителя SQL Server
Прямые ссылки на старые версии соединителя SQL Server
- Current: 1.0.5.0 (версия 15.0.2000.440) — дата файла 24 ноября 2020 г.
- 1.0.5.0 (версия 15.0.300.96), дата файла 30 января 2018 г.
- 1.0.4.0 (версия 13.0.811.168)
Развертывание субъекта-службы SQL Server
SQL Server использует субъекты-службы, созданные в идентификаторе Microsoft Entra (ранее Azure Active Directory), в качестве учетных данных для доступа к Key Vault. Субъект-служба имеет идентификатор клиента и ключ проверки подлинности. Учетные данные SQL Server настраивается с помощью хранилища, идентификатора клиента и ключа проверки подлинности. Ключ проверки подлинности действителен в течение определенного периода времени (1–2 года). До истечения срока действия нового ключа необходимо создать в идентификаторе Microsoft Entra для субъекта-службы. Затем необходимо изменить учетные данные в SQL Server. Management Studio поддерживает кэш учетных данных в текущем сеансе, поэтому при изменении учетных данных необходимо перезапустить Management Studio.
Резервное копирование и восстановление ключей
Для хранилища ключей необходимо регулярно создавать резервную копию. В случае утери асимметричного ключа в хранилище его можно восстановить из резервной копии. Ключ необходимо восстановить с помощью того же имени, что и раньше, которое выполняет команда Restore PowerShell (см. ниже).
Если хранилище было потеряно, необходимо повторно создать хранилище и восстановить асимметричный ключ в хранилище, используя то же имя, что и раньше. Имя хранилища может отличаться (можно сохранить прежнее). Установите разрешения доступа для нового хранилища, чтобы предоставить субъекту-службе SQL Server доступ, необходимый для сценариев шифрования SQL Server, а затем настроить учетные данные SQL Server так, чтобы они отражали новое имя хранилища.
В целом необходимо выполнить следующие действия.
- Создать резервную копию ключа хранилища (с помощью командлета PowerShell Backup-AzureKeyVaultKey).
- В случае сбоя хранилища создать новое хранилище в той же географической области. Пользователь, создающий это хранилище, должен быть в том же каталоге по умолчанию, который был настроен субъектом-службой для SQL Server.
- Восстановить ключ к новому хранилищу с помощью командлета PowerShell Restore-AzureKeyVaultKey, который восстановит ключ с прежним именем. Если ключ уже имеет то же имя, восстановление завершается ошибкой.
- Предоставить разрешения субъекту-службе SQL Server на использование этого нового хранилища.
- Изменить учетные данные SQL Server, используемые ядром СУБД, чтобы отразить новое имя хранилища (при необходимости).
Резервные копии ключей можно восстанавливать в разных регионах Azure при условии, что они остаются в одной географической области или одном национальном облаке: в США, Канаде, Японии, Австралии, Индии, Азиатско-Тихоокеанском регионе, Европе, Бразилии, Китае, правительстве США или Германии.
B. Вопросы и ответы
В хранилище ключей Azure
Как выполняются основные операции с хранилищем ключей Azure?
Асимметричный ключ в хранилище ключей используется для защиты ключей шифрования SQL Server. Только открытая часть асимметричного ключа покидает хранилище, закрытая же часть никогда не экспортируется. Все криптографические операции, использующие асимметричный ключ, выполняются в службе хранилища ключей Azure и защищаются ее системой безопасности.
Что такое URI ключа?
Каждый ключ в хранилище ключей Azure имеет универсальный код ресурса (URI), который можно использовать для ссылки на ключ из приложения. Используйте формат https://ContosoKeyVault.vault.azure.net/keys/ContosoFirstKey
для получения текущей версии и формат https://ContosoKeyVault.vault.azure.net/keys/ContosoFirstKey/cgacf4f763ar42ffb0a1gca546aygd87
для получения конкретной версии.
Настройка SQL Server
К каким конечным точкам нужен доступ соединителю SQL Server? Соединитель взаимодействует с двумя конечными точками, которые необходимо внести в список разрешений. Для исходящей связи с этими службами нужен только один порт: 443 (HTTPS).
- login.microsoftonline.com/*:443
- .vault.azure.net/:443
Кроме того, проверка списка отзыва сертификатов может создать HTTP-трафик через порт 80.
Примечание.
Использование соединителя SQL Server для Azure Key Vault за брандмауэром или прокси-сервером может повлиять на производительность, если трафик задерживается или блокируется. Ознакомьтесь с Доступом к Azure Key Vault за брандмауэром , чтобы убедиться, что правильные правила установлены.
Как подключиться к Azure Key Vault через прокси-сервер HTTP(S)? Соединитель использует параметры конфигурации прокси-сервера Internet Explorer. Эти параметры можно контролировать с помощью групповой политики или реестра, но важно отметить, что они не являются системными параметрами и должны быть ориентированы на учетную запись службы, на которую запущен экземпляр SQL Server. Если администратор базы данных просматривает или редактирует параметры в Internet Explorer, они будут влиять только на учетную запись администратора базы данных, а не подсистему SQL Server. Интерактивное ведение журнала с использованием учетной записи службы не рекомендуется и блокируется во многих безопасных средах. Изменения настроенных параметров прокси-сервера могут потребовать перезапуска экземпляра SQL Server, чтобы вступили в силу при первой попытке соединителя подключиться к хранилищу ключей.
Какие размеры ключей в Azure Key Vault поддерживает соединитель SQL Server? Последняя сборка соединителя SQL Server поддерживает ключи Azure Key Vault размером 2048 и 3072.
Примечание.
Представление "sys.asymmetric_keys
" сообщает размер ключа как 2048, даже если используется размер ключа 3072. Это известный недочет в данном представлении, и команда разработчиков SQL Server устранит его в будущем выпуске.
Каковы минимальные уровни разрешений, необходимые для каждого шага конфигурации в SQL Server?
Хотя вы можете выполнить все действия по настройке в качестве члена предопределенных ролей сервера sysadmin, корпорация Майкрософт рекомендует свести к минимуму используемые разрешения. В приведенном ниже списке указаны минимальные уровни разрешений для каждого действия.
Для создания поставщика служб шифрования требуется разрешение
CONTROL SERVER
или членство в предопределенной роли сервера sysadmin .Для изменения параметра конфигурации и выполнения инструкции
RECONFIGURE
должно быть предоставлено разрешениеALTER SETTINGS
на уровне сервера. РазрешениеALTER SETTINGS
неявным образом предоставлено предопределенным ролям сервера sysadmin и serveradmin .Для создания учетных данных требуется разрешение
ALTER ANY CREDENTIAL
.Для добавления учетных данных к имени входа требуется разрешение
ALTER ANY LOGIN
.Для создания асимметричного ключа требуется разрешение
CREATE ASYMMETRIC KEY
.
Разделы справки изменить каталог Microsoft Entra по умолчанию, чтобы хранилище ключей было создано в той же подписке и каталоге, что и субъект-служба, созданный для соединителя SQL Server?
Переход на портал Azure.
В правом верхнем углу страницы выберите значок параметров или профиль пользователя.
На странице каталогов и подписок выберите "Все каталоги", чтобы просмотреть все каталоги Microsoft Entra, к которым вы принадлежите.
Вы можете изменить каталог запуска или переключиться в другой каталог, если у вас несколько каталогов.
Примечание.
У вас могут отсутствовать разрешения на смену каталога по умолчанию в рамках своей подписки Azure. В этом случае создайте субъект-службу Microsoft Entra в каталоге по умолчанию, чтобы он был в том же каталоге, что и Azure Key Vault, который использовался позже.
Дополнительные сведения об идентификаторе Microsoft Entra см. в статье о том, как подписки Azure связаны с идентификатором Microsoft Entra.
В. Описания кодов ошибок для соединителя SQL Server
Примечание.
Хотя идентификатор Microsoft Entra — это новое имя Azure Active Directory (Azure AD), чтобы предотвратить нарушение существующих сред, Azure AD по-прежнему остается в некоторых жестко закодированных элементах, таких как поля пользовательского интерфейса, поставщики подключений, коды ошибок и командлеты. В этой статье два имени являются взаимозаменяемыми.
Коды ошибок поставщика:
Код ошибки | Символ | Description |
---|---|---|
0 | scp_err_Success | Операция завершилась успешно. |
1 | scp_err_Failure | Операция завершилась ошибкой. |
2 | scp_err_InsufficientBuffer | Эта ошибка сообщает подсистеме, что нужно выделить больше памяти для буфера. |
3 | scp_err_NotSupported | Операция не поддерживается. Например, указанный тип ключа или алгоритм не поддерживается поставщиком EKM. |
4 | scp_err_NotFound | Указанный ключ или алгоритм не удалось найти поставщиком EKM. |
5 | scp_err_AuthFailure | Сбой проверки подлинности с поставщиком расширенного управления ключами. |
6 | scp_err_InvalidArgument | Предоставлен недопустимый аргумент. |
7 | scp_err_ProviderError | В поставщике расширенного управления ключами произошла неопределенная ошибка, перехваченная ядром SQL. |
401 | acquireToken | Сервер вернул ответ 401 на запрос. Убедитесь, что идентификатор и секрет клиента верны, а строка учетных данных представляет собой объединение идентификатора и секрета клиента AAD без дефисов. |
404 | getKeyByName | Сервер вернут ответ 404, так как не удалось найти имя ключа. Убедитесь, что такое имя ключа присутствует в вашем хранилище. |
2049 | scp_err_KeyNameDoesNotFitThumbprint | Имя ключа слишком длинное и не умещается в отпечаток ядра SQL. Длина имени ключа не должна превышать 26 символов. |
2050 | scp_err_PasswordTooShort | Секретная строка, являющаяся объединением идентификатора клиента и секрета AAD, короче 32 символов. |
2051 | scp_err_OutOfMemory | В ядре SQL возникла нехватка памяти, и не удалось выделить память для поставщика расширенного управления ключами. |
2052 | scp_err_ConvertKeyNameToThumbprint | Не удалось преобразовать имя ключа в отпечаток. |
2053 | scp_err_ConvertThumbprintToKeyName | Не удалось преобразовать отпечаток в имя ключа. |
2057 | scp_err_ThumbprintExistedInRegistry | Отпечаток ключа уже существует в реестре Windows, сопоставленном с другим универсальным кодом ресурса (URI) ключа. |
2058 | scp_err_FailureInRegistry | Не удалось выполнить операцию в реестре. Учетная запись службы SQL Server не имеет разрешения на создание раздела реестра. |
3000 | ErrorSuccess | Операция с хранилищем ключей Azure завершилась успешно. |
3001 | ErrorUnknown | Сбой операции с хранилищем ключей Azure из-за неизвестной ошибки. |
3002 | ErrorHttpCreateHttpClientOutOfMemory | Не удается создать HttpClient для операции с Azure Key Vault из-за нехватки памяти. |
3003 | ErrorHttpOpenSession | Не удается открыть сеанс HTTP из-за ошибки сети. |
3004 | ErrorHttpConnectSession | Не удается подключиться к сеансу HTTP из-за ошибки сети. |
3005 | ErrorHttpAttemptConnect | Не удается предпринять попытку подключения из-за ошибки сети. |
3006 | ErrorHttpOpenRequest | Не удается открыть запрос из-за ошибки сети. |
3007 | ErrorHttpAddRequestHeader | Не удается добавить заголовок запроса. |
3008 | ErrorHttpSendRequest | Не удается отправить запрос из-за ошибки сети. |
3009 | ErrorHttpGetResponseCode | Не удается получить запрос из-за ошибки сети. |
3010 | ErrorHttpResponseCodeUnauthorized | Сервер вернул ответ 401 на запрос. |
3011 | ErrorHttpResponseCodeThrottled | Сервер выполнил регулирование запроса. |
3012 | ErrorHttpResponseCodeClientError | С соединителя отправлен недопустимый запрос. Обычно это означает, что имя ключа является недопустимым или содержит недопустимые символы. |
3013 | ErrorHttpResponseCodeServerError | Сервер возвратил код ответа от 500 до 600. |
3014 | ErrorHttpQueryHeader | Не удается запросить заголовок ответа. |
3015 | ErrorHttpQueryHeaderOutOfMemoryCopyHeader | Не удается скопировать заголовок ответа из-за нехватки памяти. |
3016 | ErrorHttpQueryHeaderOutOfMemoryReallocBuffer | Не удается запросить заголовок ответа из-за нехватки памяти при перераспределении буфера. |
3017 | ErrorHttpQueryHeaderNotFound | Не удается найти заголовок запроса в ответе. |
3018 | ErrorHttpQueryHeaderUpdateBufferLength | Не удается обновить длину буфера при запросе заголовка ответа. |
3019 | ErrorHttpReadData | Не удается считать данные ответа из-за ошибки сети. |
3076 | ErrorHttpResourceNotFound | Сервер вернут ответ 404, так как не удалось найти имя ключа. Убедитесь, что такое имя ключа присутствует в вашем хранилище. |
3077 | ErrorHttpOperationForbidden | Сервер вернул ответ 403, так как у пользователя нет необходимых разрешений на выполнение данного действия. Убедитесь, что у вас есть разрешения для указанной операции. Для правильной работы соединителю требуются по меньшей мере разрешения get, list, wrapKey, unwrapKey. |
3100 | ErrorHttpCreateHttpClientOutOfMemory | Не удается создать HttpClient для операции с хранилищем ключей Azure из-за нехватки памяти. |
3101 | ErrorHttpOpenSession | Не удается открыть сеанс HTTP из-за ошибки сети. |
3102 | ErrorHttpConnectSession | Не удается подключиться к сеансу HTTP из-за ошибки сети. |
3103 | ErrorHttpAttemptConnect | Не удается предпринять попытку подключения из-за ошибки сети. |
3104 | ErrorHttpOpenRequest | Не удается открыть запрос из-за ошибки сети. |
3105 | ErrorHttpAddRequestHeader | Не удается добавить заголовок запроса. |
3106 | ErrorHttpSendRequest | Не удается отправить запрос из-за ошибки сети. |
3107 | ErrorHttpGetResponseCode | Не удается получить запрос из-за ошибки сети. |
3108 | ErrorHttpResponseCodeUnauthorized | Сервер вернул ответ 401 на запрос. Убедитесь, что идентификатор и секрет клиента верны, а строка учетных данных представляет собой объединение идентификатора и секрета клиента AAD без дефисов. |
3109 | ErrorHttpResponseCodeThrottled | Сервер выполнил регулирование запроса. |
3110 | ErrorHttpResponseCodeClientError | Запрос недопустим. Обычно это означает, что имя ключа является недопустимым или содержит недопустимые символы. |
3111 | ErrorHttpResponseCodeServerError | Сервер возвратил код ответа от 500 до 600. |
3112 | ErrorHttpResourceNotFound | Сервер вернут ответ 404, так как не удалось найти имя ключа. Убедитесь, что такое имя ключа присутствует в вашем хранилище. |
3113 | ErrorHttpOperationForbidden | Сервер вернул ответ 403, так как у пользователя нет необходимых разрешений на выполнение данного действия. Убедитесь, что у вас есть разрешения для указанной операции. Минимально требуются разрешения на выполнение операций get, wrapKey, unwrapKey. |
3114 | ErrorHttpQueryHeader | Не удается запросить заголовок ответа. |
3115 | ErrorHttpQueryHeaderOutOfMemoryCopyHeader | Не удается скопировать заголовок ответа из-за нехватки памяти. |
3116 | ErrorHttpQueryHeaderOutOfMemoryReallocBuffer | Не удается запросить заголовок ответа из-за нехватки памяти при перераспределении буфера. |
3117 | ErrorHttpQueryHeaderNotFound | Не удается найти заголовок запроса в ответе. |
3118 | ErrorHttpQueryHeaderUpdateBufferLength | Не удается обновить длину буфера при запросе заголовка ответа. |
3119 | ErrorHttpReadData | Не удается считать данные ответа из-за ошибки сети. |
3120 | ErrorHttpGetResponseOutOfMemoryCreateTempBuffer | Не удается получить текст ответа из-за нехватки памяти при создании временного буфера. |
3121 | ErrorHttpGetResponseOutOfMemoryGetResultString | Не удается получить текст ответа из-за нехватки памяти при получении результирующей строки. |
3122 | ErrorHttpGetResponseOutOfMemoryAppendResponse | Не удается получить текст ответа из-за нехватки памяти при добавлении ответа. |
3200 | ErrorGetAADValuesOutOfMemoryConcatPath | Не удается получить значения заголовка запроса Azure Active Directory из-за нехватки памяти при объединении пути. |
3201 | ErrorGetAADDomainUrlStartPosition | Не удается найти начальную точку для URL-адреса домена Azure Active Directory в неправильном заголовке запроса ответа. |
3202 | ErrorGetAADDomainUrlStopPosition | Не удается найти конечную точку для URL-адреса домена Azure Active Directory в неправильном заголовке запроса ответа. |
3203 | ErrorGetAADDomainUrlMalformatted | Неправильный заголовок запроса ответа Azure Active Directory не содержит URL-адрес домена AAD. |
3204 | ErrorGetAADDomainUrlOutOfMemoryAlloc | Недостаточно памяти при выделении буфера для URL-адреса домена Azure Active Directory. |
3205 | ErrorGetAADTenantIdOutOfMemoryAlloc | Недостаточно памяти при выделении буфера для идентификатора арендатора домена Azure Active Directory. |
3206 | ErrorGetAKVResourceUrlStartPosition | Не удается найти начальную точку для URL-адреса ресурса Azure Key Vault в неправильном заголовке запроса ответа. |
3207 | ErrorGetAKVResourceUrlStopPosition | Не удается найти конечную точку для URL-адреса ресурса Azure Key Vault в неправильном заголовке запроса ответа. |
3208 | ErrorGetAKVResourceUrlOutOfMemoryAlloc | Недостаточно памяти при выделении буфера для URL-адреса ресурса Azure Key Vault. |
3300 | ErrorGetTokenOutOfMemoryConcatPath | Не удается получить токен из-за нехватки памяти при объединении пути запроса. |
3301 | ErrorGetTokenOutOfMemoryConcatBody | Не удается получить токен из-за нехватки памяти при объединении текста ответа. |
3302 | ErrorGetTokenOutOfMemoryConvertResponseString | Не удается получить токен из-за нехватки памяти при преобразовании строки ответа. |
3303 | ErrorGetTokenBadCredentials | Не удается получить токен из-за неправильных учетных данных. Убедитесь, что строка учетных данных или сертификат действительны. |
3304 | ErrorGetTokenFailedToGetToken | Хотя учетные данные правильны, операция по-прежнему не смогла получить действительный токен. |
3305 | ErrorGetTokenRejected | Токен действителен, но отклонен сервером. |
3306 | ErrorGetTokenNotFound | Не удается найти токен в ответе. |
3307 | ErrorGetTokenJsonParser | Не удается проанализировать ответ JSON сервера. |
3308 | ErrorGetTokenExtractToken | Не удается извлечь токен из ответа JSON. |
3400 | ErrorGetKeyByNameOutOfMemoryConvertResponseString | Не удается получить ключ по имени из-за нехватки памяти при преобразовании строки ответа. |
3401 | ErrorGetKeyByNameOutOfMemoryConcatPath | Не удается получить ключ по имени из-за нехватки памяти при объединении пути. |
3402 | ErrorGetKeyByNameOutOfMemoryConcatHeader | Не удается получить ключ по имени из-за нехватки памяти при объединении заголовка. |
3403 | ErrorGetKeyByNameNoResponse | Не удается получить ключ по имени из-за отсутствия ответа от сервера. |
3404 | ErrorGetKeyByNameJsonParser | Не удается получить ключ по имени, так как не удалось проанализировать ответ JSON. |
3405 | ErrorGetKeyByNameExtractKeyNode | Не удается получить ключ по имени, так как не удалось извлечь узел ключа из ответа. |
3406 | ErrorGetKeyByNameExtractKeyId | Не удается получить ключ по имени, так как не удалось извлечь идентификатор ключа из ответа. |
3407 | ErrorGetKeyByNameExtractKeyType | Не удается получить ключ по имени, так как не удалось извлечь тип ключа из ответа. |
3408 | ErrorGetKeyByNameExtractKeyN | Не удается получить ключ по имени, так как не удалось извлечь N ключа из ответа. |
3409 | ErrorGetKeyByNameBase64DecodeN | Не удается получить ключ по имени, так как в Base64 не удалось декодировать N. |
3410 | ErrorGetKeyByNameExtractKeyE | Не удается получить ключ по имени, так как не удалось извлечь E ключа из ответа. |
3411 | ErrorGetKeyByNameBase64DecodeE | Не удается получить ключ по имени, так как в Base64 не удалось декодировать E. |
3412 | ErrorGetKeyByNameExtractKeyUri | Не удается извлечь URI ключа из ответа. |
3500 | ErrorBackupKeyOutOfMemoryConvertResponseString | Не удается выполнить резервное копирование ключа из-за нехватки памяти при преобразовании строки ответа. |
3501 | ErrorBackupKeyOutOfMemoryConcatPath | Не удается выполнить резервное копирование ключа из-за нехватки памяти при объединении пути. |
3502 | ErrorBackupKeyOutOfMemoryConcatHeader | Не удается выполнить резервное копирование ключа из-за нехватки памяти при объединении заголовка запроса. |
3503 | ErrorBackupKeyNoResponse | Не удается выполнить резервное копирование ключа из-за отсутствия ответа от сервера. |
3504 | ErrorBackupKeyJsonParser | Не удается выполнить резервное копирование ключа, так как не удалось проанализировать ответ JSON. |
3505 | ErrorBackupKeyExtractValue | Не удается выполнить резервное копирование ключа, так как не удалось извлечь значение из ответа JSON. |
3506 | ErrorBackupKeyBase64DecodeValue | Не удается выполнить резервное копирование ключа, так как в Base64 не удалось декодировать поле значения. |
3600 | ErrorWrapKeyOutOfMemoryConvertResponseString | Не удается упаковать ключ из-за нехватки памяти при преобразовании строки ответа. |
3601 | ErrorWrapKeyOutOfMemoryConcatPath | Не удается упаковать ключ из-за нехватки памяти при объединении пути. |
3602 | ErrorWrapKeyOutOfMemoryConcatHeader | Не удается упаковать ключ из-за нехватки памяти при объединении заголовка. |
3603 | ErrorWrapKeyOutOfMemoryConcatBody | Не удается упаковать ключ из-за нехватки памяти при объединении текста. |
3604 | ErrorWrapKeyOutOfMemoryConvertEncodedBody | Не удается упаковать ключ из-за нехватки памяти при преобразовании закодированного текста. |
3605 | ErrorWrapKeyBase64EncodeKey | Не удается упаковать ключ из-за сбоя кодирования ключа в Base64. |
3606 | ErrorWrapKeyBase64DecodeValue | Не удается упаковать ключ из-за сбоя декодирования значения ответа в Base64. |
3607 | ErrorWrapKeyJsonParser | Не удается упаковать ключ, так как не удалось проанализировать ответ JSON. |
3608 | ErrorWrapKeyExtractValue | Не удается упаковать ключ, так как не удалось извлечь значение из ответа. |
3609 | ErrorWrapKeyNoResponse | Не удается упаковать ключ из-за отсутствия ответа от сервера. |
3700 | ErrorUnwrapKeyOutOfMemoryConvertResponseString | Не удается распаковать ключ из-за нехватки памяти при преобразовании строки ответа. |
3701 | ErrorUnwrapKeyOutOfMemoryConcatPath | Не удается распаковать ключ из-за нехватки памяти при объединении пути. |
3702 | ErrorUnwrapKeyOutOfMemoryConcatHeader | Не удается распаковать ключ из-за нехватки памяти при объединении заголовка. |
3703 | ErrorUnwrapKeyOutOfMemoryConcatBody | Не удается распаковать ключ из-за нехватки памяти при объединении текста. |
3704 | ErrorUnwrapKeyOutOfMemoryConvertEncodedBody | Не удается распаковать ключ из-за нехватки памяти при преобразовании закодированного текста. |
3705 | ErrorUnwrapKeyBase64EncodeKey | Не удается распаковать ключ из-за сбоя кодирования ключа в Base64. |
3706 | ErrorUnwrapKeyBase64DecodeValue | Не удается распаковать ключ из-за сбоя декодирования значения ответа в Base64. |
3707 | ErrorUnwrapKeyJsonParser | Не удается распаковать ключ, так как не удалось извлечь значение из ответа. |
3708 | ErrorUnwrapKeyExtractValue | Не удается распаковать ключ, так как не удалось извлечь значение из ответа. |
3709 | ErrorUnwrapKeyNoResponse | Не удается распаковать ключ из-за отсутствия ответа от сервера. |
3800 | ErrorSecretAuthParamsGetRequestBody | Ошибка при создании текста запроса с использованием идентификатора клиента и секрета AAD. |
3801 | ErrorJWTTokenCreateHeader | Ошибка при создании заголовка маркера JWT для проверки подлинности с помощью AAD. |
3802 | ErrorJWTTokenCreatePayloadGUID | Ошибка при создании идентификатора GUID для полезных данных токена JWT для проверки подлинности с помощью AAD. |
3803 | ErrorJWTTokenCreatePayload | Ошибка при создании полезных данных токена JWT для проверки подлинности с помощью AAD. |
3804 | ErrorJWTTokenCreateSignature | Ошибка при создании сигнатуры маркера JWT для проверки подлинности с помощью AAD. |
3805 | ErrorJWTTokenSignatureHashAlg | Ошибка при получении алгоритма хэширования SHA256 для проверки подлинности в AAD. |
3806 | ErrorJWTTokenSignatureHash | Ошибка при создании хэша SHA256 для проверки подлинности токенов JWT с помощью AAD. |
3807 | ErrorJWTTokenSignatureSignHash | Ошибка при подписании хэша маркера JWT для проверки подлинности в AAD. |
3808 | ErrorJWTTokenCreateToken | Ошибка при создании маркера JWT для проверки подлинности с помощью AAD. |
3809 | ErrorPfxCertAuthParamsImportPfx | Ошибка при импорте сертификата Pfx для проверки подлинности в AAD. |
3810 | ErrorPfxCertAuthParamsGetThumbprint | Произошла ошибка при получении отпечатка из сертификата Pfx для проверки подлинности с помощью AAD. |
3811 | ErrorPfxCertAuthParamsGetPrivateKey | Произошла ошибка при получении закрытого ключа из сертификата Pfx для проверки подлинности с помощью AAD. |
3812 | ErrorPfxCertAuthParamsSignAlg | Ошибка при получении алгоритма подписи RSA для проверки подлинности сертификата Pfx с помощью AAD. |
3813 | ErrorPfxCertAuthParamsImportForSign | Ошибка при импорте закрытого ключа Pfx для подписи RSA для проверки подлинности в AAD. |
3814 | ErrorPfxCertAuthParamsCreateRequestBody | Ошибка при создании текста запроса из сертификата Pfx для проверки подлинности с помощью AAD. |
3815 | ErrorPEMCertAuthParamsGetThumbprint | Ошибка при декодировании отпечатка Base64 для проверки подлинности с помощью AAD. |
3816 | ErrorPEMCertAuthParamsGetPrivateKey | Ошибка при получении закрытого ключа RSA из PEM для проверки подлинности в AAD. |
3817 | ErrorPEMCertAuthParamsSignAlg | Ошибка при получении алгоритма подписи RSA для проверки подлинности с закрытым ключом PEM с помощью AAD. |
3818 | ErrorPEMCertAuthParamsImportForSign | Ошибка при импорте закрытого ключа PEM для подписи RSA для проверки подлинности в AAD. |
3819 | ErrorPEMCertAuthParamsCreateRequestBody | Ошибка при создании текста запроса из закрытого ключа PEM для проверки подлинности в AAD. |
3820 | ErrorLegacyPrivateKeyAuthParamsSignAlg | Ошибка при получении алгоритма подписи RSA для проверки подлинности с устаревшим закрытым ключом с помощью AAD. |
3821 | ErrorLegacyPrivateKeyAuthParamsImportForSign | Ошибка при импорте устаревшего закрытого ключа для подписи RSA для проверки подлинности в AAD. |
3822 | ErrorLegacyPrivateKeyAuthParamsCreateRequestBody | Ошибка при создании текста запроса из устаревшего закрытого ключа для проверки подлинности в AAD. |
3900 | ErrorAKVDoesNotExist | Ошибка "Не удалось разрешить интернет-имя". Обычно это означает, что Azure Key Vault удален. |
4000 | ErrorCreateKeyVaultRetryManagerOutOfMemory | Не удается создать RetryManager для операции AKV из-за нехватки памяти. |
Если вы не видите код ошибки в этой таблице, ниже приведены некоторые другие причины для ее возникновения.
Возможно, у вас отсутствует доступ в Интернет, из-за чего Azure Key Vault недоступно. Проверьте подключение к Интернету.
Возможно, служба хранилища ключей Azure не работает. Повторите попытку позднее.
Возможно, вы сняли асимметричный ключ из Azure Key Vault или SQL Server. Восстановите ключ.
Если вы получаете ошибку "Не удается загрузить библиотеку", убедитесь, что у вас установлена соответствующая версия распространяемого компонента Visual Studio C++ на основе используемой версии SQL Server. В следующей таблице указано, какую версию следует установить из центра загрузки Майкрософт.
Журнал событий Windows также регистрирует ошибки, связанные с соединителем SQL Server, что предоставляет дополнительный контекст для ошибки. Источником в журнале событий приложений Windows будет "Соединитель SQL Server для Microsoft Azure Key Vault".
Библиотеки среды выполнения C++ для соединителя SQL Server 1.0.5.0
Версия SQL Server | Ссылка для установки распространяемого компонента при использовании соединителя SQL Server 1.0.5.0 |
---|---|
2008, 2008 R2, 2012, 2014 | Распространяемые пакеты Visual C++ для Visual Studio 2013 |
2016, 2017, 2019 | Распространяемый пакет Visual C++ для Visual Studio 2015 |
Библиотеки среды выполнения C++ для соединителя SQL Server 1.0.4.0
Версия SQL Server | Ссылка для установки распространяемого компонента при использовании соединителя SQL Server 1.0.4.0 |
---|---|
2008, 2008 R2, 2012, 2014, 2016, 2017, 2019 | Распространяемые пакеты Visual C++ для Visual Studio 2013 |
Дополнительные справочники
Подробнее о расширенном управлении ключами:
Виды шифрования SQL с поддержкой расширенного управления ключами:
Связанные команды Transact-SQL:
Документация по хранилищу ключей Azure.
Связанный контент
Расширенное управление ключами с помощью хранилища ключей Azure
Использование соединителя SQL Server с компонентами шифрования SQL
Включенный параметр конфигурации сервера поставщика расширенного управления ключами
Этапы настройки расширенного управления ключами с использованием хранилища ключей Azure
Дополнительные примеры сценариев см. в блоге Прозрачное шифрование данных и расширенное управление ключами SQL Server с помощью Azure Key Vault.