Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Драйвер 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