Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Драйвер go-mssqldb поддерживает аутентификацию SQL Server, интегрированную аутентификацию Windows (SSPI), NTLM и Kerberos. В этой статье рассматривается каждый метод с примерами строка подключения и примерами кода.
Для аутентификации Microsoft Entra ID см. аутентификация Microsoft Entra ID.
Выбор метода проверки подлинности
Используйте самый сильный метод, который подходит вашей окружающей среде и платформе идентичности:
| Предпочитаю такой порядок | Метод | Используйте его, когда |
|---|---|---|
| 1 | Майкрософт Ентра айди | Вы подключаетесь к Azure SQL и можете использовать управляемую идентичность, идентификацию рабочей нагрузки или другой поток Entra без хранения паролей. |
| 2 | Интегрированная аутентификация Windows (SSPI) | Ваше приложение работает на Windows и может использовать текущий идентификатор Windows напрямую. |
| 3 | Kerberos | Вы используете Linux или macOS и у вас уже есть билеты Kerberos, файлы keytab или управляемая доменная инфраструктура. |
| 4 | NTLM | Нужна аутентификация домена, но Kerberos недоступен и непрактичен. |
| 5 | Проверка подлинности SQL Server | У вас нет встроенной опции идентификации, и вам нужно использовать SQL-логин и пароль. |
Если работает несколько методов, предпочитайте тот, который избегает долгоживущих секретов и соответствует системе идентичности хост-платформы.
Проверка подлинности SQL Server
Аутентификация SQL Server использует имя входа и пароль, хранящиеся в SQL Server. Укажите параметры user id и password:
Формат URL-адреса
Замечание
Для строк URL-подключения закодируйте специальные символы в имени пользователя или пароле с помощью процентного кодирования. В именах пользователей для проверки подлинности Windows в качестве разделителя домена используется %5C, например sqlserver://DOMAIN%5Cusername:password@host. В строках соединения ADO и ODBC используйте буквальную DOMAIN\username форму.
Укажите имя пользователя и пароль в URL:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true
Формат ADO
Используйте ключи user id и password в строке подключения в стиле ADO:
server=<server>;user id=<user>;password=<password>;database=AdventureWorks2025;Encrypt=true
Пример кода
Подключитесь к аутентификации SQL Server и проверьте соединение:
package main
import (
"database/sql"
"log"
_ "github.com/microsoft/go-mssqldb"
)
func main() {
db, err := sql.Open("sqlserver",
"sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true")
if err != nil {
log.Fatal(err)
}
defer db.Close()
if err = db.Ping(); err != nil {
log.Fatal(err)
}
}
Интегрированная аутентификация Windows (SSPI)
В Windows драйвер использует SSPI (Security Support Provider Interface) для аутентификации с использованием учетных данных текущего пользователя Windows. Для строка подключения не требуется имя пользователя или пароль.
sqlserver://<server>?database=AdventureWorks2025&trusted_connection=yes&encrypt=true
Замечание
Интегрированная аутентификация Windows через SSPI работает только тогда, когда приложение Go работает на Windows и текущий пользователь имеет доступ к экземпляру SQL Server.
Проверка подлинности NTLM
Аутентификация NTLM работает на всех платформах (Windows, Linux и macOS). Укажите имя пользователя и пароль, соответствующее домену:
Формат URL NTLM
Закодируйте обратный слеш в DOMAIN\<user> с помощью URL-кодирования как %5C:
sqlserver://DOMAIN%5C<user>:<password>@<server>?database=AdventureWorks2025&encrypt=true
Замечание
В формате URL необходимо выполнить URL-кодирование символа обратной косой черты в DOMAIN\<user> как %5C.
Формат NTLM ADO
Обратная косая черта в имени пользователя указывает драйверу на NTLM-аутентификацию:
server=<server>;user id=DOMAIN\<user>;password=<password>;database=AdventureWorks2025;Encrypt=true
Драйвер обнаруживает символ обратной косой черты в имени пользователя и автоматически применяет NTLM.
Аутентификация Kerberos
Аутентификация Kerberos работает на Linux и macOS, когда система имеет корректную конфигурацию Kerberos. Драйвер использует пакет krb5 для аутентификации Kerberos. Существует три способа предоставления удостоверений квалификации.
Необходимые условия
- Допустимый
krb5.confфайл (по умолчанию путь:/etc/krb5.conf). - SQL Server должен иметь зарегистрированное основное имя сервиса (SPN).
Метод 1: Файл Keytab
Файл keytab содержит зашифрованные главные ключи Kerberos. Укажите путь к файлу через keytab и область пользователя:
sqlserver://<user>@MYREALM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&krb5-keytabfile=/path/to/user.keytab&encrypt=true
Метод 2: Кэш учетных данных
Используйте существующий кэш учетных данных Kerberos, созданный kinit.
sqlserver://<user>@MYREALM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&krb5-credcachefile=/tmp/krb5cc_1000&encrypt=true
Метод 3: Необработанные учетные данные
Укажите пароль непосредственно в строке подключения. Драйвер использует предоставленные учетные данные для выполнения аутентификационного обмена Kerberos.
sqlserver://<user>@MYREALM:<password>@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&encrypt=true
Параметры Kerberos
| Parameter | Default | 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. |
ServerSPN |
- | Переопределите автоматически сгенерированный SPN. |