Megosztás a következőn keresztül:


Rust-alkalmazások hitelesítése az Azure-szolgáltatásokban

A Rust-alkalmazásoknak hitelesíteni kell magukat az Azure-szolgáltatásokban, például a Storage-ban, a Key Vaultban vagy a Cosmos DB-ben. Ez a cikk bemutatja, hogyan használható az Azure Identity-láda a Rust-alkalmazások biztonságos hitelesítésére a helyi fejlesztési és kiszolgálói környezetekben, javítja a biztonságot és egyszerűsíti a hitelesítő adatok kezelését.

Az ajánlott módszer az, hogy az alkalmazások jogkivonatalapú hitelesítést használjanak a kapcsolati sztringek vagy kulcsok helyett az Azure-erőforrásokhoz való hitelesítéskor. A azure_identity láda jogkivonatalapú hitelesítést biztosít, és lehetővé teszi az alkalmazások számára, hogy zökkenőmentesen hitelesítsék magukat az Azure-erőforrásokon, függetlenül attól, hogy az alkalmazás helyi fejlesztés alatt áll, üzembe van helyezve az Azure-ban vagy egy helyszíni kiszolgálón.

Attól függ, hogy az alkalmazás milyen típusú jogkivonatalapú hitelesítést használ az Azure-erőforrásokon való hitelesítéshez, attól függ, hogy az alkalmazás hol fut.

Környezet Authentication
Helyi Ha egy fejlesztő helyi fejlesztés során futtat egy alkalmazást – Az alkalmazás a fejlesztő helyi hitelesítő adataival hitelesíthet az Azure-ban. Ezeket a lehetőségeket részletesebben a crates.io: Hitelesítés fejlesztési eszközökkel.
Azure Ha egy alkalmazást az Azure-ban üzemeltetnek – Az alkalmazásnak felügyelt identitással kell hitelesítenie az Azure-erőforrásokat. Ezt a lehetőséget részletesebben a crates.io dokumentációjában ismertetjük: Az Azure által üzemeltetett alkalmazások hitelesítése.
Helyszíni Amikor egy alkalmazást üzemeltetnek és üzembe helyeznek a helyszínen , az alkalmazásnak hitelesítenie kell magát az Azure-erőforrásokban egy alkalmazásszolgáltatás-tag használatával. Ezt a lehetőséget a crates.io dokumentációja ismerteti: Szolgáltatásnevek hitelesítése.

A jogkivonatalapú hitelesítés előnyei

Az Azure-hoz készült alkalmazások létrehozásakor határozottan javasoljuk, hogy a titkos kódok, például kapcsolati sztringek vagy kulcsok helyett tokenalapú hitelesítést használjunk.

Tokenalapú hitelesítés Titkos kódok (kapcsolati sztringek és kulcsok)
A minimális jogosultság elve, hogy meghatározza az alkalmazás által az Azure-erőforráson szükséges konkrét engedélyeket. A kapcsolati sztring vagy kulcs teljes jogokat biztosít az Azure-erőforrás számára.
Nincs tárolandó alkalmazáskulcs. Titkos kulcsokat kell tárolnia és elforgatnia az alkalmazásbeállításban vagy a környezeti változóban.
Az Azure Identity-kódtár a színfalak mögött kezeli a jogkivonatokat. Ez megkönnyíti a jogkivonatalapú hitelesítés használatát kapcsolati sztringként. A titkos kulcsok nincsenek kezelve.

A kapcsolati sztringek használatát olyan koncepcióalkalmazások vagy fejlesztési prototípusok kezdeti ellenőrzésére kell korlátozni, amelyek nem férnek hozzá éles vagy bizalmas adatokhoz. Ellenkező esetben az Azure Identity-kódtárban elérhető jogkivonatalapú hitelesítési osztályokat mindig előnyben kell részesíteni az Azure-erőforrásokhoz való hitelesítéskor.

Hitelesítés a helyi fejlesztés során

Ha egy alkalmazás egy fejlesztői munkaállomáson fut a helyi fejlesztés során, a helyi környezetnek továbbra is hitelesítenie kell magát az alkalmazás által használt Azure-szolgáltatásokban.

Hitelesítés Az Azure CLI hitelesítő adataival

Az Azure CLI hitelesítő adatai az Azure CLI hitelesítési állapotát használják a Rust-alkalmazás hitelesítéséhez. Ez a hitelesítő adat ideális helyi fejlesztéshez, ha már bejelentkezett.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(())
}

Hitelesítés az Azure Developer CLI hitelesítő adataival

Az Azure Developer CLI hitelesítő adatai az Azure Developer CLI (azd) hitelesítési állapotát használják az alkalmazás hitelesítéséhez. Ez a hitelesítő adat hasznos az azd-sablonok és munkafolyamatok használatakor.

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(())
}

Hitelesítés kiszolgálói környezetekben

Kiszolgálói környezetekben felügyelt identitásokat használjon a biztonságos, jelszó nélküli hitelesítéshez. A felügyelt identitásokat az Azure automatikusan létrehozza és felügyeli, így az alkalmazás hitelesítő adatok tárolása nélkül hitelesítheti magát.

Kiszolgálói környezetben való üzemeltetéskor minden egyes környezethez rendeljen egyedi alkalmazásidentitást. Az Azure-ban az alkalmazások identitását egy szolgáltatásnév képviseli, amely egy speciális biztonsági egyszerű típus, amely azonosítja és hitelesíti az alkalmazásokat az Azure-ban. Az alkalmazáshoz használt szolgáltatásnév típusa attól függ, hogy hol fut az alkalmazás.

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(())
}

példakód

A cikkben látható kód a következő helyen https://github.com/azure-samples/azure-sdk-for-rust-docs/érhető el: .

További erőforrások