Metody ověřování v sadě Azure SDK for Go
Důležité
Do budoucna se ověřování Azure SDK pro Go pomocí balíčku Azure Identity.
Informace o ověřování pomocí balíčku Identita Azure najdete v tématu Ověřování Azure pomocí Azure SDK pro Go.
Azure SDK pro Go nabízí několik způsobů ověřování s využitím Azure. Tyto typy ověřování se vyvolávají dostupné prostřednictvím různých ověřovacích metod. Tento článek se zabývá dostupnými typy, metodami a volbou toho, co je pro vaši aplikaci nejlepší.
Dostupné typy a metody ověřování
Sada Azure SDK for Go nabízí několik různých typů ověřování s využitím různých sad přihlašovacích údajů. Jednotlivé typy ověřování jsou dostupné prostřednictvím různých metod ověřování, které představují způsob, jakým sada SDK přijímá přihlašovací údaje jako vstup. Následující tabulka obsahuje popis dostupných typů ověřování a situací, ve kterých se doporučuje jejich použití pro vaši aplikaci.
| Typ ověřování | Doporučuje se pro situaci |
|---|---|
| Ověřování pomocí certifikátů | Máte certifikát X509 nakonfigurovaný pro uživatele nebo instanční objekt Azure Active Directory (AAD). Další informace najdete v tématu Začínáme s ověřováním pomocí certifikátů v Azure Active Directory. |
| Přihlašovací údaje klienta | Máte nakonfigurovaný instanční objekt, který je nastavený pro tuto aplikaci nebo třídu aplikací, do které patří. Další informace najdete v tématu Vytvoření instančního objektu pomocí Azure CLI. |
| Spravované identity pro prostředky Azure | Vaše aplikace se spouští v prostředku Azure nakonfigurovaném s použitím spravované identity. Další informace najdete v tématu Spravované identity pro prostředky Azure. |
| Token zařízení | Vaše aplikace je určená jenom k interaktivnímu použití. Uživatelé mohou mít povolené vícefaktorové ověřování. Uživatelé mají přístup k webovému prohlížeči, přes který se můžou přihlásit. Další informace najdete v tématu Použití ověřování pomocí tokenu zařízení. |
| Uživatelské jméno a heslo | Máte interaktivní aplikaci, která neumožňuje použití žádné jiné metody ověřování. Vaši uživatelé nemají pro své přihlašovací AAD povolené vícefaktorové ověřování. |
Důležité
Pokud používáte jiný typ ověřování než přihlašovací údaje klienta, vaše aplikace musí být zaregistrovaná v Azure Active Directory. Postup najdete v tématu Integrace aplikací s Azure Active Directory.
Poznámka
Pokud nemáte speciální požadavky, vyhněte se ověřování pomocí uživatelského jména a hesla. V situacích, kdy je vhodné použít přihlašování jednotlivých uživatelů, je obvykle možné místo toho použít ověřování pomocí tokenu zařízení.
Tyto typy ověřování jsou dostupné prostřednictvím různých metod.
- Ověřování na základě prostředí čte přihlašovací údaje přímo z prostředí programu.
- Ověřování na základě souboru načítá soubor obsahující přihlašovací údaje instančního objektu.
- Ověřování na základě klienta používá objekt v kódu a přenáší na vás zodpovědnost za zadání přihlašovacích údajů během provádění programu.
- Ověřování pomocí tokenu zařízení vyžaduje, aby se uživatelé přihlašovali interaktivně přes webový prohlížeč s využitím tokenu.
Všechny funkce a typy ověřování jsou k dispozici v balíčku github.com/Azure/go-autorest/autorest/azure/auth.
Poznámka
Pokud nemáte speciální požadavky, vyhněte se ověřování na základě klienta. Tato metoda ověřování podporuje špatné postupy. Při použití ověřování na základě klienta je zejména lákavé přihlašovací údaje pevně zakódovat. Psaní vlastního kódu pro účely ověřování také může vést k selhání u budoucích vydaných verzí sady SDK, pokud se změní požadavky na ověřování.
Použití ověřování na základě prostředí
Pokud svou aplikaci spouštíte v kontrolovaném nastavení, ověřování na základě prostředí je přirozenou volbou. Pomocí této metody ověřování nakonfigurujete prostředí před spuštěním vaší aplikace. Za běhu Go SDK načte tyto proměnné prostředí a využije je pro ověřování pomocí Azure.
Ověřování na základě prostředí podporuje všechny metody ověřování s výjimkou tokenů zařízení a vyhodnocuje je v následujícím pořadí:
- Přihlašovací údaje klienta
- Certifikáty X509
- Uživatelské jméno a heslo
- Spravované identity pro prostředky Azure
Pokud typ ověřování nemá nastavené hodnoty nebo se odmítne, sada SDK automaticky zkusí další typ ověřování. Pokud už nejsou dostupné žádné další typy, které by se daly vyzkoušet, sada SDK vrátí chybu.
Následující tabulka obsahuje podrobnosti o proměnných prostředí, které je potřeba nastavit pro jednotlivé typy ověřování podporované ověřováním na základě prostředí.
| Typ ověřování | Proměnná prostředí | Description |
|---|---|---|
| Přihlašovací údaje klienta | AZURE_TENANT_ID |
ID tenanta Active Directory, do kterého instanční objekt patří. |
AZURE_CLIENT_ID |
Název nebo ID instančního objektu. | |
AZURE_CLIENT_SECRET |
Tajný klíč přidružený k instančnímu objektu. | |
| Certifikát | AZURE_TENANT_ID |
ID tenanta Active Directory, ve kterém je certifikát zaregistrovaný. |
AZURE_CLIENT_ID |
ID klienta aplikace přidruženého k certifikátu. | |
AZURE_CERTIFICATE_PATH |
Cesta k souboru klientského certifikátu. | |
AZURE_CERTIFICATE_PASSWORD |
Heslo pro klientský certifikát. | |
| Uživatelské jméno a heslo | AZURE_TENANT_ID |
ID tenanta Active Directory, do kterého uživatel patří. |
AZURE_CLIENT_ID |
ID klienta aplikace. | |
AZURE_USERNAME |
Uživatelské jméno pro přihlášení. | |
AZURE_PASSWORD |
Heslo pro přihlášení. | |
| Spravovaná identita | Pro ověřování spravovaných identit nejsou potřeba žádné přihlašovací údaje. Aplikace musí být spuštěná v prostředku Azure s nakonfigurovaným používáním spravovaných identit. Další informace najdete v tématu Spravované identity pro prostředky Azure. |
Pokud se potřebujete připojit k jinému cloudu nebo koncovému bodu správy, než je výchozí veřejný cloud Azure, nastavte následující proměnné prostředí. Mezi nejběžnější důvody patří používání služby Azure Stack, cloudu v jiné geografické oblasti nebo modelu nasazení Classic.
| Proměnná prostředí | Description |
|---|---|
AZURE_ENVIRONMENT |
Název cloudového prostředí, ke kterému se má připojit. |
AZURE_AD_RESOURCE |
ID prostředku Active Directory, které se má použít při připojení, jako identifikátor URI pro váš koncový bod správy. |
Pokud používáte ověřování na základě prostředí, zavoláním funkce NewAuthorizerFromEnvironment získejte objekt Authorizer. Tento objekt se pak nastaví ve vlastnosti Authorizer klientů a umožní jim přístup k Azure.
import "github.com/Azure/go-autorest/autorest/azure/auth"
authorizer, err := auth.NewAuthorizerFromEnvironment()
Ověřování v Azure Stacku
Pro ověřování v Azure Stacku musíte nastavit následující proměnné:
| Proměnná prostředí | Description |
|---|---|
AZURE_AD_ENDPOINT |
Koncový bod služby Azure Active Directory. |
AZURE_AD_RESOURCE |
Identifikátor prostředku služby Azure Active Directory. |
Tyto proměnné se dají načíst z informací o metadatech Azure Stacku. Pokud chcete tato metadata načíst, otevřete webový prohlížeč v prostředí Azure Stacku a použijte adresu URL: (ResourceManagerURL)/metadata/endpoints?api-version=1.0.
ResourceManagerURL se liší v závislosti na názvu oblasti, názvu počítače a plně kvalifikovaném názvu domény (FQDN) vašeho nasazení Azure Stack:
| Prostředí | ResourceManagerURL |
|---|---|
| Vývojová sada | https://management.local.azurestack.external/ |
| Integrované systémy | https://management.(region).ext-(machine-name).(FQDN) |
Další informace o použití Azure SDK pro Go v Azure Stacku najdete v tématu věnovaném použití profilů verzí API s Go v Azure Stacku
Použití ověřování na základě souboru
Ověřování na základě souborů používá formát souborů generovaný rozhraním příkazového řádku Azure. Tento soubor můžete jednoduše vytvořit při vytváření nového instančního objektu pomocí parametru --sdk-auth. Pokud plánujete používat ověřování na základě souboru, nezapomeňte tento argument zadat při vytváření instančního objektu. Vzhledem k tomu, že rozhraní příkazového řádku vypisuje výstup do stdout, přesměrujte výstup do souboru.
az ad sp create-for-rbac --role Contributor --sdk-auth > azure.auth
Nastavte proměnnou prostředí AZURE_AUTH_LOCATION na umístění autorizačního souboru. Aplikace tuto proměnnou prostředí přečte a provede parsování přihlašovacích údajů, které soubor obsahuje. Pokud potřebujete vybrat autorizační soubor za běhu, pracujte s prostředím programu pomocí funkce os.Setenv.
Pokud chcete načíst ověřovací údaje, zavolejte funkci NewAuthorizerFromFile. Na rozdíl od ověřování na základě prostředí vyžaduje ověřování na základě souboru koncový bod prostředku.
import "github.com/Azure/go-autorest/autorest/azure/auth"
authorizer, err := NewAuthorizerFromFile(azure.PublicCloud.ResourceManagerEndpoint)
Další informace o používání instančních objektů a správě jejich přístupových oprávnění najdete v tématu Vytvoření instančního objektu pomocí Azure CLI.
Použití ověřování pomocí tokenu zařízení
Pokud chcete, aby se uživatelé přihlašovali interaktivně, nejlepší způsob je použít ověřování pomocí tokenu zařízení. Tento tok ověřování předá uživateli token pro vložení na přihlašovací stránku Microsoftu, kde se pak ověří pomocí účtu Azure Active Directory (AAD). Tato metoda ověřování podporuje účty, které mají na rozdíl od standardního ověřování pomocí uživatelského jména a hesla povolené vícefaktorové ověřování.
Pokud chcete použít ověřování pomocí tokenu zařízení, pomocí funkce NewDeviceFlowConfig vytvořte objekt Authorizer DeviceFlowConfig. Proces ověřování spustíte zavoláním metody Authorizer pro výsledný objekt. Ověřování tokenu zařízení zablokuje provádění programu, dokud se celý tok ověřování nedokončí.
import "github.com/Azure/go-autorest/autorest/azure/auth"
deviceConfig := auth.NewDeviceFlowConfig(applicationID, tenantID)
authorizer, err := deviceConfig.Authorizer()
Použití klienta ověřování
Pokud požadujete určitý typ ověřování a nevadí vám, že načtení ověřovacích údajů od uživatele bude obstarávat váš program, můžete použít jakéhokoli klienta, který je v souladu s rozhraním auth.AuthorizerConfig. Typ, který implementuje toto rozhraní, použijte, když:
- Píšete interaktivní program
- Používáte specializované konfigurační soubory
- Máte požadavek, která zabraňuje použití integrované metody ověřování
Upozornění
Nikdy nekódujte přihlašovací údaje Azure napevno do aplikace. Vložením tajných klíčů do binárních souborů aplikace usnadníte útočníkům jejich extrakci, a to bez ohledu na to, jestli je aplikace spuštěná. Ohrozíte tím všechny prostředky Azure, ke kterým mají přihlašovací údaje autorizaci.
Následující tabulka uvádí typy v sadě SDK, které jsou v souladu s rozhraním AuthorizerConfig.
| Typ ověřování | Typ objektu Authorizer |
|---|---|
| Ověřování pomocí certifikátů | ClientCertificateConfig |
| Přihlašovací údaje klienta | ClientCredentialsConfig |
| Spravované identity pro prostředky Azure | MSIConfig |
| Uživatelské jméno a heslo | UsernamePasswordConfig |
Pomocí příslušné funkce New vytvořte objekt Authenticator a pak proveďte ověření zavoláním metody Authorize pro výsledný objekt. Příklad při použití ověřování pomocí certifikátů:
import "github.com/Azure/go-autorest/autorest/azure/auth"
certificateAuthorizer := auth.NewClientCertificateConfig(certificatePath, certificatePassword, clientID, tenantID)
authorizerToken, err := certificateAuthorizer.Authorizer()