Een door de gebruiker toegewezen beheerde identiteit maken, toewijzen en gebruiken

In deze handleiding leert u het volgende:

  • Een door de gebruiker toegewezen beheerde identiteit (UAMI) maken voor gebruik met Azure Operator Service Manager (AOSM)
  • Wijs een UAMI-machtigingen toe voor toegang tot vereiste resources.
  • Gebruik een UAMI bij het uitvoeren van netwerkfuncties (NF) of SNS-bewerkingen (Site Network Service).

Waarschuwing

UAMI is vereist wanneer een verwachte SNS-bewerking vier of meer uur kan worden uitgevoerd. Als UAMI niet wordt gebruikt tijdens langdurige SNS-bewerkingen, kan de SNS een fout mislukte status melden voordat onderdeelbewerkingen zijn voltooid.

Vereiste voorwaarden

  • U moet een aangepaste rol maken via Een aangepaste rol maken. In dit artikel wordt ervan uitgegaan dat u de aangepaste rol 'Aangepaste rol - AOSM-serviceoperator toegang tot Publisher' hebt genoemd.

  • U moet samenwerken met uw Network Service Designer om inzicht te hebben in de machtigingen die uw beheerde identiteit vereist en welke NFDV (Network Function Definition Version) uw SNS gebruikt.

  • U hebt de rol 'Eigenaar' of 'Gebruikerstoegangsbeheerder' nodig voor de definitieversie van de netwerkfunctie van de uitgever die u heeft gekozen. U moet ook een resourcegroep hebben waarvoor u de roltoewijzing Eigenaar of Beheerder voor gebruikerstoegang hebt.

Een UAMI maken

Maak eerst een UAMI. Raadpleeg Een door de gebruiker toegewezen beheerde identiteit voor uw SNS maken voor meer informatie.

Een aangepaste rol maken en toewijzen aan UAMI

Maak vervolgens een aangepaste rol. Begin met het overwegen van de beste benadering op basis van bereik en maak en wijs de rol vervolgens toe aan uw nieuwe UAMI.

Bereikoverwegingen voor aangepaste UAMI-rol

Aan de aangepaste rol moeten voldoende machtigingen zijn toegewezen om toegang te krijgen tot gebruikersresources. De aangepaste rol kan worden afgestemd op afzonderlijke onderliggende resources, zoals een NFDV, voor de meest gedetailleerde controle. Of de aangepaste rol kan worden toegepast op een bovenliggende resource, zoals de resourcegroep van de uitgever, die gelijke toegang verleent tot alle onderliggende resources. Voor correcte werking, afzonderlijk of via de bovenliggende structuur, moeten alle onderstaande resources worden toegewezen aan de aangepaste rol.

  • Alle netwerkfunctiedefinitiegroepen (NFDG) en versies.
  • Alle Network Function Definition (NFD) definities en versies.
  • Alle netwerkserviceontwerpgroepen (NSD) en versies.
  • Alle Configuration Group Schemas (CGS) en versies.
  • Alle aangepaste locaties.

De juiste machtigingen voor het gekozen bereik toestaan

De UAMI heeft de volgende afzonderlijke machtigingen nodig om vereiste SNS-bewerkingen uit te voeren:

  • Op de NFD;
    • Microsoft.HybridNetwork/uitgevers/networkFunctieDefinitieGroepen/networkFunctieDefinitieVersies/gebruik/actie
    • Microsoft.HybridNetwork/Publishers/NetworkFunctionDefinitionGroups/NetworkFunctionDefinitionVersions/read
  • Op de NSD;
    • Microsoft.HybridNetwork/publishers/networkServiceDesignGroups/networkServiceDesignVersions/use/action
    • Microsoft.HybridNetwork/publishers/networkServiceDesignGroups/networkServiceDesignVersions/read
  • Op de CGS;
    • Microsoft.HybridNetwork/Publishers/ConfigurationGroupSchemas/read
  • Op de aangepaste locatie;
    • Microsoft.ExtendedLocation/customLocations/deploy/action
    • Microsoft.ExtendedLocation/customLocations/read
  • Bovendien heeft de UAMI toegang op zichzelf nodig;
    • Microsoft.ManagedIdentity/userAssignedIdentities/toewijzen/action

Als u een bovenliggende resourcebereikbenadering gebruikt, worden de vereiste machtigingen toegepast op de bovenliggende resource.

Opmerking

Geef geen schrijf- of verwijdertoegang tot een van deze uitgeversbronnen op.

Aangepaste rol toewijzen via portal

  1. Open de Azure-portal en open het gekozen resourcebereik; Bijvoorbeeld de definitieversie van de publisher-resourcegroep of netwerkfunctie.

  2. Selecteer toegangsbeheer (IAM) in het zijmenu van dit item.

  3. Kies Roltoewijzing toevoegen.

    Schermopname van de pagina toegangsbeheer voor de uitgeverresourcegroep.

  4. Zoek onder Functierollen uw aangepaste rol in de lijst en ga vervolgens verder met Volgende.

    Schermopname van het scherm Roltoewijzing toevoegen.

  5. Selecteer Beheerde identiteit, vervolgens + Leden selecteren, vind en selecteer uw nieuwe beheerde identiteit. Kies en selecteer.

    Schermopname van de roltoewijzing toevoegen en beheerde identiteiten selecteren.

  6. Selecteer Controleren en toewijzen.

De roltoewijzing herhalen

Herhaal het roltoewijzingsproces voor alle resterende resources op basis van de gekozen bereikbenadering.

Rol van operator voor beheerde identiteit toewijzen via de portal

  1. Ga naar Azure Portal en zoek naar beheerde identiteiten.

  2. Selecteer uw identiteit in de lijst met beheerde identiteiten.

  3. Selecteer Toegangsbeheer (IAM) in het zijmenu.

  4. Kies Roltoewijzing toevoegen en selecteer de rol Managed Identity Operator . Schermopname van de rol Managed Identity Operator: roltoewijzing toevoegen.

  5. Selecteer de rol Managed Identity Operator .

    Schermopname van de rol Managed Identity Operator.

  6. Selecteer Beheerde identiteit.

  7. Selecteer + Leden selecteren en navigeer naar de door de gebruiker toegewezen beheerde identiteit en ga verder met de toewijzing.

    Schermopname van het scherm Roltoewijzing toevoegen met Beheerde identiteit geselecteerd.

Het voltooien van alle taken die in dit artikel worden beschreven, zorgt ervoor dat de SNS (Site Network Service) de benodigde machtigingen heeft om effectief te functioneren binnen de opgegeven Azure-omgeving.

Machtigingen creëren en toewijzen aan een UAMI via bicep

De vereiste bewerkingen voor het maken en toewijzen van machtigingen worden ook ondersteund via bicep-scripting. Deze aanpak werkt mogelijk beter wanneer automatisering van deze bewerkingen binnen een werkstroompijplijn nodig is. In het volgende voorbeeld ziet u de bicep-bewerkingen die nodig zijn om de UAMI met minimaal toegewezen rollen tot stand te brengen. Breid zo nodig de roltoewijzing uit op basis van een scopebenadering.

// ----------- 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'
  }
}

Een UAMI gebruiken met NF- en SNS-bewerkingen

Overwegingen voor NF-sjablonen

De NF-sjabloon moet worden bijgewerkt om de parameter identityObj op te nemen. In het volgende JSON-voorbeeld ziet u hoe u deze parameter gebruikt met een algemene NF-installatie:

{
  "$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'))]"
      }
    }
  ]
}

Overwegingen voor SNS-sjablonen

De SNS-sjabloon moet worden bijgewerkt om de id-resourceparameter op te nemen. In het volgende bicep-voorbeeld ziet u hoe u deze parameter gebruikt met een algemene SNS-installatie:

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