Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:Linux üzerinde SQL Server
Bu öğreticide, Tümleşik kimlik doğrulaması olarak da bilinen Active Directory kimlik doğrulamasını desteklemek için Linux üzerinde SQL Server'ın nasıl yapılandırılır açıklanmaktadır. Genel bakış için bkz. Linux üzerinde SQL Server için Active Directory kimlik doğrulaması.
Bu öğretici aşağıdaki görevlerden oluşur:
- SQL Server sunucusunu bir Active Directory alanına birleştirin
- SQL Server için bir Active Directory kullanıcısı oluşturun ve bir SPN oluşturun
- SQL Server hizmet anahtar sekmesini yapılandırma
- Anahtar sekmesi dosyasının güvenliğini sağlama
- SQL Server'ı Kerberos kimlik doğrulaması için anahtar sekmesi dosyasını kullanacak şekilde yapılandırma
- Transact-SQL'de Active Directory tabanlı oturum açma bilgileri oluşturma
- Active Directory kimlik doğrulamasını kullanarak SQL Server'a bağlanma
Prerequisites
Active Directory kimlik doğrulamasını yapılandırmadan önce şunları yapmanız gerekir:
- Ağınızda bir Active Directory alan kontrolcüsü (Windows) kurun
- SQL Server'ı yükleme
Note
SQL Server 2025(17.x) tarihinden itibaren SUSE Linux Enterprise Server (SLES) desteklenmez.
SQL Server ana bilgisayarını Active Directory etki alanına ekleme
SQL Server Linux sunucunuzu bir Active Directory alan kontrolcüsüne bağlayın. Bir Active Directory alan adına nasıl katılılacağı hakkında bilgi için, Linux hostunda SQL Server'ı Active Directory alanına katılma bölümüne bakınız.
SQL Server için Active Directory kullanıcısı oluşturma ve SPN'i ayarlama
Note
Aşağıdaki adımlar tam nitelikli alan adınızı (FQDN) kullanır. Azure'daysanız devam etmeden önce bir FQDN oluşturmanız gerekir.
Etki alanı denetleyicinizde New-ADUser PowerShell komutunu çalıştırarak süresi hiç dolmamış parolaya sahip yeni bir Active Directory kullanıcısı oluşturun. Aşağıdaki örnekte hesabı
sqlsvcolarak adlandırabilirsiniz, ancak hesap adı istediğiniz bir ad olabilir. Hesap için yeni bir parola girmeniz istenir.Import-Module ActiveDirectory New-ADUser sqlsvc -AccountPassword (Read-Host -AsSecureString "Enter Password") -PasswordNeverExpires $true -Enabled $trueSQL Server örneği kimlik bilgilerinin aynı hesabı kullanan diğer hizmetlerle paylaşılmaması için SQL Server için ayrılmış bir Active Directory hesabına sahip olmak en iyi güvenlik uygulamasıdır. Ancak, hesabın parolasını biliyorsanız (sonraki adımda bir anahtar sekmesi dosyası oluşturmak için gereklidir) isteğe bağlı olarak mevcut bir Active Directory hesabını yeniden kullanabilirsiniz. Ayrıca hesap, kullanıcı hesabında 128 bit ve 256 bit Kerberos AES şifrelemesini (
msDS-SupportedEncryptionTypesöznitelik) destekleyecek şekilde etkinleştirilmelidir. Hesabın AES şifrelemesi için etkinleştirildiğini doğrulamak için Active Directory Kullanıcıları ve Bilgisayarları yardımcı programındaki hesabı bulun ve Özellikler'i seçin. Özellikler'deHesaplar sekmesini bulun ve aşağıdaki iki onay kutusunun seçili olduğunu doğrulayın.- Bu hesap Kerberos AES 128 bit şifrelemeyi destekler
- Bu hesap Kerberos AES 256 bit şifrelemeyi destekler
Bu hesap için hizmet ana adını (SPN ) setspn.exe aracı ile ayarlayın. SPN, aşağıdaki örnekte belirtildiği gibi tam olarak biçimlendirilmelidir. SQL Server ana bilgisayarında
hostname --all-fqdnskomutunu çalıştırarak SQL Server ana bilgisayar makinesinin tam etki alanı adını bulabilirsiniz. SQL Server'ı farklı bir bağlantı noktası numarası kullanacak şekilde yapılandırmadıysanız TCP bağlantı noktası 1433 olmalıdır.setspn -A MSSQLSvc/<fully qualified domain name of host machine>:<tcp port> sqlsvc setspn -A MSSQLSvc/<netbios name of the host machine>:<tcp port> sqlsvcNote
Hata alırsanız,
Insufficient access rightsetki alanı yöneticinize bu hesapta spn ayarlamak için yeterli izinlere sahip olduğunuzu denetleyin. SPN'yi kaydetmek için kullanılan hesabınWrite servicePrincipalNameizinlere sahip olması gerekir. Daha fazla bilgi için bkz . Kerberos bağlantıları için Hizmet Asıl Adı Kaydetme.Gelecekte TCP bağlantı noktasını değiştirirseniz setspn komutunu yeni bağlantı noktası numarasıyla yeniden çalıştırmanız gerekir. Sonraki bölümdeki adımları izleyerek yeni SPN'yi SQL Server hizmet anahtarı sekmesine de eklemeniz gerekir.
Daha fazla bilgi için bkz . Kerberos bağlantıları için Hizmet Asıl Adı Kaydetme.
SQL Server hizmet anahtar sekmesini yapılandırma
Linux üzerinde SQL Server için Active Directory kimlik doğrulamasını yapılandırmak için bir Active Directory kullanıcı hesabı ve önceki bölümde oluşturulan SPN gerekir.
Important
Active Directory hesabının parolası değiştirilirse veya SPN'lerin atandığı hesabın parolası değiştirilirse, anahtar sekmesini yeni parola ve Anahtar Sürüm Numarası (KVNO) ile güncelleştirmeniz gerekir. Bazı hizmetler de parolaları otomatik olarak döndürebilir. Söz konusu hesapların parola döndürme ilkelerini gözden geçirin ve beklenmeyen kapalı kalma sürelerini önlemek için bunları zamanlanmış bakım etkinlikleriyle hizalayın.
SPN anahtar sekmesi girdileri
Önceki bölümde oluşturulan Active Directory hesabı için Anahtar Sürüm Numarası (KVNO) kontrol edin. Genellikle 2 olur, ancak hesabın parolasını birden çok kez değiştirdiyseniz başka bir tamsayı olabilir. SQL Server konak makinesinde aşağıdaki komutları çalıştırın:
- Aşağıdaki örnekler
user@CONTOSO.COMetki alanında olduğunu varsayıyor. Kullanıcı ve etki alanı adını, kullanıcı ve etki alanı adınızla değiştirin.
kinit user@CONTOSO.COM kvno user@CONTOSO.COM kvno MSSQLSvc/<fully qualified domain name of host machine>:<tcp port>@CONTOSO.COMNote
ÖZELLIKLE etki alanı büyükse SPN'lerin etki alanınızda yayılması birkaç dakika sürebilir. hatasını alırsanız,
kvno: Server not found in Kerberos database while getting credentials for MSSQLSvc/<fully qualified domain name of host machine>:<tcp port>@CONTOSO.COMbirkaç dakika bekleyin ve yeniden deneyin. Önceki komutlar yalnızca sunucu önceki bir bölümde ele alınan bir Active Directory etki alanına katılmışsa çalışır.- Aşağıdaki örnekler
ktpass kullanarak, Windows Komut Mesajında aşağıdaki komutları kullanarak her SPN için tuş sekmesi girişlerini ekleyin:
-
<DomainName>\<UserName>- Active Directory kullanıcı hesabı -
@CONTOSO.COM- Etki alanı adınızı kullanın -
/kvno <#>- Önceki bir adımda elde edilen KVNO ile<#>'yi değiştirin. -
<password>- Parolanız SQL Server varsayılan parola ilkesine uygun olmalıdır. Varsayılan olarak, parola en az sekiz karakter uzunluğunda olmalı ve şu dört kümeden üçünün karakterlerini içermelidir: büyük harfler, küçük harfler, 10 tabanındaki basamaklar ve simgeler. Parolalar en çok 128 karakter uzunluğunda olabilir. Mümkün olduğunca uzun ve karmaşık parolalar kullanın.
ktpass /princ MSSQLSvc/<fully qualified domain name of host machine>:<tcp port>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser <DomainName>\<UserName> /out mssql.keytab -setpass -setupn /kvno <#> /pass <password> ktpass /princ MSSQLSvc/<fully qualified domain name of host machine>:<tcp port>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <password> ktpass /princ MSSQLSvc/<netbios name of the host machine>:<tcp port>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <password> ktpass /princ MSSQLSvc/<netbios name of the host machine>:<tcp port>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <password> ktpass /princ <UserName>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <password> ktpass /princ <UserName>@CONTOSO.COM /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser <DomainName>\<UserName> /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno <#> /pass <password>Önceki komutlar, Active Directory kimlik doğrulaması için hem AES hem de RC4 şifreleme şifrelemesine izin verir. RC4 eski bir şifreleme şifreleme şifrelemesidir ve daha yüksek bir güvenlik derecesi gerekiyorsa, yalnızca AES şifreleme şifrelemesi ile anahtar sekmesi girdileri oluşturmayı seçebilirsiniz.
Note
Son iki
UserNamegiriş küçük harflerle yapılmalıdır, aksi takdirde kimlik doğrulama başarısız olabilir.-
Önceki komutları yürüttükten sonra,
mssql.keytabadında bir keytab dosyanız olmalıdır. dosyasını klasörünün/var/opt/mssql/secretsaltındaki SQL Server makinesine kopyalayın.Anahtar sekmesi dosyasının güvenliğini sağlayın.
Bu anahtar sekmesi dosyasına erişimi olan herkes etki alanında SQL Server'ın kimliğine bürünebilir, bu nedenle dosyaya erişimi yalnızca mssql hesabının okuma erişimi olacak şekilde kısıtladığınızdan emin olun:
sudo chown mssql:mssql /var/opt/mssql/secrets/mssql.keytab sudo chmod 400 /var/opt/mssql/secrets/mssql.keytabAnahtar sekmesi dosyasına erişilirken kullanılacak hesabı belirtmek için aşağıdaki yapılandırma seçeneğinin araçla
mssql-confayarlanması gerekir.sudo mssql-conf set network.privilegedadaccount <username>Note
Etkialanıadı\kullanıcıadı veya username@domain değil yalnızca kullanıcı adını ekleyin. SQL Server, gerektiğinde bu kullanıcı adıyla birlikte etki alanı adını da dahili olarak ekler.
SQL Server'ı Kerberos kimlik doğrulaması için anahtar sekmesi dosyasını kullanmaya başlayacak şekilde yapılandırmak için aşağıdaki adımları kullanın.
sudo mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab sudo systemctl restart mssql-serverİsteğe bağlı olarak, performansı geliştirmek için etki alanı denetleyicisine UDP bağlantılarını devre dışı bırakabilirsiniz. Çoğu durumda, bir etki alanı denetleyicisine bağlanırken UDP bağlantıları sürekli olarak başarısız olur, bu nedenle içinde UDP çağrılarını atlamak için yapılandırma seçeneklerini
/etc/krb5.confayarlayabilirsiniz./etc/krb5.confdüzenleyin ve aşağıdaki seçenekleri ayarlayın:[libdefaults] udp_preference_limit = 0
Bu noktada, SQL Server'da Active Directory tabanlı oturum açma bilgilerini kullanmaya hazırsınız.
Transact-SQL'de Active Directory tabanlı oturum açma bilgileri oluşturma
SQL Server'a bağlanın ve yeni, Active Directory tabanlı oturum açma bilgileri oluşturun:
CREATE LOGIN [CONTOSO\user] FROM WINDOWS;Oturum açma bilgilerinin artık sys.server_principals sistem kataloğu görünümünde listelendiğini doğrulayın:
SELECT name FROM sys.server_principals;
Active Directory kimlik doğrulamasını kullanarak SQL Server'a bağlanma
Etki alanı kimlik bilgilerinizi kullanarak bir istemci makinesinde oturum açın. Artık Active Directory kimlik doğrulamasını kullanarak parolanızı yeniden girmeden SQL Server'a bağlanabilirsiniz. Bir Active Directory grubu için oturum açarsanız, bu grubun üyesi olan tüm Active Directory kullanıcıları aynı şekilde bağlanabilir.
İstemcilerin Active Directory kimlik doğrulamasını kullanması için belirli bağlantı dizesi parametresi, kullandığınız sürücüye bağlıdır. Aşağıdaki bölümlerde yer alan örnekleri göz önünde bulundurun.
Etki alanına katılmış bir Linux istemcisinde sqlcmd komutu
SSH ve etki alanı kimlik bilgilerinizi kullanarak etki alanına katılmış bir Linux istemcisinde oturum açın:
ssh -l user@contoso.com client.contoso.com
mssql-tools paketini yüklediğinizden emin olun, ardından herhangi bir kimlik bilgisi belirtmeden kullanarak sqlcmd bağlanın:
sqlcmd -S mssql-host.contoso.com
Windows'taki SQL Server'ın aksine, Kerberos kimlik doğrulaması Linux üzerinde SQL Server yerel bağlantılar için çalışır. Ancak yine de SQL Server sunucusunun FQDN'sini sağlamanız gerekiyor.
127.0.0.1, . veya localhost öğelerine bağlanmayı denerseniz Active Directory kimlik doğrulaması çalışmaz.
Etki alanına bağlı bir Windows istemcisinde SSMS
Etki alanına katılmış bir Windows istemcisinde etki alanı kimlik bilgilerinizi kullanarak oturum açın. SQL Server Management Studio'yu yüklediğinizden emin olun, ardından mssql-host.contoso.com iletişim kutusunda Windows Kimlik Doğrulaması'nı belirterek SQL Server örneğine (örneğin, ) bağlanın.
Diğer istemci sürücülerini kullanarak Active Directory kimlik doğrulaması
Aşağıdaki tabloda diğer istemci sürücülerine yönelik öneriler açıklanmaktadır:
| İstemci sürücüsü | Recommendation |
|---|---|
| JDBC | SQL Server'a Bağlanmak için Kerberos Tümleşik Kimlik Doğrulamasını kullanın. |
| ODBC | Tümleşik Kimlik Doğrulamayı Kullanın. |
| ADO.NET | Bağlantı Dizesi Söz Dizimi. |
Ek yapılandırma seçenekleri
Eğer Linux ana bilgisayarını Active Directory alanına bağlamak için PBIS, VAS veya Centrify gibi üçüncü taraf yardımcı programları kullanıyorsanız ve SQL Server'ı doğrudan OpenLDAP kütüphanesini kullanmaya zorlamak istiyorsanız, seçeneği disablesssd aşağıdaki mssql-conf şekilde yapılandırabilirsiniz:
sudo mssql-conf set network.disablesssd true
sudo systemctl restart mssql-server
Note
SSSD kuran realmd gibi araçlar varken, PBIS, VAS ve Centrify gibi araçlar SSSD kurmaz. Active Directory alanına katılmak için kullanılan yardımcı araç SSSD kurmuyorsa, seçeneği şu şekilde trueyapılandırmalısındisablesssd. SQL Server, Active Directory için OpenLDAP mekanizmasına geri dönmeden önce SSSD’yi kullanmayı denediğinden bu gerekli olmasa da, bu seçeneğin yapılandırılması SQL Server’ın OpenLDAP çağrılarını doğrudan yapmasına ve SSSD’yi atlamasına olanak tanır.
Etki alanı denetleyiciniz LDAPS'yi destekliyorsa, SQL Server'dan etki alanı denetleyicilerine yapılan tüm bağlantıları LDAPS üzerinden olmaya zorlayabilirsiniz. İstemcinizin LDAPS üzerinden etki alanı denetleyicisiyle iletişim kurabildiğini denetlemek için aşağıdaki bash komutunu ldapsearch -H ldaps://contoso.com:3269çalıştırın: . SQL Server'ı yalnızca LDAPS kullanacak şekilde ayarlamak için aşağıdakileri çalıştırın:
sudo mssql-conf set network.forcesecureldap true
sudo systemctl restart mssql-server
SQL Server, konak SSSD kullanılarak Active Directory etki alanına katıldıysa ve disablesssd, true olarak ayarlanmadıysa SSSD üzerinden LDAPS kullanır. Eğer her ikisi disablesssd ve forcesecureldap olarak trueayarlanmışsa, SQL Server OpenLDAP yerine LDAPS kullanır.
SQL Server 2017 CU 14 ve sonraki sürümler
SQL Server 2017 (14.x) CU 14 itibarıyla, SQL Server üçüncü taraf sağlayıcılar kullanılarak bir Active Directory etki alanına katıldıysa ve disablesssd true olarak ayarlanarak genel Active Directory araması için OpenLDAP çağrılarını kullanacak şekilde yapılandırıldıysa, KDC sunucusu için ters DNS araması yerine KDC araması için krb5 kitaplığını kullanmaya zorlamak üzere enablekdcfromkrb5conf seçeneğini de kullanabilirsiniz.
Bu, SQL Server'ın iletişim kurmaya çalıştığı alan kontrolörlerini manuel olarak yapılandırmak ve OpenLDAP kütüphane mekanizmasını KDC listesiyle krb5.confkullanmak istediğinizde faydalı olabilir.
İlk olarak, disablesssd ve enablekdcfromkrb5conf değerlerini true olarak ayarlayın ve ardından SQL Server'ı yeniden başlatın.
sudo mssql-conf set network.disablesssd true
sudo mssql-conf set network.enablekdcfromkrb5conf true
sudo systemctl restart mssql-server
Ardından içinde /etc/krb5.conf KDC listesini aşağıdaki gibi yapılandırın:
[realms]
CONTOSO.COM = {
kdc = dcWithGC1.contoso.com
kdc = dcWithGC2.contoso.com
}
Önerilmiyor olsa da, Linux ana makinesini etki alanına dahil ederken SSSD'yi ayarlayan realmd gibi yardımcı programları kullanmak mümkündür. Aynı zamanda, disablesssd değerini true olarak yapılandırarak SQL Server'ın Active Directory ile ilgili çağrılarda SSSD yerine OpenLDAP çağrılarını kullanmasını sağlayabilirsiniz.
Note
FQDN kullanarak SQL Server oturum açma işlemi (örneğin, CONTOSO.COM\Username) desteklenmez.
CONTOSO\Username Biçimini kullanın.
Etki Alanı Yerel gruplarından SQL Server oturum açma işlemleri desteklenmez. Bunun yerine Genel Güvenlik Etki Alanı gruplarını kullanın.
İlgili içerik
- Linux üzerinde SQL Server bağlantılarını şifreleme
- Linux ve kapsayıcılarda SQL Server için Active Directory kimlik doğrulamasını anlama
- Linux ve kapsayıcılarda SQL Server için Active Directory kimlik doğrulaması sorunlarını giderme
SQL belgelerine katkıda bulunma
SQL içeriğini kendiniz düzenleyebildiğinizi biliyor muydunuz? Bunu yaparsanız, belgelerimizin geliştirilmesine yardımcı olmakla kalmaz, aynı zamanda sayfaya katkıda bulunan olarak da kabul edilirsiniz.
Daha fazla bilgi için Bkz. Microsoft Learn belgelerini düzenleme.