Azure kaynakları için yönetilen kimliklerle blob verilerine erişimi yetkilendirme

Azure Blob Depolama, Azure Azure Active Directory yönetilen kimliklerle kimlik doğrulaması (Azure AD) doğrulamasını destekler. Azure kaynakları için yönetilen kimlikler, Azure sanal makinelerde (VM), işlev uygulamalarında, sanal makine ölçek kümelerde ve diğer hizmetlerde çalışan uygulamalardan Azure AD kimlik bilgilerini kullanarak blob verilerine erişim yetkisi verebilir. Azure kaynakları için yönetilen kimlikleri Azure AD kimlik doğrulamasıyla birlikte kullanarak, kimlik bilgilerini bulutta çalıştıran uygulamalarınız ile depolamaktan kaçınabilirsiniz.

Bu makalede, Azure Kaynakları için yönetilen kimlikleri kullanarak bir Azure VM'den blob verilerine erişim yetkisi verme hakkında bilgi edinebilirsiniz.

Vm'de yönetilen kimlikleri etkinleştirme

Vm'nizin bloblarına erişim yetkisi vermek üzere Azure Kaynakları için yönetilen kimlikleri kullanamadan önce VM'de Azure Kaynakları için yönetilen kimlikleri etkinleştirmeniz gerekir. Azure Kaynakları için yönetilen kimlikleri etkinleştirme hakkında bilgi edinmek için şu makalelerden birini okuyun:

Yönetilen kimlikler hakkında daha fazla bilgi için bkz. Azure kaynakları için yönetilen kimlikler.

Yönetilen kimliğe RBAC rolü atama

Azure AD güvenlik sorumlusu Bir Azure Depolama hesabında verilere erişmeye çalışırsa, bu güvenlik sorumlusu veri kaynağı üzerinde izinlere sahip olması gerekir. Güvenlik sorumlusu ister Azure'da yönetilen kimlik ister geliştirme ortamında kod çalıştıran bir Azure AD kullanıcı hesabı olsun, güvenlik sorumlusuna Azure Depolama'daki verilere erişim izni vermek için güvenlik sorumlusuna bir Azure rolü atanmalıdır. Azure RBAC aracılığıyla veri erişimi izinleri atama hakkında bilgi için bkz. Blob verilerine erişim için Azure rolü atama.

Not

Azure Depolama hesabı sanız, verilere Azure AD üzerinden erişmek için size otomatik olarak izinler atanmaz. Kendinize azure hizmeti için açıkça bir Azure rolü Depolama. Bunu aboneliğiniz, kaynak grubunuz, depolama hesabınız veya kapsayıcınız düzeyinde atabilirsiniz.

.NET'te blok blobu oluşturmak için yönetilen kimlik kullanma

Azure Identity istemci kitaplığı, Azure SDK aracılığıyla Azure Active Directory (Azure AD) ile yetkilendirme için OAuth 2.0 erişim belirteci alma işlemini kolaylaştırır. Erişim belirteci almak için Azure Identity istemci kitaplığını kullanırken, aynı kodu kullanarak belirteci almak için de uygulamanın geliştirme ortamında veya Azure'da çalışıyor olması gerekir. Daha fazla bilgi için bkz. Yetkilendirme için erişim belirteci almak üzere Azure Kimlik kitaplığını kullanma.

Kodunuzun Azure Depolama istekleri yetkilendirmek için kullanabileceği bir belirteç almak için DefaultAzureCredential sınıfının bir örneğini oluşturun. Ardından belirteci kullanarak Azure'da veri işlemleri gerçekleştirme yetkisine sahip bir hizmet istemci nesnesi Depolama. Yönetilen kimliği Azure Depolama'a erişmek için yetkilendirmek için DefaultAzureCredential sınıfını kullanma hakkında daha fazla bilgi için bkz. .NET için Azure Identity istemci kitaplığı.

Aşağıdaki kod örneğinde erişim belirteci alınarak bir hizmet istemcisi nesnesi oluşturma ve ardından hizmet istemcisini kullanarak yeni bir blobu karşıya yükleme adımları yer alır:

async static Task CreateBlockBlobAsync(string accountName, string containerName, string blobName)
{
    // 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 service 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.
        string blobContents = "This is a block blob.";
        byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);

        using (MemoryStream stream = new MemoryStream(byteArray))
        {
            await containerClient.UploadBlobAsync(blobName, stream);
        }
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine(e.Message);
        Console.ReadLine();
        throw;
    }
}

Not

Azure AD ile blob verilerine yönelik istekleri yetkilendirmek için bu istekler için HTTPS kullan gerekir.

Sonraki adımlar