Linux ve macOS'ta go-mssqldb

Sürücü go-mssqldb tamamen bir Go kütüphanesidir ve Linux ile macOS'ta harici C bağımlılıkları olmadan yerel olarak derlenir. Bu makale, kimlik doğrulama ve sertifikalar için platforma özgü yapılandırmayı ele alır.

Installation

Tüm platformlarda kurulum aynıdır:

go get github.com/microsoft/go-mssqldb

ODBC sürücüsü, FreeTDS veya diğer C kütüphanelerine gerek yoktur.

SQL kimlik doğrulaması

SQL kimlik doğrulaması Linux, macOS ve Windows'ta aynı şekilde çalışır:

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

NTLM kimlik doğrulaması

NTLM doğrulaması tüm platformlarda desteklenmektedir. Alan adı nitelikli bir kullanıcı adı verin:

URL biçimi

DOMAIN\user içindeki ters eğik çizgiyi %5C olarak URL kodlayın:

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

ADO formatı

Kullanıcı adındaki ters eğik çizgi NTLM kimlik doğrulamasını tetikler:

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

Sürücü, kullanıcı adındaki ters çizgiyi algılar ve otomatik olarak NTLM kullanır. Linux veya macOS'ta ek yapılandırma gerekmez.

Kerberos kimlik doğrulama

Linux ve macOS'ta Kerberos kimlik doğrulaması, sürücünün içinde yerleşik paketi krb5 kullanır. Harici kütüphane bağımlılığı yoktur.

Prerequisites

  1. Geçerli bir Kerberos yapılandırma dosyası. Varsayılan yol şudur /etc/krb5.conf:

    [libdefaults]
        default_realm = MYDOMAIN.COM
        dns_lookup_kdc = true
    
    [realms]
        MYDOMAIN.COM = {
            kdc = dc1.mydomain.com
        }
    
  2. SQL Server örneğinde kayıtlı bir Hizmet Ana Adı (SPN) olmalıdır (örneğin, MSSQLSvc/<server>.mydomain.com:1433).

Bir keytab ile bağlanın

Keytab dosya yolunu ve Kerberos alemini bağlantı dizesi'de belirtin:

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

Bir kimlik kaydı önbelleğiyle bağlantı kurun

Öncelikle, bir bilet alın:

kinit <user>@MYDOMAIN.COM

Sonra önbelleğe alınan kimlik bilgilerini kullanarak bağlanın:

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

Kerberos parametreleri

Parametre Default Description
krb5-configfile /etc/krb5.conf Kerberos yapılandırma dosyasına giden yol.
krb5-realm - Kerberos alemi (örneğin, MYDOMAIN.COM).
krb5-keytabfile - Keytab dosyasına giden yol.
krb5-credcachefile - Kimlik bilgisi önbellek dosyasına giden yol.
krb5-dnslookupkdc true Anahtar Dağıtım Merkezi'ni (KDC) bulmak için DNS SRV kayıtlarını kullanın.
krb5-udppreferencelimit 1 TCP'ye geçmeden önce maksimum UDP mesaj boyutu.

Daha fazla bilgi için SQL Server ve Windows authentication bölümlerine bakınız.

Windows kimlik doğrulaması (SSPI) mevcut değil

Linux ve macOS'ta Windows entegre kimlik doğrulaması (SSPI / trusted_connection=yes) mevcut değil. Aşağıdaki seçeneklerden birini kullanın:

Method Bağlantı dizesi
NTLM sqlserver://DOMAIN%5Cuser:password@host?database=db
Kerberos (keytab) sqlserver://user@REALM@host?database=db&krb5-realm=REALM&krb5-keytabfile=/path
Kerberos (önbellek) sqlserver://user@REALM@host?database=db&krb5-realm=REALM&krb5-credcachefile=/path
SQL kimlik doğrulaması sqlserver://user:password@host?database=db
Microsoft Entra Kimliği sqlserver://host?database=db&fedauth=ActiveDirectoryDefault&encrypt=true&TrustServerCertificate=false (azuresql sürücüsünü kullanın)

Sertifika yapılandırması

Linux ve macOS'ta, or certificate parametreleriyle serverCertificate kullanılan TLS sertifikaları PEM kodlu dosyalar olmalıdır. Sürücü, doğrudan Go'nun paketini crypto/tls kullanarak bunları okur.

Sistem güven deposu

Sürücü, işletim sisteminin varsayılan sertifika güven deposunu kullanır. Linux'ta bu güven mağazası genellikle /etc/ssl/certs/ veya /etc/pki/tls/certs/adresinde bulunur. macOS'ta sistem anahtarlığı kullanılır.

Sistem deposuna özel bir CA sertifikası eklemek için:

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

Alternatif olarak, certificate bağlantı parametresini kullanarak CA sertifikasını sistem deposunu değiştirmeden doğrudan belirtebilirsiniz:

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