Condividi tramite


Creare un ruolo personalizzato

In questa guida pratica si apprenderà come creare un ruolo personalizzato per gli operatori del servizio. Un ruolo personalizzato fornisce le autorizzazioni necessarie per accedere alle risorse del server di pubblicazione di Azure Operator Service Manager (AOSM) durante la distribuzione di un servizio di rete del sito (SNS).

Prerequisiti

Contattare il team dell'account Microsoft per registrare la sottoscrizione di Azure per l'accesso ad Azure Operator Service Manager (AOSM) o esprimere l'interesse tramite il modulo di registrazione del partner.

Autorizzazioni/azioni richieste dal ruolo personalizzato

  • Microsoft.HybridNetwork/Publishers/NetworkFunctionDefinitionGroups/NetworkFunctionDefinitionVersions/use/action

  • Microsoft.HybridNetwork/Publishers/NetworkFunctionDefinitionGroups/NetworkFunctionDefinitionVersions/read

  • Microsoft.HybridNetwork/Publishers/NetworkServiceDesignGroups/NetworkServiceDesignVersions/use/action

  • Microsoft.HybridNetwork/Publishers/NetworkServiceDesignGroups/NetworkServiceDesignVersions/read

  • Microsoft.HybridNetwork/Publishers/ConfigurationGroupSchemas/read

Decidere l'ambito

Decidere l'ambito a cui si vuole assegnare il ruolo:

  • Se le risorse del server di pubblicazione si trovano in un singolo gruppo di risorse, è possibile usare l'ambito assegnabile di tale gruppo di risorse.

  • Se le risorse del server di pubblicazione vengono distribuite tra più gruppi di risorse all'interno di una singola sottoscrizione, è necessario usare l'ambito assegnabile di tale sottoscrizione.

  • Se le risorse del server di pubblicazione vengono distribuite tra più sottoscrizioni, è necessario creare un ruolo personalizzato assegnabile a ognuna di queste sottoscrizioni.

Creare un ruolo personalizzato con Bicep

Creare un ruolo personalizzato usando Bicep. Per altre informazioni, vedere Creare o aggiornare ruoli personalizzati di Azure con Bicep

Ad esempio, è possibile usare l'esempio seguente come modello main.bicep. Questo esempio crea il ruolo con ambito assegnabile a livello di sottoscrizione.

targetScope = 'subscription'

@description('Array of actions for the roleDefinition')
param actions array = [
  'Microsoft.HybridNetwork/Publishers/NetworkFunctionDefinitionGroups/NetworkFunctionDefinitionVersions/use/action'
  'Microsoft.HybridNetwork/Publishers/NetworkFunctionDefinitionGroups/NetworkFunctionDefinitionVersions/read'
  'Microsoft.HybridNetwork/Publishers/NetworkServiceDesignGroups/NetworkServiceDesignVersions/use/action'
  'Microsoft.HybridNetwork/Publishers/NetworkServiceDesignGroups/NetworkServiceDesignVersions/read'
  'Microsoft.HybridNetwork/Publishers/ConfigurationGroupSchemas/read'
]

@description('Array of notActions for the roleDefinition')
param notActions array = []

@description('Friendly name of the role definition')
param roleName string = 'Custom Role - AOSM Service Operator access to Publisher'

@description('Detailed description of the role definition')
param roleDescription string = 'Provides read and use access to AOSM Publisher resources'

var roleDefName = guid(subscription().id, string(actions), string(notActions))

resource roleDef 'Microsoft.Authorization/roleDefinitions@2022-04-01' = {
  name: roleDefName
  properties: {
    roleName: roleName
    description: roleDescription
    type: 'customRole'
    permissions: [
      {
        actions: actions
        notActions: notActions
      }
    ]
    assignableScopes: [
      subscription().id
    ]
  }
}

Quando si distribuisce il modello, deve essere distribuito nella stessa sottoscrizione delle risorse del server di pubblicazione.

az login

az account set --subscription <publisher subscription>

az deployment sub create --location <location> --name customRole --template-file main.bicep 

Creare un ruolo personalizzato usando il portale di Azure

Creare un ruolo personalizzato usando portale di Azure. Per altre informazioni, vedere Creare o aggiornare ruoli personalizzati di Azure usando portale di Azure

Se si preferisce, è possibile specificare la maggior parte dei valori dei ruoli personalizzati in un file JSON.

JSON di esempio:

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.22.6.54827",
      "templateHash": "14238097231376848271"
    }
  },
  "parameters": {
    "actions": {
      "type": "array",
      "defaultValue": [
        "Microsoft.HybridNetwork/Publishers/NetworkFunctionDefinitionGroups/NetworkFunctionDefinitionVersions/use/action",
        "Microsoft.HybridNetwork/Publishers/NetworkFunctionDefinitionGroups/NetworkFunctionDefinitionVersions/read",
        "Microsoft.HybridNetwork/Publishers/NetworkServiceDesignGroups/NetworkServiceDesignVersions/use/action",
        "Microsoft.HybridNetwork/Publishers/NetworkServiceDesignGroups/NetworkServiceDesignVersions/read",
        "Microsoft.HybridNetwork/Publishers/ConfigurationGroupSchemas/read"
      ],
      "metadata": {
        "description": "Array of actions for the roleDefinition"
      }
    },
    "notActions": {
      "type": "array",
      "defaultValue": [],
      "metadata": {
        "description": "Array of notActions for the roleDefinition"
      }
    },
    "roleName": {
      "type": "string",
      "defaultValue": "Custom Role - AOSM Service Operator Role",
      "metadata": {
        "description": "Friendly name of the role definition"
      }
    },
    "roleDescription": {
      "type": "string",
      "defaultValue": "Role Definition for AOSM Service Operator Role",
      "metadata": {
        "description": "Detailed description of the role definition"
      }
    }
  },
  "variables": {
    "roleDefName": "[guid(subscription().id, string(parameters('actions')), string(parameters('notActions')))]"
  },
  "resources": [
    {
      "type": "Microsoft.Authorization/roleDefinitions",
      "apiVersion": "2022-04-01",
      "name": "[variables('roleDefName')]",
      "properties": {
        "roleName": "[parameters('roleName')]",
        "description": "[parameters('roleDescription')]",
        "type": "customRole",
        "permissions": [
          {
            "actions": "[parameters('actions')]",
            "notActions": "[parameters('notActions')]"
          }
        ],
        "assignableScopes": [
          "[subscription().id]"
        ]
      }
    }
  ]
}

Passaggi successivi