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 ana bilgisayarını Active Directory etki alanına ekleme
- SQL Server için Active Directory kullanıcısı oluşturma ve SPN'i ayarlama
- 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
Önkoşullar
Active Directory Kimlik Doğrulamasını yapılandırmadan önce şunları yapmanız gerekir:
- Ağınızda bir Active Directory Etki Alanı Denetleyicisi (Windows) ayarlama
- SQL Server'ı yükleme
SQL Server ana bilgisayarını Active Directory etki alanına ekleme
SQL Server Linux konağınıza bir Active Directory etki alanı denetleyicisiyle katılın. Active Directory etki alanına katılma hakkında bilgi için bkz. Linux konağındaki SQL Server'ı Active Directory etki alanına ekleme.
SQL Server için Active Directory kullanıcısı oluşturma ve SPN'i ayarlama
Uyarı
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
setspn.exe aracını kullanarak bu hesap için ServicePrincipalName (SPN) değerini 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> sqlsvcUyarı
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.
Önemli
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 adımda oluşturulan Active Directory hesabının Anahtar Sürüm Numarası'nı (KVNO) denetleyin. 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.COMUyarı
Ö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, bir Windows makinesi Komut İstemi'nde aşağıdaki komutları kullanarak her SPN için tuş sekmesi girdileri 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.
Uyarı
Son iki
UserNamegirdi küçük harfle yazılmalıdır, aksi durumda izin kimlik doğrulaması 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şirken kullanılacak hesabı belirtmek için aşağıdaki yapılandırma seçeneğinin mssql-conf aracıyla ayarlanması gerekir.
sudo mssql-conf set network.privilegedadaccount <username>Uyarı
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:/etc/krb5.conf [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 sqlcmd kullanarak bağlanın:
sqlcmd -S mssql-host.contoso.com
SQL Windows'tan farklı olarak, Kerberos kimlik doğrulaması SQL Linux'ta yerel bağlantı için çalışır. Ancak, yine de SQL Linux ana bilgisayarının FQDN'sini sağlamanız gerekir ve eğer ., localhost, 127.0.0.1 gibi yerlere 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ü | Tavsiye |
|---|---|
| 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
Linux ana bilgisayarını Active Directory etki alanına eklemek için PBIS, VAS veya Centrify gibi üçüncü taraf yardımcı programları kullanıyorsanız ve SQL Server'ı doğrudan OpenLDAP kitaplığını kullanmaya zorlamak istiyorsanız, disablesssd ile aşağıdaki gibi yapılandırabilirsiniz:
sudo mssql-conf set network.disablesssd true
systemctl restart mssql-server
Uyarı
SSSD'yi ayarlayan realmd gibi yardımcı programlar vardır ancak PBIS, VAS ve Centrify gibi diğer araçlar SSSD'yi ayarlamaz. Active Directory etki alanına katılmak için kullanılan yardımcı program SSSD'yi ayarlamazsa, disablesssd seçeneğini true olarak yapılandırmanız gerekir. SQL Server, OpenLDAP mekanizmasına geri dönmeden önce Active Directory için SSSD'yi kullanmaya çalışacağından gerekli olmasa da, SQL Server'ın SSSD mekanizmasını atlayarak OpenLDAP çağrıları yapması için bunu yapılandırmak daha yüksek performans gösterir.
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
systemctl restart mssql-server
Konakta Active Directory etki alanına katılma işlemi SSSD paketi aracılığıyla yapıldıysa ve disablesssd true olarak ayarlı değilse, bu işlem SSSD üzerinden LDAPS kullanır. Eğer disablesssd true ve forcesecureldap true olarak ayarlanırsa, SQL Server tarafından yapılan OpenLDAP kütüphane çağrıları üzerinden LDAPS protokolünü kullanır.
Sonrası SQL Server 2017 CU 14
SQL Server 2017 (14.x) CU 14'ten itibaren, SQL Server üçüncü taraf sağlayıcılar kullanılarak bir Active Directory etki alanı denetleyicisine katıldıysa ve genel Active Directory sorgusu için OpenLDAP çağrılarını kullanması için yapılandırıldıysa disablesssd değerini true olarak ayarlayarak, SQL Server'ı KDC sunucusunu ararken ters DNS araması yerine krb5 kitaplığını kullanmaya zorlama seçeneğini de enablekdcfromkrb5 kullanabilirsiniz.
Bu, SQL Server'ın iletişim kurmaya çalıştığı etki alanı denetleyicilerini el ile yapılandırmak istediğiniz senaryo için yararlı olabilir. OpenLDAP kitaplık mekanizmasını, krb5.conf içindeki KDC listesini kullanarak çalıştırırsınız.
İ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
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.
Uyarı
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.