Öğretici: .NET web uygulamasından Azure hizmetlerine erişme

Yönetilen kimlikleri kullanarak Azure Uygulaması Hizmetinde çalışan bir web uygulamasından (oturum açmış kullanıcı değil) Azure Depolama gibi Azure hizmetlerine erişmeyi öğrenin. Bu öğreticide örnek olarak Azure Depolama bağlanma gösterilmektedir.

Yönetilen kimliği destekleyen tüm hizmetlere (aşağıdaki görüntüde B ) bu öğretici kullanılarak güvenli bir şekilde erişilebilir:

  • Azure Depolama
  • Azure SQL Veritabanı
  • Azure Key Vault

Diagram that shows how to access storage.

Web uygulamanızdan Azure hizmetlerine (Azure Depolama, Azure SQL Veritabanı, Azure Key Vault veya diğer hizmetlere) güvenli erişim eklemek istiyorsunuz. Paylaşılan anahtar kullanabilirsiniz, ancak ardından gizli diziyi kimlerin oluşturabileceği, dağıtabileceği ve yönetebileceğine ilişkin operasyonel güvenlik konusunda endişelenmeniz gerekir. Anahtarın, bilgisayar korsanlarının nasıl tarama yapılacağını bildiği GitHub'da da denetlenmesi mümkündür. Web uygulamanıza verilere erişim vermenin daha güvenli bir yolu yönetilen kimlikleri kullanmaktır.

Microsoft Entra Id'den yönetilen kimlik, App Service'in uygulama kimlik bilgilerine gerek kalmadan rol tabanlı erişim denetimi (RBAC) aracılığıyla kaynaklara erişmesini sağlar. Web uygulamanıza yönetilen kimlik atadıktan sonra Azure, sertifika oluşturma ve dağıtma işlemleriyle ilgilenir. Kişiler gizli dizileri veya uygulama kimlik bilgilerini yönetme konusunda endişelenmeniz gerekmez.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Bir web uygulamasında sistem tarafından atanan yönetilen kimlik oluşturma.
  • Depolama hesabı ve Azure Blob Depolama kapsayıcısı oluşturun.
  • Yönetilen kimlikleri kullanarak bir web uygulamasından depolamaya erişin.

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

Ön koşullar

Uygulamada yönetilen kimliği etkinleştirme

Web uygulamanızı Visual Studio aracılığıyla oluşturur ve yayımlarsanız, yönetilen kimlik uygulamanızda sizin için etkinleştirilmiştir. Uygulama hizmetinizde, sol bölmede Kimlik'i ve ardından Sistem atanmış'ı seçin. Durum'un Açık olarak ayarlandığını doğrulayın. Aksi takdirde Açık'ı ve ardından Kaydet'i seçin. Sistem tarafından atanan yönetilen kimliği etkinleştirmek için onay iletişim kutusunda Evet'i seçin. Yönetilen kimlik etkinleştirildiğinde, durum Açık olarak ayarlanır ve nesne kimliği kullanılabilir.

Screenshot that shows the System assigned identity option.

Bu adım, Kimlik Doğrulaması/Yetkilendirme bölmesinde oluşturulan uygulama kimliğinden farklı yeni bir nesne kimliği oluşturur. Sistem tarafından atanan yönetilen kimliğin nesne kimliğini kopyalayın. Buna daha sonra ihtiyacınız olacak.

Depolama hesabı ve Blob Depolama kapsayıcısı oluşturma

Artık bir depolama hesabı ve Blob Depolama kapsayıcısı oluşturmaya hazırsınız.

Her depolama hesabı bir Azure kaynak grubuna ait olmalıdır. Kaynak grubu, Azure hizmetlerinizi gruplandırmaya yönelik mantıksal bir kapsayıcıdır. Depolama hesabı oluşturduğunuzda, yeni bir kaynak grubu oluşturma veya mevcut bir kaynak grubunu kullanma seçeneğiniz vardır. Bu makalede yeni bir kaynak grubunun nasıl oluşturulacağı gösterilmektedir.

Genel amaçlı v2 depolama hesabı, tüm Azure Depolama hizmetlerine erişim sağlar: blob'lar, dosyalar, kuyruklar, tablolar ve diskler. Burada özetlenen adımlar genel amaçlı bir v2 depolama hesabı oluşturur, ancak herhangi bir depolama hesabı türü oluşturma adımları benzerdir.

Azure Depolama'deki bloblar kapsayıcılar halinde düzenlenir. Bu öğreticinin devamında bir blobu karşıya yükleyebilmeniz için önce bir kapsayıcı oluşturmanız gerekir.

Azure portalında genel amaçlı v2 depolama hesabı oluşturmak için şu adımları izleyin.

  1. Azure portalı menüsünde Tüm hizmetler’i seçin. Kaynak listesine hesaplar Depolama girin. Yazmaya başladığınızda liste, girişinize göre filtrelenir. Depolama Hesapları’nı seçin.

  2. Görüntülenen Depolama Hesapları penceresinde Oluştur'u seçin.

  3. Depolama hesabının oluşturulacağı aboneliği seçin.

  4. Kaynak grubu alanının altında, açılan menüden web uygulamanızı içeren kaynak grubunu seçin.

  5. Ardından, depolama hesabınız için bir ad girin. Seçtiğiniz ad Azure genelinde benzersiz olmalıdır. Ad ayrıca 3 ila 24 karakter uzunluğunda olmalıdır ve yalnızca sayı ve küçük harf içerebilir.

  6. Depolama hesabınız için bir konum (bölge) seçin veya varsayılan değeri kullanın.

  7. Bu alanları varsayılan değerlerine ayarlanmış olarak bırakın:

    Alan Değer
    Dağıtım modeli Resource Manager
    Performans Standart
    Hesap türü StorageV2 (genel amaçlı v2)
    Çoğaltma Okuma erişimli coğrafi olarak yedekli depolama (RA-GRS)
    Erişim katmanı Hareketli
  8. Depolama hesabı ayarlarınızı gözden geçirmek ve hesabı oluşturmak için Gözden Geçir + Oluştur’u seçin.

  9. Oluştur seçeneğini belirleyin.

Azure Depolama'da Blob Depolama kapsayıcısı oluşturmak için aşağıdaki adımları izleyin.

  1. Azure portalında yeni depolama hesabınıza gidin.

  2. Depolama hesabının sol menüsünde Veri depolama bölümüne gidin ve Kapsayıcılar'ı seçin.

  3. + Kapsayıcı düğmesini seçin.

  4. Yeni kapsayıcınız için bir ad yazın. Kapsayıcı adı küçük harflerden oluşmalı ve bir harf veya rakamla başlamalıdır; yalnızca harf, rakam ve tire (-) karakterini içerebilir.

  5. Kapsayıcıya genel erişim düzeyini ayarlayın. Varsayılan düzey Özel (anonim erişim yok) şeklindedir.

  6. Konteyneri oluşturmak için Tamam'ı seçin.

Depolama hesabına erişim izni verme

Blobları oluşturabilmeniz, okuyabilmeniz veya silebilmeniz için önce web uygulamanıza depolama hesabına erişim vermeniz gerekir. Önceki bir adımda App Service'te çalışan web uygulamasını yönetilen kimlikle yapılandırmıştınız. Azure RBAC kullanarak yönetilen kimliğe herhangi bir güvenlik sorumlusu gibi başka bir kaynağa erişim verebilirsiniz. Depolama Blob Veri Katkıda Bulunanı rolü, web uygulamasına (sistem tarafından atanan yönetilen kimlik tarafından temsil edilir) blob kapsayıcısına ve verilerine okuma, yazma ve silme erişimi verir.

Dekont

Özel blob kapsayıcılarında blobları görüntüleme veya hesaplar arasında blob kopyalama gibi bazı işlemler Azure RBAC tarafından desteklenmez. Özel erişim düzeyine sahip bir blob kapsayıcısı, Azure RBAC tarafından yetkilendirilmeyen tüm işlemler için SAS belirteci gerektirir. Daha fazla bilgi için bkz . Paylaşılan erişim imzası ne zaman kullanılır?

Azure portalında, web uygulamanıza erişim vermek için depolama hesabınıza gidin. Sol bölmede Erişim denetimi (IAM) öğesini ve ardından Rol atamaları'nı seçin. Depolama hesabına erişimi olan kişilerin listesini görürsünüz. Şimdi depolama hesabına erişmesi gereken uygulama hizmeti olan robota rol ataması eklemek istiyorsunuz. Rol ataması ekle sayfasını açmak için Rol ataması ekle'yi> seçin.

Abonelik kapsamında App Service'e Depolama Blob Veri Katkıda Bulunanı rolünü atayın. Ayrıntılı adımlar için bkz. Azure portalı kullanarak Azure rolleri atama.

Web uygulamanızın artık depolama hesabınıza erişimi vardır.

Access Blob Depolama

DefaultAzureCredential sınıfı, Azure Depolama istekleri yetkilendirmek üzere kodunuzun belirteç kimlik bilgilerini almak için kullanılır. Belirteçleri getirmek ve bunları hizmet istemcisine eklemek için yönetilen kimliği kullanan DefaultAzureCredential sınıfının bir örneğini oluşturun. Aşağıdaki kod örneği kimliği doğrulanmış belirteç kimlik bilgilerini alır ve bunu kullanarak yeni bir blob yükleyen bir hizmet istemci nesnesi oluşturur.

Bu kodu örnek bir uygulamanın parçası olarak görmek için GitHub'da örneğe bakın.

İstemci kitaplığı paketlerini yükleme

Blob Depolama ile çalışmak için Blob Depolama NuGet paketini ve Microsoft Entra kimlik bilgileriyle kimlik doğrulaması yapmak üzere .NET NuGet paketi için Azure Identity istemci kitaplığını yükleyin. .NET Core komut satırı arabirimini veya Visual Studio'daki Paket Yöneticisi Konsolunu kullanarak istemci kitaplıklarını yükleyin.

.NET Core komut satırı

  1. Bir komut satırı açın ve proje dosyanızı içeren dizine geçin.

  2. Yükleme komutlarını çalıştırın.

    dotnet add package Azure.Storage.Blobs
    
    dotnet add package Azure.Identity
    

Paket Yöneticisi Konsolu

  1. Visual Studio'da projeyi veya çözümü açın ve Araçlar>NuGet Paket Yöneticisi> Paket Yöneticisi Konsolu komutunu kullanarak konsolu açın.

  2. Yükleme komutlarını çalıştırın.

    Install-Package Azure.Storage.Blobs
    
    Install-Package Azure.Identity
    

.NET örneği

using System;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using System.IO;
using Azure.Identity;

// Some code omitted for brevity.

static public async Task UploadBlob(string accountName, string containerName, string blobName, string blobContents)
{
    // Construct the blob container endpoint from the arguments.
    string containerEndpoint = string.Format("https://{0}.blob.core.windows.net/{1}",
                                                accountName,
                                                containerName);

    // Get a credential and create a client object for the blob container.
    BlobContainerClient containerClient = new BlobContainerClient(new Uri(containerEndpoint),
                                                                    new DefaultAzureCredential());

    try
    {
        // Create the container if it does not exist.
        await containerClient.CreateIfNotExistsAsync();

        // Upload text to a new block blob.
        byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);

        using (MemoryStream stream = new MemoryStream(byteArray))
        {
            await containerClient.UploadBlobAsync(blobName, stream);
        }
    }
    catch (Exception e)
    {
        throw e;
    }
}

Kaynakları temizleme

Bu öğreticiyi tamamladıysanız ve artık web uygulamasına veya ilişkili kaynaklara ihtiyacınız yoksa, oluşturduğunuz kaynakları temizleyin.

Kaynak grubunu silme

Azure portalında portal menüsünden Kaynak grupları'nı ve ardından app service ve app service planınızı içeren kaynak grubunu seçin.

Kaynak grubunu ve tüm kaynakları silmek için Kaynak grubunu sil'i seçin.

Screenshot that shows deleting the resource group.

Bu komutun çalıştırılması birkaç dakika sürebilir.

Sonraki adımlar

Bu öğreticide, şunların nasıl yapıldığını öğrendiniz:

  • Sistem tarafından atanan bir yönetilen kimlik oluşturun.
  • Depolama hesabı ve Blob Depolama kapsayıcısı oluşturun.
  • Yönetilen kimlikleri kullanarak bir web uygulamasından depolamaya erişin.