go-mssqldb na Linuxu a macOS

Ovladač go-mssqldb je čistá knihovna pro Go a kompiluje se nativně na Linuxu a macOS bez externích C závislostí. Tento článek se zabývá platformově specifickou konfigurací pro autentizaci a certifikáty.

Installation

Instalace je na všech platformách stejná:

go get github.com/microsoft/go-mssqldb

Není potřeba žádný ovladač ODBC, FreeTDS ani jiné knihovny v C.

Ověřování SQL

SQL autentizace funguje identicky na Linuxu, macOS a Windows:

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

Ověřování NTLM

NTLM autentizace je podporována na všech platformách. Uveďte uživatelské jméno kvalifikované doménou:

Formát adresy URL

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

sqlserver://CONTOSO%5C<user>:<password>@<server>:1433?database=mydb

Formát ADO

Zpětná čára v uživatelském jménu spouští NTLM autentizaci:

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

Ovladač detekuje zpětné límítko v uživatelském jménu a automaticky používá NTLM. Na Linuxu ani macOS není potřeba žádná další konfigurace.

Ověřování protokolem Kerberos

Ověřování Kerberos v systému Linux a macOS používá balíček krb5, který je integrovaný v ovladači. Nejsou zde žádné externí knihovní závislosti.

Prerequisites

  1. Platný konfigurační soubor Kerberos. Výchozí cesta je /etc/krb5.conf:

    [libdefaults]
        default_realm = MYDOMAIN.COM
        dns_lookup_kdc = true
    
    [realms]
        MYDOMAIN.COM = {
            kdc = dc1.mydomain.com
        }
    
  2. Instance serveru SQL Server musí mít zaregistrovaný název instančního objektu služby (SPN) (například MSSQLSvc/<server>.mydomain.com:1433).

Připojte se pomocí klávesové karty

Zadejte v připojovacím řetězci cestu k souboru keytab a oblast Kerberos:

sqlserver://<user>@MYDOMAIN.COM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYDOMAIN.COM&krb5-keytabfile=/etc/<user>.keytab

Připojte se pomocí mezipaměti přihlašovacích údajů

Nejprve si opatřete lístek:

kinit <user>@MYDOMAIN.COM

Poté se připojte pomocí cacheovaného přihlašovacího údaje:

sqlserver://<user>@MYDOMAIN.COM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYDOMAIN.COM&krb5-credcachefile=/tmp/krb5cc_1000

Kerberos parametry

Parameter Výchozí Description
krb5-configfile /etc/krb5.conf Cesta k konfiguračnímu souboru Kerberos.
krb5-realm - realm systému Kerberos (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í Distribučního centra klíčů (KDC).
krb5-udppreferencelimit 1 Maximální velikost zprávy UDP před přechodem na TCP.

Pro více informací viz SQL Server a Windows authentication.

Windows authentication (SSPI) není dostupná

Na Linuxu a macOS není Windows integrovaná autentizace (SSPI / trusted_connection=yes) dostupná. Použijte jednu z následujících alternativ:

Metoda Připojovací řetězec
protokol NTLM sqlserver://DOMAIN%5Cuser:password@host?database=db
Kerberos (klávesa) sqlserver://user@REALM@host?database=db&krb5-realm=REALM&krb5-keytabfile=/path
Kerberos (cache) sqlserver://user@REALM@host?database=db&krb5-realm=REALM&krb5-credcachefile=/path
SQL autentizace sqlserver://user:password@host?database=db
Microsoft Entra ID sqlserver://host?database=db&fedauth=ActiveDirectoryDefault&encrypt=true&TrustServerCertificate=false (použít ovladač azuresql)

Konfigurace certifikátu

V Linuxu a macOS musí být certifikáty TLS používané s parametry certificate nebo serverCertificate soubory kódovanými ve formátu PEM. Řidič je čte přímo pomocí balíčku crypto/tls od Go.

Úložiště systémové důvěry

Ovladač používá výchozí úložiště důvěry v certifikáty operačního systému. V Linuxu je toto úložiště důvěryhodných certifikátů obvykle umístěno v umístění /etc/ssl/certs/ nebo /etc/pki/tls/certs/. V systému macOS se používá systémová klíčenka.

Pro přidání vlastního CA certifikátu do systémového úložiště:

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

Alternativně použijte certificate parametr připojení k přímé specifikaci CA certifikátu bez úpravy systémového úložiště:

sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&certificate=/path/to/ca-cert.pem