SQL Server- és Windows-hitelesítés a go-mssqldb használatával

A go-mssqldb meghajtó támogatja az SQL Server hitelesítést, Windows integrált hitelesítést (SSPI), NTLM-et és Kerberost. Ez a cikk minden módszert bemutat kapcsolati karakterlánc példákkal és kódmintákkal.

Microsoft Entra ID hitelesítésért lásd: Microsoft Entra ID hitelesítés.

Hitelesítési módszer kiválasztása

Használd a legerősebb módszert, amely illeszkedik a környezetedhez és az identitásplatformodhoz:

Ezt a sorrendet részesítem előnyben Módszer Akkor használja, ha
1 Microsoft Entra ID Azure SQL-hez csatlakozol, és használhatsz menedzselt identitást, munkaterhelés identitást vagy más Entra folyamatot jelszó tárolása nélkül.
2 Windows integrált hitelesítés (SSPI) Az alkalmazásod Windows-on fut, és közvetlenül a jelenlegi Windows identitást tudja használni.
3 Kerberos Linuxot vagy macOS-t használsz, és már vannak Kerberos-jegyeid, kulcstábláid vagy egy felügyelt tartományi környezeted.
4 NTLM Domain hitelesítésre van szükséged, de a Kerberos nem elérhető vagy praktikus sem.
5 SQL Server hitelesítés Nincs integrált identitáslehetőség, és SQL bejelentkezést és jelszót kell használni.

Ha több módszer is működik, inkább azt válassza, amely elkerüli a hosszú életű titkokat, és illeszkedik a host platform natív identitásrendszeréhez.

SQL Server hitelesítés

Az SQL Server hitelesítése bejelentkezési nevet és jelszót használ, amely az SQL Server-ben tárolt. Adja meg a user id és password paramétereket:

URL-formátum

Megjegyzés:

URL-kapcsolati láncok esetén a felhasználónévben vagy jelszóban speciális karaktereket kódolj százalékos szinten. A Windows-hitelesítéshez használt felhasználónevekben a %5C karaktert használják tartományelválasztóként, például sqlserver://DOMAIN%5Cusername:password@host. Az ADO és ODBC kapcsolódási láncoknál használjuk a literális DOMAIN\username formát.

Megadja a felhasználónevet és jelszót az URL-ben:

sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true

ADO formátum

Használd az user id és password billentyűket egy ADO-stílusú kapcsolati karakterlánc-ben:

server=<server>;user id=<user>;password=<password>;database=AdventureWorks2025;Encrypt=true

Kódrészlet

Csatlakozz SQL Server hitelesítéshez, és ellenőrizd a kapcsolatot:

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 integrált hitelesítés (SSPI)

Windows rendszeren az illesztőprogram az SSPI-t (Security Support Provider Interface) használja a jelenlegi Windows-felhasználó hitelesítő adataival történő hitelesítéshez. A kapcsolati karakterlánc számára nem kell felhasználónév vagy jelszó.

sqlserver://<server>?database=AdventureWorks2025&trusted_connection=yes&encrypt=true

Megjegyzés:

A Windows integrált hitelesítése SSPI-n keresztül csak akkor működik, ha a Go alkalmazás Windows-on fut, és a jelenlegi felhasználó hozzáfér az SQL Server példányhoz.

NTLM-hitelesítés

Az NTLM hitelesítés minden platformon működik (Windows, Linux és macOS). Adjon meg egy tartománynévvel megadott felhasználónevet és jelszót:

NTLM URL formátum

URL-kódolja a(z) DOMAIN\<user> karakterláncban lévő fordított perjelet így: %5C

sqlserver://DOMAIN%5C<user>:<password>@<server>?database=AdventureWorks2025&encrypt=true

Megjegyzés:

URL-formátumban a DOMAIN\<user> fordított törtjelet URL-kódolni kell %5C formában.

NTLM ADO formátum

A felhasználónévben szereplő fordított perjel azt jelzi az illesztőprogramnak, hogy NTLM-hitelesítést kell használnia:

server=<server>;user id=DOMAIN\<user>;password=<password>;database=AdventureWorks2025;Encrypt=true

Az illesztőprogram érzékeli a felhasználónévben lévő fordított perjelet, és automatikusan az NTLM-et használja.

Kerberos-hitelesítés

A Kerberos hitelesítés működik Linuxon és macOS-en, ha a rendszer érvényes Kerberos konfigurációval rendelkezik. Az illesztőprogram krb5 a csomagot használja Kerberos hitelesítésre. Három módszer van a hitelesítés megadására.

Prerequisites

  • Egy érvényes krb5.conf fájl (alapértelmezett út: /etc/krb5.conf).
  • Az SQL Server-nek regisztrált Szolgáltatási Főnévvel (SPN) kell rendelkeznie.

1. módszer: Keytab fájl

Egy keytab fájl titkosított Kerberos fő kulcsokat tartalmaz. Megadja a keytab fájl útvonalát és a felhasználó tartományát:

sqlserver://<user>@MYREALM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&krb5-keytabfile=/path/to/user.keytab&encrypt=true

2. módszer: Hitelesítési gyorsítótár

Használjon egy meglévő, a(z) kinit által létrehozott Kerberos-hitelesítőadat-gyorsítótárat.

sqlserver://<user>@MYREALM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&krb5-credcachefile=/tmp/krb5cc_1000&encrypt=true

3. módszer: Nyers hitelességek

Add meg a jelszót közvetlenül a kapcsolati karakterlánc-ben. Az illesztőprogram a megadott hitelesítő adatokat használja a Kerberos hitelesítési csere végrehajtására.

sqlserver://<user>@MYREALM:<password>@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&encrypt=true

Kerberos paraméterek

Paraméter Default Description
krb5-configfile /etc/krb5.conf Út a Kerberos konfigurációs fájlhoz.
krb5-realm - Kerberos-tartománynév, például MYDOMAIN.COM.
krb5-keytabfile - Út a keytab fájlhoz.
krb5-credcachefile - Út a credential cache fájlhoz.
krb5-dnslookupkdc true DNS SRV rekordokat használj a KDC megtalálásához.
krb5-udppreferencelimit 1 Maximális üzenetméret az UDP-ről TCP-re váltás előtt.
ServerSPN - Felülírd az automatikusan generált SPN-t.