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 est nécessaire que des services tels qu’Azure Functions puissent consommer des 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 Azure Data Manager for Energy est le service cible.
Cet article vous guide tout au long des cinq étapes principales de configuration d’Azure Functions pour accéder à Azure Data Manager for Energy.
Vue d’ensemble des identités managées
Une identité managée à partir de l’ID Microsoft Entra permet à votre application d’accéder facilement à d’autres ressources protégées par Microsoft Entra. L’identité est gérée par la plateforme Azure et ne vous oblige pas à créer ou à faire pivoter des secrets. Tout service Azure qui souhaite accéder au plan de contrôle d’énergie Ou au plan de données Azure Data Manager pour n’importe quelle opération peut utiliser une identité managée pour ce faire.
Il existe deux types d’identités administrées :
- Les identités managées affectées par le système ont leur cycle de vie 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 affectée 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ède 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 d’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 de l’application.
Étape 3 : Ajouter l’identité managée affectée par l’utilisateur à Azure Functions
- Dans la Portail Azure, accédez à votre fonction 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 êtes ensuite retourné à l’onglet Affecté 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 pour Energy. L’exemple suivant ajoute l’ID d’application à deux groupes :
- users@[ID de partition].dataservices.energy
- users.datalake.editors@[ID de partition].dataservices.energy
Pour ajouter l’ID d’application :
Rassemblez les informations suivantes :
- Tenant ID
- ID client
- Question secrète du client
- URI Azure Data Manager pour l’énergie
- ID de partition de données
- 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 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@[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.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
Azure Functions est maintenant 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 à partir d’Azure Functions :
Avec les étapes précédentes terminées, vous pouvez désormais utiliser Azure Functions pour accéder aux API Azure Data Manager for Energy avec l’utilisation appropriée des identités managées.
Étapes suivantes
En savoir plus sur Lockbox :