Aracılığıyla paylaş


Öğretici: Linux üzerinde SQL Server ile Active Directory kimlik doğrulamasını yapılandırmak için adutil kullanma

Şunlar için geçerlidir:Linux üzerinde SQL Server

Bu öğreticide , adutil kullanarak Linux üzerinde SQL Server için Windows Active Directory kimlik doğrulamasını yapılandırma açıklanmaktadır. ktpass kullanarak Active Directory kimlik doğrulamasını yapılandırmanın başka bir yöntemi için bkz. Öğretici: Linux üzerinde SQL Server ile Active Directory kimlik doğrulamasını kullanma.

Bu öğretici aşağıdaki görevlerden oluşur:

  • adutil yükle
  • Linux makinesini Active Directory etki alanınıza ekleme
  • SQL Server için bir Active Directory kullanıcısı oluşturma ve adutil kullanarak Hizmet Asıl Adı'nı (SPN) ayarlama
  • SQL Server hizmet anahtar sekmesi (anahtar tablosu) dosyasını oluşturma
  • SQL Server'ı anahtar sekmesi dosyasını kullanacak şekilde yapılandırma
  • Transact-SQL kullanarak Active Directory tabanlı SQL Server 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 Active Directory Etki Alanı Hizmetleri çalıştıran bir Windows Etki Alanı Denetleyicisi.
  • Etki alanına katılmış bir konak makinesine adutil aracı yüklendi.

Alan adı makine hazırlama

Linux ana bilgisayar IP adresi için Active Directory'de bir iletme ana bilgisayarı (A) girdisi eklendiğinden emin olun. Bu öğreticide, sql1 konak makinesinin IP adresi 10.0.0.10 şeklindedir. Aşağıdaki örnekte Active Directory'de iletme ana bilgisayar girdisini ekleyeceğiz. Giriş, kullanıcılar sql1.contoso.com'a bağlandığında doğru konağa ulaşmalarını sağlar.

Konak kaydı ekleme ekran görüntüsü.

Bu öğretici için Azure'da üç sanal makine içeren bir ortam kullanırsınız. Bir sanal makine (VM), adVM.contoso.com adlı, contoso.com etki alanı adıyla Etki Alanı Denetleyicisi (DC) olarak çalışan bir Windows Server bilgisayarıdır. İkinci VM, SQL Server Management Studio 'nun (SSMS) yüklü olduğu adlı winboxWindows 10 çalıştıran bir istemci makinesidir. Üçüncü makine, SQL Server'ı barındıran adlı sql1bir Ubuntu 18.04 LTS makinesidir.

Linux konak makinesini Active Directory etki alanınıza ekleme

Active Directory etki alanına katılmak sql1 için bkz. Linux konağındaki SQL Server'ı Active Directory etki alanına ekleme.

Adutil'i yükleme

adutil'i yüklemek için, önceki adımda etki alanına eklediğiniz konak makinede adutil - Active Directory yardımcı programı tanıtımı makalesinde açıklanan adımları izleyin.

ADutil kullanarak SQL Server için bir Active Directory kullanıcısı oluşturun ve Hizmet Asıl Adı'nı (SPN) ayarlayın

  1. kinit komutunu kullanarak Kerberos TGT'sini (bilet verici bilet) alın veya yenileyin. kinit komutu için ayrıcalıklı bir hesap kullanmanız ve ana bilgisayarın zaten etki alanının parçası olması gerekir. Hesabın etki alanına bağlanmak ve etki alanında hesaplar ve SPN'ler oluşturmak için izne ihtiyacı vardır.

    Bu örnek betikte, etki alanı denetleyicisinde privilegeduser@CONTOSO.COM adlı ayrıcalıklı bir kullanıcı zaten oluşturulmuştur.

    kinit privilegeduser@CONTOSO.COM
    
  2. adutil kullanarak SQL Server tarafından ayrıcalıklı Active Directory hesabı olarak kullanılacak yeni kullanıcıyı oluşturun.

    Parolalar üç farklı şekilde belirtilebilir. Bu yöntemlerden birden fazlasını kullanırsanız, bunlar aşağıdaki sırayla öncelik kazanır:

    • Parola bayrağını kullanma: --password <password>
    • Ortam değişkeninde: ADUTIL_ACCOUNT_PWD
    • Komut satırı isteminde etkileşimli giriş

    Ortam değişkeni veya etkileşimli giriş yöntemleri parola bayrağından daha güvenlidir.

    adutil user create --name sqluser --distname CN=sqluser,CN=Users,DC=CONTOSO,DC=COM --password '<password>'
    

    Daha önce gösterildiği gibi ayırt edici adı (--distname) kullanarak hesabın adını belirtebilir veya Kuruluş Birimi (OU) adını kullanabilirsiniz. OU adı (--ou), her ikisini de belirtmeniz durumunda ayırt edici addan önceliklidir. Daha fazla ayrıntı için aşağıdaki komutu çalıştırabilirsiniz:

    adutil user create --help
    

    Dikkat

    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.

  3. SPN'leri daha önce oluşturulan sorumluya kaydedin. Cihazın tam alan adını (FQDN) kullanmanız gerekir. Bu öğreticide SQL Server'ın varsayılan bağlantı noktası olan 1433'i kullanacağız. Bağlantı noktası numaranız farklı olabilir.

    adutil spn addauto -n sqluser -s MSSQLSvc -H sql1.contoso.com -p 1433
    
    • addauto , hesap için kinit yeterli ayrıcalıklar olduğu sürece SPN'leri otomatik olarak oluşturur.
    • -n: SPN'leri atanacak hesabın adı.
    • -s: SPN oluşturmak için kullanılacak hizmet adı. Bu durumda SQL Server hizmetine yöneliktir ve bu nedenle hizmet adı şeklindedir MSSQLSvc.
    • -H: SPN oluşturmak için kullanılacak ana bilgisayar adı. Belirtilmezse, yerel ana bilgisayarın FQDN'si kullanılır. Bu durumda, ana bilgisayar adı sql1, ve FQDN sql1.contoso.com'dir.
    • -p: SPN oluşturmak için kullanılacak bağlantı noktası. Belirtilmezse, SPN'ler bağlantı noktası olmadan oluşturulur. SQL bağlantıları bu durumda yalnızca SQL Server örneği varsayılan bağlantı noktası olan 1433'i dinlediğinde çalışır.

mssql-conf kullanarak SQL Server hizmet anahtar sekmesi dosyasını oluşturma

doğrudan mssql-conf kullanarak anahtar sekmesini oluşturmak ve yapılandırmak için adutil'i yükleyebilir ve mssql-conf ile tümleştirebilirsiniz. Bu yöntem, SQL Server hizmet anahtar sekmesi dosyası oluşturmak için tercih edilir. Aksi takdirde , SQL Server hizmet anahtar sekmesi dosyasını el ile oluşturabilirsiniz.

Önkoşullar

  1. mssql kullanıcısının /var/opt/mssql/mssql.conf dosyasına sahip olduğundan ve root olmadığından emin olun. Aksi takdirde, sudo komutlarını kullanarak çalıştırmanız gerekir.

  2. Etki alanı denetleyicisinde, hesabın Active Directory ayarlarında network.privilegedadaccount (bu örneklerde sqluser@CONTOSO.COM), Hesap sekmesinin Hesap seçenekleri bölümünde aşağıdaki seçenekleri etkinleştirin:

    • Bu hesap Kerberos AES 128 bit şifrelemeyi destekler
    • Bu hesap Kerberos AES 256 bit şifrelemeyi destekler

Tuş sekmesi dosyasını oluşturma

Kullanıcı ve SPN'leri oluşturduktan sonra, aşağıdaki adımları kullanarak anahtar sekmesini oluşturabilirsiniz.

  1. oracle Kullanıcıya geçin:

    su mssql
    
  2. Komutunu kullanarak kinit Active Directory kullanıcısı olarak oturum açın:

    kinit privilegeduser@CONTOSO.COM
    
  3. Anahtar sekmesi dosyasını oluşturun:

    /opt/mssql/bin/mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser
    

    Yeni Active Directory yapılandırmasını benimsemek için SQL Server hizmetini yeniden başlatmanız istendiğinde, sonraki bölümde bunu yapabilirsiniz.

  4. Anahtar sekmesinin doğru girişlerle oluşturulduğunu onaylayın:

    klist -kte /var/opt/mssql/secrets/mssql.keytab
    

    Bu örneğe benzer bir çıktı görmeniz gerekir:

    keytab name: FILE:/var/opt/mssql/secrets/mssql.keytab
    KVNO Timestamp           Principal
    ---- ------------------- ------------------------------------------------------
       4 12/30/2021 14:02:08 sqluser@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       4 12/30/2021 14:02:08 MSSQLSvc/sql1.contoso.com:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       4 12/30/2021 14:02:08 MSSQLSvc/sql1.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       4 12/30/2021 14:02:08 MSSQLSvc/sql1:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       4 12/30/2021 14:02:08 MSSQLSvc/sql1@CONTOSO.COM (aes256-cts-hmac-sha1-96)
    

    Dosya /var/opt/mssql/mssql.conf tarafından sahiplenilmemişse, mssql'yi ve network.kerberoskeytabfile değerlerini önceki adımlara göre ayarlamak için yapılandırmanız gerekir. İstendiğinde parolayı yazın.

    /opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
    /opt/mssql/bin/mssql-conf set network.privilegedadaccount sqluser
    
  5. Active Directory kimlik doğrulamasının sorunsuz çalıştığından emin olmak için yapılandırmanızı doğrulayın.

    /opt/mssql/bin/mssql-conf validate-ad-config /var/opt/mssql/secrets/mssql.keytab
    

    Aşağıdaki örneğe benzer bir çıktı görmeniz gerekir:

    Detected Configuration:
    Default Realm: CONTOSO.COM
    Keytab: /var/opt/mssql/secrets/mssql.keytab
    Reverse DNS Result: sql1.contoso.com
    SQL Server Port: 1433
    Detected SPNs (SPN, KVNO):
    (MSSQLSvc/sql1.CONTOSO.COM:1433, 4)
    (MSSQLSvc/sql1.CONTOSO.COM, 4)
    (MSSQLSvc/sql1:1433, 4)
    (MSSQLSvc/sql1, 4)
    Privileged Account (Name, KVNO):
    (sqluser, 4)
    

SQL Server hizmet anahtar sekmesi dosyasını el ile oluşturma

adutil'i yüklediyseniz ve mssql-conf ile tümleştirdiyseniz, mssql-conf kullanarak SQL Server hizmet anahtar sekmesi dosyasını oluşturma bölümüne atlayabilirsiniz.

  1. Daha önce oluşturulan dört SPN'nin her biri için girdileri ve kullanıcı için bir tane içeren anahtar sekmesi dosyasını oluşturun.

    adutil keytab createauto -k /var/opt/mssql/secrets/mssql.keytab -p 1433 -H sql1.contoso.com --password '<password>' -s MSSQLSvc
    

    Dikkat

    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.

    Olası komut satırı seçenekleri şunlardır:

    • -k: Dosyanın oluşturulduğu yol mssql.keytab . Önceki örnekte, /var/opt/mssql/secrets/ dizini konakta zaten mevcut olmalıdır.
    • -p: SPN oluşturmak için kullanılacak bağlantı noktası. Belirtilmezse, SPN'ler bağlantı noktası olmadan oluşturulur.
    • -H: SPN oluşturmak için kullanılacak ana bilgisayar adı. Belirtilmezse, yerel ana bilgisayarın FQDN'si kullanılır. Bu durumda, ana bilgisayar adı sql1, ve FQDN sql1.contoso.com'dir.
    • -s: SPN oluşturmak için kullanılacak hizmet adı. Bu örnekte, SQL Server hizmet adı şeklindedir MSSQLSvc.
    • --password: Daha önce oluşturulan ayrıcalıklı Active Directory kullanıcı hesabının parolası.
    • -e veya --enctype: Anahtar sekmesi girdisi için şifreleme türleri. Virgülle ayrılmış bir değer listesi kullanın. Belirtilmezse, etkileşimli bir istem sunulur.

    Ana bilgisayarınız ve etki alanınız şifreleme türünü desteklediği sürece birden fazla şifreleme türü seçebilirsiniz. Bu örnekte aes256-cts-hmac-sha1-96 ve aes128-cts-hmac-sha1-96 seçeneklerini belirleyebilirsiniz. Ancak, bir üretim ortamında şifrelemesi zayıf olduğundan kaçınmalısınız arcfour-hmac .

    İstenmeden şifreleme türünü seçmek isterseniz, önceki komuttaki bağımsız değişkeni kullanarak -e şifreleme türü seçiminizi belirtebilirsiniz. Daha fazla yardım için adutil keytab seçenekler hakkında şu komutu çalıştırın:

    adutil keytab createauto --help
    
  2. SQL Server'ın Active Directory'ye bağlanmak için kullandığı asıl ad ve parola için anahtar sekmesine bir girdi ekleyin:

    adutil keytab create -k /var/opt/mssql/secrets/mssql.keytab -p sqluser --password '<password>'
    

    Dikkat

    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.

    • -k: mssql.keytab dosyasını oluşturmak istediğiniz yol.
    • -p: Anahtar sekmesine eklenecek sorumlu.

    adutil keytab [ create | autocreate ] önceki dosyaların üzerine yazmaz; zaten varsa yalnızca dosyanın sonuna eklenir.

  3. mssql kullanıcısının oluşturulan keytab dosyasına sahip olduğundan ve yalnızca mssql kullanıcısının dosyaya okuma/yazma erişimi olduğundan emin olun. chown ve chmod komutlarını aşağıdaki gibi çalıştırabilirsiniz:

    chown mssql /var/opt/mssql/secrets/mssql.keytab
    chmod 440 /var/opt/mssql/secrets/mssql.keytab
    

SQL Server'ı tuş sekmesini kullanacak şekilde yapılandırma

SQL Server'ı önceki adımda oluşturulan tuş sekmesini kullanacak şekilde yapılandırmak için aşağıdaki komutları çalıştırın ve ayrıcalıklı Active Directory hesabını kullanıcının daha önce oluşturduğu şekilde ayarlayın. Örneğimizde kullanıcı adı şeklindedir sqluser.

/opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
/opt/mssql/bin/mssql-conf set network.privilegedadaccount sqluser

SQL Server'ın yeniden başlatılması

SQL Server hizmetini yeniden başlatmak için aşağıdaki komutu çalıştırın:

sudo systemctl restart mssql-server

Transact-SQL'de Active Directory tabanlı SQL Server oturum açma bilgileri oluşturma

SQL Server örneğine bağlanın ve aşağıdaki komutları çalıştırarak oturum açma bilgilerini oluşturun ve var olduğunu onaylayın.

CREATE LOGIN [contoso\privilegeduser]
    FROM WINDOWS;

SELECT name
FROM sys.server_principals;

Active Directory kimlik doğrulamasını kullanarak SQL Server'a bağlanma

SQL Server Management Studio (SSMS) kullanarak SQL Server örneğine bağlanmak için Windows kimlik bilgilerinizi kullanın.

Windows Kimlik Doğrulaması kullanarak SQL Server örneğine bağlanmak için sqlcmd yardımcı programı gibi bir araç da kullanabilirsiniz.

sqlcmd -E -S 'sql1.contoso.com'