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
DeveloperToolsCredentialpour le développement local - Vous avez besoin de
ManagedIdentityCredentialpour 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ésazure_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. UtilisezDeveloperToolsCredentialpour le développement local etManagedIdentityCredentialpour la production.
Installation
cargo add azure_identity tokio
Ne pas ajouter
azure_coredirectement à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
- Utilisez
DeveloperToolsCredentialpour le dev local,ManagedIdentityCredentialpour la production — le SDK Rust n'a pas deDefaultAzureCredential - Ne codez jamais en dur les identifiants — utilisez les variables d'environnement pour les service principals
- Clonez les identifiants — passez
credential.clone()lors de la construction de plusieurs clients ; les identifiants sont enrobés dansArc - Réutilisez les clients — les clients sont thread-safe ; créez une fois, partagez entre les tâches
- 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 |