ODBC Sürücüsü ile Microsoft Entra Kimliğini Kullanma

ODBC sürücüsü indirme

Uyarı

Microsoft Entra ID, Azure Active Directory'nin (Azure AD) yeni adı olmasına rağmen, mevcut ortamların bozulmasını önlemek için Azure AD, UI alanları, bağlantı sağlayıcıları, hata kodları ve cmdletler gibi bazı sabit kodlu öğelerde hâlâ varlığını sürdürüyor. Bu makalede, iki ad birbirinin yerine kullanılabilir.

Amaç

SQL Server sürüm 13.1 ve üzeri için Microsoft ODBC Sürücüsü, ODBC uygulamalarının Microsoft Entra Id kimliklerini kullanarak Azure SQL Veritabanı'na veya Azure SQL Yönetilen Örneği'ne bağlanmasına olanak tanır. Kimlik doğrulaması kullanıcı adı ve parola, Microsoft Entra erişim belirteci, Microsoft Entra yönetilen kimliği (17.3+) veya bir federe etki alanına katılmış ortamda (17.6+ Linux/macOS üzerinde) Entegre Windows Kimlik Doğrulaması ile yapılabilir. ODBC Sürücüsü sürüm 13.1 için Microsoft Entra erişim belirteci kimlik doğrulaması sadece Windows içindir. ODBC Sürücüsü sürüm 17 ve üzeri, tüm platformlarda (Windows, Linux ve macOS) bu kimlik doğrulamasını destekler. Çok faktörlü kimlik doğrulamasını destekleyen yeni bir Microsoft Entra etkileşimli kimlik doğrulama yöntemi, Windows için ODBC Sürücüsü sürüm 17.1'de kullanıma sunulmuştur. Hem sistem tarafından atanan hem de kullanıcı tarafından atanan yönetilen kimlikler için ODBC Sürücüsü sürüm 17.3.1.1'e yeni bir Microsoft Entra yönetilen kimlik doğrulama yöntemi eklendi. Bu seçeneklerin tümü yeni DSN ve bağlantı dizesi anahtar sözcükleri ve bağlantı öznitelikleri kullanılarak gerçekleştirilir.

Microsoft Entra kimlik doğrulamasını kullanmak için Azure SQL veri kaynağınızı yapılandırmanız gerekir. Daha fazla bilgi için bkz. Azure SQL ile Microsoft Entra kimlik doğrulamasını yapılandırma ve yönetme.

Uyarı

Linux ve macOS'ta 17.6 sürümünden önceki ODBC Sürücüsü yalnızca Microsoft Entra Kimliği üzerinden Microsoft Entra kimlik doğrulamasını destekler. Linux veya macOS istemcisinden Microsoft Entra kullanıcı adı/parola kimlik doğrulaması kullanıyorsanız ve Microsoft Entra yapılandırmanız istemcinin bir Microsoft Entra Federasyon Hizmetleri uç noktasında kimlik doğrulaması gerçekleştirmesini gerektiriyorsa, kimlik doğrulaması başarısız olabilir. Sürücü sürümü 17.6 itibariyle bu sınırlama kaldırılmıştır.

Yeni ve/veya Değiştirilmiş DSN ve Bağlantı Dizesi Anahtar Sözcükleri

Anahtar sözcüğü, Authentication kimlik doğrulama modunu denetlemek için bir DSN veya bağlantı dizesiyle bağlanırken kullanılabilir. Bağlantı dizesinde ayarlanan değer, sağlanırsa DSN'de bunu geçersiz kılar. Ayarın Authentication, bağlantı dizesi ve DSN değerlerinden hesaplanan değerdir.

İsim Değerler/Varsayılan Description
Authentication (not set)(varsayılan), (empty string), SqlPassword, ActiveDirectoryIntegrated, ActiveDirectoryInteractive, ActiveDirectoryMsi, , ActiveDirectoryServicePrincipal, ActiveDirectoryPassword [KULLANIM DIŞI] Kimlik doğrulama modunu denetler.

(not set) - Diğer anahtar sözcükler tarafından belirlenen kimlik doğrulama modu (mevcut eski bağlantı seçenekleri.)

(empty string) - (Yalnızca bağlantı dizesi.) DSN'de ayarlanan bir Authentication değerini geçersiz kıl ve kaldır.

SqlPassword - Kullanıcı adı ve parola kullanarak SQL'de doğrudan kimlik doğrulaması.

ActiveDirectoryIntegrated - Windows ve Linux/Mac 17.6+, yalnızca sürücü. Microsoft Entra ID aracılığıyla federasyon edilmiş bir Windows kimlik bilgisiyle entegre kimlik doğrulaması yapın.

ActiveDirectoryInteractive - Yalnızca Windows sürücüsü. Etkileşimli kimlik doğrulaması kullanarak Microsoft Entra kimliğiyle kimlik doğrulaması.

ActiveDirectoryMsi - Microsoft Entra tarafından yönetilen kimlik ile kimlik doğrulaması. Kullanıcı tarafından atanan bir kimlik için UID'yi Azure App Service veya Azure Container Instance için kimliğin istemci kimliğine ayarlayın; aksi takdirde nesne kimliğini kullanın. Sistem tarafından atanan kimlik için UID gerekli değildir.

ActiveDirectoryServicePrincipal - (17.7+) Microsoft Entra hizmet sorumlusuyla kimlik doğrulaması. UID, hizmet sorumlusunun istemci kimliğine ayarlanır. PWD, istemci gizli anahtarı olarak ayarlanır.

ActiveDirectoryPassword - [KULLANIM DIŞI] Kullanıcı adı ve parola kullanarak Microsoft Entra kimliğiyle kimlik doğrulaması.

ActiveDirectoryPassword kullanım dışı bırakıldı. Daha fazla bilgi için bkz. ActiveDirectoryPassword kullanım dışı bırakıldı.
Encrypt (not set) (varsayılan), Yes/Mandatory (18.0 ve sonraki sürümler), No/Optional (18.0 ve sonraki sürümler), Strict (18.0 ve sonraki sürümler) Bağlantı için şifrelemeyi denetler. Şifrelemeyi açıkça ayarlamadığınızda, Authentication özniteliğinin ön öznitelik değeri none değilse veya SQL_COPT_SS_ACCESS_TOKEN ayarlanmışsa Sürücü 17 varsayılan olarak Yes değerini kullanır; aksi takdirde varsayılan değer No olur. Driver 18.0.1 ve sonraki sürümlerde varsayılan değer Yes (Mandatory)'dir. Kimlik doğrulama ve şifreleme ayrı ayarlar olarak kalır. Eğer SQL_COPT_SS_AUTHENTICATION, Authentication için ön öznitelik değerini geçersiz kılarsa, DSN, bağlantı dizesi veya SQL_COPT_SS_ENCRYPT bağlantı özniteliğinde şifrelemeyi açıkça ayarlayın.

Yeni ve/veya Değiştirilen Bağlantı Öznitelikleri

Aşağıdaki bağlantı öncesi bağlantı öznitelikleri Microsoft Entra kimlik doğrulamasını destekleyecek şekilde kullanıma sunulmuştur veya değiştirilmiştir. Bir bağlantı özniteliğine karşılık gelen bir bağlantı dizesi veya DSN anahtar sözcüğü olduğunda ve ayarlandığında, bağlantı özniteliği önceliklidir.

Özellik Türü Değerler Varsayılan Description
SQL_COPT_SS_AUTHENTICATION SQL_IS_INTEGER SQL_AU_NONE, SQL_AU_PASSWORD, SQL_AU_AD_INTEGRATED, , SQL_AU_AD_PASSWORD, SQL_AU_AD_INTERACTIVE, SQL_AU_AD_MSI, SQL_AU_AD_SPA, SQL_AU_RESET (ayarlanmadı) Yukarıdaki anahtar sözcüğün açıklamasına Authentication bakın. SQL_AU_NONE, DSN ve/veya bağlantı dizesinde tanımlı bir Authentication değerini açıkça geçersiz kılmak için sağlanırken, SQL_AU_RESET ayarlanmışsa özniteliği kaldırır, böylece DSN veya bağlantı dizesi değeri öncelikli olur.
SQL_COPT_SS_ACCESS_TOKEN SQL_IS_POINTER ACCESSTOKEN veya NULL'a İşaretçi null Null değilse, kullanılacak Microsoft Entra erişim belirtecini belirtir. Erişim belirtecini ve ayrıca , UID, PWDveya bağlantı dizesi anahtar sözcüklerini ya da Trusted_ConnectionAuthenticationeşdeğer özniteliklerini belirtmek bir hatadır.
NOT: ODBC Sürücüsü sürüm 13.1 yalnızca Windows'ta bu ayarı destekler.
SQL_COPT_SS_ENCRYPT SQL_IS_INTEGER SQL_EN_OFF, SQL_EN_ON (açıklamaya bakın) İstemcinin şifreleme isteğini kontrol eder. SQL_EN_OFF sunucunun şifreleme gerektirmesini engellemez. Sürücü 17'de, şifrelemeyi açıkça ayarlamazsanız ve Authentication öğesinin ön öznitelik değeri none değilse veya SQL_COPT_SS_ACCESS_TOKEN ayarlanmışsa, varsayılan değer SQL_EN_ON olur. Aksi takdirde, Sürücü 17 varsayılan olarak SQL_EN_OFF olur. Driver 18.0.1 ve sonraki sürümlerde, şifrelemeyi açıkça ayarlamadığınızda, kimlik doğrulamadan bağımsız olarak varsayılan SQL_EN_ON olur. Eğer SQL_COPT_SS_AUTHENTICATION, Authentication ön öznitelik değerini geçersiz kılıyorsa, DSN, bağlantı dizesi veya bu öznitelikte şifrelemeyi açıkça ayarlayın. Şifreleme ve sertifika doğrulama davranışı için bkz. Örnek bağlantı dizileri.
SQL_COPT_SS_OLDPWD - - - Microsoft Entra ilkeleri için parolalar ODBC bağlantısı aracılığıyla değiştirilemeyeceğinden, Microsoft Entra Kimliği ile desteklenmez.

SQL Server Kimlik Doğrulaması için parola süre sonu SQL Server 2005'te kullanıma sunulmuştur. özniteliği, SQL_COPT_SS_OLDPWD istemcinin bağlantı için hem eski hem de yeni parolayı sağlamasına izin vermek için eklendi. Bu özellik ayarlandığında, bağlantı dizesi artık değiştirilen "eski parolayı" içerdiğinden, sağlayıcı ilk bağlantı veya gelecekteki bağlantılar için bağlantı havuzunu kullanmaz.
SQL_COPT_SS_INTEGRATED_SECURITY SQL_IS_INTEGER SQL_IS_OFF,SQL_IS_ON SQL_IS_OFF Kullanım dışı; bunun yerine SQL_COPT_SS_AUTHENTICATION ayarlamak için SQL_AU_AD_INTEGRATED kullanın.

Sunucu oturum açma işlemlerinde erişim doğrulaması için Windows Kimlik Doğrulaması 'nın (Linux ve macOS üzerinde Kerberos) kullanılmasını zorlar. Windows Kimlik Doğrulaması kullanıldığında, sürücü , SQLConnectveya SQLDriverConnect işleminin SQLBrowseConnectbir parçası olarak sağlanan kullanıcı tanımlayıcısını ve parola değerlerini yoksayar.

ActiveDirectoryPassword kullanım dışı bırakıldı

Important

ActiveDirectoryPassword kimlik doğrulama seçeneği (parola kimlik doğrulaması Microsoft Entra ID) Microsoft SQL sürücülerinde kullanım dışıdır. Bu yüksek riskli kimlik doğrulama akışı zorunlu Microsoft Entra çok faktörlü kimlik doğrulaması (MFA) ile uyumsuzdur ve MFA'nın zorlandığı kiracılarda çalışmayabilir. Farklı bir Microsoft Entra kimlik doğrulama yöntemine geçmeyi planlayın.

Microsoft Entra ID parola kimlik doğrulaması, OAuth 2.0 Kaynak Sahibi Parola Kimlik Bilgileri (ROPC) iznini temel alır ve bu da bir uygulamanın parolasını doğrudan işleyerek kullanıcıda oturum açmasına olanak tanır.

Microsoft, MFA ile uyumsuz olduğundan ROPC akışını kullanmamanızı önerir. Çoğu senaryoda daha güvenli alternatifler kullanılabilir ve önerilir. Bu akış, uygulamaya yüksek düzeyde güven gerektirir ve diğer akışlarda mevcut olmayan riskleri taşır. Bu akışı yalnızca daha güvenli akışlar uygun olmadığında kullanın. Microsoft, kullanıcıları kötü amaçlı saldırılardan korumak için bu yüksek riskli kimlik doğrulama akışından uzaklaşıyor. Daha fazla bilgi için bkz. Azure için zorunlu çok faktörlü kimlik doğrulamasını planlama.

Oturum açma sırasında bir kullanıcı mevcutsa, denetim izinin oturum açan kullanıcıya atfedilmesi ve Koşullu Erişim ilkelerinin uygulanması için ActiveDirectoryInteractive veya ActiveDirectoryIntegrated kimlik doğrulamasını kullanın.

Katılımsız hizmetten hizmete senaryoları için Microsoft Entra hizmet hesabı kılavuzunu izleyin:

  • Uygulamanız Azure altyapıda çalışıyorsa ActiveDirectoryMSI (veya bazı sürücülerde ActiveDirectoryManagedIdentity) kullanın. Yönetilen kimlikler, gizli anahtarların ve sertifikaların yönetimi ile yenilenmesinden kaynaklanan ek yükü ortadan kaldırır.
  • Yönetilen kimlik kullanılamıyorsa (örneğin, uygulama Azure dışında çalışır), ActiveDirectoryServicePrincipal kullanın. Sürücü destekliyorsa, istemci parolası yerine istemci sertifikasını tercih edin. Sertifikayla, özel anahtar istemcide kalır ve istemcinin kimliğini doğrulamak için Microsoft Entra yalnızca imzalı bir onay gönderilir. Anahtar donanımda (TPM veya HSM gibi) depolanıyorsa ya da dışarı aktarılamaz olarak işaretlenmişse, istemci gizli anahtarında olduğu gibi dize olarak dışarı kopyalanamaz.
  • hizmet hesabı olarak Microsoft Entra kullanıcı hesabı kullanmayın.

Microsoft Entra Id kullanıcı arabirimi eklemeleri (yalnızca Windows sürücüsü)

Sürücünün DSN kurulumu ve bağlantı kullanıcı arayüzleri (UI'ler), Microsoft Entra Kimliği ile kimlik doğrulaması yapmak için gereken ek seçeneklerle geliştirilmiştir.

Kullanıcı arabiriminde DSN oluşturma ve düzenleme

Sürücünün kurulum kullanıcı arabirimini kullanarak mevcut bir DSN'yi oluştururken veya düzenlerken Microsoft Entra kimlik doğrulama seçeneklerini kullanmak mümkündür:

Authentication=ActiveDirectoryIntegrated Azure SQL'e Microsoft Entra entegre kimlik doğrulaması için

Microsoft Entra tümleşik kimlik doğrulamasının seçili olduğu DSN oluşturma ve düzenleme ekranı.

Authentication=ActiveDirectoryPassword Azure SQL'de Microsoft Entra kullanıcı adı/parola kimlik doğrulaması için

Uyarı

ActiveDirectoryPassword kullanım dışı bırakıldı. Daha fazla bilgi için bkz. ActiveDirectoryPassword kullanım dışı bırakıldı.

Microsoft Entra Password kimlik doğrulamasının seçili olduğu DSN oluşturma ve düzenleme ekranı.

Authentication=ActiveDirectoryInteractive Azure SQL'de Microsoft Entra etkileşimli kimlik doğrulaması için

Microsoft Entra Interactive kimlik doğrulamasının seçili olduğu DSN oluşturma ve düzenleme ekranı.

Uyarı

Sürücü sürümü 17.9 itibarıyla etkileşimli kimlik doğrulama davranışı değişmiştir. Geçerli bir erişim simgesi sürücüde önbelleğe alınmadığı sürece kullanıcılar her zaman kimlik bilgileri girmeye zorlanacaktır. Bu değişiklik, Microsoft Entra'ya katılmış cihazlardaki kullanıcıların istem atlamasını ve kimlik doğrulaması kullanırken ActiveDirectoryInteractive önbelleğe alınmış kimlik bilgileriyle otomatik olarak oturum açmasını engeller.

Authentication=SqlPassword SQL Server ve Azure SQL'de kullanıcı adı/parola kimlik doğrulaması için

SQL Server kimlik doğrulamasının seçili olduğu DSN oluşturma ve düzenleme ekranı.

Trusted_Connection=Yes Windows'un eski SSPI ile entegre kimlik doğrulaması için

Tümleşik Windows kimlik doğrulamasının seçili olduğu DSN oluşturma ve düzenleme ekranı.

Authentication=ActiveDirectoryMsi Microsoft Entra yönetilen kimlik kimlik doğrulaması için

Yönetilen Hizmet Kimliği kimlik doğrulamasının seçili olduğu DSN oluşturma ve düzenleme ekranı.

Authentication=ActiveDirectoryServicePrincipal Microsoft Entra hizmet sorumlusu kimlik doğrulaması için

Microsoft Entra hizmet sorumlusu kimlik doğrulamasının seçili olduğu DSN oluşturma ve düzenleme ekranı.

tr-TR: Yedi seçenek sırasıyla Trusted_Connection=Yes (mevcut eski yalnızca Windows SSPI tümleşik kimlik doğrulama) ve Authentication=, ActiveDirectoryIntegrated, SqlPassword, ActiveDirectoryPassword, ActiveDirectoryInteractive, ActiveDirectoryMsi ve ActiveDirectoryServicePrincipal seçeneklerine karşılık gelir.

SQLDriverConnect İstemi (yalnızca Windows sürücüsü)

Bağlantıyı tamamlamak için gereken bilgileri istediğinde SQLDriverConnect tarafından görüntülenen istem iletişim kutusu, Microsoft Entra kimlik doğrulaması için dört yeni seçenek içerir:

SQLDriverConnect tarafından görüntülenen SQL Server Oturum Açma iletişim kutusu.

Bu seçenekler, yukarıdaki DSN kurulum kullanıcı arabiriminde sağlanan altıya karşılık gelir.

Örnek bağlantı dizeleri

Uyarı

Bu örneklerdeki şifreleme ve sertifika doğrulama açıklamaları, DSN veya bağlantı özniteliği geçersiz kılmaları olmadan yapılan sıradan uzak bağlantılar, Windows Force Protocol Encryption kayıt deferi ayarları veya dahili Windows sertifika doğrulama geri çağrıları için geçerlidir. Bunu Strict olmayan şifreleme olarak tanımlarlar. Sadece giriş şifrelemesi, kimlik doğrulama değişimini korur, sonraki uygulama verilerini değil.

Encrypt=yes ve TrustServerCertificate=no ile (varsayılan), Sürücüler 17 ve 18 tam oturum şifrelemesini talep eder ve sunucu sertifikasını doğrular. İstemci Encrypt=no olarak ayarlarsa ancak sunucu tam oturum şifrelemesi gerektiriyorsa, Sürücü 17 yalnızca sunucuya yönelik bu istek için normal sertifika doğrulamasını seçmez. Sürücü 18, müzakere edilen tam oturum şifreli durumu kontrol eder ve TrustServerCertificate=yes olmadıkça sertifikayı doğrular. Sıradan non-Strict yolunda, TrustServerCertificate=yes normal doğrulamayı bastırır; Windows kayıt defteri tarafından zorlanan şifreleme, bu ayardan bağımsız olarak doğrulamayı etkinleştirebilir ve dahili bir Windows geri çağrısı normal doğrulama yolunun yerini alabilir.

  1. SQL Server Kimlik Doğrulaması - eski söz dizimi. Sunucu sertifikası doğrulanmaz ve şifreleme yalnızca sunucu tarafından zorunlu kılınırsa kullanılır. Kullanıcı adı/parola bağlantı dizesinde geçirilir.

    server=Server;database=Database;UID=UserName;PWD=<password>;Encrypt=no;TrustServerCertificate=yes;

  2. SQL Kimlik Doğrulaması - yeni söz dizimi. Gösterildiği gibi Authentication=SqlPassword kullanıp şifrelemeyi kullanmadan, Sürücüler 17 ve 18 varsayılan olarak tam oturum şifrelemesi talep eder. Sürücü, sunucu sertifikasını varsayılan TrustServerCertificate=no ile doğrular. Kullanıcı adı ve şifre bağlantı dizesi'te yer alıyor.

    server=Server;database=Database;UID=UserName;PWD=<password>;Authentication=SqlPassword;

  3. SSPI kullanarak tümleşik Windows Kimlik Doğrulaması (Linux ve macOS üzerinde Kerberos) (SQL Server veya SQL IaaS için) - geçerli söz dizimi. Tam oturum şifreleme Encrypt=noile ancak sunucu bunu gerektirdiğinde kullanılır. Sadece sunucu için olan bu istek için, Sürücü 17 normal sertifika doğrulamasını seçmez; Sürücü 18 varsayılan TrustServerCertificate=no ile doğrular.

    server=Server;database=Database;Trusted_Connection=yes;Encrypt=no;

  4. (Yalnızca Windows sürücüsü.) SSPI kullanarak tümleşik Windows Kimlik Doğrulaması (hedef veritabanı SQL Server'daysa veya Azure VM'lerinde SQL Server'daysa) - yeni söz dizimi. Authentication=ActiveDirectoryIntegrated kullanarak ve gösterildiği gibi şifrelemeyi atlayarak, Sürücüler 17 ve 18 varsayılan olarak tam oturum şifrelemesi talep eder. Sürücü, sunucu sertifikasını varsayılan TrustServerCertificate=no ile doğrular.

    server=Server;database=Database;Authentication=ActiveDirectoryIntegrated;

  5. Microsoft Entra kullanıcı adı ve şifre doğrulaması (hedef veritabanı Azure SQL Veritabanı veya Azure SQL Yönetilen Örneği'ta ise). Açık Encrypt=yes istekleri tam oturum şifrelemesi talep eder. Sürücü, sunucu sertifikasını varsayılan TrustServerCertificate=no ile doğrular. Kullanıcı adı ve şifre bağlantı dizesi'te yer alıyor.

    Uyarı

    ActiveDirectoryPassword kullanım dışı bırakıldı. Daha fazla bilgi için bkz. ActiveDirectoryPassword kullanım dışı bırakıldı.

    server=Server;database=Database;UID=UserName;PWD=<password>;Authentication=ActiveDirectoryPassword;Encrypt=yes;

  6. (Windows ve Linux/macOS 17.6 ve sonraki sürümler, yalnızca sürücü.) ADAL veya Kerberos kullanılarak tümleşik Windows Kimlik Doğrulaması, hedef veritabanının Azure SQL'de olduğu varsayıldığında, Windows hesap kimlik bilgilerinin bir Microsoft Entra erişim belirteciyle değiştirilmesini içerir. Açık Encrypt=yes istekleri tam oturum şifrelemesi talep eder. Sürücü, sunucu sertifikasını varsayılan TrustServerCertificate=no ile doğrular. Linux/macOS'ta uygun bir Kerberos anahtarının kullanılabilir olması gerekir. Daha fazla bilgi için, Linux/macOS'ta ADFS Federated Accounts kullanımıyla ilgili dikkat edilmesi gerekenler ve Entegre Kimlik Doğrulama Kullanımı bölümlerine bakınız.

    server=Server;database=Database;Authentication=ActiveDirectoryIntegrated;Encrypt=yes;

  7. (Yalnızca Windows sürücüsü için.) Microsoft Entra Etkileşimli Kimlik Doğrulama, bağlantı kurmak için Microsoft Entra çok faktörlü kimlik doğrulama teknolojisini kullanır. Driver 17.8 ve sonraki sürümlerde UID öğesini çıkarabilir veya kimlik doğrulaması için bunu kullanıcı hesabı olarak ayarlayabilirsiniz. UID sağladığınızda, giriş diyalogu farklı bir hesap seçme imkanı sunmayabilir. Başka bir hesap kullanmak için, UID öğesini bağlanmadan önce değiştirin veya Driver 17.8 ve sonraki sürümlerde bunu belirtmeyin. Sürücü, kullanıcının ek doğrulamayı tamamlaması için bir Azure Kimlik doğrulama diyalogu açar.

    server=Server;database=Database;UID=UserName;Authentication=ActiveDirectoryInteractive;Encrypt=yes;

    Active Directory Etkileşimli kimlik doğrulaması kullanılırken Windows Azure Kimlik Doğrulaması kullanıcı arabirimi.

  8. Microsoft Entra yönetilen kimlik kimlik doğrulaması, sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimliği kullanabilir. Kullanıcı tarafından atanan bir kimlik için UID'yi Azure App Service veya Azure Container Instance için kimliğin istemci kimliğine ayarlayın; aksi takdirde nesne kimliğini kullanın. Sistem tarafından atanan kimlik için UID gerekli değildir.

    Sistem tarafından atanan kimlik için:

    server=Server;database=Database;Authentication=ActiveDirectoryMsi;Encrypt=yes;

    Nesne kimliğine eşit kullanıcı tarafından atanan kimlik için myObjectId:

    server=Server;database=Database;UID=myObjectId;Authentication=ActiveDirectoryMsi;Encrypt=yes;

  9. Microsoft Entra hizmet sorumlusu kimlik doğrulaması

    server=Server;database=Database;UID=clientId;PWD=<password>;Authentication=ActiveDirectoryServicePrincipal;Encrypt=yes;

Açıklamalar

  • 17.4.2 sürümünden önceki Windows ODBC sürücüsüyle Microsoft Entra seçeneklerini kullanırken, SQL Server için Active Directory Kimlik Doğrulama Kitaplığı'nın yüklendiğinden emin olun. Linux ve macOS sürücülerini kullanırken yüklü olduğundan libcurl emin olun. Sürücü sürümü 17.2 ve üzeri için, diğer kimlik doğrulama yöntemleri veya ODBC işlemleri için gerekli olmadığından bu açık bir bağımlılık değildir.

  • Microsoft Entra yapılandırması koşullu erişim ilkeleri içeriyorsa ve istemci Windows 10 veya Server 2016 veya üzeriyse, Tümleşik veya kullanıcı adı/parola aracılığıyla kimlik doğrulaması başarısız olabilir. Koşullu erişim ilkeleri, Windows için 17.6 veya sonraki bir sürümde desteklenen Web Hesabı Yöneticisi'nin (WAM) kullanılmasını gerektirir. WAM'yi kullanmak için, genel, kullanıcı DSN veya sistem DSN kapsamlı yapılandırmalar için sırasıyla ADALuseWAM, HKLM\Software\ODBC\ODBCINST.INI\ODBC Driver 17 for SQL Server veya HKCU\Software\ODBC\ODBC.INI\<your-user-DSN-name> adlı yeni bir dize değeri oluşturun ve bunu 1 değerine ayarlayın. WAM ile kimlik doğrulamanın, runas farklı bir kullanıcı olarak uygulamayı çalıştırmayı desteklemediğini unutmayın. Koşullu Erişim ilkeleri gerektiren senaryolar Linux veya macOS için desteklenmez.

  • SQL Server hesabı kullanıcı adı ve parolası kullanarak bağlanmak için artık yeni SqlPassword seçeneği kullanabilirsiniz. Bu seçenek daha güvenli bağlantı varsayılanlarını etkinleştirdiğinden, özellikle Azure SQL için önerilir.

  • Microsoft Entra hesabı kullanıcı adı ve parolası kullanarak bağlanmak için, bağlantı dizesinde Authentication=ActiveDirectoryPassword öğesini ve UID ile PWD anahtar sözcüklerinde sırasıyla kullanıcı adı ve parolayı belirtin.

    Uyarı

    ActiveDirectoryPassword kullanım dışı bırakıldı. Daha fazla bilgi için bkz. ActiveDirectoryPassword kullanım dışı bırakıldı.

  • Windows Tümleşik veya Microsoft Entra Tümleşik (Windows ve Linux/macOS 17.6+, yalnızca sürücü) kimlik doğrulamasını kullanarak bağlanmak için Authentication=ActiveDirectoryIntegrated bağlantı dizesinde belirtiniz. Sürücü otomatik olarak doğru kimlik doğrulama modunu seçer. 17.7 veya önceki UID sürücü sürümleri için PWD belirtilmemelidir. Sürücü sürümü 17.8 itibarıyla, UID ve PWD yoksayılmaktadır.

  • Microsoft Entra etkileşimli kimlik doğrulaması (yalnızca Windows sürücüsü) kullanarak bağlantı kurmak için, Driver 17.8 ve sonraki sürümlerde UID özniteliğini atlayabilir veya kimlik doğrulamak için bunu kullanıcı hesabına ayarlayabilirsiniz. Giriş diyalogu, UID sağladığınızda hesabı değiştirmenize izin vermeyebilir. Başka bir hesap kullanmak için, bağlanmadan önce UID öğesini değiştirin veya Driver 17.8 ve sonraki sürümlerde bunu çıkarın. Sürücü sürümleri 17.7 ve öncesi UID gerektirir ve PWD kullanımını yasaklar. Sürücü sürümü 17.8'den itibaren, PWD yoksayılmaktadır.

  • Sürüm 18.1'den başlayarak, Trusted_Connection=Yes artık varsayılan olarak Microsoft Entra Id federasyon kimlik doğrulamasını kullanmaz ve bunun yerine SSPI tümleşik kullanır. Microsoft Entra ID'yi bu seçenek için kullanmak amacıyla TrustedConnection_UseAAD=Yes yapılandırılmalıdır.

  • SQL Server örneğinde Microsoft Entra kimlik doğrulaması ve Zorlamalı Şifreleme etkinleştirildiğinde ODBC sürücüsü sürüm 17.7 ve daha düşük sürümlerde bağlantı zaman aşımıyla ilgili bilinen bir sorun vardır. SQL Server hata günlüğü şu hata iletilerini içerebilir: "Hata: 33155, Önem Derecesi: 20, Durum: 1. Sunucu Federasyon Kimlik Doğrulaması belirtecini beklerken bir bağlantı kesme olayı oluştu. Bunun nedeni istemci kapatma veya sunucu zaman aşımı süresinin dolması olabilir." Always On kullanılabilirlik grupları veya yük devretme kümesi örnekleri gibi yüksek kullanılabilirlik çözümleri kullanıyorsanız, SQL Server için iç küme iletişimi bu davranıştan etkilenebilir ve bu da kaynak kullanılabilirliğini etkileyebilir. Küme günlüğünde şu hata iletilerini görebilirsiniz: [hadrag] Connect to SQL Server ...ODBC Error: [HY000] [Microsoft][ODBC Driver 17 for SQL Server]An unknown error has occurred. Detailed error information is not available. (0). ODBC sürücüsü sürüm 17.10 ve üzeri bu sorunu düzeltir ve SQL Server 2022 GDR KB5021522 /CU1 KB5022375, bu düzeltmeyi içeren en son sürücü SQL Server yüklemesi ile yüklenir. ODBC Veri Kaynağı Yöneticisi'ne başvurarak hangi ODBC sürücüsünü yüklediğinizi doğrulayabilirsiniz.

  • ODBC sürücüsü sürüm 18.3'den başlayarak Yönetilen Kimlik (ActiveDirectoryMSI) kimlik doğrulaması Azure Arc ve Azure Cloud Shell'de desteklenir.

Erişim belirteci ile kimlik doğrulaması

SQL_COPT_SS_ACCESS_TOKEN Bağlantı öncesi özniteliği, kullanıcı adı ve parola yerine kimlik doğrulaması için Microsoft Entra Id'den alınan bir erişim belirtecinin kullanılmasına izin verir ve ayrıca sürücü tarafından yapılan anlaşma ve erişim belirtecinin alınması adımlarını atlar. Erişim belirteci kullanmak için bağlantı özniteliğini bir SQL_COPT_SS_ACCESS_TOKEN yapı işaretçisi olarak ayarlayınACCESSTOKEN:

typedef struct AccessToken
{
    DWORD dataSize;
    BYTE data[];
} ACCESSTOKEN;

, ACCESSTOKEN 4 bayt uzunluğundan ve ardından erişim belirtecini oluşturan opak verilerin uzunluk baytlarından oluşan değişken uzunlukta bir yapıdır. SQL Server'ın erişim belirteçlerini işleme biçimi nedeniyle, OAuth 2.0 JSON yanıtı aracılığıyla elde edilen bir yanıtın genişletilmesi gerekir; böylece her bayt, yalnızca ASCII karakterleri içeren UCS-2 dizesine benzer şekilde sıfır doldurma baytını izler. Ancak, belirteç opak bir değerdir ve belirtilen uzunluk bayt olarak verilmiş olup null sonlandırıcıyı içermemesi gerekir. Önemli uzunluk ve biçim kısıtlamaları nedeniyle, bu kimlik doğrulama yöntemi yalnızca bağlantı özniteliği aracılığıyla SQL_COPT_SS_ACCESS_TOKEN program aracılığıyla kullanılabilir.

Bağlantı tanıtıcısı tahsis edildiği sürece tahsis edilen ACCESSTOKEN öğesini elinizde tutmalısınız. Aksi takdirde, erişim ihlalleri meydana gelebilir. Windows ODBC Driver Manager kullandığınızda, token işaretçisi bağlantı havuzu anahtarının bir parçasıdır, bu yüzden farklı bir işaretçi farklı bir havuz seçer. Süresi dolmuş bir tokenı değiştirdiğinizde aynı kimlikle ilişkili tamponu koruyun. Buffer'ı güncellemek, zaten kimlik doğrulaması yapılmış bir bağlantının kimliğini değiştirmez.

Caution

Linux ve macOS'ta, unixODBC bağlantı havuzlaması, kimlikleri ayırt etmek için SQL_COPT_SS_ACCESS_TOKEN kullanmaz. Aynı bağlantı dizesi'i kullandığınızda, farklı bir token ile bağlantı isteği, önceki kimlik olarak doğrulanmış havuzlu bağlantıyı yeniden kullanabilir. Eğer işleminiz farklı kimlikler için tokenlarla bağlanıyorsa, işlemi başlatmadan önce unixODBC havuzlamasını devre dışı bırakın: etkin odbcinst.ini dosyasının [ODBC] bölümünde Pooling=No olarak ayarlayın ve uygulamanızın ve kütüphanelerinin ODBC havuzlamasını etkinleştirmediğinden emin olun. Konfigürasyon değiştirdikten sonra mevcut uygulama süreçlerini yeniden başlatın. Kimlik izole etmek için token işaretçilerini değiştirmeye güvenmeyin.

Karşılık gelen DSN veya bağlantı dizesi anahtar sözcüğü yoktur. Bağlantı dizesi , , UIDPWDveya Authentication anahtar sözcükleri içermemelidirTrusted_Connection.

Uyarı

ODBC Sürücüsü sürüm 13.1 yalnızca Windows'da bu kimlik doğrulamasını destekler. Sonraki sürümler tüm platformlarda bu kimlik doğrulamayı destekler.

Microsoft Entra kimlik doğrulaması örnek kodu

Aşağıdaki örnekte bağlantı anahtar sözcükleriyle Microsoft Entra Id kullanarak SQL Server'a bağlanmak için gereken kod gösterilmektedir. Uygulama kodunun kendisini değiştirmeniz gerekmez. Bağlantı dizesi veya kullanılıyorsa DSN, kimlik doğrulaması için Microsoft Entra Id'yi kullanmak için gereken tek değişikliktir:

    ...
    SQLCHAR connString[] = "Driver={ODBC Driver 18 for SQL Server};Server={server};UID=myuser;PWD=<password>;Authentication=ActiveDirectoryInteractive;Encrypt=yes;"
    ...
    SQLDriverConnect(hDbc, NULL, connString, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT);
    ...

Aşağıdaki örnekte, Microsoft Entra erişim belirteci kimlik doğrulamasını kullanarak SQL Server'a bağlanmak için gereken kod gösterilmektedir. Bu durumda, erişim belirtecini işlemek ve ilişkili bağlantı özniteliğini ayarlamak için uygulama kodunun değiştirilmesi gerekir.

    SQLCHAR connString[] = "Driver={ODBC Driver 18 for SQL Server};Server={server};Encrypt=yes;"
    SQLCHAR accessToken[] = "eyJ0eXAiOi..."; // In the format extracted from an OAuth JSON response
    ...
    DWORD dataSize = 2 * strlen(accessToken);
    ACCESSTOKEN *pAccToken = malloc(sizeof(ACCESSTOKEN) + dataSize);
    pAccToken->dataSize = dataSize;
    // Expand access token with padding bytes
    for(int i = 0, j = 0; i < dataSize; i += 2, j++) {
        pAccToken->data[i] = accessToken[j];
        pAccToken->data[i+1] = 0;
    }
    ...
    SQLSetConnectAttr(hDbc, SQL_COPT_SS_ACCESS_TOKEN, (SQLPOINTER)pAccToken, SQL_IS_POINTER);
    SQLDriverConnect(hDbc, NULL, connString, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT);
    ...
    free(pAccToken);

Aşağıdaki örnek bağlantı dizesi, Microsoft Entra etkileşimli kimlik doğrulaması ile kullanım içindir. Parola Azure Kimlik Doğrulaması ekranında girileceğinden PWD alanı içermez.

SQLCHAR connString[] = "Driver={ODBC Driver 18 for SQL Server};Server={server};UID=myuser;Authentication=ActiveDirectoryInteractive;Encrypt=yes;"

Aşağıdaki örnek bağlantı dizesi, Microsoft Entra yönetilen kimlik kimlik doğrulaması ile kullanım içindir. UID, kullanıcı tarafından atanan bir kimlik kullanılırken kullanıcı kimliğinin nesne/istemci kimliğine ayarlanır.

// For system-assigned identity,
SQLCHAR connString[] = "Driver={ODBC Driver 18 for SQL Server};Server={server};Authentication=ActiveDirectoryMsi;Encrypt=yes;"
...
// For user-assigned identity with object ID equals to myObjectId
SQLCHAR connString[] = "Driver={ODBC Driver 18 for SQL Server};Server={server};UID=myObjectId;Authentication=ActiveDirectoryMsi;Encrypt=yes;"

Linux/macOS'ta ADFS Federasyon Hesaplarını kullanma konusunda dikkat edilmesi gerekenler

Sürüm 17.6'dan başlayarak, Linux ve macOS sürücüleri kullanıcı adı/parola () veya Kerberos (ActiveDirectoryPassword) kullanarak ActiveDirectoryIntegrated kullanarak kimlik doğrulamasını destekler. Tümleşik mod kullanılırken platforma bağlı bazı sınırlamalar vardır.

UPN soneki Kerberos alanından farklı olan, yani alternatif bir UPN soneki kullanımda olan bir kullanıcıyla kimlik doğrulaması yaparken, Kerberos biletlerini alırken Kurumsal Sorumlu seçeneğini (ile -Eseçeneğini kullanın kinit ve biçiminde user@federated-domainasıl adı sağlayın) kullanmak gerekir. Bu şekilde, sürücü hem federasyon etki alanını hem de Kerberos alanını doğru bir şekilde belirleyebilir.

Uygun bir Kerberos biletinin mevcut olduğunu, klist komutunun çıktısını inceleyerek doğrulayabilirsiniz. Federasyon etki alanı Kerberos bölgesi ve UPN soneki ile aynıysa, asıl ad user@realm biçimindedir. Farklıysa, asıl ad biçiminde user@federated-domain@realmolmalıdır.

Linux işletim sistemi

SUSE 11'de, varsayılan Kerberos kütüphane sürümü 1.6.x, alternatif UPN soneklerini kullanmak için gereken Enterprise Principal seçeneğini desteklemez. Microsoft Entra entegre kimlik doğrulaması ile alternatif UPN son eklerini kullanmak için Kerberos kitaplığını 1.7 veya daha yeni bir sürüme yükseltin.

Alpine Linux'ta varsayılan değer libcurl , Microsoft Entra tümleşik kimlik doğrulaması için gereken SPNEGO/Kerberos kimlik doğrulamasını desteklemez.

macOS

Sistem Kerberos kitaplığı kinit , Kuruluş Sorumlusu'nu --enterprise seçeneğiyle destekler, ancak ayrıca alternatif UPN son eklerinin kullanılmasını engelleyen kurallılaştırmayı örtük olarak yapar. Microsoft Entra tümleşik kimlik doğrulaması ile alternatif UPN soneklerini kullanmak için, brew install krb5 aracılığıyla daha yeni bir Kerberos kitaplığı yükleyin ve yukarıda açıklandığı gibi kinit seçeneğiyle -E kullanın.