Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Rust uygulamalarının Depolama, Key Vault veya Cosmos DB gibi Azure hizmetlerinde kimlik doğrulaması yapması gerekir. Bu makalede, yerel geliştirme ve sunucu ortamlarında Rust uygulamalarının kimliğini güvenli bir şekilde doğrulamak, güvenliği geliştirmek ve kimlik bilgisi yönetimini basitleştirmek için Azure Identity kasasının nasıl kullanılacağı açıklanmaktadır.
Önerilen belirteç tabanlı kimlik doğrulaması
Önerilen yaklaşım, uygulamalarınızın Azure kaynaklarında kimlik doğrulaması yaparken bağlantı dizeleri veya anahtarlar yerine belirteç tabanlı kimlik doğrulaması kullanmasını sağlamaktır. azure_identity kasası belirteç tabanlı kimlik doğrulaması sağlar ve uygulamanın yerel geliştirme aşamasında, Azure'a dağıtıldığında veya şirket içi bir sunucuya dağıtıldığında azure kaynaklarında sorunsuz bir şekilde kimlik doğrulaması yapmalarını sağlar.
Bir uygulamanın Azure kaynaklarında kimlik doğrulaması yapmak için kullanması gereken belirteç tabanlı kimlik doğrulaması türü, uygulamanın çalıştığı yere bağlıdır.
| Çevre | Authentication |
|---|---|
| Yöresel | Bir geliştirici yerel geliştirme sırasında bir uygulama çalıştırdığında - Uygulama, geliştiricinin yerel kimlik bilgilerini kullanarak Azure'da kimlik doğrulaması yapabilir. Bu seçenekler crates.io daha ayrıntılı olarak sağlanır : Geliştirme araçlarıyla kimlik doğrulaması. |
| Azure | Bir uygulama Azure'da barındırıldığında - Uygulamanın yönetilen kimlik kullanarak Azure kaynaklarında kimlik doğrulaması yapması gerekir. Bu seçenek , crates.io belgelerinde daha ayrıntılı olarak açıklanmıştır: Azure'da barındırılan uygulamaların kimliğini doğrulama. |
| Şirket içi | Bir uygulama şirket içinde barındırıldığında ve dağıtıldığında - Uygulamanın bir uygulama hizmet sorumlusu kullanarak Azure kaynaklarında kimlik doğrulaması yapması gerekir. Bu seçenek crates.io belgelerinde açıklanmıştır: Hizmet sorumlularının kimliğini doğrulama. |
Belirteç tabanlı kimlik doğrulamasının avantajları
Azure için uygulama oluştururken, bağlantı dizeleri veya anahtarlar gibi gizli diziler yerine belirteç tabanlı kimlik doğrulaması kullanmanızı kesinlikle öneririz.
| Belirteç tabanlı kimlik doğrulaması | Gizli diziler (bağlantı dizeleri ve anahtarlar) |
|---|---|
| En düşük ayrıcalık ilkesi, Azure kaynağında uygulamanın ihtiyaç duyduğu belirli izinleri belirleyin. | Bağlantı dizesi veya anahtarı, Azure kaynağına tam haklar verir. |
| Depolamak için bir uygulama gizli dizisi yoktur. | Gizli dizileri uygulama ayarında veya ortam değişkeninde depolamalı ve döndürmelidir. |
| Azure Kimlik kitaplığı, arka planda sizin için belirteçleri yönetir. Bu, belirteç tabanlı kimlik doğrulamasını bağlantı dizesi olarak kullanmayı kolaylaştırır. | Gizli diziler yönetilmiyor. |
Bağlantı dizelerinin kullanımı, üretim veya hassas verilere erişmeyen ilk kavram kanıtı uygulamaları veya geliştirme prototipleriyle sınırlandırılmalıdır. Aksi takdirde, Azure kaynaklarında kimlik doğrulaması yapılırken Azure Kimlik kitaplığında bulunan belirteç tabanlı kimlik doğrulama sınıfları her zaman tercih edilmelidir.
Yerel geliştirme sırasında kimlik doğrulaması
Yerel geliştirme sırasında bir uygulama geliştiricinin iş istasyonunda çalıştırıldığında, yerel ortamın uygulama tarafından kullanılan tüm Azure hizmetlerinde kimlik doğrulaması yapmaya devam etmesi gerekir.
Azure CLI kimlik bilgileriyle kimlik doğrulaması
Azure CLI kimlik bilgileri, Rust uygulamanızın kimliğini doğrulamak için Azure CLI'nin kimlik doğrulama durumunu kullanır. Bu kimlik bilgisi, ile az loginzaten oturum açtığınızda yerel geliştirme için idealdir.
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(())
}
Azure Geliştirici CLI kimlik bilgileriyle kimlik doğrulaması
Azure Geliştirici CLI'sı kimlik bilgileri, uygulamanızın kimliğini doğrulamak için Azure Geliştirici CLI'sinin (azd) kimlik doğrulama durumunu kullanır. Bu kimlik bilgisi, azd şablonları ve iş akışlarıyla çalışırken kullanışlıdır.
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(())
}
Sunucu ortamlarında kimlik doğrulaması
Sunucu ortamlarında güvenli ve parolasız kimlik doğrulaması için yönetilen kimlikleri kullanın. Yönetilen kimlikler Azure tarafından otomatik olarak oluşturulur ve yönetilir, böylece uygulamanız kimlik bilgilerini depolamaya gerek kalmadan kimlik doğrulaması yapabilir.
Bir sunucu ortamında barındırırken, her ortam için her uygulamaya benzersiz bir uygulama kimliği atayın. Azure'da uygulama kimliği, Azure'da uygulamaları tanımlayan ve kimliklerini doğrulayan özel bir güvenlik sorumlusu türü olan hizmet sorumlusuyla temsil edilir. Uygulamanız için kullandığınız hizmet sorumlusunun türü, uygulamanızın nerede çalıştığına bağlıdır.
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(())
}
Örnek kodu
Bu makalede gösterilen kod üzerinde https://github.com/azure-samples/azure-sdk-for-rust-docs/kullanılabilir.
Ek kaynaklar
- Crates.io üzerinde Azure SDK kasaları - Kullanılabilir Azure SDK kasalarının listesi
- Azure SDK tasarım yönergeleri - Tasarım ilkeleri ve desenleri
- Rust GitHub deposu için Azure SDK - Sorunlar ve kaynak kodu
- Kargo belgeleri - Eksiksiz Kargo başvurusu