Oktatóanyag: Microsoft Entra-felhasználók létrehozása Microsoft Entra-alkalmazásokkal
A következőre vonatkozik: Azure SQL Database
Ez a cikk bemutatja, hogyan konfigurálhat egy egyszerű szolgáltatást, hogy Microsoft Entra-felhasználókat hozzon létre az Azure SQL Database-ben. Ez a funkció lehetővé teszi az Azure SQL-erőforrásokhoz való hozzáférés-kezelés programozott konfigurálását a Microsoft Entra-bérlőben lévő felhasználók és alkalmazások számára.
Feljegyzés
A Microsoft Entra ID az Azure Active Directory (Azure AD) új neve. Jelenleg frissítjük a dokumentációt.
Az Azure SQL-hez készült Microsoft Entra-hitelesítésről további információt a Microsoft Entra-hitelesítés használata című cikkben talál.
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Identitás hozzárendelése a logikai kiszolgálóhoz
- A Címtárolvasók szerepkör hozzárendelése a kiszolgálóidentitáshoz
- Alkalmazás regisztrálása a Microsoft Entra-azonosítóban
- Adatbázis-felhasználó létrehozása az alkalmazás szolgáltatásnévéhez az Azure SQL Database-ben
- Microsoft Entra-adatbázis-felhasználó létrehozása a szolgáltatásnévvel
Előfeltételek
- Egy meglévő Azure SQL Database-üzembe helyezés. Feltételezzük, hogy rendelkezik egy működő SQL Database-adatbázissal ehhez az oktatóanyaghoz.
- Microsoft Entra
Global Administrator
vagyPrivileged Role Administrator
engedélyek abban a bérlőben, ahol az SQL-adatbázis található. - Az Az.Sql PowerShell modul legújabb verziója.
- A Microsoft.Graph PowerShell modul legújabb verziója.
Identitás hozzárendelése a logikai kiszolgálóhoz
Csatlakozás az Azure-ba, megadva az SQL-adatbázist üzemeltető Microsoft Entra-bérlőt. A bérlőazonosító a Microsoft Entra ID-erőforrás Áttekintés lapján található az Azure Portalon. Másolja ki a bérlőazonosítót , majd futtassa a következő PowerShell-parancsot:
- Cserélje le
<TenantId>
a bérlőazonosítót.
Connect-AzAccount -Tenant <TenantId>
Jegyezze fel az
TenantId
oktatóanyag későbbi használatra vonatkozó adatait.- Cserélje le
Hozzon létre egy rendszer által hozzárendelt felügyelt identitást, és rendelje hozzá az Azure logikai kiszolgálóhoz. Hajtsa végre a következő PowerShell-parancsot:
- Cserélje le és
<ServerName>
cserélje le<ResourceGroupName>
az erőforrásait a Set-AzSqlServer parancsban. Ha a kiszolgáló neve azmyserver.database.windows.net
, cserélje le a helyére<ServerName>
.myserver
Set-AzSqlServer -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -AssignIdentity
- Cserélje le és
Ellenőrizze, hogy a kiszolgálóidentitás hozzárendelése sikeresen megtörtént-e. Hajtsa végre a következő PowerShell-parancsot:
- Cserélje le
<ResourceGroupName>
és<ServerName>
használja az erőforrásokat. Ha a kiszolgáló neve azmyserver.database.windows.net
, cserélje le a helyére<ServerName>
.myserver
$xyz = Get-AzSqlServer -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> $xyz.identity
A kimenetnek meg kell jelennie ,
PrincipalId
Type
ésTenantId
. A hozzárendelt identitás aPrincipalId
.- Cserélje le
Az identitást az Azure Portalon is ellenőrizheti.
- A Microsoft Entra ID erőforrásban nyissa meg a Nagyvállalati alkalmazásokat. Írja be a logikai kiszolgáló nevét. Az erőforráson megjelenő objektumazonosító az elsődleges kiszolgálói identitás azonosítója.
Kiszolgálóidentitás hozzáadása a Címtárolvasók szerepkörhöz
A kiszolgálóidentitáshoz engedélyekre van szükség a Microsoft Entra-azonosító lekérdezéséhez a felügyeleti funkciókhoz, beleértve a Microsoft Entra-felhasználók és -bejelentkezések létrehozását, valamint a csoportbővítést, hogy felhasználói engedélyeket alkalmazzanak a Microsoft Entra-csoporttagságuk alapján. Ha visszavonják a Microsoft Entra-azonosító lekérdezésére vonatkozó kiszolgálóidentitás-engedélyeket, vagy törlik a kiszolgálóidentitást, a Microsoft Entra-hitelesítés nem működik.
A Microsoft Entra lekérdezési engedélyeinek hozzárendelése a kiszolgálói identitáshoz a címtár-olvasók szerepkörhöz való hozzáadásával vagy a következő, alacsonyabb szintű Microsoft Graph-engedélyek hozzárendelésével:
Feljegyzés
Ezt a szkriptet Egy Microsoft Entra-azonosítónak Global Administrator
vagy egy Privileged Role Administrator
.
Az alábbi szkript engedélyt ad a Microsoft Entra Directory-olvasóknak egy olyan identitáshoz, amely az Azure SQL Database logikai kiszolgálójának felel meg.
- Cserélje le a
TenantId
korábban összegyűjtött helyére<TenantId>
. - Cserélje le
<ServerName>
a logikai kiszolgáló nevét. Ha a kiszolgáló neve azmyserver.database.windows.net
, cserélje le a helyére<ServerName>
.myserver
# This script grants "Directory Readers" permission to a service principal representing a logical server for Azure SQL Database
# It can be executed only by a user who is a member of the **Global Administrator** or **Privileged Role Administrator** role.
# To check if the "Directory Readers" role was granted, re-execute this script
Import-Module Microsoft.Graph.Authentication
$ServerIdentityName = "<ServerName>" # Enter your logical server name
$TenantId = "<TenantId>" # Enter your tenant ID
Connect-MgGraph -TenantId "<TenantId>" -Scopes "RoleManagement.ReadWrite.Directory,Application.Read.All"
# Get Microsoft Entra "Directory Readers" role and create if it doesn't exist
$roleName = "Directory Readers"
$role = Get-MgDirectoryRole -Filter "DisplayName eq '$roleName'"
if ($role -eq $null) {
# Instantiate an instance of the role template
$roleTemplate = Get-MgDirectoryRoleTemplate -Filter "DisplayName eq '$roleName'"
New-MgDirectoryRoleTemplate -RoleTemplateId $roleTemplate.Id
$role = Get-MgDirectoryRole -Filter "DisplayName eq '$roleName'"
}
# Get service principal for server
$roleMember = Get-MgServicePrincipal -Filter "DisplayName eq '$ServerIdentityName'"
$roleMember.Count
if ($roleMember -eq $null) {
Write-Output "Error: No service principal with name '$($ServerIdentityName)' found, make sure that ServerIdentityName parameter was entered correctly."
exit
}
if (-not ($roleMember.Count -eq 1)) {
Write-Output "Error: Multiple service principals with name '$($ServerIdentityName)'"
Write-Output $roleMember | Format-List DisplayName, Id, AppId
exit
}
# Check if service principal is already member of Directory Readers role
$isDirReader = Get-MgDirectoryRoleMember -DirectoryRoleId $role.Id -Filter "Id eq '$($roleMember.Id)'"
if ($isDirReader -eq $null) {
# Add principal to Directory Readers role
Write-Output "Adding service principal '$($ServerIdentityName)' to 'Directory Readers' role'..."
$body = @{
"@odata.id"= "https://graph.microsoft.com/v1.0/directoryObjects/{$($roleMember.Id)}"
}
New-MgDirectoryRoleMemberByRef -DirectoryRoleId $role.Id -BodyParameter $body
Write-Output "'$($ServerIdentityName)' service principal added to 'Directory Readers' role'."
} else {
Write-Output "Service principal '$($ServerIdentityName)' is already member of 'Directory Readers' role'."
}
Feljegyzés
A szkript kimenete azt jelzi, hogy az identitás hozzá van-e rendelve a Címtárolvasók szerepkörhöz. Ha nem biztos benne, hogy az engedély meg lett-e adva, újra futtathatja a szkriptet.
A felügyelt SQL-példány címtárolvasói szerepkörének hozzárendelésével kapcsolatos hasonló megközelítésért tekintse meg a Microsoft Entra-rendszergazda (felügyelt SQL-példány) kiépítését ismertető témakört.
Éles környezetben gyakori felügyeleti gyakorlat a Címtárolvasók szerepkör hozzárendelése egy szerepkör-hozzárendelhető csoporthoz a Microsoft Entra ID-ban. Ezután a csoporttulajdonosok hozzáadhatnak felügyelt identitásokat a csoporthoz. Ez fenntartja a minimális jogosultság elvét, és megfelel annak az igénynek, hogy egy globális Rendszergazda istrator vagy privileged role Rendszergazda istrator egyenként adja meg a címtárolvasó szerepkört minden SQL-példánynak. A szolgáltatásról további információt az Azure SQL-hez készült Microsoft Entra ID címtárolvasói szerepkörében talál.
Alkalmazás létrehozása a Microsoft Entra-azonosítóban
Regisztrálja az alkalmazásokat. Az alkalmazás regisztrálásához legalább a Microsoft Entra ID alkalmazásfejlesztői szerepkörre van szüksége. A szerepkörök hozzárendelésével kapcsolatos további információkért lásd : Felhasználói szerepkörök hozzárendelése a Microsoft Entra-azonosítóban.
Ez az oktatóanyag két szolgáltatásnevet használ. Az első szolgáltatásnév, a DBOwnerApp az adatbázis többi felhasználójának létrehozására szolgál. A második szolgáltatásnév, a myapp az az alkalmazás, amelyet a DBOwnerApp létrehoz egy adatbázis-felhasználót az oktatóanyag későbbi részében.
Alkalmazások regisztrálása:
Az Azure Portalon válassza a Microsoft Entra ID> Alkalmazásregisztrációk> New regisztrációt.
Az alkalmazásregisztráció létrehozása után az alkalmazás (ügyfél) azonosítójának értéke létrejön és megjelenik. Ebben az oktatóanyagban rögzítse ezt az értéket későbbi használatra.
Hozzon létre egy ügyfélkulcsot az alkalmazáshoz, amellyel bejelentkezhet. Kövesse a tanúsítvány feltöltését, vagy hozzon létre egy titkos kulcsot a bejelentkezéshez. Ebben az oktatóanyagban rögzítse a DBOwnerApp ügyféltitkát későbbi használatra.
További információkért tekintse át a portálon az erőforrásokhoz hozzáférő Microsoft Entra-alkalmazás és szolgáltatásnév létrehozását ismertető cikket.
A szolgáltatásnév felhasználójának létrehozása
Adja hozzá az újonnan létrehozott szolgáltatásnevet, a DBOwnerAppot felhasználóként az SQL Database-ben, és rendeljen hozzá engedélyeket.
Csatlakozás az SQL Database-hez olyan Microsoft Entra-identitással, amely rendelkezik más felhasználók létrehozására vonatkozó engedélyekkel.
Fontos
Csak a Microsoft Entra-felhasználók hozhatnak létre más Microsoft Entra-felhasználókat az Azure SQL Database-ben. Az SQL-hitelesítésen alapuló felhasználók, köztük a kiszolgáló rendszergazdája sem hozhatnak létre Microsoft Entra-felhasználót. A Microsoft Entra rendszergazdája az egyetlen felhasználó, aki kezdetben létrehozhat más Microsoft Entra-felhasználókat az SQL Database-ben. Miután a Microsoft Entra rendszergazdája létrehozott más felhasználókat, a megfelelő engedélyekkel rendelkező Microsoft Entra-felhasználók más Microsoft Entra-felhasználókat is létrehozhatnak.
Hozza létre a dbOwnerApp felhasználót az SQL Database-ben a következő T-SQL-paranccsal:
CREATE USER [DBOwnerApp] FROM EXTERNAL PROVIDER GO
Más Microsoft Entra-felhasználók létrehozásához legalább az
ALTER ANY USER
SQL-engedély szükséges. Ez az engedély a Microsoft Entra rendszergazdájaként való tagságondb_owner
és hozzárendelésen keresztül is öröklődik. Az alábbi példák három különböző lehetőséget mutatnak be a DBOwnerApp engedélyeinek hozzárendelésére, amelyek lehetővé teszik, hogy más Microsoft Entra-felhasználókat hozzon létre az adatbázisban.A DBOwnerAppot a sp_addrolemember a következőkkel adhatja hozzá a
db_owner
szerepkörhöz:EXEC sp_addrolemember 'db_owner', [DBOwnerApp] GO
Az alábbi T-SQL-mintához hasonlóan hozzárendelheti az
ALTER ANY USER
engedélyt a DBOwnerApphoz :GRANT ALTER ANY USER TO [DBOwnerApp] GO
A DBOwnerAppot Microsoft Entra-rendszergazdaként állíthatja be. Ez az Azure Portal, a PowerShell vagy az Azure CLI parancsaival végezhető el. További információ: Microsoft Entra-rendszergazda (SQL Database) kiépítése.
Felhasználó létrehozása egyszerű szolgáltatásnévvel
A következő szkripttel hozzon létre egy Microsoft Entra szolgáltatásnév-felhasználót, a myappot a DBOwnerApp szolgáltatásnév használatával:
- Cserélje le a
TenantId
korábban összegyűjtött helyére<TenantId>
. - Cserélje le a
ClientId
korábban összegyűjtött helyére<ClientId>
. - Cserélje le
<ClientSecret>
a korábban létrehozott ügyféltitkot. - Cserélje le
<ServerName>
a logikai kiszolgáló nevét. Ha a kiszolgáló neve azmyserver.database.windows.net
, cserélje le a helyére<ServerName>
.myserver
- Cserélje le
<database name>
az SQL Database nevét.
# PowerShell script for creating a new SQL user called myapp using application DBOwnerApp with secret # DBOwnerApp is an admin for the server # Download latest MSAL - https://www.powershellgallery.com/packages/MSAL.PS Import-Module MSAL.PS $tenantId = "<TenantId>" # Microsoft Entra tenant ID where DBOwnerApp resides $clientId = "<ClientId>" # Application (client) ID recorded earlier for DBOwnerApp $clientSecret = "<ClientSecret>" # Client secret for DBOwnerApp $scopes = "https://database.windows.net/.default" # The endpoint $result = Get-MsalToken -RedirectUri $uri -ClientId $clientId -ClientSecret (ConvertTo-SecureString $clientSecret -AsPlainText -Force) -TenantId $tenantId -Scopes $scopes $Tok = $result.AccessToken #Write-host "token" $Tok $SQLServerName = "<ServerName>" # Logical server name $DatabaseName = "<database name>" # Azure SQL database name Write-Host "Create SQL connection string" $conn = New-Object System.Data.SqlClient.SQLConnection $conn.ConnectionString = "Data Source=$SQLServerName.database.windows.net;Initial Catalog=$DatabaseName;Connect Timeout=30" $conn.AccessToken = $Tok Write-host "Connect to database and execute SQL script" $conn.Open() $ddlstmt = 'CREATE USER [myapp] FROM EXTERNAL PROVIDER;' Write-host " " Write-host "SQL DDL command" $ddlstmt $command = New-Object -TypeName System.Data.SqlClient.SqlCommand($ddlstmt, $conn) Write-host "results" $command.ExecuteNonQuery() $conn.Close()
Másik lehetőségként használhatja a következő kódot: Microsoft Entra szolgáltatásnév hitelesítése az Azure SQL Database-hez. Módosítsa a szkriptet a DDL utasítás
CREATE USER [myapp] FROM EXTERNAL PROVIDER
végrehajtásához. Ugyanez a szkript használható Microsoft Entra-felhasználó vagy -csoport létrehozására az adatbázisban.- Cserélje le a
Ellenőrizze, hogy a felhasználó myappja létezik-e az adatbázisban a következő parancs végrehajtásával:
SELECT name, type, type_desc, CAST(CAST(sid as varbinary(16)) as uniqueidentifier) as appId FROM sys.database_principals WHERE name = 'myapp' GO
Az alábbihoz hasonló kimenetnek kell megjelennie:
name type type_desc appId myapp E EXTERNAL_USER 6d228f48-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Következő lépések
- Microsoft Entra szolgáltatási megbízó az Azure SQL szolgáltatással
- Melyek az Azure-erőforrások felügyelt identitásai?
- Felügyelt identitások használata az App Service-hez és az Azure Functionshez
- Microsoft Entra szolgáltatásnév hitelesítése az SQL DB-hez – Kódminta
- Alkalmazás- és szolgáltatásfőobjektumok a Microsoft Entra ID-ban
- Azure-szolgáltatásnév létrehozása az Azure PowerShell használatával
- Címtárolvasói szerepkör az Azure SQL-hez készült Microsoft Entra ID-ban
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: