.NET için Azure SDK'sı ile Azure kaynaklarda Azure'da barındırılan uygulamaların kimliğini doğrulama
Bir uygulama Azure'da Azure Uygulaması Hizmeti, Azure Sanal Makineler veya Azure Container Instances gibi bir hizmet kullanılarak barındırıldığında, bir uygulamanın Azure kaynaklarına kimliğini doğrulamak için önerilen yaklaşım yönetilen kimlik kullanmaktır.
Yönetilen kimlik, gizli anahtar veya başka bir uygulama gizli dizisi kullanmaya gerek kalmadan diğer Azure kaynaklarına bağlanabilecek şekilde uygulamanız için bir kimlik sağlar. Azure, uygulamanızın kimliğini ve bağlanmasına izin verilen kaynakları dahili olarak bilir. Azure, uygulama gizli dizilerini yönetmek zorunda kalmadan uygulamanın diğer Azure kaynaklarına bağlanmasına izin vermek üzere otomatik olarak Microsoft Entra belirteçlerini almak için bu bilgileri kullanır.
Yönetilen kimlik türleri
İki tür yönetilen kimlik vardır:
- Sistem tarafından atanan - Bu yönetilen kimlik türü tarafından sağlanır ve doğrudan bir Azure kaynağına bağlanır. Bir Azure kaynağında yönetilen kimliği etkinleştirdiğinizde, bu kaynak için sistem tarafından atanan bir yönetilen kimlik alırsınız. Sistem tarafından atanan yönetilen kimlik, ilişkili olduğu Azure kaynağının yaşam döngüsüne bağlıdır. Kaynak silindiğinde Azure sizin için kimliği otomatik olarak siler. Tek yapmanız gereken kodunuzu barındıran Azure kaynağı için yönetilen kimliği etkinleştirmek olduğundan, bu kullanımı en kolay yönetilen kimlik türüdür.
- Kullanıcı tarafından atanan - Yönetilen kimliği tek başına Azure kaynağı olarak da oluşturabilirsiniz. Bu en sık, çözümünüzde aynı kimliği ve aynı izinleri paylaşması gereken birden çok Azure kaynağı üzerinde çalışan birden çok iş yükü olduğunda kullanılır. Örneğin, çözümünüz birden çok App Service ve sanal makine örneğinde çalışan bileşenlere sahipse ve tüm bunların aynı Azure kaynakları kümesine erişmesi gerekiyorsa, bu kaynaklar arasında kullanıcı tarafından atanan yönetilen kimlik oluşturma ve kullanma mantıklı olacaktır.
Bu makalede, bir uygulama için sistem tarafından atanan yönetilen kimliği etkinleştirme ve kullanma adımları ele alınacaktır. Kullanıcı tarafından atanan yönetilen kimlik kullanmanız gerekiyorsa, kullanıcı tarafından atanan yönetilen kimliğin nasıl oluşturulacağını görmek için Kullanıcı tarafından atanan yönetilen kimlikleri yönetme makalesine bakın.
1 - Uygulamayı barındıran Azure kaynağında yönetilen kimliği etkinleştirme
İlk adım, uygulamanızı barındıran Azure kaynağında yönetilen kimliği etkinleştirmektir. Örneğin, Azure Uygulaması Hizmeti kullanarak bir .NET uygulaması barındırılıyorsa, uygulamanızı barındıran App Service web uygulaması için yönetilen kimliği etkinleştirmeniz gerekir. Uygulamanızı barındırmak için bir sanal makine kullanıyorsanız VM'nizin yönetilen kimliği kullanmasını sağlarsınız.
Yönetilen kimliğin Azure portalı veya Azure CLI kullanarak Bir Azure kaynağı için kullanılmasını etkinleştirebilirsiniz.
2 - Yönetilen kimliğe rol atama
Ardından, uygulamanızın hangi rollere (izinlere) ihtiyacı olduğunu belirleyin ve yönetilen kimliği Azure'daki bu rollere atayın. Yönetilen kimliğe kaynak, kaynak grubu veya abonelik kapsamında roller 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.
3 - 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.