Créer un principal du service Azure avec Azure CLI

Les outils automatisés qui utilisent les services Azure doivent toujours disposer d’autorisations restreintes pour garantir la sécurité des ressources Azure. Par conséquent, au lieu de permettre aux applications de se connecter en tant qu’utilisateur pleinement privilégié, Azure propose des principaux de service. Un principal de service Azure est une identité créée pour être utilisée avec des applications, des services hébergés et des outils automatisés. Cette identité est utilisée pour accéder aux ressources.

Dans ce tutoriel, vous allez apprendre à :

  • Créer un principal du service
  • Connectez-vous à l'aide d'un principal de service et d'un mot de passe
  • Connectez-vous à l’aide d’un principal de service et d’un certificat
  • Gérer les rôles du principal de service
  • Créer une ressource Azure à l'aide d'un principal de service
  • Réinitialiser les informations d’identification du principal de service

Prérequis

  • Dans un abonnement, vous devez disposer d'autorisations User Access Administrator ou Role Based Access Control Administrator, ou supérieures, pour créer un principal de service. Pour obtenir la liste des rôles disponibles pour le contrôle d’accès en fonction du rôle Azure (Azure RBAC), consultez Rôles intégrés Azure.

Créer un principal du service

Utilisez la commande de référence az ad sp créer-pour-rbac Azure CLI pour créer un principal de service. Cet exemple ne spécifie pas de paramètre --name, donc un nom contenant un horodatage est automatiquement créé.

az ad sp create-for-rbac

Console de sortie :

{
  "appId": "myAppId",
  "displayName": "myServicePrincipalName",
  "password": "myServicePrincipalPassword",
  "tenant": "myTentantId"
}

Si vous n’adhérez pas aux conventions de dénomination des ressources et envisagez de créer ultérieurement un rôle et une portée pour votre nouveau principal de service, la commande az ad sp create-for-rbac sans paramètres est une solution acceptable. Cependant, sans rôle ni portée, le nouveau principal de service n’a pas accès aux ressources. Cela existe simplement.

Lorsque vous créez un principal de service sans paramètres, procédez également comme suit :

Créer un principal de service avec un rôle et une portée

Il est recommandé d'attribuer toujours un identifiant spécifique --role et --scopes lorsque vous créez un principal de service. Suivez ces étapes :

  1. Déterminez le rôle correct.

    Lors de la détermination du rôle, utilisez toujours le principe du moindre privilège. Par exemple, n’accordez pas à votre principal de service les autorisations contributor sur un abonnement si le principal de service doit uniquement accéder au stockage Azure au sein d’un groupe de ressources. Envisagez un rôle spécialisé tel que contributeur de données d'objets de stockage. Pour obtenir la liste complète des rôles disponibles dans Azure RBAC, consultez Rôles intégrés Azure.

  2. Obtenez une valeur pour le paramètre scopes.

    Recherchez et copiez l’ID de ressource de la ressource Azure à laquelle le nouveau principal de service doit accéder. Ces informations se trouvent généralement dans la page Propriétés ou Points de terminaison du portail Azure de chaque ressource. Voici des exemples --scopes courants, mais comptez sur votre ID de ressource pour un format et une valeur réels.

    Portée Exemple
    Abonnement /subscriptions/mySubscriptionID
    Resource group /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
    Machine virtuelle /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/myVMname
    Service de fichiers de compte de stockage /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Storage/storageAccounts/myStorageAccountName/fileServices/default
    Fabrique de données /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.DataFactory/factories/myDataFactoryName

    Pour plus d’exemples de portée, consultez Comprendre la portée d’Azure RBAC.

  3. Créez le principal de service.

    Dans cet exemple, un nouveau principal de service nommé myServicePrincipalName1 est créé avec des autorisations de lecteur sur toutes les ressources du groupe de ressources RG1.

    # Bash script
    az ad sp create-for-rbac --name myServicePrincipalName1 \
                             --role reader \
                             --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1
    

    Le paramètre --scopes accepte une liste de portées délimitées par des espaces. Dans cet exemple, un nouveau principal de service nommé myServicePrincipalName2 est créé avec des autorisations de lecteur sur toutes les ressources du groupe de ressources myRG1. Ce principal de service reçoit également des autorisations de lecteur sur myVM située dans myRG2.

    # Bash script
    az ad sp create-for-rbac --name myServicePrincipalName2 \
                             --role reader \
                             --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG2/providers/Microsoft.Compute/virtualMachines/myVM
    

Si vous décidez que vous avez accordé trop peu ou trop d'autorisations à votre nouveau principal de service, modifiez les autorisations en gérant les rôles de principal de service.

Créer un principal de service à l'aide de variables

Vous pouvez également créer un principal de service à l'aide de variables :

# Bash script
let "randomIdentifier=$RANDOM*$RANDOM"
servicePrincipalName="msdocs-sp-$randomIdentifier"
roleName="azureRoleName"
subscriptionID=$(az account show --query id --output tsv)
# Verify the ID of the active subscription
echo "Using subscription ID $subscriptionID"
resourceGroup="myResourceGroupName"

echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup"
az ad sp create-for-rbac --name $servicePrincipalName \
                         --role $roleName \
                         --scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup

Pour obtenir la liste complète des propriétés du principal de service, utilisez az ad sp liste et consultez Obtenir un principal de service existant.

Avertissement

Lorsque vous créez un principal de service Azure avec la commande az ad sp create-for-rbac, la sortie contient les informations d’identification que vous devez protéger. Veillez à ne pas inclure ces informations d’identification dans votre code ou vérifiez les informations d’identification dans votre contrôle de code source. Vous pouvez aussi utiliser des identités managées, si elles sont disponibles, pour éviter d’avoir à utiliser les informations d’identification.

Étapes suivantes

Maintenant que vous avez appris à créer un principal de service Azure, passez à l’étape suivante pour savoir comment utiliser les principaux de service avec l’authentification par mot de passe.