Sdílet prostřednictvím


Ověřování aplikací Rust ve službách Azure

Aplikace Rust se musí ověřovat ve službách Azure, jako je Storage, Key Vault nebo Cosmos DB. Tento článek vysvětluje, jak pomocí služby Azure Identity crate bezpečně ověřovat aplikace Rust v místních vývojových a serverových prostředích, zlepšit zabezpečení a zjednodušit správu přihlašovacích údajů.

Doporučeným přístupem je použít při ověřování prostředků Azure ověřování pomocí tokenů místo připojovacích řetězců nebo klíčů. Azure_identity crate poskytuje ověřování na základě tokenů a umožňuje aplikacím bezproblémově ověřovat prostředky Azure bez ohledu na to, jestli je aplikace v místním vývoji, nasazená v Azure nebo nasazená na místním serveru.

Konkrétní typ ověřování na základě tokenů, který by aplikace měla použít k ověření prostředků Azure, závisí na tom, kde je aplikace spuštěná.

Životní prostředí Autentizace
Místní Když vývojář spustí aplikaci během místního vývoje– aplikace se může ověřit v Azure pomocí místních přihlašovacích údajů vývojáře. Tyto možnosti jsou podrobněji uvedeny v crates.io: Ověřování pomocí vývojových nástrojů.
Azure Když je aplikace hostovaná v Azure– Aplikace by se měla ověřovat u prostředků Azure pomocí spravované identity. Tato možnost je podrobněji popsána v dokumentaci k crates.io : Ověřování aplikací hostovaných v Azure.
Místní prostředí Když je aplikace hostovaná a nasazená místně – aplikace by se měla ověřit u prostředků Azure pomocí instančního objektu aplikace. Tato možnost je popsána v dokumentaci k crates.io : Ověřování instančních objektů.

Výhody ověřování založeného na tokenech

Při vytváření aplikací pro Azure důrazně doporučujeme místo tajných kódů, jako jsou připojovací řetězce nebo klíče, používat ověřování založené na tokenech.

Ověřování na základě tokenů Tajné kódy (připojovací řetězce a klíče)
Princip nejnižší úrovně oprávnění, nastavte konkrétní oprávnění potřebná aplikací v prostředku Azure. Připojovací řetězec nebo klíč uděluje úplná práva k prostředku Azure.
K uložení neexistuje žádný tajný kód aplikace. Tajné kódy je nutné ukládat a otáčet v nastavení aplikace nebo proměnné prostředí.
Knihovna Identit Azure spravuje tokeny za vás na pozadí. Díky tomu se ověřování založené na tokenech snadno používá jako připojovací řetězec. Tajné kódy se nespravuje.

Použití připojovacích řetězců by mělo být omezené na počáteční testování konceptů aplikací nebo prototypů vývoje, které nepřistupují k produkčním nebo citlivým datům. Jinak by se při ověřování prostředků Azure měly vždy upřednostňovat třídy ověřování založené na tokenech, které jsou k dispozici v knihovně identit Azure.

Ověřování během místního vývoje

Když je aplikace spuštěná na pracovní stanici vývojáře během místního vývoje, musí se místní prostředí stále ověřovat ve všech službách Azure, které aplikace používá.

Ověřování pomocí přihlašovacích údajů Azure CLI

Přihlašovací údaje Azure CLI používají k ověření aplikace Rust stav ověřování Azure CLI. Tyto přihlašovací údaje jsou ideální pro místní vývoj, když už jste přihlášeni az login.

use azure_identity::AzureCliCredential;
use azure_security_keyvault_secrets::SecretClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    dotazure::load()?;

    let vault_url = std::env::var("AZURE_KEYVAULT_URL")
        .map_err(|_| "AZURE_KEYVAULT_URL environment variable is required")?;

    let credential = AzureCliCredential::new(None)?;

    let client = SecretClient::new(&vault_url, credential.clone(), None)?;

    Ok(())
}

Ověřování pomocí přihlašovacích údajů Azure Developer CLI

Přihlašovací údaje Azure Developer CLI používají k ověření vaší aplikace stav ověřování Azure Developer CLI (azd). Tyto přihlašovací údaje jsou užitečné při práci se šablonami a pracovními postupy AZD.

use azure_identity::AzureDeveloperCliCredential;
use azure_security_keyvault_secrets::SecretClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    dotazure::load()?;

    let vault_url = std::env::var("AZURE_KEYVAULT_URL")
        .map_err(|_| "AZURE_KEYVAULT_URL environment variable is required")?;

    let credential = AzureDeveloperCliCredential::new(None)?;

    let client = SecretClient::new(&vault_url, credential.clone(), None)?;

    Ok(())
}

Ověřování v serverových prostředích

V serverovýchprostředích Spravované identity se automaticky vytvářejí a spravují v Azure, takže se vaše aplikace může ověřit bez nutnosti ukládat přihlašovací údaje.

Při hostování v serverovém prostředí přiřaďte každé aplikaci pro každé prostředí jedinečnou identitu aplikace. V Azure je identita aplikace reprezentována instančním objektem, speciálním typem objektu zabezpečení, který identifikuje a ověřuje aplikace v Azure. Typ instančního objektu, který používáte pro aplikaci, závisí na tom, kde vaše aplikace běží.

use azure_identity::{ManagedIdentityCredential, ManagedIdentityCredentialOptions, UserAssignedId};
use azure_security_keyvault_secrets::SecretClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    dotazure::load()?;

    let vault_url = std::env::var("AZURE_KEYVAULT_URL")
        .map_err(|_| "AZURE_KEYVAULT_URL environment variable is required")?;

    let user_assigned_id: Option<UserAssignedId> = std::env::var("AZURE_USER_ASSIGNED_IDENTITY")
        .ok()
        .map(|id| UserAssignedId::ClientId(id.clone()));

    let credential_options = ManagedIdentityCredentialOptions {
        user_assigned_id,
        ..Default::default()
    };

    let credential = ManagedIdentityCredential::new(Some(credential_options))?;

    let client = SecretClient::new(vault_url.as_str(), credential.clone(), None)?;

    Ok(())
}

Ukázkový kód

Kód uvedený v tomto článku je k dispozici na .https://github.com/azure-samples/azure-sdk-for-rust-docs/

Dodatečné zdroje