Condividi tramite


Creare, assegnare e usare un'identità gestita assegnata dall'utente

In questa guida pratica si apprenderà come:

  • Creare un'identità gestita assegnata dall'utente da usare con Azure Operator Service Manager (AOSM)
  • Assegnare autorizzazioni UAMI per accedere alle risorse necessarie.
  • Usare un UAMI durante l'esecuzione di operazioni NF (Network Network Function) o SNS (Site Network Service).

Avvertimento

UAMI è obbligatorio in cui un'operazione SNS prevista può essere eseguita per quattro o più ore. Se UAMI non viene usato durante le operazioni SNS a esecuzione prolungata, SNS potrebbe segnalare un falso stato di errore prima del completamento delle operazioni del componente.

Prerequisiti

  • È necessario creare un ruolo personalizzato tramite Crea un ruolo personalizzato. Questo articolo presuppone che il ruolo personalizzato sia chiamato "Ruolo personalizzato - Accesso dell'operatore del servizio AOSM al Publisher".

  • È necessario collaborare con Network Service Designer per comprendere le autorizzazioni richieste dall'identità gestita e la versione NFDV (Network Function Definition Version) usata da SNS.

  • È necessario il ruolo "Proprietario" o "Amministratore accesso utenti" sulla risorsa Versione della definizione della funzione di rete dal Publisher scelto. È inoltre necessario disporre di un gruppo di risorse su cui si dispone dell'assegnazione di ruolo "Proprietario" o "Amministratore accesso utenti".

Creare un UAMI

Creare prima di tutto un UAMI. Per informazioni dettagliate, consultare Creare un'identità gestita assegnata dall'utente per il tuo SNS.

Creare un ruolo personalizzato e assegnarlo a UAMI

Creare quindi un ruolo personalizzato. Per iniziare, considerate l'approccio migliore basato sull'ambito, quindi create e assegnate il ruolo al vostro nuovo UAMI.

Considerazioni sull'ambito per il ruolo personalizzato di un'identità gestita assegnata dall'utente (UAMI)

Al ruolo personalizzato devono essere assegnate autorizzazioni sufficienti per accedere alle risorse utente. Il ruolo personalizzato può essere assegnato a singole risorse figlio, ad esempio un NFDV, per garantire il controllo più granulare. In alternativa, il ruolo personalizzato può avere come ambito una risorsa padre, ad esempio il gruppo di risorse dell'autore, che concede accesso equo a tutte le risorse figlio. Per un funzionamento appropriato, singolarmente o tramite padre, è necessario assegnare tutte le risorse seguenti al ruolo personalizzato:

  • Tutte le versioni e i gruppi di definizioni di funzione di rete (NFDG).
  • Tutte le versioni e la definizione della funzione di rete (NFD).
  • Tutti i gruppi di progettazione dei servizi di rete (NSD) e le versioni.
  • Tutti gli schemi del gruppo di configurazione (CGS) e le versioni.
  • Tutte le posizioni personalizzate.

Consenti autorizzazioni appropriate per l'ambito scelto

L'UAMI necessita delle autorizzazioni individuali seguenti per eseguire le operazioni SNS necessarie:

  • Sul NFD;
    • Microsoft.HybridNetwork/publishers/networkFunctionDefinitionGroups/networkFunctionDefinitionVersions/use/action
    • Microsoft.HybridNetwork/Publishers/NetworkFunctionDefinitionGroups/NetworkFunctionDefinitionVersions/read
  • Sul NSD;
    • Microsoft.HybridNetwork/publishers/networkServiceDesignGroups/networkServiceDesignVersions/use/action
    • Microsoft.HybridNetwork/publishers/networkServiceDesignGroups/networkServiceDesignVersions/read
  • Sul CGS;
    • Microsoft.HybridNetwork/Publishers/ConfigurationGroupSchemas/read
  • Nella posizione personalizzata;
    • Microsoft.ExtendedLocation/customLocations/deploy/action
    • Microsoft.ExtendedLocation/customLocations/read
  • Inoltre, l'identità gestita assegnata dall'utente necessita di accesso diretto;
    • Microsoft.ManagedIdentity/userAssignedIdentities/assign/action

Se si usa un approccio di ambito delle risorse padre, le autorizzazioni necessarie verrebbero applicate alla risorsa padre.

Annotazioni

Non fornire l'accesso in scrittura o eliminazione a nessuna di queste risorse dell'editore.

Assegnare un ruolo personalizzato tramite il portale

  1. Accedere al portale di Azure e aprire l'ambito della risorsa scelto: ad esempio, Gruppo di risorse di pubblicazione o Definizione della funzione di rete versione.

  2. Nel menu laterale di questa voce selezionare Controllo di accesso (IAM).

  3. Scegliere Aggiungi assegnazione di ruolo.

    Screenshot che mostra la pagina di controllo di accesso del gruppo di risorse dell'editore.

  4. In Ruoli funzione lavorativa trova il ruolo personalizzato nell'elenco e quindi procedi con Avanti.

    Screenshot che mostra la schermata di aggiunta dell'assegnazione di ruolo.

  5. Selezionare Identità gestita, quindi Scegliere + Seleziona membri , quindi trovare e scegliere la nuova identità gestita. Scegli Seleziona.

    Screenshot che mostra l'aggiunta di un'assegnazione di ruolo e la selezione delle identità gestite.

  6. Selezionare Rivedi e assegna.

Ripetere l'assegnazione di ruolo

Ripetere il processo di assegnazione dei ruoli per tutte le risorse rimanenti in base all'approccio di ambito scelto.

Assegnare il ruolo di operatore dell'identità gestita tramite il portale

  1. Passare al portale di Azure e cercare Identità gestite.

  2. Seleziona la tua identità dall'elenco delle Identità Gestite.

  3. Nel menu a sinistra selezionare Controllo di accesso (IAM).

  4. Scegliere Aggiungi assegnazione di ruolo e selezionare il ruolo Operatore identità gestita . Screenshot che mostra l'assegnazione del ruolo Operatore identità gestita.

  5. Selezionare il ruolo Operatore di identità gestita.

    Screenshot che mostra il ruolo Operatore identità gestita.

  6. Selezionare Identità gestita.

  7. Seleziona + Seleziona membri e naviga verso l'identità gestita assegnata all'utente e procedi all'assegnazione.

    Screenshot che mostra la schermata Aggiungi assegnazione di ruolo con l'identità gestita selezionata.

Il completamento di tutte le attività descritte in questo articolo garantisce che il servizio di rete del sito disponga delle autorizzazioni necessarie per funzionare in modo efficace all'interno dell'ambiente Azure specificato.

Creare e assegnare autorizzazioni a un'identità gestita assegnata dall'utente tramite Bicep

Le operazioni necessarie per creare e assegnare le autorizzazioni sono supportate anche tramite gli script Bicep. Questo approccio può funzionare meglio quando è necessaria l'automazione di queste operazioni all'interno di una pipeline del flusso di lavoro. L'esempio seguente illustra le operazioni Bicep necessarie per stabilire l'identità gestita assegnata dall'utente con ruoli assegnati minimi. Espandere l'assegnazione di ruolo, se necessario, in base all'approccio di ambito.

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

Utilizzare un'identità gestita assegnata dall'utente con operazioni NF e SNS

Considerazioni sul modello NF

Il modello NF deve essere aggiornato per includere il parametro identityObj. L'esempio JSON seguente illustra l'uso di questo parametro con una configurazione NF generica:

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

Considerazioni sul modello SNS

Il modello SNS deve essere aggiornato per includere il parametro della risorsa identità. Il seguente esempio di Bicep dimostra l'utilizzo di questo parametro con una configurazione generica di 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
      }
    }
  }
}