Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Sterownik go-mssqldb obsługuje uwierzytelnianie SQL Server, uwierzytelnianie zintegrowane z systemem Windows (SSPI), NTLM oraz Kerberos. Ten artykuł omawia każdą metodę wraz z przykładami parametry połączenia oraz przykładami kodu.
Informacje na temat uwierzytelniania Microsoft Entra ID można znaleźć w artykule uwierzytelnianie Microsoft Entra ID.
Wybieranie metody uwierzytelniania
Stosuj najsilniejszą metodę, która pasuje do Twojego środowiska i platformy tożsamości:
| Wolę tę kolejność | Metoda | Użyj go, gdy |
|---|---|---|
| 1 | Microsoft Entra ID | Łączysz się z Azure SQL i możesz używać zarządzanej tożsamości, tożsamości obciążenia lub innego przepływu Entra bez przechowywania haseł. |
| 2 | Uwierzytelnianie zintegrowane w Windows (SSPI) | Twoja aplikacja działa na Windows i może bezpośrednio korzystać z obecnej tożsamości Windows. |
| 3 | Kerberos | Korzystasz z systemu Linux lub macOS i masz już bilety Kerberos, pliki keytab lub zarządzane środowisko domeny. |
| 4 | NTLM | Potrzebujesz uwierzytelniania domeny, ale Kerberos nie jest dostępny ani praktyczny. |
| 5 | Uwierzytelnianie programu SQL Server | Nie masz opcji zintegrowanej tożsamości i musisz używać logowania SQL oraz hasła. |
Jeśli działa więcej niż jedna metoda, wybierz tę, która unika długotrwałych sekretów i dopasowuje się do natywnego systemu tożsamości platformy gospodarza.
Uwierzytelnianie programu SQL Server
Uwierzytelnianie SQL Server wykorzystuje nazwę logowania i hasło przechowywane w SQL Server. Podaj parametry user id i password:
Format adresu URL
Note
W parametrach połączenia URL zakoduj znaki specjalne w nazwie użytkownika lub haśle przy użyciu kodowania procentowego. Nazwy użytkowników uwierzytelniania Windows używają %5C jako separatora domeny, na przykład sqlserver://DOMAIN%5Cusername:password@host. W łańcuchach połączeń ADO i ODBC używaj formy literalnej DOMAIN\username .
Wpisz nazwę użytkownika i hasło w adresie URL:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true
Format ADO
Użyj klawiszy user id i password w parametrach połączenia w stylu ADO:
server=<server>;user id=<user>;password=<password>;database=AdventureWorks2025;Encrypt=true
Przykład kodu
Połącz się z uwierzytelnieniem SQL Server i zweryfikowaj połączenie:
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)
}
}
Uwierzytelnianie zintegrowane w Windows (SSPI)
W systemie Windows sterownik korzysta z interfejsu SSPI (Security Support Provider Interface) do uwierzytelniania za pomocą danych uwierzytelniających aktualnego użytkownika Windows. Parametry połączenia nie wymagają nazwy użytkownika ani hasła.
sqlserver://<server>?database=AdventureWorks2025&trusted_connection=yes&encrypt=true
Note
Uwierzytelnianie zintegrowane z Windows przez SSPI działa tylko wtedy, gdy aplikacja Go działa na Windows, a obecny użytkownik ma dostęp do instancji SQL Server.
Uwierzytelnianie NTLM
Uwierzytelnianie NTLM działa na wszystkich platformach (Windows, Linux i macOS). Podaj nazwę użytkownika i hasło kwalifikowane do domeny:
Format adresu URL NTLM
Zakoduj ukośnik odwrotny w adresie URL w DOMAIN\<user> w postaci %5C:
sqlserver://DOMAIN%5C<user>:<password>@<server>?database=AdventureWorks2025&encrypt=true
Note
W formacie adresu URL musisz zakodować odwrotny ukośnik w DOMAIN\<user> jako %5C.
Format NTLM ADO
Ukośnik w nazwie użytkownika sygnalizuje sterownikowi uwierzytelnianie NTLM:
server=<server>;user id=DOMAIN\<user>;password=<password>;database=AdventureWorks2025;Encrypt=true
Sterownik wykrywa ukośnik w nazwie użytkownika i automatycznie używa NTLM.
Uwierzytelnianie Kerberos
Uwierzytelnianie Kerberos działa na Linuksie i macOS, gdy system ma prawidłową konfigurację Kerberos. Sterownik wykorzystuje pakiet krb5 do uwierzytelniania Kerberos. Istnieją trzy metody potwierdzania uprawnień.
Wymagania wstępne
- Poprawny
krb5.confplik (domyślna ścieżka:/etc/krb5.conf). - SQL Server musi mieć zarejestrowaną nazwę Główną Usługi (SPN).
Metoda 1: Plik Keytab
Plik keytab zawiera zaszyfrowane klucze główne Kerberosa. Określ ścieżkę pliku w zakładce klawiszy oraz obszar użytkownika:
sqlserver://<user>@MYREALM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&krb5-keytabfile=/path/to/user.keytab&encrypt=true
Metoda 2: Pamięć podręczna danych uwierzytelniających
Użyj istniejącej pamięci Kerberos credential cache utworzonej przez kinit.
sqlserver://<user>@MYREALM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&krb5-credcachefile=/tmp/krb5cc_1000&encrypt=true
Metoda 3: Surowe uprawnienia
Podaj hasło bezpośrednio w parametrach połączenia. Sterownik wykorzystuje dostarczone dane uwierzytelniające do wymiany uwierzytelniania Kerberos.
sqlserver://<user>@MYREALM:<password>@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&encrypt=true
Parametry Kerberosa
| Parameter | Default | Description |
|---|---|---|
krb5-configfile |
/etc/krb5.conf |
Ścieżka do pliku konfiguracyjnego Kerberos. |
krb5-realm |
- | Nazwa obszaru Kerberosa, taka jak MYDOMAIN.COM. |
krb5-keytabfile |
- | Ścieżka do pliku keytab. |
krb5-credcachefile |
- | Ścieżka do pliku pamięci podręcznej z poświadczeniami. |
krb5-dnslookupkdc |
true |
Użyj rekordów DNS SRV, aby zlokalizować KDC. |
krb5-udppreferencelimit |
1 |
Maksymalny rozmiar wiadomości przed przejściem z UDP na TCP. |
ServerSPN |
- | Zastąp automatycznie wygenerowany SPN. |