Hizmet sorumlularını kullanarak yerel geliştirme sırasında Azure hizmetlerinde .NET uygulamalarının kimliğini doğrulama
Geliştiricilerin yerel iş istasyonlarında bulut uygulamalarının hatalarını ayıklaması ve test etmeleri gerekir. Bir uygulama yerel geliştirme sırasında bir geliştiricinin iş istasyonunda çalıştığında, uygulama tarafından kullanılan tüm Azure hizmetlerinde kimlik doğrulaması yapmaya devam etmelidir. 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 gerekli olanlarla belirlenmiş olduğundan, uygulama kodunun farklı bir uygulama tarafından kullanılmak üzere tasarlanmış bir Azure kaynağına yanlışlıkla erişmesi engellenir. Bu, uygulama geliştirme ortamında aşırı 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. Bir uygulamayı yerel geliştirme için kaydederken şunların kullanılması önerilir:
- Uygulama üzerinde çalışan her geliştirici için ayrı bir uygulama kaydı 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ı bir uygulama kaydı 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. Azure Kimlik kitaplığı 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 Microsoft Entra 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 Microsoft Entra grubu oluşturmanız önerilir. Bu yaklaşım 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 uygulamanın 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 belirleyin ve bu rolleri uygulamanıza atayın. Bu örnekte roller, 2. adımda oluşturulan Microsoft Entra grubuna atanır. Gruplara 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 atandığı gösterilmektedir.
4 - Uygulama ortamı değişkenlerini ayarlama
Çalışma zamanında, DefaultAzureCredential
ortam değişkenleri koleksiyonunda 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.
Seçtiğiniz yaklaşımdan bağımsız olarak, bir hizmet sorumlusuyla çalışırken aşağıdaki ortam değişkenlerini yapılandırın:
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şkenleri ayarlamanız gerektiğini unutmayın.
"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 , Microsoft Entra'da kimlik doğrulaması yapmak için düşünceli, sıralı bir mekanizma dizisidir. Her kimlik doğrulama mekanizması TokenCredential sınıfından türetilen bir sınıftır ve kimlik bilgisi olarak bilinir. Çalışma zamanında, DefaultAzureCredential
ilk kimlik bilgilerini kullanarak kimlik doğrulamayı dener. Bu kimlik bilgisi bir erişim belirteci alamazsa, bir erişim belirteci başarıyla alınana kadar dizideki bir sonraki kimlik bilgisi denenir ve bu şekilde devam edilir. Bu şekilde, uygulamanız ortama özgü kod yazmadan farklı ortamlarda farklı kimlik bilgilerini kullanabilir.
Kimlik bilgilerinin arandığı DefaultAzureCredential
sıra ve konumlar DefaultAzureCredential konumunda bulunur.
kullanmak DefaultAzureCredential
için Azure.Identity ve isteğe bağlı olarak Microsoft.Extensions.Azure paketlerini uygulamanıza ekleyin:
Seçtiğiniz bir terminalde uygulama projesi dizinine gidin ve aşağıdaki komutları çalıştırın:
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Azure hizmetlerine çeşitli Azure SDK istemci kitaplıklarından özel 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 kaydedilmelidir. içinde Program.cs
, bir istemci sınıfını ve DefaultAzureCredential
kaydetmek için aşağıdaki adımları tamamlayın:
Azure.Identity
yönergeleri aracılığıylausing
veMicrosoft.Extensions.Azure
ad alanlarını ekleyin.- İlgili
Add
ön ekli uzantı yöntemini kullanarak Azure hizmet istemcisini kaydedin. - yönteminin
DefaultAzureCredential
bir örneğiniUseCredential
geçirin.
Örneğin:
using Microsoft.Extensions.Azure;
using Azure.Identity;
builder.Services.AddAzureClients(clientBuilder =>
{
clientBuilder.AddBlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"));
clientBuilder.UseCredential(new DefaultAzureCredential());
});
Bunun bir alternatifi UseCredential
de doğrudan örnekleme DefaultAzureCredential
yapmaktır:
using Azure.Identity;
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
Yukarıdaki kod yerel geliştirme iş istasyonunuzda çalıştırıldığında, bir uygulama hizmet sorumlusunun ortam değişkenlerinde veya bir dizi geliştirici kimlik bilgisi için Visual Studio gibi yerel olarak yüklenen geliştirici araçlarında arar. Her iki yaklaşım da yerel geliştirme sırasında azure kaynaklarında uygulamanın kimliğini doğrulamak için kullanılabilir.
Azure'a dağıtıldığında, aynı 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.