Comment utiliser un principal de service pour s’authentifier dans votre espace de travail Azure Quantum

Il n’est pas toujours pertinent d’utiliser l’authentification interactive ni de s’authentifier en tant que compte d’utilisateur, par exemple pour envoyer des travaux à partir d’un service web, d’un autre rôle de travail ou d’un système automatisé. Une option consiste à configurer une identité managé. Une autre option consiste à utiliser un principal de service, comme l’explique cet article.

Prérequis : Création d’un principal de service et d’un secret d’application

Pour pouvoir vous authentifier en tant que principal de service, vous devez commencer par créer un principal de service.

Pour créer un principal du service, attribuer l’accès et générer des informations d’identification, procédez comme suit :

  1. Créer une application Azure AD :

    Remarque

    Il n’est pas nécessaire de définir un URI de redirection.

    1. Ensuite, écrivez les valeurs ID d’application (client) et ID de répertoire (locataire).
  2. Créez des informations d’identification pour vous connecter sous l’identité de l’application :

    1. Dans les paramètres de votre application, sélectionnez Certificats et secrets.
    2. Sous Clés secrètes client, sélectionnez Créer un secret.
    3. Indiquez une description et une durée, puis sélectionnez Ajouter.
    4. Copiez immédiatement la valeur du secret dans un endroit sûr. Vous ne la verrez plus ensuite.
  3. Accordez au principal de service les autorisations nécessaires pour accéder à votre espace de travail :

    1. Ouvrez le portail Azure.
    2. Dans la barre de recherche, entrez le nom du groupe de ressources dans lequel vous avez créé votre espace de travail. Sélectionnez le groupe de ressources lorsqu’il apparaît dans les résultats.
    3. Dans la vue d’ensemble du groupe de ressources, sélectionnez Contrôle d’accès (IAM).
    4. Sélectionnez Ajouter une attribution de rôle.
    5. Recherchez, puis sélectionnez le principal de service.
    6. Attribuez-lui le rôle Contributeur ou Propriétaire.

Remarque

Pour créer une attribution de rôle sur le groupe de ressources ou l’espace de travail, vous devez être un propriétaire ou un administrateur de l’accès utilisateur au niveau de l’attribution de rôle. Si vous ne disposez pas des autorisations nécessaires pour créer le principal de service dans votre abonnement, vous devez demander l’autorisation du propriétaire ou de l’administrateur de l’abonnement Azure.

Si vous disposez d’autorisations uniquement au niveau du groupe de ressources ou de l’espace de travail, vous pouvez essayer de créer le principal de service dans le rôle de contributeur en utilisant :

az ad sp create-for-rbac --role Contributor --scopes /subscriptions/<SUBSCRIPTION-ID>

Authentification comme principal de service

Option 1 : utilisation de variables d’environnement : DefaultAzureCredential comprend les informations d’identification par défaut utilisées lors de la création de l’objet Workspace et tente plusieurs types d’authentification. En premier, vous avez EnvironmentCredential. Passez les informations d’identification du principal de service par le biais des variables d’environnement suivantes :

  • AZURE_TENANT_ID : ID du locataire du principal de service. Également appelé ID d’annuaire.
  • AZURE_CLIENT_ID : ID client du principal de service.
  • AZURE_CLIENT_SECRET : l’un des secrets client du principal de service.

Option 2 : utilisation de ClientSecretCredential : passez ClientSecretCredential pendant l’instanciation de l’objet Workspace ou définissez la propriété credentials.

from azure.identity import ClientSecretCredential

tenant_id = os.environ["AZURE_TENANT_ID"]
client_id = os.environ["AZURE_CLIENT_ID"]
client_secret = os.environ["AZURE_CLIENT_SECRET"]
credential = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)

workspace.credentials = credential

Remarque

La méthode workspace.login() a été dépréciée et n’est plus nécessaire. Lors du premier appel au service, une authentification est tentée à l’aide des informations d’identification passées dans le constructeur Workspace ou sa propriété credentials. En l’absence d’informations d’identification passées, plusieurs méthodes d’authentification sont tentées par DefaultAzureCredential.