A Microsoft Entra ID használata az ODBC-illesztőprogrammal

ODBC-illesztőprogram letöltése

Megjegyzés:

Bár a Microsoft Entra ID az Azure Active Directory (Azure AD) új neve, a meglévő környezetek megzavarásának megakadályozása érdekében az Azure AD továbbra is megmarad néhány kódoltan rögzített elemben, például a felhasználói felület mezőiben, kapcsolatszolgáltatókban, hibakódokban és parancsmagokban. Ebben a cikkben a két név felcserélhető.

Cél

Az SQL Server 13.1-es és újabb verziójához készült Microsoft ODBC-illesztő lehetővé teszi, hogy az ODBC-alkalmazások a Microsoft Entra ID azonosítójú identitások használatával csatlakozzanak az Azure SQL Database-hez vagy az Azure SQL Managed Instance-hez. A hitelesítés történhet felhasználónévvel és jelszóval, Microsoft Entra hozzáférési jogkivonattal, Microsoft Entra által felügyelt identitással (17.3+) vagy integrált Windows-hitelesítéssel összevont, tartományhoz csatlakoztatott környezetben (Linux/macOS rendszeren 17,6+). Az ODBC-illesztőprogram 13.1-es verziójához a Microsoft Entra hozzáférési jogkivonat-hitelesítés csak Windows rendszeren érhető el. Az ODBC Driver 17-es és újabb verziója támogatja ezt a hitelesítést minden platformon (Windows, Linux és macOS). A Windows ODBC Driver 17.1-es verziójában egy új, többtényezős hitelesítést támogató interaktív Microsoft Entra hitelesítési módszert vezetnek be. Az ODBC Driver 17.3.1.1-es verziójában új Microsoft Entra felügyelt identitás-hitelesítési módszer lett hozzáadva a rendszer által hozzárendelt és a felhasználó által hozzárendelt felügyelt identitásokhoz. Mindezek a lehetőségek új DSN- és kapcsolati sztring-kulcsszavak, valamint kapcsolati attribútumok használatával érhetők el.

A Microsoft Entra-hitelesítés használatához konfigurálnia kell az Azure SQL-adatforrást. További információért tekintse meg a Microsoft Entra-hitelesítés konfigurálását és kezelését az Azure SQL-ben.

Megjegyzés:

A Linuxon és macOS-en futó ODBC-illesztőprogram a 17.6-os verzió előtt csak a Microsoft Entra-hitelesítést támogatja közvetlenül a Microsoft Entra-azonosítóval. Ha Microsoft Entra-felhasználónév-/jelszó-hitelesítést használ Linux- vagy macOS-ügyfélről, és a Microsoft Entra-konfiguráció megköveteli az ügyféltől a Microsoft Entra összevonási szolgáltatások végpontjának hitelesítését, a hitelesítés sikertelen lehet. Az illesztőprogram 17.6-os verziójától ez a korlátozás el lett távolítva.

Új és/vagy módosított DSN- és kapcsolati sztringszavak

A Authentication kulcsszó használható DSN-hez vagy kapcsolati sztringhez való csatlakozáskor a hitelesítési mód szabályozásához. A kapcsolati sztringben megadott érték felülbírálja a DSN-ben megadott értéket, ha meg van adva. A beállítás előattribútum-értékeAuthentication a kapcsolati sztringből és a DSN-értékekből kiszámított érték.

Név Értékek/Alapértelmezett Description
Authentication (not set)(alapértelmezett), (empty string), SqlPassword, ActiveDirectoryIntegrated, ActiveDirectoryInteractive, ActiveDirectoryMsiActiveDirectoryServicePrincipalActiveDirectoryPassword , [ELAVULT] Szabályozza a hitelesítési módot.

(not set) - Más kulcsszavak által meghatározott hitelesítési mód (meglévő régi kapcsolati lehetőségek).)

(empty string) - (Csak kapcsolati sztring.) Felülbírálhatja és feloldhatja a Authentication DSN-ben beállított értékeket.

SqlPassword – Közvetlenül hitelesíthet az SQL-ben felhasználónévvel és jelszóval.

ActiveDirectoryIntegrated - Windows és Linux/Mac 17.6+, csak illesztőprogram. Hitelesítés a Microsoft Entra-azonosítón keresztül összevont Windows-hitelesítő adatok használatával, integrált hitelesítéssel.

ActiveDirectoryInteractive - Csak Windows-illesztőprogram. Hitelesítés Microsoft Entra-identitással interaktív hitelesítéssel.

ActiveDirectoryMsi – Hitelesítés felügyelt Microsoft Entra-identitással. Felhasználó által hozzárendelt identitás esetén állítsa a UID-t az identitás ügyfél-azonosítójára az Azure App Service vagy az Azure Container Instance esetében; ellenkező esetben használja az objektumazonosítót. A rendszer által hozzárendelt identitáshoz nincs szükség UID azonosítóra.

ActiveDirectoryServicePrincipal - (17.7+) Hitelesítse Microsoft Entra szolgáltatás-főnévvel. Az UID a szolgáltatásentitás ügyfél-azonosítójára van állítva. A PWD az ügyfél titkos kódjára van állítva.

ActiveDirectoryPassword - [DEPRECATED] Hitelesítés Microsoft Entra-identitással felhasználónévvel és jelszóval.

ActiveDirectoryPassword már nem ajánlott. További információ: Az ActiveDirectoryPassword elavult.
Encrypt (not set) (alapértelmezett), Yes/Mandatory (18.0 és újabb verziók), No/Optional (18.0 és újabb verziók), Strict (18.0 és újabb verziók) A kapcsolat titkosítását szabályozza. Ha nem állítasz be kifejezetten titkosítást, a 17-es illesztőprogram alapértelmezés szerint a(z) Yes értéket használja, ha a(z) Authentication attribútum korábbi értéke nem none, vagy a(z) SQL_COPT_SS_ACCESS_TOKEN be van állítva; egyébként az alapértelmezett érték a(z) No. A Driver 18.0.1 és újabb verziókban az alapértelmezett érték a Yes (Mandatory). A hitelesítés és a titkosítás továbbra is különálló beállítások. Ha a SQL_COPT_SS_AUTHENTICATION felülírja a Authentication attribútumértékét, explicit módon állítsd be a titkosítást a DSN-ben, a kapcsolati karakterláncban vagy a SQL_COPT_SS_ENCRYPT kapcsolati attribútumban.

Új és/vagy módosított kapcsolatattribútumok

A microsoft entra-hitelesítés támogatásához a következő kapcsolati attribútumok lettek bevezetve vagy módosítva. Ha a kapcsolatattribútum megfelelő kapcsolati sztringet vagy DSN-kulcsszót tartalmaz, és be van állítva, a kapcsolati attribútum elsőbbséget élvez.

Attribute Típus Értékek Alapértelmezett Description
SQL_COPT_SS_AUTHENTICATION SQL_IS_INTEGER SQL_AU_NONE, SQL_AU_PASSWORD, SQL_AU_AD_INTEGRATED, SQL_AU_AD_PASSWORDSQL_AU_AD_INTERACTIVE, SQL_AU_AD_MSI, SQL_AU_AD_SPASQL_AU_RESET (nincs beállítva) Lásd a Authentication fenti kulcsszó leírását. SQL_AU_NONE A rendszer kifejezetten felülbírál egy beállított Authentication értéket a DSN-ben és/vagy a kapcsolati sztringben, míg SQL_AU_RESET visszaállítja az attribútumot, ha be volt állítva, lehetővé téve, hogy a DSN vagy a kapcsolati sztring értéke élvezzen elsőbbséget.
SQL_COPT_SS_ACCESS_TOKEN SQL_IS_POINTER Mutatópont ACCESSTOKEN vagy NULL NULLA Ha nem null értékű, a használni kívánt Microsoft Entra hozzáférési jogkivonatot adja meg. Hiba hozzáférési jogkivonatot és UID, PWD, Trusted_Connection vagy Authentication kapcsolati karakterlánc kulcsszavakat vagy azokkal egyenértékű attribútumokat megadni.
MEGJEGYZÉS: Az ODBC Driver 13.1-es verziója csak Windows rendszeren támogatja ezt a beállítást.
SQL_COPT_SS_ENCRYPT SQL_IS_INTEGER SQL_EN_OFF, SQL_EN_ON (lásd a leírást) A kliens titkosítási kérését kezeli. SQL_EN_OFF Ez nem akadályozza meg a szerver titkosítást megkövetelését. A Driver 17-ben, ha nem állítod be kifejezetten a titkosítást, és a(z) Authentication attribútum előtti értéke nem none, vagy a(z) SQL_COPT_SS_ACCESS_TOKEN be van állítva, akkor az alapértelmezett érték a(z) SQL_EN_ON. Ellenkező esetben a 17-es illesztőprogram alapértelmezés szerint SQL_EN_OFF. A Driver 18.0.1 és újabb verzióiban alapértelmezés szerint a(z) SQL_EN_ON van beállítva, függetlenül a hitelesítéstől, ha nem állítod be kifejezetten a titkosítást. Ha SQL_COPT_SS_AUTHENTICATION felülírja a(z) Authentication attribútum előtti értékét, explicit módon állítsd be a titkosítást a DSN-ben, a kapcsolati karakterláncban vagy ebben az attribútumban. A titkosítás és tanúsítvány-validációs viselkedésével kapcsolatban lásd: Példa kapcsolati stringek.
SQL_COPT_SS_OLDPWD - - - A Microsoft Entra-azonosító nem támogatott, mivel a Microsoft Entra-tagok jelszómódosításai nem hajthatóak végre ODBC-kapcsolaton keresztül.

Az SQL Server-hitelesítés jelszavas lejárata az SQL Server 2005-ben jelent meg. Az SQL_COPT_SS_OLDPWD attribútum hozzá lett adva, hogy az ügyfél a régi és az új jelszót is megadja a kapcsolathoz. Ha ez a tulajdonság be van állítva, a szolgáltató nem fogja használni a kapcsolatkészletet az első kapcsolathoz vagy a jövőbeli kapcsolatokhoz, mivel a kapcsolati sztring tartalmazza a "régi jelszót", amely most megváltozott.
SQL_COPT_SS_INTEGRATED_SECURITY SQL_IS_INTEGER SQL_IS_OFF,SQL_IS_ON SQL_IS_OFF Elavult; használja inkább a SQL_COPT_SS_AUTHENTICATION beállítást SQL_AU_AD_INTEGRATED .

Kényszeríti a Windows-hitelesítés használatát (Kerberos Linuxon és macOS rendszeren) a hozzáférés-ellenőrzéshez a kiszolgálói bejelentkezéskor. Windows-hitelesítés használatakor az illesztőprogram figyelmen kívül hagyja a felhasználói azonosító és jelszó értékeket, amelyeket SQLConnect, SQLDriverConnect vagy SQLBrowseConnect feldolgozás részeként adtak meg.

Az ActiveDirectoryPassword már nem támogatott

Important

Az ActiveDirectoryPassword hitelesítési lehetőség (Microsoft Entra ID jelszóhitelesítés) elavult a Microsoft SQL-illesztőprogramokban. Ez a magas kockázatú hitelesítési folyamat nem kompatibilis a kötelező Microsoft Entra többtényezős hitelesítéssel (MFA), és előfordulhat, hogy nem működik olyan bérlőkben, ahol az MFA kényszerítve van. Tervezze meg a migrálást egy másik Microsoft Entra hitelesítési módszerre.

A Microsoft Entra ID jelszóhitelesítése a OAuth 2.0 Resource Owner Password Credentials (ROPC) engedélyezési folyamaton alapul, amely lehetővé teszi, hogy egy alkalmazás a felhasználó jelszavának közvetlen kezelésével jelentkeztesse be a felhasználót.

Microsoft azt javasolja, hogy ne használja a ROPC-folyamatot, mert nem kompatibilis az MFA-val. A legtöbb forgatókönyvben biztonságosabb alternatívák érhetők el és ajánlottak. Ez a folyamat nagy fokú bizalmat igényel az alkalmazásban, és olyan kockázatokat hordoz, amelyek más folyamatokban nem jelennek meg. Ezt a folyamatot csak akkor használja, ha a biztonságosabb folyamatok nem életképesek. A Microsoft távolodik ettől a magas kockázatú hitelesítési folyamattól, hogy megvédje a felhasználókat a rosszindulatú támadásoktól. További információ: Kötelező többtényezős hitelesítés tervezése az Azure-ban.

Ha egy felhasználó jelen van a bejelentkezéskor, használja az ActiveDirectoryInteractive vagy az ActiveDirectoryIntegrated hitelesítést, hogy a bejelentkezett felhasználó és a feltételes hozzáférési szabályzat naplózási útvonal attribútumai érvényesek legyenek.

Felügyelet nélküli szolgáltatásközi forgatókönyvek esetén kövesse a Microsoft Entra szolgáltatásfiókra vonatkozó útmutatást:

  • Ha az alkalmazás Azure infrastruktúrán fut, használja az ActiveDirectoryMSI -t (vagy egyes illesztőprogramokban az ActiveDirectoryManagedIdentitást). A felügyelt identitások kiküszöbölik a titkos kódok és tanúsítványok karbantartásának és elforgatásának többletterhelését.
  • Ha a felügyelt identitás nem érhető el (például az alkalmazás Azure kívül fut), használja az ActiveDirectoryServicePrincipal parancsot. Ahol az illesztőprogram támogatja, az ügyféltanúsítványt előnyben részesítse egy titkos ügyfélkóddal szemben. Tanúsítvány esetén a titkos kulcs az ügyfélen marad, és csak egy aláírt állítás lesz elküldve Microsoft Entra az ügyfél hitelesítéséhez. Ha a kulcs hardverben (például TPM-ben vagy HSM-ben) van tárolva, vagy nem portolhatóként van megjelölve, akkor nem másolható sztringként, ahogyan az ügyféltitkok is.
  • Ne használjon Microsoft Entra felhasználói fiókot szolgáltatásfiókként.

Felhasználói felületi kiegészítések a Microsoft Entra ID-hoz (csak Windows-illesztőprogram esetén)

Az illesztőprogram DSN-beállítását és kapcsolati felhasználói felületét továbbfejlesztettük a Microsoft Entra-azonosítóval való hitelesítéshez szükséges további lehetőségekkel.

DSN-k létrehozása és szerkesztése a felhasználói felületen

Meglévő DSN létrehozásakor vagy szerkesztésekor használhatja a Microsoft Entra hitelesítési beállításait az illesztőprogram beállítási felhasználói felületén:

Authentication=ActiveDirectoryIntegrated Az Azure SQL-be integrált Microsoft Entra-hitelesítéshez

A DSN létrehozási és szerkesztési képernyője, amelyen a Microsoft Entra integrált hitelesítés van kiválasztva.

Authentication=ActiveDirectoryPassword Microsoft Entra felhasználónév/jelszó hitelesítéshez az Azure SQL-re

Megjegyzés:

Az ActiveDirectoryPassword elavultnak számít. További információ: Az ActiveDirectoryPassword elavult.

A DSN létrehozási és szerkesztési képernyője, amelyen a Microsoft Entra Password hitelesítés van kiválasztva.

Authentication=ActiveDirectoryInteractive Microsoft Entra interaktív hitelesítés Azure SQL számára

A DSN létrehozási és szerkesztési képernyője, amelyen a Microsoft Entra Interaktív hitelesítés van kiválasztva.

Megjegyzés:

Az illesztőprogram 17.9-es verziójától az interaktív hitelesítési viselkedés megváltozott. A rendszer mindig hitelesítő adatokat kér a felhasználóktól, kivéve, ha az illesztőprogram rendelkezik érvényes hozzáférési jogkivonattal. Ez a módosítás megakadályozza, hogy a Microsoft Entra-hoz csatlakoztatott eszközök felhasználói kihagyják a kérést, és a hitelesítés használatakor ActiveDirectoryInteractive automatikusan jelentkezzenek be gyorsítótárazott hitelesítő adatokkal.

Authentication=SqlPassword felhasználónév/jelszó hitelesítése az SQL Serveren és az Azure SQL-en

A DSN létrehozási és szerkesztési képernyője, amelyen az SQL Server-hitelesítés van kiválasztva.

Trusted_Connection=Yes a Windows hagyományos SSPI-integrációs hitelesítéshez

A DSN létrehozási és szerkesztési képernyője, amelyen az integrált Windows-hitelesítés van kiválasztva.

Authentication=ActiveDirectoryMsi a Microsoft Entra által felügyelt identitáshitelesítéshez

A DSN létrehozási és szerkesztési képernyője, amelyen a felügyeltszolgáltatás-identitás hitelesítése van kiválasztva.

Authentication=ActiveDirectoryServicePrincipal a Microsoft Entra szolgáltatásnév-hitelesítéshez

A DSN létrehozási és szerkesztési képernyő, ahol a Microsoft Entra szolgáltatásfő hitelesítése van kiválasztva.

A hét lehetőség a következőkre vonatkozik: Trusted_Connection=Yes (a meglévő, csak Windows SSPI-t használó integrált hitelesítés) és Authentication=, ActiveDirectoryIntegrated, SqlPassword, ActiveDirectoryPassword, ActiveDirectoryInteractive, ActiveDirectoryMsi, ActiveDirectoryServicePrincipal.

SQLDriverConnect-parancssor (csak Windows-illesztőprogram esetén)

Az SQLDriverConnect által a kapcsolat befejezéséhez szükséges információk kérésekor megjelenő parancssori párbeszédpanel négy új lehetőséget tartalmaz a Microsoft Entra-hitelesítéshez:

Az SQLDriverConnect által megjelenített SQL Server Bejelentkezési párbeszédpanel.

Ezek a lehetőségek megegyeznek a fenti DSN beállítási felhasználói felületén elérhető hat lehetőséggel.

Példa kapcsolati sztringekre

Megjegyzés:

Ezekben a példákban szereplő titkosítási és tanúsítvány-ellenőrzési leírások a hagyományos távoli kapcsolatokra érvényesek, DSN- vagy kapcsolatattribútum-felülírások, Windows Force Protocol Encryption beállításjegyzék-beállítások vagy belső Windows-tanúsítványellenőrzési visszahívások nélkül. Leírják a nem-Strict titkosítást. A bejelentkezési titkosítás a hitelesítési adatcsere védelmét biztosítja, nem pedig a későbbi alkalmazásadatokét.

Encrypt=yes és TrustServerCertificate=no esetén (az alapértelmezett beállítás) a 17-es és 18-as illesztőprogramok teljes munkamenet-titkosítást kérnek, és érvényesítik a szerver tanúsítványát. Ha az ügyfél beállítja Encrypt=no, de a szerver teljes munkamenet-titkosítást igényel, akkor a 17-es meghajtó nem választja a normál tanúsítvány-ellenőrzést ehhez a csak kiszolgálóra vonatkozó kéréshez. A Driver 18 ellenőrzi a megtárgyalt, teljes munkamenetre kiterjedő titkosított állapotot, és érvényesíti a tanúsítványt, kivéve, ha TrustServerCertificate=yes. A szokásos, nem-Strict útvonalon, TrustServerCertificate=yes elnyomja a normál validálást; a Windows beállításjegyzéke által kikényszerített titkosítás az adott beállítástól függetlenül választhatja ki a validálást, és egy belső Windows-visszahívás helyettesítheti a normál validálási útvonalat.

  1. SQL Server-hitelesítés – örökölt szintaxis. A kiszolgálótanúsítvány nincs érvényesítve, és a titkosítást csak akkor használja a rendszer, ha a kiszolgáló kényszeríti. A felhasználónév/jelszó a kapcsolati sztringben lesz átadva.

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

  2. SQL-hitelesítés – új szintaxis. A Authentication=SqlPassword használatával és a titkosítás mellőzésével, ahogy az ábrán látható, a 17-es és 18-as illesztőprogramok alapértelmezés szerint teljes munkamenet-titkosítást kérnek. Az illesztőprogram az alapértelmezett TrustServerCertificate=no használatával érvényesíti a szerver tanúsítványát. A felhasználónév és jelszó a kapcsolati karakterlánc-ben van.

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

  3. Integrált Windows-hitelesítés (Kerberos Linuxon és macOS rendszeren) SSPI használatával (SQL Server vagy SQL IaaS) – aktuális szintaxis. Encrypt=no esetén a teljes munkamenet titkosítását csak akkor használják, ha a szerver ezt megköveteli. Ehhez a csak kiszolgálóra vonatkozó kéréshez a 17-es illesztőprogram nem választja a normál tanúsítványérvényesítést; a 18-as illesztőprogram alapértelmezés szerint a(z) TrustServerCertificate=no használatával érvényesít.

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

  4. (Csak Windows-illesztőprogram.) Integrált Windows-hitelesítés SSPI használatával (ha a céladatbázis SQL Serveren vagy Azure-beli virtuális gépeken futó SQL Serveren található) – új szintaxis. A Authentication=ActiveDirectoryIntegrated használatával és a titkosítás kihagyásával a 17-es és 18-as illesztőprogramok alapértelmezés szerint teljes munkamenet-titkosítást kérnek. Az illesztőprogram az alapértelmezett TrustServerCertificate=no használatával érvényesíti a szerver tanúsítványát.

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

  5. Microsoft Entra felhasználónév- és jelszó-hitelesítés (ha a céladatbázis az Azure SQL Database-ben vagy az Azure SQL Managed Instance-ben van). Az explicit kérés a teljes munkamenet titkosítását kéri. Az illesztőprogram az alapértelmezett TrustServerCertificate=no használatával érvényesíti a szerver tanúsítványát. A felhasználónév és jelszó a kapcsolati karakterlánc-ben van.

    Megjegyzés:

    Az ActiveDirectoryPassword elavultnak számít. További információ: Az ActiveDirectoryPassword elavult.

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

  6. (Windows, valamint Linux/macOS 17.6 és újabb verziók, csak illesztőprogram.) Integrált Windows hitelesítés ADAL vagy Kerberos használatával, amely magában foglalja a Windows-fiók hitelesítő adatainak beváltását egy Microsoft Entra hozzáférési tokenre, feltéve, hogy a céladatbázis az Azure SQL-ben van. Az explicit Encrypt=yes kérés a teljes munkamenet titkosítását kéri. Az illesztőprogram az alapértelmezett TrustServerCertificate=no használatával érvényesíti a szerver tanúsítványt. Linux/macOS rendszeren megfelelő Kerberos-jegynek kell rendelkezésre állnia. További információért lásd: ADFS szövetségi fiókok használatának szempontjai Linux/macOS rendszeren és Az integrált hitelesítés használata.

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

  7. (Csak Windows illesztőprogram.) A Microsoft Entra Interactive Authentication a Microsoft Entra többfaktoros hitelesítési technológiát használja a kapcsolat beállításához. A Driver 17.8 és újabb verzióknál kihagyhatod a(z) UID elemet, vagy beállíthatod hitelesítéshez a felhasználói fiókot. Ha megadod a(z) UID , a bejelentkezési párbeszéd nem feltétlenül kínál lehetőséget más fiók kiválasztására. Ha másik fiókot szeretnél használni, a csatlakozás előtt módosítsd a UID elemet, vagy hagyd ki a Driver 17.8 és újabb verziókban. Az illesztőprogram megnyit egy Azure hitelesítési párbeszédet, hogy a felhasználó befejezhesse a további ellenőrzéseket.

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

    Windows Azure Authentication felhasználói felület az Active Directory interaktív hitelesítés használatakor.

  8. A Microsoft Entra felügyelt identitáshitelesítés rendszer által hozzárendelt vagy felhasználó által hozzárendelt felügyelt identitást használhat. Felhasználó által hozzárendelt identitás esetén állítsa a UID-t az identitás ügyfél-azonosítójára az Azure App Service vagy az Azure Container Instance esetében; ellenkező esetben használja az objektumazonosítót. A rendszer által hozzárendelt identitáshoz nincs szükség UID azonosítóra.

    Rendszer által hozzárendelt identitás esetén:

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

    Felhasználó által hozzárendelt identitás esetén az objektumazonosító értéke a következő myObjectId:

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

  9. Microsoft Entra szolgáltatói név hitelesítése

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

Megjegyzések

  • Ha a 17.4.2-es verzió előtti Windows ODBC-illesztővel használja a Microsoft Entra-beállításokat, győződjön meg arról, hogy az SQL Server Active Directory hitelesítési kódtára telepítve van. Linux- és macOS-illesztőprogramok használatakor győződjön meg arról, hogy libcurl telepítve van. A 17.2-es és újabb verziójú illesztőprogramok esetében ez nem explicit függőség, mivel a többi hitelesítési módszerhez vagy ODBC-művelethez nem szükséges.

  • Ha a Microsoft Entra-konfiguráció feltételes hozzáférési szabályzatokat tartalmaz, és az ügyfél Windows 10 vagy Server 2016 vagy újabb, az integrált vagy felhasználónév/jelszó használatával történő hitelesítés sikertelen lehet. A feltételes hozzáférési szabályzatok használatához a Web Account Manager (WAM) szükséges, amelyet a Windows illesztőprogramjának 17.6-os vagy újabb verziója támogat. A WAM használatához hozzon létre egy új sztringértéket a ADALuseWAM, HKLM\Software\ODBC\ODBCINST.INI\ODBC Driver 17 for SQL Server vagy HKCU\Software\ODBC\ODBC.INI\<your-user-DSN-name> számára, amely globális, felhasználói DSN- vagy rendszerDSN-hatókörű konfigurációt jelöl, és állítsa ennek értékét 1-re. Vegye figyelembe, hogy a WAM-hitelesítés nem támogatja az alkalmazás más felhasználóként való futtatását runas. A feltételes hozzáférési szabályzatokat igénylő forgatókönyvek linuxos vagy macOS rendszeren nem támogatottak.

  • Ha SQL Server-fiók felhasználónevével és jelszavával szeretne csatlakozni, használhatja az új SqlPassword lehetőséget, amely különösen az Azure SQL-hez ajánlott, mivel ez a beállítás biztonságosabb kapcsolati alapértelmezett beállításokat tesz lehetővé.

  • Ha Microsoft Entra-fiók felhasználónevével és jelszavával szeretne csatlakozni, adja meg Authentication=ActiveDirectoryPassword a kapcsolati sztringet, valamint a UIDPWD felhasználónevet és a jelszót tartalmazó kulcsszavakat.

    Megjegyzés:

    Az ActiveDirectoryPassword elavultnak számít. További információ: Az ActiveDirectoryPassword elavult.

  • Ha Windowsos integrált vagy Microsoft Entra Integrated (Windows és Linux/macOS 17.6+, csak illesztőprogram) hitelesítéssel szeretne csatlakozni, adja meg Authentication=ActiveDirectoryIntegrated a kapcsolati sztringben. Az illesztőprogram automatikusan kiválasztja a megfelelő hitelesítési módot. A 17.7-s vagy korábbi UIDPWD illesztőprogram-verziók esetében nem szabad megadni. Az illesztőprogram 17.8-es verziójától kezdve a UID és a PWD figyelmen kívül marad.

  • A Microsoft Entra interaktív hitelesítés használatával történő csatlakozáshoz (csak Windows illesztőprogram esetén) a 17.8-as és újabb illesztőprogram-verziók esetén elhagyhatod a UID elemet, vagy állítsd be azt a hitelesítendő felhasználói fiókra. Előfordulhat, hogy a bejelentkezési párbeszédpanel nem teszi lehetővé a fiókváltást, amikor megadod a(z) UID elemet. Ha másik fiókot szeretnél használni, a csatlakozás előtt módosítsd a UID elemet, vagy hagyd ki a Driver 17.8 és újabb verziókban. A 17.7-es és korábbi meghajtóverziók megkövetelik a(z) UID használatát, és tiltják a(z) PWD használatát. Az illesztőprogram 17.8-es PWD verziójától kezdve a rendszer figyelmen kívül hagyja.

  • A 18.1-es verziótól kezdve már nem használja alapértelmezés szerint a Microsoft Entra ID összevont hitelesítést, Trusted_Connection=Yes és helyette SSPI-integrációt használ. Ha ehhez a beállításhoz Microsoft Entra-azonosítót szeretne használni, TrustedConnection_UseAAD=Yes konfigurálnia kell.

  • Az ODBC-illesztőprogram 17.7-s és újabb verziói ismert problémát tapasztalnak a kapcsolat időtúllépésével kapcsolatban, ha a Microsoft Entra-hitelesítés és a kényszerített titkosítás engedélyezve van egy SQL Server-példányon. Az SQL Server hibanaplója a következő hibaüzeneteket tartalmazhatja: "Hiba: 33155, Súlyosság: 20, Állapot: 1. Megszakadási esemény történt, amikor a kiszolgáló összevont hitelesítési jogkivonatra vár. Ennek oka lehet az ügyfél bezárása vagy a kiszolgáló időtúllépése." Ha magas rendelkezésre állású megoldásokat használ, mint például az Always On rendelkezésre állási csoportok vagy a feladatátvevő fürtpéldányok, az SQL Server belső fürtkommunikációjára ez a viselkedés hatással lehet, ami befolyásolhatja az erőforrások hozzáférhetőségét. A fürtnaplóban a következőhöz hasonló hibaüzenetek jelenhetnek meg: [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). Az ODBC-illesztő 17.10-s és újabb verziói kijavítják ezt a problémát, és az SQL Server 2022 GDR KB5021522 /CU1 KB5022375, a javítást tartalmazó legújabb illesztőprogram az SQL Server telepítésével van telepítve. Az ODBC-illesztőprogram telepített verzióját az ODBC adatforrás-rendszergazdájára hivatkozva ellenőrizheti.

  • Az ODBC-illesztőprogram 18.3-s verziójától kezdve a felügyelt identitás (ActiveDirectoryMSI) hitelesítése támogatott az Azure Arc és az Azure Cloud Shell esetében.

Hitelesítés hozzáférési jogkivonattal

A SQL_COPT_SS_ACCESS_TOKEN kapcsolat előtti attribútum lehetővé teszi, hogy a Microsoft Entra ID-ból beszerzett hozzáférési jogkivonatot használjuk a felhasználónév és jelszó helyett a hitelesítéshez, emellett pedig kiküszöböli, hogy az illesztőprogram egyeztesse és beszerezze a hozzáférési jogkivonatot. Hozzáférési jogkivonat használatához állítsa a kapcsolati SQL_COPT_SS_ACCESS_TOKEN attribútumot egy szerkezetre mutató mutatóra ACCESSTOKEN :

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

Ez ACCESSTOKEN egy 4 bájt hosszúságú változó hosszúságú struktúra, amelyet a hozzáférési jogkivonatot alkotó átlátszatlan adatok bájtjainak hossza követ. Az SQL Server hozzáférési jogkivonatok kezelésének módja miatt az OAuth 2.0 JSON-válaszból származó jogkivonatot ki kell bővíteni úgy, hogy minden bájt után egy nulla bekerülő bájt legyen, hasonlóan egy kizárólag ASCII karaktereket tartalmazó UCS-2 karakterlánchoz. A token átlátszatlan érték, és a megadott hossz bájtban nem tartalmazhat null lezáró karaktert. A jelentős hossz- és formátumkorlátozások miatt ez a hitelesítési módszer csak programozott módon érhető el a SQL_COPT_SS_ACCESS_TOKEN kapcsolati attribútumon keresztül.

Addig kell megtartanod a kiosztott ACCESSTOKEN eszközt, amíg a kapcsolódási leíró le van foglalva. Ellenkező esetben hozzáférés-megsértési hibák is előfordulhatnak. Amikor a Windows ODBC Driver Managert használja, a token mutató a kapcsolati pool kulcsának része, így egy másik mutató egy másik poolt választ. Tartsd meg ugyanazzal az identitással kapcsolatos puffert, amikor lecseréled a lejárt tokent. A buffer frissítése nem változtatja meg a már hitelesített kapcsolat identitását.

Caution

Linuxon és macOS-en az unixODBC kapcsolat-összevonása nem használja a SQL_COPT_SS_ACCESS_TOKEN elemet az identitások megkülönböztetésére. Ha ugyanazt a kapcsolati karakterlánc-t használod, egy másik tokenrel rendelkező kapcsolati kérés újrahasznosíthatja a korábbi identitásként hitelesített pooled kapcsolatot. Ha a folyamatod különböző identitásokhoz tartozó tokeneket használ, kapcsold ki az unixODBC poolingot az indítás előtt: állítsd be a(z) Pooling=No értéket a(z) [ODBC] szakaszban a tényleges odbcinst.ini fájlban, és győződj meg róla, hogy az alkalmazásod és a könyvtárai nem engedélyezik az ODBC poolingot. A konfiguráció megváltoztatása után indítsd újra a meglévő alkalmazásfolyamatokat. Ne hagyatkozz a token mutatók megváltoztatására az identitások elkülönítésére.

Nincs megfelelő DSN vagy kapcsolati sztring kulcsszó. A kapcsolati sztring nem tartalmazhat UID, PWDvagy AuthenticationTrusted_Connectionkulcsszavakat.

Megjegyzés:

Az ODBC-illesztőprogram 13.1-es verziója csak Windows rendszeren támogatja ezt a hitelesítést. A későbbi verziók minden platformon támogatják ezt a hitelesítést.

Microsoft Entra hitelesítési mintakód

Az alábbi minta az SQL Serverhez való csatlakozáshoz szükséges kódot mutatja be a Microsoft Entra ID-val a kapcsolati kulcsszavakkal. Nincs szükség az alkalmazás kódjának módosítására. A kapcsolati sztring vagy a DSN az egyetlen módosítás, amely a Microsoft Entra-azonosító hitelesítéshez való használatához szükséges:

    ...
    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);
    ...

Az alábbi minta a Microsoft Entra hozzáférési jogkivonat-hitelesítéssel történő SQL Serverhez való csatlakozáshoz szükséges kódot mutatja be. Ebben az esetben módosítani kell az alkalmazás kódját a hozzáférési jogkivonat feldolgozásához és a társított kapcsolati attribútum beállításához.

    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);

Az alábbi kapcsolati sztring minta a Microsoft Entra interaktív hitelesítéshez használható. Nem tartalmaz PWD-mezőt, mivel a jelszó be lesz írva az Azure Authentication képernyőn.

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

Az alábbi kapcsolati sztring minta a Microsoft Entra által felügyelt identitáshitelesítéshez használható. A UID a felhasználó által hozzárendelt identitás használatakor a felhasználói identitás objektum-/ügyfélazonosítójára van állítva.

// 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;"

Megfontolandó szempontok az ADFS összevont fiókok Linux/macOS rendszeren való használatához

A 17.6-os verziótól kezdve a Linux és a macOS illesztőprogramjai támogatják a Microsoft Entra ADFS által összevont fiókokkal történő hitelesítést felhasználónév/jelszó (ActiveDirectoryPassword) vagy Kerberos (ActiveDirectoryIntegrated) használatával. Az integrált mód használata esetén a platform bizonyos korlátozásoktól függ.

Ha olyan felhasználóval hitelesít, akinek az UPN-utótagja eltér a Kerberos-tartománytól, vagyis egy alternatív UPN-utótag van használatban, a Kerberos-jegyek beszerzésekor az Enterprise Principal lehetőséget kell használnia (használja a -E opciót a kinit-vel, és adja meg a főnév formában a user@federated-domain-t). Így az illesztő megfelelően meghatározhatja az összevont tartományt és a Kerberos tartományt is.

A parancs kimenetének klist vizsgálatával ellenőrizheti, hogy elérhető-e megfelelő Kerberos-jegy. Ha az összevont tartomány megegyezik a Kerberos-tartománnyal és az UPN utótagjával, az elsődleges név az alábbi formában szerepel: user@realm. Ha más, a névnek ebben a formában kell lennie: user@federated-domain@realm.

Linux

A SUSE 11-ben az 1.6.x alapértelmezett Kerberos-kódtár-verziója nem támogatja a másodlagos UPN-utótagok használatához szükséges Enterprise Principal beállítást. Ha alternatív UPN-utótagokat szeretne használni a Microsoft Entra integrált hitelesítésével, frissítse a Kerberos-kódtárat 1.7-re vagy újabbra.

Alpine Linuxon az alapértelmezett beállítás libcurl nem támogatja a Microsoft Entra integrált hitelesítéséhez szükséges SPNEGO-/Kerberos-hitelesítést.

macOS

A rendszer Kerberos könyvtára kinit támogatja az Enterprise Principal-t a --enterprise opcióval, de implicit módon névkanonizálást is végez, ami megakadályozza alternatív UPN-utótagok használatát. Ha alternatív UPN-utótagokat szeretne használni a Microsoft Entra integrált hitelesítésével, telepítsen egy újabb Kerberos-kódtárat , és használja annak parancsát a opcióval, amint azt fent leírtuk.