Sdílet prostřednictvím


Vytvoření, přiřazení a použití spravované identity přiřazené uživatelem

V tomto průvodci postupy se naučíte:

  • Vytvoření spravované identity přiřazené uživatelem (UAMI) pro použití s Azure Operator Service Managerem (AOSM)
  • Přiřaďte oprávnění UAMI pro přístup k požadovaným prostředkům.
  • Při provádění síťových funkcí (NF) nebo SNS (Site Network Service) použijte UAMI.

Výstraha

UAMI se vyžaduje, když očekávaná operace SNS může běžet čtyři nebo více hodin. Pokud se UAMI nepoužívá během dlouhotrvajících operací SNS, může služba SNS hlásit falešně neúspěšný stav před dokončením operací součástí.

Požadavky

  • Vlastní roli musíte vytvořit prostřednictvím možnosti Vytvořit vlastní roli. Tento článek předpokládá, že jste pojmenovali vlastní roli Vlastní role – Přístup operátora služby AOSM k Publisheru.

  • Musíte pracovat se službou Network Service Designer, abyste porozuměli oprávněním, která vaše spravovaná identita vyžaduje a jakou verzi definice síťové funkce (NFDV) používá SNS.

  • U prostředku verze definice síťové funkce z vybraného vydavatele potřebujete roli Vlastník nebo Správce uživatelských přístupů. Musíte mít také skupinu prostředků, u které máte přiřazenou roli Vlastník nebo Správce uživatelských přístupů.

Vytvořte UAMI

Nejprve vytvořte UAMI. Podrobnosti najdete v tématu Vytvoření spravované identity přiřazené uživatelem pro váš SNS .

Vytvoření vlastní role a přiřazení k UAMI

Dále vytvořte vlastní roli. Začněte zvážením nejlepšího přístupu založeného na rozsahu, poté vytvořte roli a přiřaďte ji k novému UAMI.

Úvahy o rozsahu pro vlastní roli UAMI

Vlastní role musí mít přiřazená dostatečná oprávnění pro přístup k uživatelským prostředkům. Vlastní role může být vymezena na jednotlivé podřízené prostředky, jako je NFDV, pro nejpodrobnější řízení. Nebo vlastní role může být oborem nadřazeného prostředku, například skupiny prostředků vydavatele, která uděluje rovný přístup ke všem podřízeným prostředkům. Pro správnou funkci, a to buď jednotlivě, nebo prostřednictvím nadřazeného objektu, musí být všechny následující prostředky přiřazeny vlastní roli:

  • Všechny skupiny definic síťových funkcí (NFDG) a verze.
  • Všechny definice síťových funkcí (NFD) a jejich verze.
  • Všechny skupiny návrhu síťových služeb (NSD) a verze.
  • Schémata konfiguračních skupin (CGS) a jejich verze.
  • Všechny vlastní lokace.

Povolit správná oprávnění pro vybraný obor

K provedení požadovaných operací SNS potřebuje UAMI následující jednotlivá oprávnění:

  • Na NFD;
    • Microsoft.HybridNetwork/publishers/networkFunctionDefinitionGroups/networkFunctionDefinitionVersions/use/action
    • Microsoft.HybridNetwork/Publishers/NetworkFunctionDefinitionGroups/NetworkFunctionDefinitionVersions/read
  • Na NSD
    • Microsoft.HybridNetwork/publishers/networkServiceDesignGroups/networkServiceDesignVersions/use/action
    • Microsoft.HybridNetwork/publishers/networkServiceDesignGroups/networkServiceDesignVersions/read
  • Na CGS
    • Microsoft.HybridNetwork/Publishers/ConfigurationGroupSchemas/číst
  • Na míru upravené místo;
    • Microsoft.ExtendedLocation/customLocations/deploy/action
    • Microsoft.ExtendedLocation/customLocations/read
  • Kromě toho UAMI potřebuje vlastní přístup.
    • Microsoft.ManagedIdentity/userAssignedIdentities/přiřadit/action

Pokud používáte přístup s nadřazeným oborem prostředků, požadovaná oprávnění se použijí u nadřazeného prostředku.

Poznámka:

Nezadávejte přístup k zápisu ani odstraňování žádných z těchto prostředků vydavatele.

Přiřazení vlastní role prostřednictvím portálu

  1. Přistupte k portálu Azure a otevřete zvolený obor prostředků: například skupina prostředků vydavatele nebo verze definice síťové funkce.

  2. V boční nabídce této položky vyberte Řízení přístupu (IAM).

  3. Zvolte Přidat přiřazení role.

    Snímek obrazovky zobrazující stránku řízení přístupu ke skupině prostředků vydavatele

  4. V části Role funkce úlohy nalezte svou vlastní roli v seznamu a pokračujte kliknutím na Další.

    Snímek obrazovky znázorňující obrazovku pro přidání přiřazení role

  5. Vyberte Spravovanou identitu, pak zvolte + Vybrat členy a pak vyhledejte a zvolte novou spravovanou identitu. Zvolte Vybrat.

    Snímek obrazovky znázorňující přidání přiřazení role a výběr spravovaných identit

  6. Vyberte Zkontrolovat a přiřadit.

Opakování přiřazení role

Opakujte proces přiřazování rolí pro všechny zbývající prostředky vzhledem ke zvolenému přístupu k rozsahu.

Přiřazení role operátora pro řízenou identitu prostřednictvím portálu

  1. Přejděte na web Azure Portal a vyhledejte spravované identity.

  2. Ze seznamu spravovaných identit vyberte svou identitu.

  3. V boční nabídce vyberte Řízení přístupu (IAM).

  4. Zvolte Přidat přiřazení role a vyberte roli operátora spravované identity . Snímek obrazovky zobrazující přiřazení role operátora spravované identity.

  5. Vyberte roli operátora spravované identity .

    Snímek obrazovky znázorňující roli Operátor spravované identity

  6. Vyberte Spravovaná identita.

  7. Vyberte + Přidat členy a přejděte k uživatelsky přiřazené spravované identitě a pokračujte přiřazením.

    Snímek obrazovky zobrazující obrazovku pro přidání přiřazení role s vybranou spravovanou identitou.

Dokončení všech úkolů popsaných v tomto článku zajistí, že služba SNS (Site Network Service) má potřebná oprávnění k efektivnímu fungování v rámci zadaného prostředí Azure.

Vytvořte a přiřaďte oprávnění UAMI prostřednictvím bicep

Požadované operace k vytvoření a přiřazení oprávnění jsou také podporovány skriptováním pomocí Bicep. Tento přístup může fungovat lépe, když je potřeba automatizovat tyto operace v kanálu pracovního postupu. Následující příklad ukazuje operace bicep potřebné k vytvoření UAMI s minimálními přiřazenými rolemi. Podle potřeby rozšiřte přiřazení rolí na základě přístupu ke správě rozsahu.

// ----------- MIO Role Definition -----------
// This role is used to assign the Managed Identity Operator role to the User Assigned Managed Identity (UAMI).
@description('This is the built-in MIO role. See https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#managed-identity-operator')
resource MIORoleDefinition 'Microsoft.Authorization/roleDefinitions@2018-01-01-preview' existing = {
  scope: managedIdentity
  name: 'f1a07417-d97a-45cb-824c-7a7467783830'
}

// This role is used to assign the Contributor role to the User Assigned Managed Identity (UAMI) at the resource group level.
resource ContributorRoleDefinition 'Microsoft.Authorization/roleDefinitions@2018-01-01-preview' existing = {
  scope: subscription()
  name: 'b24988ac-6180-42a0-ab88-20f7382dd24c'
}

// Assign the Managed Identity Operator role to the User Assigned Managed Identity (UAMI) at the scope of the managed identity.
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = {
  name: guid(resourceGroup().id, principalId, MIORoleDefinition.id)
  scope: managedIdentity
  properties: {
    roleDefinitionId: MIORoleDefinition.id
    principalId: managedIdentity.properties.principalId
    principalType: 'ServicePrincipal'
  }
}
// Get reference to the target resource group
resource targetRg 'Microsoft.Resources/resourceGroups@2022-09-01' existing = {
  name: 'publisherResourceGroupName' // Replace with the actual resource group name
  scope: subscription('subscriptionId')
}

// Assign the Contributor role to the User Assigned Managed Identity (UAMI) at the scope of the publisher resource group.
resource roleAssignmentContributor 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = {
  name: guid(resourceGroup().id, principalId, ContributorRoleDefinition.id)
  scope: targetRg
  properties: {
    roleDefinitionId: ContributorRoleDefinition.id
    principalId: managedIdentity.properties.principalId
    principalType: 'ServicePrincipal'
  }
}

Použijte UAMI pro operace NF a SNS

Úvahy o šablonách NF

Šablona NF musí být aktualizována tak, aby zahrnovala parametr identityObj. Následující příklad JSON ukazuje použití tohoto parametru s obecným nastavením NF:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "nameValue": {
      "type": "string",
      "defaultValue": "[concat('anf-', substring(uniqueString(deployment().name), 0, 6))]"
    },
    "locationValue": {
      "type": "string",
      "defaultValue": "eastus2euap"
    },
    "nfviTypeValue": {
      "type": "string",
      "defaultValue": "AzureArcKubernetes"
    },
    "nfviIdValue": {
      "type": "string"
    },
    "config": {
      "type": "object",
      "defaultValue": {}
    },
    "nfdvId": {
      "type": "string"
    },
    "identityObj": {
      "type": "object",
      "defaultValue": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
          "/subscriptions/<subscriptionId>/resourceGroups/<rgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<uaminame>": {}
        }
      }
    }
  },
  "variables": {
    "deploymentValuesValue": "[string(createObject('role1releasenamespace', parameters('config').role1releasenamespace, 'role1releasename',parameters('config').role1releasename, 'role2releasenamespace', parameters('config').role2releasenamespace, 'role2releasename',parameters('config').role2releasename,'role3releasenamespace', parameters('config').role3releasenamespace, 'role3releasename',parameters('config').role3releasename))]",
    "nfName": "[concat(parameters('nameValue'), '-CNF')]"
  },
  "resources": [
    {
      "type": "Microsoft.HybridNetwork/networkFunctions",
      "apiVersion": "2024-04-15",
      "name": "[variables('nfName')]",
      "location": "[parameters('locationValue')]",
      "identity": "[parameters('identityObj')]",
      "properties": {
        "networkFunctionDefinitionVersionResourceReference": {
          "id": "[parameters('nfdvId')]",
          "idType": "Open"
        },
        "nfviType": "[parameters('nfviTypeValue')]",
        "nfviId": "[parameters('nfviIdValue')]",
        "allowSoftwareUpdate": true,
        "configurationType": "Secret",
        "secretDeploymentValues": "[string(variables('deploymentValuesValue'))]"
      }
    }
  ]
}

Důležité informace o šablonách SNS

Šablona SNS musí být aktualizována tak, aby zahrnovala parametr prostředku identity. Následující příklad použití Bicep demonstruje využití tohoto parametru s obecným nastavením služby SNS.

resource azCoreSnsUAMI 'Microsoft.HybridNetwork/sitenetworkservices@2023-09-01' = {
  name: snsNameUAMI
  location: location
  sku: {
    name: 'Standard'
  }
  identity:  {
    type: 'UserAssigned'
    userAssignedIdentities: {
     '${managedIdentity.id}': {} 
    }
  }
  properties: {
    siteReference: {
      id: azCoreSite.id
    }
    networkServiceDesignVersionResourceReference: {
        id: nsdv.id
        idType: 'Open'
    }
    desiredStateConfigurationGroupValueReferences: {
      Test_Configuration: {
        id: azCoreCgv.id
      }
      Secret_Configuration:{
        id:azCoreCgvSecret.id
      }
    }
  }
}