Felhasználó által hozzárendelt felügyelt identitás használata Azure Automation-fiókhoz
Ez a cikk bemutatja, hogyan vehet fel felhasználó által hozzárendelt felügyelt identitást 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.
Feljegyzés
Nem használható felhasználó által hozzárendelt felügyelt identitás hibrid runbook-feldolgozón, ha az Automation-fiókhoz létrehozott egy felügyelt identitást (rendszer vagy felhasználó által hozzárendelt). Ha a felügyelt identitás nincs hozzárendelve az Automation-fiókhoz, akkor a virtuális gép rendszer- vagy felhasználó által hozzárendelt felügyelt identitását használhatja egy hibrid runbook-feldolgozón, amely egy Azure-beli virtuális gép a hozzárendelt felügyelt identitásokkal.
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.
A felhasználó által hozzárendelt felügyelt identitás és a runbook által az identitás használatával kezelt cél Azure-erőforrások különböző Azure-előfizetésekben lehetnek.
Az Azure-fiókmodulok legújabb verziója. Jelenleg ez a 2.2.8. (Lásd: Az.Accounts a verzióval kapcsolatos részletekért.)
Egy Azure-erőforrás, amelyet az Automation-runbookból szeretne elérni. Ennek az erőforrásnak rendelkeznie kell egy szerepkörrel a felhasználó által hozzárendelt felügyelt identitáshoz, ami segít az Automation-runbooknak hitelesíteni az erőforráshoz való hozzáférést. Szerepkörök hozzáadásához Önnek az erőforrás tulajdonosának kell lennie a megfelelő Microsoft Entra-bérlőben.
Azure-szerepkör hozzárendeléséhez rendelkeznie
Microsoft.Authorization/roleAssignments/write
kell olyan engedélyekkel, mint például a felhasználói hozzáférés rendszergazdája vagy a tulajdonos.
Felhasználó által hozzárendelt felügyelt identitás hozzáadása az Azure Automation-fiókhoz
Az Azure Automation-fiókhoz felhasználó által hozzárendelt felügyelt identitást az Azure Portal, a PowerShell, az Azure REST API vagy az ARM-sablon használatával vehet fel. A PowerShellt érintő példák esetében először jelentkezzen be interaktívan az Azure-ba a Connect-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"
$userAssignedOne = "userAssignedIdentityOne"
$userAssignedTwo = "userAssignedIdentityTwo"
Hozzáadás az Azure Portal használatával
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.
Válassza a Felhasználó által hozzárendelt lapot, majd válassza a Hozzáadás lehetőséget.
Válassza ki a meglévő felhasználó által hozzárendelt felügyelt identitást, majd válassza a Hozzáadás lehetőséget. Ezután visszakerül a Felhasználó által hozzárendelt lapra.
Hozzáadás a PowerShell használatával
A Felhasználó által hozzárendelt felügyelt identitások hozzáadásához használja a Set-AzAutomationAccount PowerShell-parancsmagot. Először meg kell állapítani, hogy létezik-e rendszer által hozzárendelt felügyelt identitás. Az alábbi példa a következőt mutatja be: két meglévő, felhasználó által hozzárendelt felügyelt identitás hozzáadása egy meglévő Automation-fiókhoz, és a rendszer által hozzárendelt felügyelt identitás letiltása, ha már létezik egy.
$output = Set-AzAutomationAccount `
-ResourceGroupName $resourceGroup `
-Name $automationAccount `
-AssignUserIdentity "/subscriptions/$subscriptionID/resourcegroups/$resourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$userAssignedOne", `
"/subscriptions/$subscriptionID/resourcegroups/$resourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$userAssignedTwo"
$output
Ha szeretné megtartani a meglévő, rendszer által hozzárendelt felügyelt identitást, tegye a következőket:
$output = Set-AzAutomationAccount `
-ResourceGroupName $resourceGroup `
-Name $automationAccount `
-AssignUserIdentity "/subscriptions/$subscriptionID/resourcegroups/$resourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$userAssignedOne", `
"/subscriptions/$subscriptionID/resourcegroups/$resourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$userAssignedTwo" `
-AssignSystemIdentity
$output
A kimenetnek a következőképpen kell kinéznie:
További kimenet esetén hajtsa végre a következőt: $output.identity | ConvertTo-Json
.
Hozzáadás REST API használatával
A szintaxis és a példalépések az alábbiakban találhatók.
Syntax
Az alábbi mintatörzs szintaxisa lehetővé teszi a rendszer által hozzárendelt felügyelt identitást, ha még nincs engedélyezve, és két meglévő, felhasználó által hozzárendelt felügyelt identitást rendel a meglévő Automation-fiókhoz.
JAVÍTÁS
{
"identity": {
"type": "SystemAssigned, UserAssigned",
"userAssignedIdentities": {
"/subscriptions/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0/resourceGroups/resource-group-name/providers/Microsoft.ManagedIdentity/userAssignedIdentities/firstIdentity": {},
"/subscriptions/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0/resourceGroups/resource-group-name/providers/Microsoft.ManagedIdentity/userAssignedIdentities/secondIdentity": {}
}
}
}
Az API szintaxisa a következő:
https://management.azure.com/subscriptions/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0/resourceGroups/resource-group-name/providers/Microsoft.Automation/automationAccounts/automation-account-name?api-version=2020-01-13-preview
Példa
Hajtsa végre a következő lépéseket.
Módosítsa a fenti szövegtörzs szintaxisát egy elnevezett
body_ua.json
fájlba. Mentse a fájlt a helyi gépen vagy egy Azure Storage-fiókban.Módosítsa az alábbi változó értékét, majd hajtsa végre.
$file = "path\body_ua.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:
{ "type": "SystemAssigned, UserAssigned", "principalId": "ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0", "tenantId": "ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0", "userAssignedIdentities": { "/subscriptions/ContosoID/resourcegroups/ContosoLab/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ContosoUAMI1": { "PrincipalId": "ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0", "ClientId": "00001111-aaaa-2222-bbbb-3333cccc4444" }, "/subscriptions/ContosoID/resourcegroups/ContosoLab/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ContosoUAMI2": { "PrincipalId": "ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0", "ClientId": "00001111-aaaa-2222-bbbb-3333cccc4444" } } }
Hozzáadás ARM-sablonnal
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ások használatát, ha még nincs engedélyezve, és két meglévő felhasználó által hozzárendelt felügyelt identitást rendel a meglévő Automation-fiókhoz.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"automationAccountName": {
"defaultValue": "YourAutomationAccount",
"type": "String",
"metadata": {
"description": "Automation account name"
}
},
"userAssignedOne": {
"defaultValue": "userAssignedOne",
"type": "String",
"metadata": {
"description": "User-assigned managed identity"
}
},
"userAssignedTwo": {
"defaultValue": "userAssignedTwo",
"type": "String",
"metadata": {
"description": "User-assigned managed identity"
}
}
},
"resources": [
{
"type": "Microsoft.Automation/automationAccounts",
"apiVersion": "2020-01-13-preview",
"name": "[parameters('automationAccountName')]",
"location": "[resourceGroup().location]",
"identity": {
"type": "SystemAssigned, UserAssigned",
"userAssignedIdentities": {
"[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',parameters('userAssignedOne'))]": {},
"[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',parameters('userAssignedTwo'))]": {}
}
},
"properties": {
"sku": {
"name": "Basic"
},
"encryption": {
"keySource": "Microsoft.Automation",
"identity": {}
}
}
}
]
}
Példa
Hajtsa végre a következő lépéseket.
Másolja és illessze be a sablont egy nevű
template_ua.json
fájlba. Mentse a fájlt a helyi gépen vagy egy Azure Storage-fiókban.Módosítsa az alábbi változó értékét, majd hajtsa végre.
$templateFile = "path\template_ua.json"
A sablon üzembe helyezéséhez használja a New-AzResourceGroupDeployment PowerShell-parancsmagot.
New-AzResourceGroupDeployment ` -Name "UserAssignedDeployment" ` -ResourceGroupName $resourceGroup ` -TemplateFile $templateFile ` -automationAccountName $automationAccount ` -userAssignedOne $userAssignedOne ` -userAssignedTwo $userAssignedTwo
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 felhasználó által hozzárendelt felügyelt identitáshoz
Az Automation-fiók a felhasználóhoz rendelt kezelt identitással tokeneket szerezhet a Microsoft Entra ID által védett más erőforrásokhoz, például az Azure Key Vaulthoz való hozzáféréshez. 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 felhasználó által hozzárendelt felügyelt identitást a hitelesítéshez, állítsa be az identitáshoz való hozzáférést azon az Azure-erőforráson, 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á.
Ez a 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ásához. A közreműködői szerepkört példaként használjuk, és előfordulhat, hogy az Ön esetében nem szükséges. Másik lehetőségként hozzárendelheti a szerepkört a cél Azure-erőforráshoz az Azure Portalon.
New-AzRoleAssignment `
-ObjectId <automation-Identity-object-id> `
-Scope "/subscriptions/<subscription-id>" `
-RoleDefinitionName "Contributor"
Szerepkör-hozzárendelés ellenőrzése felhasználó által felügyelt identitáshoz
Ha ellenőrizni szeretné az Automation-fiók egyik felhasználó á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, Felhasználó által hozzárendelt lehetőséget.
Kattintson a Felhasználó által hozzárendelt identitás nevére.
Ha a szerepkörök már hozzá vannak rendelve a kiválasztott, felhasználó á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áshoz hozzárendelődik a a kiválasztott hatókörhöz tartozó szerepkör.
Hozzáférés hitelesítése felhasználó által hozzárendelt felügyelt identitással
Miután engedélyezte az Automation-fiók felhasználó által hozzárendelt 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. Az identitás támogatásához használja a Connect-AzAccount Az parancsmagot.
# Ensures you do not inherit an AzContext in your runbook
Disable-AzContextAutosave -Scope Process
# Connect to Azure with user-assigned managed identity
$AzureContext = (Connect-AzAccount -Identity -AccountId <user-assigned-identity-ClientId>).context
# set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext
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 meg kell lennie
application/x-www-form-urlencoded
.
Hozzáférési jogkivonat lekérése felhasználó által hozzárendelt felügyelt identitáshoz a HTTP Get használatával
$resource= "?resource=https://management.azure.com/"
$client_id="&client_id=<ClientId of USI>"
$url = $env:IDENTITY_ENDPOINT + $resource + $client_id
$Headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$Headers.Add("Metadata", "True")
$headers.Add("X-IDENTITY-HEADER", $env:IDENTITY_HEADER)
$accessToken = Invoke-RestMethod -Uri $url -Method 'GET' -Headers $Headers
Write-Output $accessToken.access_token
Hozzáférési jogkivonat lekérése felhasználó által hozzárendelt felügyelt identitáshoz a HTTP Post használatával
$url = $env:IDENTITY_ENDPOINT
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Metadata", "True")
$headers.Add("X-IDENTITY-HEADER", $env:IDENTITY_HEADER)
$body = @{'resource'='https://management.azure.com/'
'client_id'='<ClientId of USI>'}
$accessToken = Invoke-RestMethod $url -Method 'POST' -Headers $headers -ContentType 'application/x-www-form-urlencoded' -Body $body
Write-Output $accessToken.access_token
Felhasználó által hozzárendelt felügyelt identitás használata az Azure PowerShellben
Write-Output "Connecting to azure via Connect-AzAccount -Identity -AccountId <ClientId of USI>"
Connect-AzAccount -Identity -AccountId <ClientId of USI>
Write-Output "Successfully connected with Automation account's Managed Identity"
Write-Output "Trying to fetch value from key vault using User Assigned Managed identity. 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)
}
Felhasználó által hozzárendelt felügyelt identitás használata a Python Runbookban
#!/usr/bin/env python3
import os
import requests
resource = "?resource=https://management.azure.com/"
client_id = "&client_id=<ClientId of USI>"
endPoint = os.getenv('IDENTITY_ENDPOINT')+ resource +client_id
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)
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.