Hizmet sorumlularını kullanarak yerel geliştirme sırasında Azure hizmetlerinde NET uygulamalarının kimliğini doğrulama
Bulut uygulamaları oluştururken geliştiricilerin yerel iş istasyonlarında uygulamaların hatalarını ayıklaması ve test etmeleri gerekir. Yerel geliştirme sırasında bir uygulama geliştiricinin iş istasyonunda çalıştırıldığında, yine de uygulama tarafından kullanılan tüm Azure hizmetlerinde kimlik doğrulaması yapması gerekir. Bu makalede, yerel geliştirme sırasında kullanılacak ayrılmış uygulama hizmet sorumlusu nesnelerinin nasıl ayarlanacağı ele alınıyor.
Yerel geliştirme için ayrılmış uygulama hizmet sorumluları, uygulama geliştirme sırasında en az ayrıcalık ilkesini izlemenize olanak sağlar. İzinlerin kapsamı, geliştirme sırasında uygulama için tam olarak gerekenlerle belirlenmiş olduğundan, uygulama kodunun farklı bir uygulama tarafından kullanılmak üzere tasarlanan bir Azure kaynağına yanlışlıkla erişmesi engellenir. Bu, uygulama geliştirme ortamında fazla ayrıcalıklı olduğundan uygulama üretime taşındığında hataların oluşmasını da engeller.
Uygulama Azure'a kaydedildiğinde uygulama için bir uygulama hizmet sorumlusu ayarlanır. Yerel geliştirme için uygulama kaydederken şunların kullanılması önerilir:
- Uygulama üzerinde çalışan her geliştirici için ayrı uygulama kayıtları oluşturun. Bu, her geliştiricinin yerel geliştirme sırasında kullanması için ayrı uygulama hizmet sorumluları oluşturur ve geliştiricilerin tek bir uygulama hizmet sorumlusu için kimlik bilgilerini paylaşma gereksinimini önler.
- Uygulama başına ayrı uygulama kayıtları oluşturun. Bu, uygulamanın izinlerini yalnızca uygulama için gerekli olan izinlere göre kapsamlar.
Yerel geliştirme sırasında ortam değişkenleri uygulama hizmeti sorumlusunun kimliğiyle ayarlanır. NET için Azure SDK bu ortam değişkenlerini okur ve uygulamanın kimliğini ihtiyaç duyduğu Azure kaynaklarında doğrulamak için bu bilgileri kullanır.
1 - Uygulamayı Azure'a kaydetme
Uygulama hizmeti sorumlusu nesneleri Azure'da bir uygulama kaydıyla oluşturulur. Bu, Azure portalı veya Azure CLI kullanılarak yapılabilir.
Azure portalında oturum açın ve şu adımları izleyin.
2 - Yerel geliştirme için Azure AD güvenlik grubu oluşturma
Genellikle bir uygulama üzerinde çalışan birden çok geliştirici olduğundan, rolleri tek tek hizmet sorumlusu nesnelerine atamak yerine yerel geliştirmede uygulamanın ihtiyaç duyduğu rolleri (izinleri) kapsüllemek için bir Azure AD grubu oluşturmanız önerilir. Bu, aşağıdaki avantajları sunar.
- Roller grup düzeyinde atandığından her geliştiricinin aynı rollere atandığından emin olur.
- Uygulama için yeni bir rol gerekiyorsa, yalnızca uygulama için Azure AD grubuna eklenmesi gerekir.
- Ekibe yeni bir geliştirici katılırsa, geliştirici için yeni bir uygulama hizmet sorumlusu oluşturulur ve gruba eklenir ve geliştiricinin uygulama üzerinde çalışmak için doğru izinlere sahip olması sağlanır.
3 - Uygulamaya rol atama
Ardından, uygulamanızın hangi kaynaklar üzerinde hangi rollere (izinlere) ihtiyacı olduğunu belirlemeniz ve bu rolleri uygulamanıza atamanız gerekir. Bu örnekte roller, 2. adımda oluşturulan Azure Active Directory grubuna atanır. Rollere kaynak, kaynak grubu veya abonelik kapsamında bir rol atanabilir. Bu örnekte, çoğu uygulama tüm Azure kaynaklarını tek bir kaynak grubunda gruplandırdığından kaynak grubu kapsamında rollerin nasıl atanacağı gösterilir.
4 - Uygulama ortamı değişkenlerini ayarlama
DefaultAzureCredential
nesnesi, çalışma zamanında bir dizi ortam değişkeninde hizmet sorumlusu bilgilerini arar. Araçlarınıza ve ortamınıza bağlı olarak .NET ile çalışırken ortam değişkenlerini yapılandırmanın birden çok yolu vardır.
Hangi yaklaşımı seçerseniz seçin, bir hizmet sorumlusuyla çalışırken aşağıdaki ortam değişkenlerini yapılandırmanız gerekir.
AZURE_CLIENT_ID
Uygulama kimliği değerini →.AZURE_TENANT_ID
kiracı kimliği değerini →.AZURE_CLIENT_SECRET
→ Uygulama için oluşturulan parola/kimlik bilgisi.
Visual Studio ile yerel olarak çalışırken, ortam değişkenleri projenizin klasöründeki Properties
dosyada ayarlanabilirlaunchsettings.json
. Uygulama başlatıldığında, bu değerler otomatik olarak çekilir. Bu yapılandırmaların dağıtıldığında uygulamanızla birlikte hareket etmediğinden, hedef barındırma ortamınızda ortam değişkenlerini ayarlamanız gerekecektir.
"profiles": {
"SampleProject": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:7177;http://localhost:5177",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"AZURE_CLIENT_ID": "00000000-0000-0000-0000-000000000000",
"AZURE_TENANT_ID":"11111111-1111-1111-1111-111111111111",
"AZURE_CLIENT_SECRET": "=abcdefghijklmnopqrstuvwxyz"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"AZURE_CLIENT_ID": "00000000-0000-0000-0000-000000000000",
"AZURE_TENANT_ID": "11111111-1111-1111-1111-111111111111",
"AZURE_CLIENT_SECRET": "=abcdefghijklmnopqrstuvwxyz"
}
}
}
5 - Uygulamanızda DefaultAzureCredential uygulama
DefaultAzureCredential
birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında kullanılan kimlik doğrulama yöntemini belirler. Bu şekilde uygulamanız, ortama özgü kod uygulamadan farklı ortamlarda farklı kimlik doğrulama yöntemleri kullanabilir.
Kimlik bilgilerinin arandığı DefaultAzureCredential
sıra ve konumlar DefaultAzureCredential konumunda bulunur.
uygulamasını uygulamak DefaultAzureCredential
için önce ve isteğe bağlı olarak Microsoft.Extensions.Azure
paketlerini uygulamanıza ekleyinAzure.Identity
. Bunu komut satırını veya NuGet Paket Yöneticisi kullanarak yapabilirsiniz.
Uygulama projesi dizininde tercihinize göre bir terminal ortamı açın ve aşağıdaki komutu girin.
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Azure hizmetlerine genellikle SDK'dan karşılık gelen istemci sınıfları kullanılarak erişilir. Bu sınıflar ve kendi özel hizmetleriniz, uygulamanıza bağımlılık ekleme yoluyla erişilebilmeleri için dosyaya kaydedilmelidir Program.cs
. Program.cs
içinde, ve hizmetinizi DefaultAzureCredential
doğru şekilde ayarlamak için aşağıdaki adımları izleyin.
Azure.Identity
veMicrosoft.Extensions.Azure
ad alanlarını using deyimine ekleyin.- İlgili yardımcı yöntemleri kullanarak Azure hizmetini kaydedin.
- yöntemine nesnesinin
DefaultAzureCredential
bir örneğiniUseCredential
geçirin.
Bunun bir örneği aşağıdaki kod kesiminde gösterilmiştir.
using Microsoft.Extensions.Azure;
using Azure.Identity;
// Inside of Program.cs
builder.Services.AddAzureClients(x =>
{
x.AddBlobServiceClient(new Uri("https://<account-name>.blob.core.windows.net"));
x.UseCredential(new DefaultAzureCredential());
});
Alternatif olarak, aşağıda görüldüğü gibi ek Azure kayıt yöntemlerinin yardımı olmadan hizmetlerinizde daha doğrudan kullanabilirsiniz DefaultAzureCredential
.
using Azure.Identity;
// Inside of Program.cs
builder.Services.AddSingleton<BlobServiceClient>(x =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
Yukarıdaki kod yerel geliştirme sırasında yerel iş istasyonunuzda çalıştırıldığında, yerel geliştirme sırasında uygulamanın Kimliğini Azure kaynaklarına doğrulamak için kullanılabilen bir geliştirici kimlik bilgileri kümesi için bir uygulama hizmet sorumlusunun veya Visual Studio, VS Code, Azure CLI veya Azure PowerShell'in ortam değişkenlerine bakar.
Azure'a dağıtıldığında bu kod uygulamanızın kimliğini diğer Azure kaynaklarda da doğrulayabilir. DefaultAzureCredential
diğer hizmetlerde otomatik olarak kimlik doğrulaması yapmak için ortam ayarlarını ve yönetilen kimlik yapılandırmalarını alabilir.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin