Ověřování služeb Azure Batch pomocí Azure Active Directory
Azure Batch podporuje ověřování pomocí Azure Active Directory (Azure AD), cloudového adresáře Microsoftu s více tenanty a služby správy identit. Azure používá Azure AD k ověřování vlastních zákazníků, správců služeb a uživatelů organizace.
Tento článek popisuje dva způsoby použití ověřování Azure AD s Azure Batch:
Integrované ověřování ověřuje uživatele, který pracuje s aplikací. Aplikace shromáždí přihlašovací údaje uživatele a použije je k autorizaci přístupu k prostředkům služby Batch.
Instanční objekt ověřuje bezobslužnou aplikaci. Instanční objekt definuje zásady a oprávnění pro aplikaci a představuje aplikaci pro přístup k prostředkům služby Batch za běhu.
Další informace o Azure AD najdete v dokumentaci k Azure AD.
Shromáždění koncových bodů pro ověřování
Pokud chcete ověřovat aplikace Batch pomocí Azure AD, musíte do kódu zahrnout koncový bod Azure AD a koncový bod prostředku služby Batch.
koncový bod Azure AD
Koncový bod základní Azure AD autority je https://login.microsoftonline.com/
. K ověření pomocí Azure AD použijte tento koncový bod s ID tenanta, které identifikuje tenanta Azure AD, který se má použít k ověřování:
https://login.microsoftonline.com/<tenant-id>
ID tenanta můžete získat z hlavní stránky Azure AD v Azure Portal. Můžete také vybrat Vlastnosti v levém navigačním panelu a zobrazit ID tenanta na stránce Vlastnosti .
Důležité
Koncový bod Azure AD konkrétního tenanta se vyžaduje při ověřování pomocí instančního objektu.
Při ověřování pomocí integrovaného ověřování se doporučuje koncový bod specifický pro tenanta, ale nepovinný. Můžete také použít Azure AD společný koncový bod k poskytnutí obecného rozhraní pro shromažďování přihlašovacích údajů, pokud není k dispozici konkrétní tenant. Běžným koncovým bodem je
https://login.microsoftonline.com/common
.
Další informace o koncových bodech Azure AD najdete v tématu Ověřování a autorizace.
Koncový bod prostředku služby Batch
Koncový bod https://batch.core.windows.net/
prostředku služby Batch použijte k získání tokenu pro ověřování požadavků na službu Batch.
Registrace aplikace v tenantovi
Prvním krokem při používání ověřování Azure AD je registrace aplikace v tenantovi Azure AD. Jakmile aplikaci zaregistrujete, můžete z kódu volat knihovnu Microsoft Authentication Library (MSAL). MSAL poskytuje rozhraní API pro ověřování pomocí Azure AD z vaší aplikace. Registrace aplikace se vyžaduje bez ohledu na to, jestli používáte integrované ověřování nebo instanční objekt.
Když aplikaci zaregistrujete, poskytnete informace o aplikaci Azure AD. Azure AD pak poskytne ID aplikace, označované také jako ID klienta, které použijete k přidružení aplikace k Azure AD za běhu. Další informace o ID aplikace najdete v tématu Objekty aplikací a instančních objektů v Azure Active Directory.
Pokud chcete zaregistrovat aplikaci Batch, postupujte podle pokynů v tématu Registrace aplikace.
Po registraci aplikace uvidíte ID aplikace (klienta) na stránce Přehled aplikace.
Konfigurace integrovaného ověřování
Pokud chcete ověřit pomocí integrovaného ověřování, musíte aplikaci udělit oprávnění pro připojení k rozhraní API služby Batch. Tento krok vaší aplikaci umožní používat Azure AD k ověřování volání rozhraní API služby Batch.
Po registraci aplikace udělte aplikaci přístup ke službě Batch následujícím postupem:
- V Azure Portal vyhledejte a vyberte registrace aplikací.
- Na stránce Registrace aplikací vyberte aplikaci.
- Na stránce vaší aplikace vyberte v levém navigačním panelu oprávnění rozhraní API .
- Na stránce Oprávnění rozhraní API vyberte Přidat oprávnění.
- Na stránce Vyžádat oprávnění rozhraní API vyberte Azure Batch.
- Na stránce Azure Batch v části Vybrat oprávnění zaškrtněte políčko vedle user_impersonation a pak vyberte Přidat oprávnění.
Na stránce oprávnění rozhraní API se teď zobrazuje, že vaše aplikace Azure AD má přístup k Microsoft Graphu i Azure Batch. Oprávnění se Microsoft Graphu udělují automaticky, když zaregistrujete aplikaci v Azure AD.
Konfigurace instančního objektu
K ověření aplikace, která běží bezobslužně, použijete instanční objekt. Když se aplikace ověřuje pomocí instančního objektu, odešle id aplikace i tajný klíč do Azure AD.
Po registraci aplikace nakonfigurujte instanční objekt podle těchto kroků v Azure Portal:
- Vyžádejte si tajný kód pro vaši aplikaci.
- Přiřaďte ke své aplikaci řízení přístupu na základě role v Azure (Azure RBAC).
Žádost o tajný klíč pro vaši aplikaci
Pomocí těchto kroků vytvořte a zkopírujte tajný klíč, který chcete použít v kódu:
- V Azure Portal vyhledejte a vyberte registrace aplikací.
- Na stránce Registrace aplikací vyberte aplikaci.
- Na stránce vaší aplikace vyberte v levém navigačním panelu možnost Tajné kódy certifikátů&.
- Na stránce Tajné kódy certifikátů & vyberte Nový tajný klíč klienta.
- Na stránce Přidat tajný klíč klienta zadejte popis a vyberte období vypršení platnosti tajného klíče.
- Výběrem možnosti Přidat vytvořte tajný kód a zobrazte ho na stránce Tajné kódy certifikátů&.
- Zkopírujte hodnotu tajného kódu na bezpečné místo, protože po opuštění této stránky k němu nebudete mít přístup znovu. Pokud ztratíte přístup ke svému klíči, můžete vygenerovat nový.
Přiřazení Azure RBAC k aplikaci
Pomocí těchto kroků přiřaďte vaší aplikaci roli Azure RBAC. Podrobný postup najdete v tématu Přiřazení rolí Azure pomocí Azure Portal.
- V Azure Portal přejděte na účet Batch, který vaše aplikace používá.
- V levém navigačním panelu vyberte Řízení přístupu (IAM).
- Na stránce Řízení přístupu (IAM) vyberte Přidat přiřazení role.
- Na stránce Přidat přiřazení role vyberte kartu Role a pak pro vaši aplikaci vyberte roli Přispěvatel nebo Čtenář .
- Vyberte kartu Členové a v části Členové vyberte Vybrat členy.
- Na obrazovce Vybrat členy vyhledejte a vyberte aplikaci a pak vyberte Vybrat.
- Na stránce Přidat přiřazení role vyberte Zkontrolovat a přiřadit.
Vaše aplikace by se teď měla zobrazit na kartě Přiřazení rolí na stránce Řízení přístupu (IAM) účtu Batch.
Přiřazení vlastní role
Vlastní role uděluje uživateli podrobná oprávnění k odesílání úloh, úkolů a dalších úloh. Pomocí vlastních rolí můžete uživatelům zabránit v provádění operací, které mají vliv na náklady, jako je vytváření fondů nebo úprava uzlů.
Vlastní roli můžete použít k udělení nebo odepření oprávnění Azure AD uživateli, skupině nebo instančnímu objektu pro následující Azure Batch operace RBAC:
- Microsoft.Batch/batchAccounts/pools/write
- Microsoft.Batch/batchAccounts/pools/delete
- Microsoft.Batch/batchAccounts/pools/read
- Microsoft.Batch/batchAccounts/jobSchedules/write
- Microsoft.Batch/batchAccounts/jobSchedules/delete
- Microsoft.Batch/batchAccounts/jobSchedules/read
- Microsoft.Batch/batchAccounts/jobs/write
- Microsoft.Batch/batchAccounts/jobs/delete
- Microsoft.Batch/batchAccounts/jobs/read
- Microsoft.Batch/batchAccounts/certificates/write
- Microsoft.Batch/batchAccounts/certificates/delete
- Microsoft.Batch/batchAccounts/certificates/read
- Microsoft.Batch/batchAccounts/read, pro všechny operace čtení
- Microsoft.Batch/batchAccounts/listKeys/action pro libovolnou operaci
Vlastní role jsou pro uživatele ověřené Azure AD, nikoli pro přihlašovací údaje účtu sdíleného klíče Batch. Přihlašovací údaje účtu Batch poskytují úplná oprávnění k účtu Batch. Úlohy, které používají automatické zařazování , vyžadují oprávnění na úrovni fondu.
Poznámka
V poli je potřeba zadat actions
určitá přiřazení rolí, zatímco jiná je potřeba zadat v poli dataActions
. Další informace najdete v tématu Operace poskytovatele prostředků Azure.
Následující příklad ukazuje definici vlastní role Azure Batch:
{
"properties":{
"roleName":"Azure Batch Custom Job Submitter",
"type":"CustomRole",
"description":"Allows a user to submit jobs to Azure Batch but not manage pools",
"assignableScopes":[
"/subscriptions/88888888-8888-8888-8888-888888888888"
],
"permissions":[
{
"actions":[
"Microsoft.Batch/*/read",
"Microsoft.Authorization/*/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Support/*",
"Microsoft.Insights/alertRules/*"
],
"notActions":[
],
"dataActions":[
"Microsoft.Batch/batchAccounts/jobs/*",
"Microsoft.Batch/batchAccounts/jobSchedules/*"
],
"notDataActions":[
]
}
]
}
}
Další informace o vytvoření vlastní role najdete v tématu Vlastní role Azure.
Příklady kódu
Příklady kódu v této části ukazují, jak ověřit pomocí Azure AD pomocí integrovaného ověřování nebo instančního objektu. Příklady kódu používají .NET a Python, ale koncepty jsou podobné i pro jiné jazyky.
Poznámka
Platnost ověřovacího tokenu Azure AD vyprší po jedné hodině. Při použití dlouhodobého objektu BatchClient je nejlepší získat token z MSAL pro každý požadavek, abyste měli jistotu, že máte vždy platný token.
Chcete-li to provést v .NET, napište metodu, která načte token z Azure AD a předá tuto metodu objektu BatchTokenCredentials jako delegát. Každý požadavek na službu Batch volá metodu delegáta, aby se zajistilo poskytnutí platného tokenu. Ve výchozím nastavení msal ukládá tokeny do mezipaměti, takže nový token se načte z Azure AD pouze v případě potřeby. Další informace o tokenech v Azure AD najdete v tématu Tokeny zabezpečení.
Příklad kódu: Použití integrovaného ověřování Azure AD se službou Batch .NET
Ověřování pomocí integrovaného ověřování ze služby Batch .NET:
Nainstalujte balíčky NuGet Azure Batch .NET a MSAL.
Deklarujte v kódu následující
using
příkazy:using Microsoft.Azure.Batch; using Microsoft.Azure.Batch.Auth; using Microsoft.Identity.Client;
Odkazujte na koncový bod Azure AD, včetně ID tenanta. ID tenanta můžete získat na stránce přehledu Azure AD v Azure Portal.
private const string AuthorityUri = "https://login.microsoftonline.com/<tenant-id>";
Odkaz na koncový bod prostředku služby Batch:
private const string BatchResourceUri = "https://batch.core.windows.net/";
Odkaz na svůj účet Batch:
private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
Zadejte ID aplikace (klienta) vaší aplikace. ID aplikace můžete získat ze stránky Přehled aplikace v Azure Portal.
private const string ClientId = "<application-id>";
Zadejte identifikátor URI přesměrování, který jste zadali při registraci aplikace.
private const string RedirectUri = "https://<redirect-uri>";
Napište metodu zpětného volání pro získání ověřovacího tokenu z Azure AD. Následující příklad volá MSAL k ověření uživatele, který pracuje s aplikací. Metoda MSAL IConfidentialClientApplication.AcquireTokenByAuthorizationCode vyzve uživatele k zadání přihlašovacích údajů. Aplikace pokračuje, jakmile uživatel zadá přihlašovací údaje.
Parametr authorizationCode je autorizační kód získaný z autorizačního serveru po ověření uživatele.
WithRedirectUri
určuje identifikátor URI přesměrování, na který autorizační server přesměruje uživatele po ověření.public static async Task<string> GetTokenUsingAuthorizationCode(string authorizationCode, string redirectUri, string[] scopes) { var app = ConfidentialClientApplicationBuilder.Create(ClientId) .WithAuthority(AuthorityUri) .WithRedirectUri(RedirectUri) .Build(); var authResult = await app.AcquireTokenByAuthorizationCode(scopes, authorizationCode).ExecuteAsync(); return authResult.AccessToken; }
Tuto metodu zavolejte s následujícím kódem a nahraďte
<authorization-code>
autorizačním kódem získaným z autorizačního serveru. Obor.default
zajišťuje, aby uživatel měl oprávnění k přístupu ke všem oborům prostředku.var token = await GetTokenUsingAuthorizationCode("<authorization-code>", "RedirectUri", new string[] { "BatchResourceUri/.default" });
Vytvořte objekt BatchTokenCredentials , který přebírá delegáta jako parametr. Pomocí těchto přihlašovacích údajů otevřete objekt BatchClient . Pak použijte objekt BatchClient pro následné operace se službou Batch:
public static void PerformBatchOperations() { Func<Task<string>> tokenProvider = () => GetTokenUsingAuthorizationCode(); using (var client = BatchClient.Open(new BatchTokenCredentials(BatchAccountUrl, tokenProvider))) { client.JobOperations.ListJobs(); } }
Příklad kódu: Použití Azure AD instančního objektu se službou Batch .NET
Ověření pomocí instančního objektu ze služby Batch .NET:
Nainstalujte balíčky NuGet Azure Batch .NET a MSAL.
Deklarujte v kódu následující
using
příkazy:using Microsoft.Azure.Batch; using Microsoft.Azure.Batch.Auth; using Microsoft.Identity.Client;
Odkazujte na koncový bod Azure AD, včetně ID tenanta. Pokud používáte instanční objekt, musíte zadat koncový bod specifický pro tenanta. ID tenanta můžete získat na stránce přehledu Azure AD v Azure Portal.
private const string AuthorityUri = "https://login.microsoftonline.com/<tenant-id>";
Odkaz na koncový bod prostředku služby Batch:
private const string BatchResourceUri = "https://batch.core.windows.net/";
Odkaz na svůj účet Batch:
private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
Zadejte ID aplikace (klienta) vaší aplikace. ID aplikace můžete získat ze stránky Přehled aplikace v Azure Portal.
private const string ClientId = "<application-id>";
Zadejte tajný klíč, který jste zkopírovali z Azure Portal.
private const string ClientKey = "<secret-key>";
Napište metodu zpětného volání pro získání ověřovacího tokenu z Azure AD. Následující metoda ConfidentialClientApplicationBuilder.Create volá MSAL pro bezobslužné ověřování.
public static async Task<string> GetAccessToken(string[] scopes) { var app = ConfidentialClientApplicationBuilder.Create(clientId) .WithClientSecret(ClientKey) .WithAuthority(new Uri(AuthorityUri)) .Build(); var result = await app.AcquireTokenForClient(scopes).ExecuteAsync(); return result.AccessToken; }
Tuto metodu zavolejte pomocí následujícího kódu. Obor
.default
zajišťuje, aby aplikace získala oprávnění pro přístup ke všem oborům prostředku.var token = await GetAccessToken(new string[] { "BatchResourceId/.default" });
Vytvořte objekt BatchTokenCredentials , který přebírá delegáta jako parametr. Pomocí těchto přihlašovacích údajů otevřete objekt BatchClient . Pak použijte objekt BatchClient pro následné operace se službou Batch:
public static void PerformBatchOperations() { Func<Task<string>> tokenProvider = () => GetAccessToken(); using (var client = BatchClient.Open(new BatchTokenCredentials(BatchAccountUrl, tokenProvider))) { client.JobOperations.ListJobs(); } }
Příklad kódu: Použití instančního objektu Azure AD se službou Batch Python
Ověření pomocí instančního objektu ze služby Batch Python:
Nainstalujte moduly Azure-Batch a Azure-Common Python.
Odkaz na moduly:
from azure.batch import BatchServiceClient from azure.common.credentials import ServicePrincipalCredentials
Pokud chcete použít instanční objekt, zadejte koncový bod specifický pro tenanta. ID tenanta můžete získat na stránce přehledu Azure AD nebo na stránce Vlastnosti v Azure Portal.
TENANT_ID = "<tenant-id>"
Odkaz na koncový bod prostředku služby Batch:
RESOURCE = "https://batch.core.windows.net/"
Odkaz na svůj účet Batch:
BATCH_ACCOUNT_URL = "https://<myaccount>.<mylocation>.batch.azure.com"
Zadejte ID aplikace (klienta) vaší aplikace. ID aplikace můžete získat ze stránky Přehled aplikace v Azure Portal.
CLIENT_ID = "<application-id>"
Zadejte tajný klíč, který jste zkopírovali z Azure Portal:
SECRET = "<secret-key>"
Vytvořte objekt ServicePrincipalCredentials :
credentials = ServicePrincipalCredentials( client_id=CLIENT_ID, secret=SECRET, tenant=TENANT_ID, resource=RESOURCE )
Pomocí přihlašovacích údajů instančního objektu otevřete objekt BatchServiceClient . Pak použijte objekt BatchServiceClient pro následné operace se službou Batch.
batch_client = BatchServiceClient( credentials, batch_url=BATCH_ACCOUNT_URL )
Příklad pythonu, jak vytvořit klienta Batch ověřeného pomocí tokenu Azure AD, najdete v ukázce nasazení Azure Batch vlastní image pomocí skriptu Pythonu.
Další kroky
- Ověřování řešení pro správu služby Batch pomocí služby Active Directory
- Toky přihlašovacích údajů klienta v MSAL.NET
- Použití MSAL.NET k získání tokenů pomocí autorizačního kódu (pro weby)
- Aplikační a instanční objekty v Azure Active Directory
- Postup vytvoření aplikace Azure AD a instančního objektu, který má přístup k prostředkům
- ukázky kódu Microsoft identity platform