Använda en hanterad identitet för att få åtkomst till Azure Data Manager for Energy från andra Azure-tjänster
I den här artikeln beskrivs hur du kommer åt dataplanet eller kontrollplanet i Azure Data Manager for Energy från andra Microsoft Azure-tjänster med hjälp av en hanterad identitet.
Det finns ett behov av att tjänster som Azure Functions kan använda Azure Data Manager för energi-API:er. Med den här samverkan kan du använda de bästa funktionerna i flera Azure-tjänster.
Du kan till exempel skriva ett skript i Azure Functions för att mata in data i Azure Data Manager for Energy. I det scenariot bör du anta att Azure Functions är källtjänsten och att Azure Data Manager for Energy är måltjänsten.
Den här artikeln beskriver de fem huvudstegen för att konfigurera Azure Functions för åtkomst till Azure Data Manager for Energy.
Översikt över hanterade identiteter
Med en hanterad identitet från Microsoft Entra-ID kan ditt program enkelt komma åt andra Microsoft Entra-skyddade resurser. Identiteten hanteras av Azure-plattformen och kräver inte att du skapar eller roterar några hemligheter. Alla Azure-tjänster som vill få åtkomst till Azure Data Manager för energikontrollplan eller dataplan för alla åtgärder kan använda en hanterad identitet för att göra det.
Det finns två typer av hanterade identiteter:
- Systemtilldelade hanterade identiteter har sin livscykel kopplad till resursen som skapade dem.
- Användartilldelade hanterade identiteter kan användas på flera resurser.
Mer information om hanterade identiteter finns i Vad är hanterade identiteter för Azure-resurser?.
För närvarande kan andra tjänster ansluta till Azure Data Manager for Energy med hjälp av en systemtilldelad eller användartilldelad hanterad identitet. Azure Data Manager for Energy stöder dock inte systemtilldelade hanterade identiteter.
För scenariot i den här artikeln använder du en användartilldelad hanterad identitet i Azure Functions för att anropa ett API för dataplanet i Azure Data Manager för Energy.
Förutsättningar
Innan du börjar skapar du följande resurser:
Python-baserad Azure-funktion med hjälp av Azure Portal eller kommandoraden
Steg 1: Hämta objekt-ID:t
Så här hämtar du objekt-ID:t för den användartilldelade identiteten som kommer åt Azure Data Manager for Energy-API:erna:
- Logga in på Azure-portalen.
- Gå till den hanterade identiteten och välj sedan Översikt.
- Under Essentials noterar du värdet för objekt-ID (huvudnamn).
Steg 2: Hämta program-ID:t
Hämta program-ID:t för den användartilldelade identiteten med hjälp av objekt-ID:t:
- I Azure Portal går du till Microsoft Entra-ID.
- Välj Företagsprogram på den vänstra menyn.
- I rutan Sök efter programnamn eller objekt-ID anger du objekt-ID:t.
- Observera värdet program-ID för det program som visas i resultatet.
Steg 3: Lägg till den användartilldelade hanterade identiteten i Azure Functions
- I Azure Portal går du till din Azure-funktion.
- Gå till Kontoinställningar och välj Identitet.
- Välj fliken Användartilldelade och välj sedan Lägg till.
- Välj din befintliga användartilldelade hanterade identitet och välj sedan Lägg till. Sedan återgår du till fliken Användartilldelad .
Steg 4: Lägg till program-ID i berättigandegrupper
Lägg sedan till program-ID:t till lämpliga grupper som ska använda berättigandetjänsten för att få åtkomst till Azure Data Manager för Energi-API:er. I följande exempel läggs program-ID:t till i två grupper:
- users@[partitions-ID].dataservices.energy
- users.datalake.editors@[partitions-ID].dataservices.energy
Så här lägger du till program-ID:t:
Samla in följande information:
- Klientorganisations-ID
- Klient-ID
- Klienthemlighet
- Azure Data Manager for Energy URI
- Datapartitions-ID
- Åtkomsttoken
- Program-ID för den hanterade identiteten
Använd API:et Lägg till medlem för att lägga till program-ID för den användartilldelade hanterade identiteten i lämpliga berättigandegrupper.
Kommentar
I följande kommandon ska du använda program-ID:t för den hanterade identiteten och inte objekt-ID:t.
Om du vill lägga till program-ID:t i gruppen users@[partitions-ID].dataservices.energy kör du följande cURL-kommando via Bash i 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" }'
Här är ett exempelsvar:
{ "email": "<application ID of the managed identity>", "role": "MEMBER" }
Om du vill lägga till program-ID:t i gruppen users.datalake.editors@[partitions-ID].dataservices.energy kör du följande cURL-kommando via Bash i 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" }'
Här är ett exempelsvar:
{ "email": "<application ID of the managed identity>", "role": "MEMBER" }
Steg 5: Generera en token
Nu är Azure Functions redo att komma åt Azure Data Manager for Energy-API:er.
Azure-funktionen genererar en token med hjälp av den användartilldelade identiteten. Funktionen använder det program-ID som finns i Azure Data Manager for Energy-instansen när token genereras.
Här är ett exempel på Azure-funktionskoden:
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
Du bör få följande lyckade svar från Azure Functions:
När föregående steg har slutförts kan du nu använda Azure Functions för att få åtkomst till Azure Data Manager for Energy-API:er med lämplig användning av hanterade identiteter.
Nästa steg
Läs mer om Lockbox: