Utiliser une identité managée pour accéder à Azure Data Manager for Energy à partir d’autres services Azure
Cet article explique comment accéder au plan de données ou au plan de contrôle d’Azure Data Manager for Energy à partir d’autres services Microsoft Azure à l’aide d’une identité managée.
Il se révèle nécessaire que des services comme Azure Functions puissent utiliser les API Azure Data Manager for Energy. Cette interopérabilité vous permet d’utiliser les meilleures fonctionnalités de plusieurs services Azure.
Par exemple, vous pouvez écrire un script dans Azure Functions pour ingérer des données dans Azure Data Manager for Energy. Dans ce scénario, vous devez supposer qu’Azure Functions est le service source et qu’Azure Data Manager for Energy est le service cible.
Cet article vous guide tout au long des cinq étapes principales pour configurer Azure Functions en vue d’accéder à Azure Data Manager for Energy.
Vue d’ensemble des identités managées
Une identité managée Microsoft Entra ID permet à votre application d’accéder facilement à d’autres ressources protégées par Microsoft Entra. Managée par la plateforme Azure, l’identité ne nécessite pas la création ou la permutation de secrets. Tout service Azure qui souhaite accéder au plan de contrôle ou au plan de données Azure Data Manager for Energy pour une opération peut utiliser une identité managée pour ce faire.
Il existe deux types d’identités managées :
- Le cycle de vie des identités managées affectées par le système est lié à la ressource qui les a créées.
- Les identités managées affectées par l’utilisateur peuvent être utilisées sur plusieurs ressources.
Pour plus d’informations sur les identités managées, consultez Que sont les identités managées pour les ressources Azure ?.
Actuellement, d’autres services peuvent se connecter à Azure Data Manager for Energy à l’aide d’une identité managée affectée par le système ou par l’utilisateur. Toutefois, Azure Data Manager for Energy ne prend pas en charge les identités managées affectées par le système.
Pour le scénario de cet article, vous allez utiliser une identité managée affectée par l’utilisateur dans Azure Functions pour appeler une API de plan de données dans Azure Data Manager for Energy.
Prérequis
Avant de démarrer, créez les ressources suivantes :
Fonction Azure basée sur Python, à l’aide du Portail Azure ou de la ligne de commande
Étape 1 : Récupérer l’ID d’objet
Pour récupérer l’ID d’objet de l’identité affectée par l’utilisateur qui accédera aux API Azure Data Manager for Energy :
- Connectez-vous au portail Azure.
- Accédez à l’identité managée, puis sélectionnez Vue d’ensemble.
- Sous Essentials, notez la valeur de l’ID d’objet (principal).
Étape 2 : Récupérer l’ID d’application
Récupérez l’ID d’application de l’identité affectée par l’utilisateur à l’aide de l’ID d’objet :
- Dans le portail Azure, accédez à Microsoft Entra ID.
- Dans le menu de gauche, sélectionnez Applications d’entreprise.
- Dans la zone Rechercher par nom d’application ou ID d’objet, entrez l’ID d’objet.
- Pour l’application qui apparaît dans les résultats, notez la valeur ID d’application.
Étape 3 : Ajouter l’identité managée affectée par l’utilisateur à Azure Functions
- Accédez à Azure Functions dans le portail Azure.
- Sous Paramètres du compte, sélectionnez Identité.
- Sélectionnez l’onglet Affecté(e) par l’utilisateur, puis Ajouter.
- Sélectionnez votre identité managée affectée par l’utilisateur existante, puis sélectionnez Ajouter. Vous revenez ensuite à l’onglet Affectée par l’utilisateur.
Étape 4 : Ajouter l’ID d’application aux groupes de droits d’utilisation
Ensuite, ajoutez l’ID d’application aux groupes appropriés qui utiliseront le service de droits d’utilisation pour accéder aux API Azure Data Manager for Energy. L’exemple suivant ajoute l’ID d’application à deux groupes :
- users@[partition ID].dataservices.energy
- users.datalake.editors@[partition ID].dataservices.energy
Pour ajouter l’ID d’application :
Rassemblez les informations suivantes :
- ID client
- ID client
- Clè secrète client
- URI Azure Data Manager for Energy
- Data partition ID
- Access token (Jeton d’accès)
- ID d’application de l’identité managée
Utilisez l’API Ajouter un membre pour ajouter l’ID d’application de l’identité managée affectée par l’utilisateur aux groupes de droits d’utilisation appropriés.
Remarque
Dans les commandes suivantes, veillez à utiliser l’ID d’application de l’identité managée et non l’ID d’objet.
Pour ajouter l’ID d’application au groupe users@[ID de partition].dataservices.energy, exécutez la commande cURL suivante via Bash dans Azure :
curl --location --request POST 'https://<Azure Data Manager for Energy URI>/api/entitlements/v2/groups/users@ <data-partition-id>.dataservices.energy/members' \ --header 'data-partition-id: <data-partition-id>' \ --header 'Authorization: Bearer \ --header 'Content-Type: application/json' \ --data-raw '{ "email": "<application ID of the managed identity>", "role": "MEMBER" }'
Voici un exemple de réponse :
{ "email": "<application ID of the managed identity>", "role": "MEMBER" }
Pour ajouter l’ID d’application au groupe users.datalake.editors@[partition ID].dataservices.energy, exécutez la commande cURL suivante via Bash dans Azure :
curl --location --request POST 'https://<Azure Data Manager for Energy URI>/api/entitlements/v2/groups/ users.datalake.editors@ <data-partition-id>.dataservices.energy/members' \ --header 'data-partition-id: <data-partition-id>' \ --header 'Authorization: Bearer \ --header 'Content-Type: application/json' \ --data-raw '{ "email": "<application ID of the managed identity>", "role": "MEMBER" }'
Voici un exemple de réponse :
{ "email": "<application ID of the managed identity>", "role": "MEMBER" }
Étape 5 : Générer un jeton
Maintenant, Azure Functions est prêt à accéder aux API Azure Data Manager for Energy.
La fonction Azure génère un jeton à l’aide de l’identité affectée par l’utilisateur. La fonction utilise l’ID d’application présent dans l’instance Azure Data Manager for Energy lors de la génération du jeton.
Voici un exemple de code de fonction Azure :
import logging
import requests
import azure.functions as func
from msrestazure.azure_active_directory import MSIAuthentication
def main(req: func.HttpRequest) -> str:
logging.info('Python HTTP trigger function processed a request.')
//To authenticate by using a managed identity, you need to pass the Azure Data Manager for Energy application ID as the resource.
//To use a user-assigned identity, you should include the
//client ID as an additional parameter.
//Managed identity using user-assigned identity: MSIAuthentication(client_id, resource)
creds = MSIAuthentication(client_id="<client_id_of_managed_identity>”, resource="<meds_app_id>")
url = "https://<meds-uri>/api/entitlements/v2/groups"
payload = {}
// Passing the data partition ID of Azure Data Manager for Energy in headers along with the token received using the managed instance.
headers = {
'data-partition-id': '<data partition id>',
'Authorization': 'Bearer ' + creds.token["access_token"]
}
response = requests.request("GET", url, headers=headers, data=payload, verify=False)
return response.text
Vous devez obtenir la réponse suivante de Azure Functions :
Une fois les étapes précédentes terminées, vous pouvez utiliser Azure Functions pour accéder aux API Azure Data Manager for Energy avec une utilisation appropriée des identités managées.
Étapes suivantes
En savoir plus sur Lockbox :