Using a system-assigned managed identity for an Azure Automation account
Ez a cikk bemutatja, hogyan engedélyezheti a rendszer által hozzárendelt felügyelt identitásokat egy Azure Automation-fiókhoz, és hogyan használhatja azt más erőforrások eléréséhez. A felügyelt identitások Azure Automation-beli működésével kapcsolatos további információkért lásd: Felügyelt identitások.
Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
Előfeltételek
Egy Azure Automation-fiókra. Útmutatásért lásd : Azure Automation-fiók létrehozása.
Az Az PowerShell-modulok legújabb verziója Az.Accounts, Az.Resources, Az.Automation, Az.KeyVault.
Egy Azure-erőforrás, amelyet az Automation-runbookból szeretne elérni. Ennek az erőforrásnak rendelkeznie kell a felügyelt identitáshoz definiált szerepkörrel, amely segít az Automation runbooknak hitelesíteni az erőforráshoz való hozzáférést. Szerepkörök hozzáadásához az erőforrás tulajdonosának kell lennie a megfelelő Microsoft Entra-bérlőben.
Ha felügyelt identitással szeretne hibrid feladatokat végrehajtani, frissítse az ügynökalapú hibrid runbook-feldolgozót a legújabb verzióra. A bővítményalapú hibrid runbook-feldolgozó minimális verziókövetelménye nincs, és az összes verzió működni fog. Az ügynökalapú hibrid feldolgozó minimálisan szükséges verziói a következők:
- Hibrid Windows Runbook-feldolgozó: 7.3.1125.0-s verzió
- Linux hibrid runbook-feldolgozó: 1.7.4.0-s verzió
A verziók ellenőrzése:
- Windows hibrid runbook-feldolgozó: Lépjen a telepítési útvonalra,
C:\ProgramFiles\Microsoft Monitoring Agent\Agent\AzureAutomation\.
és az Azure Automation mappában egy almappát tartalmaz, amelynek verziószáma az almappa neve. - Linux hibrid runbook-feldolgozó: Lépjen az elérési útra ,
vi/opt/microsoft/omsconfig/modules/nxOMSAutomationWorker/VERSION.
és a VERZIÓ fájl a hibrid feldolgozó verziószámával rendelkezik.
Azure-szerepkör hozzárendeléséhez olyan engedéllyel kell rendelkeznie
Microsoft.Authorization/roleAssignments/write
, mint a Felhasználói hozzáférés Rendszergazda istrator vagy a Tulajdonos.
Rendszer által hozzárendelt felügyelt identitás engedélyezése Azure Automation-fiókhoz
Ha engedélyezve van, a rendszer a következő tulajdonságokat rendeli hozzá a rendszer által hozzárendelt felügyelt identitáshoz.
Tulajdonság (JSON) | Érték | Description |
---|---|---|
principalid | <principal-ID> | A Rendszer által hozzárendelt felügyelt identitás szolgáltatásnév objektumának globálisan egyedi azonosítója (GUID), amely a Microsoft Entra-bérlő Automation-fiókját jelöli. Ez a GUID néha "objektumazonosítóként" vagy objectID-ként jelenik meg. |
tenantid | <Azure-AD-tenant-ID> | A Globálisan egyedi azonosító (GUID), amely azt a Microsoft Entra-bérlőt jelöli, amelyben az Automation-fiók most már tag. A Microsoft Entra-bérlőn belül a szolgáltatásnév neve megegyezik az Automation-fiók nevével. |
Az Azure Automation-fiókokhoz rendszer által hozzárendelt felügyelt identitást az Azure Portal, a PowerShell, az Azure REST API vagy az ARM-sablon használatával engedélyezheti. A PowerShellt érintő példákhoz először jelentkezzen be interaktívan az Azure-ba az Csatlakozás-AzAccount parancsmag használatával, és kövesse az utasításokat.
# Sign in to your Azure subscription
$sub = Get-AzSubscription -ErrorAction SilentlyContinue
if(-not($sub))
{
Connect-AzAccount
}
# If you have multiple subscriptions, set the one to use
# Select-AzSubscription -SubscriptionId "<SUBSCRIPTIONID>"
Ezután inicializálja a példák során használt változók készletét. Módosítsa az alábbi értékeket, majd hajtsa végre.
$subscriptionID = "subscriptionID"
$resourceGroup = "resourceGroupName"
$automationAccount = "automationAccountName"
Fontos
Az új Automation-fiókszintű identitás felülbírálja a korábbi, virtuálisgép-szintű rendszer által hozzárendelt identitásokat, amelyeket a Runbook-hitelesítés használata felügyelt identitásokkal című cikkben ismertet. Ha olyan Azure-beli virtuális gépeken futtat hibrid feladatokat, amelyek a virtuális gép rendszer által hozzárendelt identitását használják a runbook-erőforrások eléréséhez, akkor az Automation-fiók identitása a hibrid feladatokhoz lesz használva. Ez azt jelenti, hogy az Automation-fiók Ügyfél által felügyelt kulcsok (CMK) funkciójának használata hatással lehet a meglévő feladat végrehajtására.
Ha továbbra is használni szeretné a virtuális gép felügyelt identitását, nem szabad engedélyeznie az Automation-fiókszintű identitást. Ha már engedélyezte, letilthatja az Automation-fiók rendszer által hozzárendelt felügyelt identitását. Lásd: Az Azure Automation-fiók felügyelt identitásának letiltása.
Engedélyezés az Azure Portalon
Hajtsa végre a következő lépéseket:
Jelentkezzen be az Azure Portalra.
Az Azure Portalon lépjen az Automation-fiókjához.
A Fiókbeállítások területen válassza az Identitás lehetőséget.
Állítsa be a rendszer által hozzárendelt beállítást a Be gombra, és nyomja le a Save billentyűt. Amikor a rendszer megerősítést kér, válassza az Igen lehetőséget.
Az Automation-fiókja most már használhatja a Rendszer által hozzárendelt identitást, amely a Microsoft Entra ID-val van regisztrálva, és amelyet egy objektumazonosító jelöl.
Engedélyezés a PowerShell használatával
A Rendszer által hozzárendelt felügyelt identitás engedélyezéséhez használja a Set-AzAutomationAccount PowerShell-parancsmagot.
$output = Set-AzAutomationAccount `
-ResourceGroupName $resourceGroup `
-Name $automationAccount `
-AssignSystemIdentity
$output
A kimenetnek a következőképpen kell kinéznie:
További kimenet esetén módosítsa a példát a következő beállításra: $output.identity | ConvertTo-Json
.
REST API használatának engedélyezése
A szintaxis és a példalépések az alábbiakban találhatók.
Syntax
Az alábbi törzsszintaxis lehetővé teszi egy rendszer által hozzárendelt felügyelt identitás használatát egy meglévő Automation-fiókhoz a HTTP PATCH metódus használatával. Ez a szintaxis azonban eltávolítja az Automation-fiókhoz társított, felhasználó által hozzárendelt felügyelt identitásokat.
{
"identity": {
"type": "SystemAssigned"
}
}
Ha több felhasználó által hozzárendelt identitás van meghatározva, a rendszer által hozzárendelt identitás megőrzéséhez és csak a rendszer által hozzárendelt identitás eltávolításához vesszővel tagolt listával kell megadnia a felhasználó által hozzárendelt identitásokat. Az alábbi példa a HTTP PATCH metódust használja.
{
"identity" : {
"type": "SystemAssigned, UserAssigned",
"userAssignedIdentities": {
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cmkID": {},
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cmkID2": {}
}
}
}
Az API szintaxisa a következő:
PATCH https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/Microsoft.Automation/automationAccounts/automation-account-name?api-version=2020-01-13-preview
Example
Hajtsa végre a következő lépéseket.
Másolja és illessze be a szövegtörzs szintaxisát egy nevesített
body_sa.json
fájlba. Mentse a fájlt a helyi gépen vagy egy Azure Storage-fiókban.Frissítse az alábbi változó értékét, majd hajtsa végre.
$file = "path\body_sa.json"
Ez a példa az Invoke-RestMethod PowerShell-parancsmaggal küldi el a PATCH-kérést az Automation-fióknak.
# build URI $URI = "https://management.azure.com/subscriptions/$subscriptionID/resourceGroups/$resourceGroup/providers/Microsoft.Automation/automationAccounts/$automationAccount`?api-version=2020-01-13-preview" # build body $body = Get-Content $file # obtain access token $azContext = Get-AzContext $azProfile = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile $profileClient = New-Object -TypeName Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient -ArgumentList ($azProfile) $token = $profileClient.AcquireAccessToken($azContext.Subscription.TenantId) $authHeader = @{ 'Content-Type'='application/json' 'Authorization'='Bearer ' + $token.AccessToken } # Invoke the REST API $response = Invoke-RestMethod -Uri $URI -Method PATCH -Headers $authHeader -Body $body # Review output $response.identity | ConvertTo-Json
A kimenetnek a következőképpen kell kinéznie:
{ "PrincipalId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "TenantId": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", "Type": 0, "UserAssignedIdentities": null }
ENGEDÉLYEZÉS ARM-sablon használatával
A szintaxis és a példalépések az alábbiakban találhatók.
Sablonszintaxis
Az alábbi mintasablon szintaxisa lehetővé teszi a rendszer által hozzárendelt felügyelt identitás használatát a meglévő Automation-fiókhoz. Ez a szintaxis azonban eltávolítja az Automation-fiókhoz társított, felhasználó által hozzárendelt felügyelt identitásokat.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Automation/automationAccounts",
"apiVersion": "2020-01-13-preview",
"name": "yourAutomationAccount",
"location": "[resourceGroup().location]",
"identity": {
"type": "SystemAssigned"
},
"properties": {
"sku": {
"name": "Basic"
}
}
}
]
}
Example
Hajtsa végre a következő lépéseket.
Módosítsa a fenti sablon szintaxisát az Automation-fiók használatához, és mentse azt egy nevesített
template_sa.json
fájlba.Frissítse az alábbi változó értékét, majd hajtsa végre.
$templateFile = "path\template_sa.json"
A sablon üzembe helyezéséhez használja a New-AzResourceGroupDeployment PowerShell-parancsmagot.
New-AzResourceGroupDeployment ` -Name "SystemAssignedDeployment" ` -ResourceGroupName $resourceGroup ` -TemplateFile $templateFile
A parancs nem hoz létre kimenetet; azonban az alábbi kóddal ellenőrizheti:
(Get-AzAutomationAccount ` -ResourceGroupName $resourceGroup ` -Name $automationAccount).Identity | ConvertTo-Json
A kimenet a fenti REST API-példában látható kimenethez hasonlóan fog kinézni.
Szerepkör hozzárendelése rendszer által hozzárendelt felügyelt identitáshoz
Az Automation-fiókok a rendszer által hozzárendelt felügyelt identitással jogkivonatokat szerezhetnek be a Microsoft Entra ID által védett egyéb erőforrások, például az Azure Key Vault eléréséhez. Ezek a tokenek nem képviselik az alkalmazás adott felhasználóit. Ehelyett az erőforrást elérő alkalmazást képviselik. Ebben az esetben például a token egy Automation-fiókot képvisel.
Ahhoz, hogy használhassa a rendszer által hozzárendelt felügyelt identitást hitelesítéshez, állítsa be az identitáshoz való hozzáférést abban az Azure-erőforrásban, ahol az identitást használni szeretné. A feladat elvégzéséhez rendelje hozzá a megfelelő szerepkört az identitáshoz a cél Azure-erőforráson.
Kövesse a legalacsonyabb jogosultsági szint elvét, és ügyeljen arra, hogy csak a runbook végrehajtásához szükséges engedélyeket rendelje hozzá. Ha az Automation-fiókra például csak egy Azure-beli virtuális gép elindításához vagy leállításához van szükség, akkor a futtató fiókhoz vagy felügyelt identitáshoz rendelt engedélyeknek csak a virtuális gép elindítására vagy leállítására kell vonatkozniuk. Hasonlóképpen, ha egy runbook a Blob Storage-ból olvas, akkor csak olvasási engedélyeket rendeljen hozzá.
Az alábbi példa az Azure PowerShell használatával mutatja be, hogyan rendelheti hozzá az előfizetés közreműködői szerepkörét a cél Azure-erőforráshoz. Példaként a közreműködői szerepkört használjuk, és előfordulhat, hogy az Ön esetében nem szükséges.
New-AzRoleAssignment `
-ObjectId <automation-Identity-object-id> `
-Scope "/subscriptions/<subscription-id>" `
-RoleDefinitionName "Contributor"
Szerepkör-hozzárendelés ellenőrzése rendszer által felügyelt identitáshoz
Ha ellenőrizni szeretné az Automation-fiók egyik rendszer által hozzárendelt felügyelt identitásának szerepkörét, kövesse az alábbi lépéseket:
Jelentkezzen be az Azure Portalra.
Lépjen az Automation-fiókhoz.
A Fiókbeállítások területen válassza az Identitás lehetőséget.
Az Engedélyek területen kattintson az Azure-szerepkör-hozzárendelésekre.
Ha a szerepkörök már hozzá vannak rendelve a kiválasztott, rendszer által hozzárendelt felügyelt identitáshoz, láthatja a szerepkör-hozzárendelések listáját. Ez a lista az összes olyan szerepkör-hozzárendelést tartalmazza, amelyekhez olvasási engedéllyel rendelkezik.
Az előfizetés módosításához kattintson az Előfizetés legördülő listára, és válassza ki a megfelelő előfizetést.
Kattintson a Szerepkör-hozzárendelés hozzáadása (előzetes verzió) elemre
A legördülő listában válassza ki azokat az erőforrásokat, amelyekre a szerepkör-hozzárendelés vonatkozik – előfizetés, erőforráscsoport, szerepkör és hatókör.
Ha nem rendelkezik szerepkör-hozzárendeléssel, a kijelölt hatókör írási engedélyeit beágyazott üzenetként tekintheti meg.A Szerepkör legördülő listában válasszon ki egy szerepkört virtuálisgép-közreműködőként.
Kattintson a Mentés gombra.
Néhány perc elteltével a felügyelt identitás hozzárendeli a szerepkört a kiválasztott hatókörhöz.
Hozzáférés hitelesítése rendszer által hozzárendelt felügyelt identitással
Miután engedélyezte az Automation-fiók felügyelt identitását, és hozzáférést adott egy identitásnak a célerőforráshoz, a runbookokban megadhatja ezt az identitást a felügyelt identitást támogató erőforrásokhoz. Identitástámogatáshoz használja az Az parancsmag parancsmagot Connect-AzAccount
. Tekintse meg a PowerShell-referenciában a Connect-AzAccount szakaszt.
# Ensures you do not inherit an AzContext in your runbook
Disable-AzContextAutosave -Scope Process
# Connect to Azure with system-assigned managed identity
$AzureContext = (Connect-AzAccount -Identity).context
# Set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext
Megjegyzés:
Ha a szervezet továbbra is az elavult AzureRM-parancsmagokat használja, használhatja Connect-AzureRMAccount -Identity
a parancsmagokat.
Hozzáférési jogkivonat létrehozása Azure-parancsmagok használata nélkül
HTTP-végpontok esetén győződjön meg a következőkről.
- A metaadat-fejlécnek jelen kell lennie, és "igaz" értékre kell állítania.
- Egy erőforrást a kéréssel együtt kell átadni a GET-kérés lekérdezési paramétereként és a POST-kérés űrlapadataiként.
- Állítsa a IDENTITY_HEADER környezeti változó értékét X-IDENTITY-HEADER értékre.
- A Post-kérelem tartalomtípusának "application/x-www-form-urlencoded" (alkalmazás/x-www-form-urlencoded) típusúnak kell lennie.
Hozzáférési jogkivonat lekérése a rendszer által hozzárendelt felügyelt identitáshoz a HTTP Get használatával
$resource= "?resource=https://management.azure.com/"
$url = $env:IDENTITY_ENDPOINT + $resource
$Headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$Headers.Add("X-IDENTITY-HEADER", $env:IDENTITY_HEADER)
$Headers.Add("Metadata", "True")
$accessToken = Invoke-RestMethod -Uri $url -Method 'GET' -Headers $Headers
Write-Output $accessToken.access_token
Hozzáférési jogkivonat lekérése a rendszer által hozzárendelt identitáshoz a HTTP Post használatával
$url = $env:IDENTITY_ENDPOINT
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("X-IDENTITY-HEADER", $env:IDENTITY_HEADER)
$headers.Add("Metadata", "True")
$body = @{resource='https://management.azure.com/' }
$accessToken = Invoke-RestMethod $url -Method 'POST' -Headers $headers -ContentType 'application/x-www-form-urlencoded' -Body $body
Write-Output $accessToken.access_token
Rendszer által hozzárendelt felügyelt identitás használata az Azure Key Vault eléréséhez az Azure PowerShellben
További információ: Get-AzKeyVaultSecret.
Write-Output "Connecting to azure via Connect-AzAccount -Identity"
Connect-AzAccount -Identity
Write-Output "Successfully connected with Automation account's Managed Identity"
Write-Output "Trying to fetch value from key vault using MI. Make sure you have given correct access to Managed Identity"
$secret = Get-AzKeyVaultSecret -VaultName '<KVname>' -Name '<KeyName>'
$ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secret.SecretValue)
try {
$secretValueText = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr)
Write-Output $secretValueText
} finally {
[System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)
}
Rendszer által hozzárendelt felügyelt identitás használata a Python Runbookban
#!/usr/bin/env python3
import os
import requests
# printing environment variables
endPoint = os.getenv('IDENTITY_ENDPOINT')+"?resource=https://management.azure.com/"
identityHeader = os.getenv('IDENTITY_HEADER')
payload={}
headers = {
'X-IDENTITY-HEADER': identityHeader,
'Metadata': 'True'
}
response = requests.request("GET", endPoint, headers=headers, data=payload)
print(response.text)
Rendszer által hozzárendelt felügyelt identitás használata az SQL Database-hez való hozzáféréshez
Az Azure SQL-adatbázishoz való hozzáférés kiépítésének részleteiért lásd : Microsoft Entra-rendszergazda (SQL Database) kiépítése.
$queryParameter = "?resource=https://database.windows.net/"
$url = $env:IDENTITY_ENDPOINT + $queryParameter
$Headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$Headers.Add("X-IDENTITY-HEADER", $env:IDENTITY_HEADER)
$Headers.Add("Metadata", "True")
$content =[System.Text.Encoding]::Default.GetString((Invoke-WebRequest -UseBasicParsing -Uri $url -Method 'GET' -Headers $Headers).RawContentStream.ToArray()) | ConvertFrom-Json
$Token = $content.access_token
echo "The managed identities for Azure resources access token is $Token"
$SQLServerName = "<ServerName>" # Azure SQL logical server name
$DatabaseName = "<DBname>" # 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 = $Token
Write-host "Connect to database and execute SQL script"
$conn.Open()
$ddlstmt = "CREATE TABLE Person( PersonId INT IDENTITY PRIMARY KEY, FirstName NVARCHAR(128) NOT NULL)"
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()
Migrálás meglévő futtató fiókokból felügyelt identitásba
Az Azure Automation hitelesítést biztosított az Azure Resource Manager-erőforrások vagy a klasszikus üzemi modellben üzembe helyezett erőforrások futtató fiókkal való kezeléséhez. Ha futtató fiókról felügyelt identitásra szeretne váltani a runbook-hitelesítéshez, kövesse az alábbi lépéseket.
Engedélyezze a rendszer által hozzárendelt, felhasználó által hozzárendelt vagy mindkét típusú felügyelt identitást.
Adja meg a felügyelt identitásnak ugyanazokat a jogosultságokat az Azure-erőforrásoknak, amelyek megfelelnek a futtató fiók hozzárendelésének.
Frissítse a runbookokat a felügyelt identitással való hitelesítéshez.
Módosítsa a runbookokat a felügyelt identitás használatára. Identitástámogatáshoz használja az Az parancsmag parancsmagot
Connect-AzAccount
. Tekintse meg a PowerShell-referenciában a Connect-AzAccount szakaszt.- Ha AzureRM-modulokat használ, frissítsen
AzureRM.Profile
a legújabb verzióra, és cserélje le a parancsmagotAdd-AzureRMAccount
a következőreConnect-AzureRMAccount –Identity
: . - Ha Az-modulokat használ, frissítsen a legújabb verzióra az Azure PowerShell-modulok frissítése című cikk lépéseit követve.
- Ha AzureRM-modulokat használ, frissítsen
Következő lépések
Ha a runbookok nem fejeződnek be sikeresen, tekintse át az Azure Automation által felügyelt identitásproblémák hibaelhárítását.
Ha le kell tiltania egy felügyelt identitást, olvassa el az Azure Automation-fiók felügyelt identitásának letiltása című témakört.
Az Azure Automation-fiók biztonságának áttekintését az Automation-fiókhitelesítés áttekintésében tekintheti meg.
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: