Partager via


Créer un rôle personnalisé

Dans ce guide pratique, vous allez apprendre à créer un rôle personnalisé pour les opérateurs de service. Un rôle personnalisé fournit les autorisations nécessaires pour accéder aux ressources du serveur de publication Azure Operator Service Manager (AOSM) lors du déploiement d’un service de réseau de site (SNS).

Prérequis

Contactez votre équipe de compte Microsoft pour inscrire votre abonnement Azure pour accéder à Azure Operator Service Manager (AOSM) ou exprimer votre intérêt via le formulaire d’inscription du partenaire.

Autorisations/actions requises par le rôle personnalisé

  • 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

Décider de l’étendue

Déterminez l’étendue à laquelle vous souhaitez attribuer le rôle :

  • Si les ressources de l’éditeur se trouvent dans un groupe de ressources unique, vous pouvez utiliser l’étendue assignable de ce groupe de ressources.

  • Si les ressources de l’éditeur sont réparties entre plusieurs groupes de ressources au sein d’un seul abonnement, vous devez utiliser l’étendue assignable de cet abonnement.

  • Si les ressources de l’éditeur sont réparties sur plusieurs abonnements, vous devez créer un rôle personnalisé assignable à chacun de ces abonnements.

Créer un rôle personnalisé à l’aide de Bicep

Créez un rôle personnalisé à l’aide de Bicep. Pour plus d’informations, consultez Créer ou mettre à jour des rôles personnalisés Azure à l’aide de Bicep

Par exemple, vous pouvez utiliser l’exemple suivant comme modèle main.bicep. Cet exemple crée le rôle avec une étendue assignable à l’échelle de l’abonnement.

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

Lorsque vous déployez le modèle, il doit être déployé dans le même abonnement que les ressources du serveur de publication.

az login

az account set --subscription <publisher subscription>

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

Créer un rôle personnalisé à l’aide de l’Portail Azure

Créez un rôle personnalisé à l’aide de Portail Azure. Pour plus d’informations, consultez Créer ou mettre à jour des rôles personnalisés Azure à l’aide de Portail Azure

Si vous préférez, vous pouvez spécifier la plupart des valeurs de votre rôle personnalisé dans un fichier JSON.

Exemple de code JSON :

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

Étapes suivantes