Ověřování SQL Serveru a Windows pomocí go-mssqldb

Ovladač go-mssqldb podporuje autentizaci SQL Server, integrovanou autentizaci Windows (SSPI), NTLM a Kerberos. Tento článek pojednává o každé metodě a uvádí příklady připojovacích řetězců a ukázky kódu.

Pro autentizaci Microsoft Entra ID viz Microsoft Entra ID autentizace.

Volba metody ověřování

Použijte nejsilnější metodu, která odpovídá vašemu prostředí a identitní platformě:

Preferuji toto pořadí Method Použijte ji, když
1 Microsoft Entra ID Připojujete se k Azure SQL a můžete používat spravovanou identitu, identitu zátěže nebo jiný Entra flow bez ukládání hesel.
2 Integrovaná autentizace Windows (SSPI) Vaše aplikace běží na Windows a může přímo používat aktuální identitu Windows.
3 Kerberos Jste na Linuxu nebo macOS a už máte Kerberos tikety, klávesové tabule nebo spravované doménové prostředí.
4 protokol NTLM Potřebujete ověření domény, ale Kerberos není dostupný ani praktický.
5 Ověřování SQL Serveru Nemáte možnost integrované identity a musíte použít SQL přihlášení a heslo.

Pokud funguje více metod, upřednostněte tu, která se vyhýbá dlouhotrvajícím tajemstvím a odpovídá nativnímu identitnímu systému hostitelské platformy.

Ověřování SQL Serveru

Autentizace SQL Server používá přihlašovací jméno a heslo uložené v SQL Server. Zadejte parametry user id a password:

Formát adresy URL

Note

V připojovacích řetězcích URL zakódujte speciální znaky v uživatelském jménu nebo hesle pomocí procentového kódování. Windows authentication uživatelská jména používají %5C pro oddělovač domén, například sqlserver://DOMAIN%5Cusername:password@host. V ADO a ODBC spojovacích řetězcích použijte literální DOMAIN\username tvar.

Zadejte uživatelské jméno a heslo v URL:

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

Formát ADO

Použijte klávesy user id a password v připojovací řetězec ve stylu ADO:

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

Příklad kódu

Připojte se pomocí autentizace přes SQL Server a ověřte spojení:

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)
    }
}

Integrovaná autentizace Windows (SSPI)

Na Windows ovladač používá SSPI (Security Support Provider Interface) k autentizaci pomocí přihlašovacích údajů aktuálního uživatele Windows. připojovací řetězec nepotřebuje uživatelské jméno ani heslo.

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

Note

Integrovaná autentizace ve Windows přes SSPI funguje pouze tehdy, když aplikace Go běží na Windows a aktuální uživatel má přístup k instanci SQL Server.

Ověřování NTLM

NTLM autentizace funguje na všech platformách (Windows, Linux a macOS). Zadejte uživatelské jméno a heslo kvalifikované pro doménu:

Formát URL NTLM

Zakódujte zpětné lomítko v DOMAIN\<user> pomocí URL jako %5C:

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

Note

Ve formátu URL musíte zpětné lomítko v DOMAIN\<user> zakódovat pro URL jako %5C.

Formát NTLM ADO

Zpětná čára v uživatelském jménu signalizuje ovladači autentizaci NTLM:

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

Ovladač detekuje zpětné límítko v uživatelském jménu a automaticky používá NTLM.

Ověřování protokolem Kerberos

Kerberos autentizace funguje na Linuxu a macOS, pokud má systém platnou konfiguraci Kerberos. Ovladač používá balíček krb5 pro autentizaci Kerberos. Existují tři způsoby, jak poskytnout oprávnění.

Předpoklady

  • Platný krb5.conf soubor (výchozí cesta: /etc/krb5.conf).
  • SQL Server musí mít zaregistrovaný objekt Service Principal Name (SPN).

Metoda 1: Soubor Keytab

Soubor s klíčovými tabulkami obsahuje zašifrované hlavní klíče Kerberos. Zadejte cestu k souboru kláves a uživatelskou doménu:

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

Metoda 2: Mezipaměť přihlašovacích údajů

Použijte existující mezipaměť přihlašovacích údajů Kerberos vytvořenou pomocí kinit.

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

Metoda 3: Surové přihlašovací údaje

Zadejte heslo přímo do připojovací řetězec. Ovladač používá poskytnuté přihlašovací údaje k provedení ověření Kerberos.

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

Kerberos parametry

Parameter Výchozí Description
krb5-configfile /etc/krb5.conf Cesta k konfiguračnímu souboru Kerberos.
krb5-realm - Název kerberosové říše, například MYDOMAIN.COM.
krb5-keytabfile - Cesta k souboru s keytabem.
krb5-credcachefile - Cesta k souboru cache s přihlašovacím obsahem.
krb5-dnslookupkdc true Použijte DNS SRV záznamy k nalezení KDC.
krb5-udppreferencelimit 1 Maximální velikost zprávy před přechodem z UDP na TCP.
ServerSPN - Přepsat automaticky vygenerované SPN.