Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Драйвер go-mssqldb — чистая библиотека Go, которая компилируется нативно на Linux и macOS без внешних зависимостей от C. В этой статье рассматриваются специфические для платформы конфигурации аутентификации и сертификатов.
Installation
Установка одинакова на всех платформах:
go get github.com/microsoft/go-mssqldb
Драйвер ODBC, FreeTDS или другие библиотеки C не требуются.
Проверка подлинности SQL
Аутентификация SQL работает одинаково на Linux, macOS и Windows:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025
Проверка подлинности NTLM
Аутентификация NTLM поддерживается на всех платформах. Укажите имя пользователя, соответствующее домену:
Формат URL-адреса
Закодируйте обратный слеш в DOMAIN\user с помощью URL-кодирования как %5C:
sqlserver://CONTOSO%5C<user>:<password>@<server>:1433?database=mydb
Формат ADO
Обратный слеш в имени пользователя вызывает аутентификацию NTLM:
server=<server>;user id=DOMAIN\<user>;password=<password>;database=AdventureWorks2025
Драйвер обнаруживает символ обратной косой черты в имени пользователя и автоматически применяет NTLM. На Linux или macOS не требуется дополнительная настройка.
Аутентификация Kerberos
Аутентификация Kerberos в Linux и macOS использует пакет krb5, встроенный в драйвер. Нет зависимостей от внешних библиотек.
Предпосылки
Действительный конфигурационный файл Kerberos. Путь по умолчанию выглядит
/etc/krb5.confследующим образом:[libdefaults] default_realm = MYDOMAIN.COM dns_lookup_kdc = true [realms] MYDOMAIN.COM = { kdc = dc1.mydomain.com }Экземпляр SQL Server должен иметь зарегистрированное основное имя сервиса (SPN) (например,
MSSQLSvc/<server>.mydomain.com:1433).
Подключитесь с помощью клавиатуры
Укажите путь к файлу keytab и область Kerberos в строке подключения:
sqlserver://<user>@MYDOMAIN.COM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYDOMAIN.COM&krb5-keytabfile=/etc/<user>.keytab
Подключитесь к кэшу учетных данных
Сначала получите билет:
kinit <user>@MYDOMAIN.COM
Затем подключитесь, используя кэшированный учетный код:
sqlserver://<user>@MYDOMAIN.COM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYDOMAIN.COM&krb5-credcachefile=/tmp/krb5cc_1000
Параметры Kerberos
| Parameter | По умолчанию | Description |
|---|---|---|
krb5-configfile |
/etc/krb5.conf |
Путь к конфигурационному файлу Kerberos. |
krb5-realm |
- | Царство Керберос (например). MYDOMAIN.COM |
krb5-keytabfile |
- | Путь к файлу keytab. |
krb5-credcachefile |
- | Путь к файлу кэша учетных данных. |
krb5-dnslookupkdc |
true |
Используйте записи DNS SRV для поиска Центра распределения ключей (KDC). |
krb5-udppreferencelimit |
1 |
Максимальный размер UDP-сообщения перед переходом на TCP. |
Для получения дополнительной информации см. разделы SQL Server и проверка подлинности Windows.
Проверка подлинности Windows (SSPI) недоступна
На Linux и macOS интегрированная аутентификация Windows (SSPI / trusted_connection=yes) недоступна. Используйте один из следующих вариантов:
| Метод | Строка соединения |
|---|---|
| NTLM | sqlserver://DOMAIN%5Cuser:password@host?database=db |
| Kerberos (keytab) | sqlserver://user@REALM@host?database=db&krb5-realm=REALM&krb5-keytabfile=/path |
| Kerberos (кэш) | sqlserver://user@REALM@host?database=db&krb5-realm=REALM&krb5-credcachefile=/path |
| Проверка подлинности SQL | sqlserver://user:password@host?database=db |
| Майкрософт Ентра айди |
sqlserver://host?database=db&fedauth=ActiveDirectoryDefault&encrypt=true&TrustServerCertificate=false (используйте azuresql драйвер) |
Конфигурация сертификата
В Linux и macOS TLS-сертификаты, используемые с certificate параметрами OR serverCertificate , должны быть закодированы PEM-файлами. Драйвер читает их, используя напрямую пакет crypto/tls Go.
Хранилище системного доверия
Драйвер использует стандартное хранилище доверия сертификатов операционной системы. В Linux это хранилище доверия обычно расположено по /etc/ssl/certs/ адресу или /etc/pki/tls/certs/. На macOS используется системный ключ.
Чтобы добавить пользовательский сертификат CA в системное хранилище:
Ubuntu/Debian:
sudo cp myca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
RHEL/Fedora:
sudo cp myca.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust
macOS:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain myca.crt
Альтернативно, используйте certificate параметр соединения, чтобы напрямую указать сертификат CA без изменения системного хранилища:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&certificate=/path/to/ca-cert.pem