Megosztás a következőn keresztül:


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 rendelkeznieMicrosoft.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:

  1. Jelentkezzen be az Azure Portalra.

  2. Az Azure Portalon lépjen az Automation-fiókjához.

  3. A Fiókbeállítások területen válassza az Identitás lehetőséget.

  4. Á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.

    Enabling system-assigned identity in Azure portal.

    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.

    Managed identity object ID.

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:

Output from set-azautomationaccount command.

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.

  1. Másolja és illessze be a szövegtörzs szintaxisát egy nevesített body_sa.jsonfájlba. Mentse a fájlt a helyi gépen vagy egy Azure Storage-fiókban.

  2. Frissítse az alábbi változó értékét, majd hajtsa végre.

    $file = "path\body_sa.json"
    
  3. 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.

  1. Módosítsa a fenti sablon szintaxisát az Automation-fiók használatához, és mentse azt egy nevesített template_sa.jsonfájlba.

  2. Frissítse az alábbi változó értékét, majd hajtsa végre.

    $templateFile = "path\template_sa.json"
    
  3. 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:

  1. Jelentkezzen be az Azure Portalra.

  2. Lépjen az Automation-fiókhoz.

  3. A Fiókbeállítások területen válassza az Identitás lehetőséget.

    Assigning role in system-assigned identity in Azure portal.

  4. 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.

    View role-assignments that you have permission in Azure portal.

  5. 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.

  6. Kattintson a Szerepkör-hozzárendelés hozzáadása (előzetes verzió) elemre

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

  8. A Szerepkör legördülő listában válasszon ki egy szerepkört virtuálisgép-közreműködőként.

  9. Kattintson a Mentés gombra.

    Add a role assignment in Azure portal.

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 -Identitya 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.

  1. Engedélyezze a rendszer által hozzárendelt, felhasználó által hozzárendelt vagy mindkét típusú felügyelt identitást.

  2. 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.

  3. Frissítse a runbookokat a felügyelt identitással való hitelesítéshez.

  4. 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 parancsmagot Add-AzureRMAccount a következőre Connect-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.

Következő lépések