azure-identity-rust

npx skills add https://github.com/microsoft/skills --skill azure-identity-rust

Bibliothèque Azure Identity pour Rust

Authentification Microsoft Entra ID pour les clients du SDK Azure.

Utilisez cette skill quand :

  • Une app doit s'authentifier auprès des services Azure depuis Rust
  • Vous avez besoin de DeveloperToolsCredential pour le développement local
  • Vous avez besoin de ManagedIdentityCredential pour les workloads hébergés sur Azure
  • Vous avez besoin de l'authentification par service principal avec secret ou certificat

IMPORTANT : Utilisez uniquement les crates officiels azure_* publiés par l'utilisateur azure-sdk sur crates.io. N'utilisez PAS les crates dépréciés azure_sdk_* (MindFlavor/AzureSDKForRust) ou les crates communautaires. Les crates officiels utilisent des traits de soulignement dans les noms et aucun n'a la version 0.21.0.

Note : Le SDK Rust n'a pas de DefaultAzureCredential. Utilisez DeveloperToolsCredential pour le développement local et ManagedIdentityCredential pour la production.

Installation

cargo add azure_identity tokio

Ne pas ajouter azure_core directement à Cargo.toml. Il est ré-exporté par les crates de service.

Variables d'environnement

AZURE_TENANT_ID=<your-tenant-id>         # Requis pour l'authentification par service principal
AZURE_CLIENT_ID=<your-client-id>         # Requis pour le service principal ou l'identité managée assignée par l'utilisateur
AZURE_CLIENT_SECRET=<your-client-secret> # Requis pour ClientSecretCredential

Authentification

DeveloperToolsCredential (Développement local)

Essaie Azure CLI puis Azure Developer CLI :

use azure_identity::DeveloperToolsCredential;
use azure_security_keyvault_secrets::SecretClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Dev local : DeveloperToolsCredential. Production : utilisez ManagedIdentityCredential.
    let credential = DeveloperToolsCredential::new(None)?;
    let client = SecretClient::new(
        "https://<vault-name>.vault.azure.net/",
        credential.clone(),
        None,
    )?;

    let secret = client.get_secret("secret-name", None).await?.into_model()?;
    println!("Secret: {:?}", secret.value);
    Ok(())
}

Assurez-vous d'être connecté :

az login        # Azure CLI
azd auth login  # ou Azure Developer CLI
Ordre Credential Commande de connexion
1 AzureCliCredential az login
2 AzureDeveloperCliCredential azd auth login

ManagedIdentityCredential (Production)

Pour les ressources hébergées sur Azure (VMs, App Service, Functions, AKS) :

use azure_identity::ManagedIdentityCredential;

// Identité managée assignée par le système
let credential = ManagedIdentityCredential::new(None)?;

// Identité managée assignée par l'utilisateur
let options = ManagedIdentityCredentialOptions {
    client_id: Some("<managed-identity-client-id>".into()),
    ..Default::default()
};
let credential = ManagedIdentityCredential::new(Some(options))?;

ClientSecretCredential (Service Principal)

Pour les pipelines CI/CD et les comptes de service :

use azure_identity::ClientSecretCredential;

let credential = ClientSecretCredential::new(
    "<tenant-id>",
    "<client-id>",
    "<client-secret>",
    None,
)?;

Types d'identifiants

Credential Cas d'usage
DeveloperToolsCredential Développement local — essaie les outils CLI
ManagedIdentityCredential VMs Azure, App Service, Functions, AKS
WorkloadIdentityCredential Identité workload Kubernetes
ClientSecretCredential Service principal avec secret
ClientCertificateCredential Service principal avec certificat
AzureCliCredential Authentification Azure CLI directe
AzureDeveloperCliCredential Authentification azd CLI directe
AzurePipelinesCredential Connexion de service Azure Pipelines
ClientAssertionCredential Assertions personnalisées (identité fédérée)

Bonnes pratiques

  1. Utilisez DeveloperToolsCredential pour le dev local, ManagedIdentityCredential pour la production — le SDK Rust n'a pas de DefaultAzureCredential
  2. Ne codez jamais en dur les identifiants — utilisez les variables d'environnement pour les service principals
  3. Clonez les identifiants — passez credential.clone() lors de la construction de plusieurs clients ; les identifiants sont enrobés dans Arc
  4. Réutilisez les clients — les clients sont thread-safe ; créez une fois, partagez entre les tâches
  5. Assignez les rôles RBAC — assurez-vous que l'identité dispose des rôles appropriés pour le service cible (ex. « Key Vault Secrets User » pour les lectures de secrets)

Liens de référence

Ressource Lien
Référence API https://docs.rs/azure_identity
crates.io https://crates.io/crates/azure_identity

Skills similaires