Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Microsoft Entra ID egy központi felhasználói azonosítókezelési technológia, amely az SQL Server-hitelesítés alternatívaként működik. A Microsoft Entra ID lehetővé teszi az Azure SQL Database-hez, a felügyelt Azure SQL-példányhoz és az Azure Synapse Analyticshez való kapcsolódást összevont identitásokkal a Microsoft Entra ID-ban felhasználónév és jelszó, Integrált Windows-hitelesítés vagy Microsoft Entra hozzáférési jogkivonat használatával. Az SQL Server PHP-illesztőprogramjai részleges támogatást nyújtanak ezekhez a funkciókhoz.
A Microsoft Entra-hitelesítés használatához konfigurálnia és kezelnie kell a Microsoft Entra-hitelesítést az Azure SQL-vel.
A Microsoft Entra-azonosító használatához használja a hitelesítés vagy az AccessToken kulcsszavakat (ezek kölcsönösen kizárják egymást), ahogyan az az alábbi táblázatban látható. További technikai részletekért tekintse meg a Microsoft Entra ID és az ODBC-illesztőprogram használatát.
| Keyword | Értékek | Description |
|---|---|---|
| AccessToken | Nincs beállítva (alapértelmezett) | Más kulcsszavak által meghatározott hitelesítési mód. További információ: Kapcsolati beállítások. |
| Bytesorozat | OAuth JSON-válaszból kinyert Microsoft Entra hozzáférési jogkivonat. A kapcsolati sztring nem tartalmazhat felhasználói azonosítót, jelszót vagy kulcsszót Authentication (linuxos vagy macOS rendszeren az ODBC-illesztőprogram 17-es vagy újabb verzióját igényli). |
|
| Authentication | Nincs beállítva (alapértelmezett) | Más kulcsszavak által meghatározott hitelesítési mód. További információ: Kapcsolati beállítások. |
SqlPassword |
Közvetlenül hitelesíthet egy SQL Server-példányt (amely lehet Azure-példány) felhasználónévvel és jelszóval. A felhasználónevet és a jelszót a UID és a PWD kulcsszavak használatával kell továbbítani a kapcsolati sztringbe. | |
ActiveDirectoryIntegrated |
Hitelesítés a bejelentkezett Windows fiókkal történik. Linux és macOS rendszeren ehhez az opcióhoz ODBC Driver 17.6 vagy újabb verzió, szövetséges Microsoft Entra fiók, valamint megfelelő Kerberos jegy szükséges. | |
ActiveDirectoryPassword [ELAVULT] |
Az ActiveDirectoryPassword elavult lett. További információ: Példa – csatlakozás az SqlPassword és az ActiveDirectoryPassword használatával. Hitelesítés Microsoft Entra-identitással felhasználónévvel és jelszóval. A felhasználónevet és a jelszót a UID és a PWD kulcsszavak használatával kell továbbítani a kapcsolati sztringbe. |
|
ActiveDirectoryMsi |
A Microsoft Entra rendszer által hozzárendelt vagy felhasználó által hozzárendelt felügyelt identitás használatával történő hitelesítés (az ODBC-illesztőprogram 17.3.1.1-es vagy újabb verziójára van szükség). Az áttekintést és az oktatóanyagokat az Azure-erőforrások felügyelt identitásai című témakörben tekintheti meg. | |
ActiveDirectoryServicePrincipal |
Hitelesítés szolgáltatásnév-objektumokkal (az ODBC-illesztőprogram 17.7-es vagy újabb verzióját igényli). További részletekért és példákért tekintse meg a Microsoft Entra ID alkalmazás- és szolgáltatásnév-objektumait. |
A hitelesítési kulcsszó hatással van a kapcsolat biztonsági beállításaira. Ha a kapcsolati sztringben van beállítva, akkor alapértelmezés szerint a Titkosítás kulcsszó igaz értékre van állítva, ami azt jelenti, hogy az ügyfél titkosítást kér. Ezenkívül a kiszolgálótanúsítványt a titkosítási beállítástól függetlenül érvényesítjük, kivéve, ha az TrustServerCertificate értéke igaz (alapértelmezés szerint hamis ). Ez a funkció különbözik a régi, kevésbé biztonságos bejelentkezési módszertől, amelyben a kiszolgálótanúsítvány csak akkor lesz érvényesítve, ha a kapcsolati sztringben kifejezetten titkosítást kérnek.
Példa – csatlakozás sqlPassword és ActiveDirectoryPassword használatával
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.
<?php
// First connect to a local SQL Server instance by setting Authentication to SqlPassword
$serverName = "<server>";
$user = "<user_id>";
$password = "<password>";
$connectionInfo = array("UID"=>$user, "PWD"=>$password, "Authentication"=>'SqlPassword');
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
echo "Could not connect with Authentication=SqlPassword.\n";
print_r(sqlsrv_errors());
} else {
echo "Connected successfully with Authentication=SqlPassword.\n";
sqlsrv_close($conn);
}
// Now connect to an Azure SQL database by setting Authentication to ActiveDirectoryPassword
$azureServer = "<server>.database.windows.net";
$azureDatabase = "<database>";
$azureUsername = "<user_id>";
$azurePassword = "<password>";
$connectionInfo = array("Database"=>$azureDatabase,
"UID"=>$azureUsername,
"PWD"=>$azurePassword,
"Authentication"=>'ActiveDirectoryPassword');
$conn = sqlsrv_connect($azureServer, $connectionInfo);
if ($conn === false) {
echo "Could not connect with Authentication=ActiveDirectoryPassword.\n";
print_r(sqlsrv_errors());
} else {
echo "Connected successfully with Authentication=ActiveDirectoryPassword.\n";
sqlsrv_close($conn);
}
?>
Példa – csatlakozás az PDO_SQLSRV illesztőprogram használatával
<?php
// First connect to a local SQL Server instance by setting Authentication to SqlPassword
$serverName = "<server>";
$databaseName = "<database>";
$user = "<user_id>";
$password = "<password>";
$connectionInfo = "Database = $databaseName; Authentication = SqlPassword;";
try {
$conn = new PDO("sqlsrv:server = $serverName ; $connectionInfo", $user, $password);
echo "Connected successfully with Authentication=SqlPassword.\n";
$conn = null;
} catch (PDOException $e) {
echo "Could not connect with Authentication=SqlPassword.\n";
print_r($e->getMessage());
echo "\n";
}
// Now connect to an Azure SQL database by setting Authentication to ActiveDirectoryPassword
$azureServer = "<server>.database.windows.net";
$azureDatabase = "<database>";
$azureUsername = "<user_id>";
$azurePassword = "<password>";
$connectionInfo = "Database = $azureDatabase; Authentication = ActiveDirectoryPassword;";
try {
$conn = new PDO("sqlsrv:server = $azureServer ; $connectionInfo", $azureUsername, $azurePassword);
echo "Connected successfully with Authentication=ActiveDirectoryPassword.\n";
unset($conn);
} catch (PDOException $e) {
echo "Could not connect with Authentication=ActiveDirectoryPassword.\n";
print_r($e->getMessage());
echo "\n";
}
?>
Példa – csatlakozás a Microsoft Entra hozzáférési jogkivonatával
SQLSRV-illesztő
<?php
// Using an access token to connect: do not use UID or PWD connection options
// Assume $accToken is the valid byte string extracted from an OAuth JSON response
$azureAdServer = "<server>.database.windows.net";
$azureAdDatabase = "<database>";
$accToken = "<access-token>";
$connectionInfo = array("Database"=>$azureAdDatabase, "AccessToken"=>$accToken);
$conn = sqlsrv_connect($azureAdServer, $connectionInfo);
if ($conn === false) {
echo "Could not connect with Azure AD Access Token.\n";
print_r(sqlsrv_errors());
} else {
echo "Connected successfully with Azure AD Access Token.\n";
sqlsrv_close($conn);
}
?>
PDO_SQLSRV illesztőprogram
<?php
$azureAdServer = "<server>.database.windows.net";
$azureAdDatabase = "<database>";
$accToken = "<access-token>";
try {
// Using an access token to connect: do not pass in $uid or $pwd
// Assume $accToken is the valid byte string extracted from an OAuth JSON response
$connectionInfo = "Database = $azureAdDatabase; AccessToken = $accToken;";
$conn = new PDO("sqlsrv:server = $azureAdServer; $connectionInfo");
echo "Connected successfully with Azure AD Access Token\n";
unset($conn);
} catch (PDOException $e) {
echo "Could not connect with Azure AD Access Token.\n";
print_r($e->getMessage());
echo "\n";
}
?>
Példa – csatlakozás felügyelt identitásokkal azure-erőforrásokhoz
A rendszer által hozzárendelt felügyelt identitás használata SQLSRV-illesztővel
A rendszer által hozzárendelt felügyelt identitással való csatlakozáskor ne használja a UID- vagy PWD-beállításokat.
<?php
$azureServer = '<server>.database.windows.net';
$azureDatabase = '<database>';
$connectionInfo = array('Database'=>$azureDatabase,
'Authentication'=>'ActiveDirectoryMsi');
$conn = sqlsrv_connect($azureServer, $connectionInfo);
if ($conn === false) {
echo "Could not connect with Authentication=ActiveDirectoryMsi (system-assigned).\n";
print_r(sqlsrv_errors());
} else {
echo "Connected successfully with Authentication=ActiveDirectoryMsi (system-assigned).\n";
$tsql = "SELECT @@Version AS SQL_VERSION";
$stmt = sqlsrv_query($conn, $tsql);
if ($stmt === false) {
echo "Failed to run the simple query (system-assigned).\n";
print_r(sqlsrv_errors());
} else {
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
echo $row['SQL_VERSION'] . PHP_EOL;
}
sqlsrv_free_stmt($stmt);
}
sqlsrv_close($conn);
}
?>
Példa – csatlakozás a Microsoft Entra szolgáltatásnévvel
A szolgáltatásnév-objektum használatával történő hitelesítéshez szüksége lesz a megfelelő alkalmazás-ügyfél-azonosítóra és az ügyfél titkos kódjára.
SQLSRV-illesztő
<?php
$adServer = '<server>.database.windows.net';
$adDatabase = '<database>';
$adSPClientId = '<client-id>';
$adSPClientSecret = '<client-secret>';
$conn = false;
$connectionInfo = array("Database"=>$adDatabase,
"Authentication"=>"ActiveDirectoryServicePrincipal",
"UID"=>$adSPClientId,
"PWD"=>$adSPClientSecret);
$conn = sqlsrv_connect($adServer, $connectionInfo);
if ($conn === false) {
echo "Could not connect using Azure AD Service Principal." . PHP_EOL;
print_r(sqlsrv_errors());
}
sqlsrv_close($conn);
?>
PDO_SQLSRV illesztőprogram
<?php
$adServer = '<server>.database.windows.net';
$adDatabase = '<database>';
$adSPClientId = '<client-id>';
$adSPClientSecret = '<client-secret>';
$conn = false;
try {
$connectionInfo = "Database = $adDatabase; Authentication = ActiveDirectoryServicePrincipal;";
$conn = new PDO("sqlsrv:server = $adServer; $connectionInfo", $adSPClientId, $adSPClientSecret);
} catch (PDOException $e) {
echo "Could not connect using Azure AD Service Principal.\n";
print_r($e->getMessage());
echo PHP_EOL;
}
unset($conn);
?>