Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Paylaşılan erişim imzası (SAS), depolama hesabınızdaki kapsayıcılara ve bloblara sınırlı erişim vermenizi sağlar. SAS oluşturduğunuzda, bir istemcinin erişmesine izin verilen Azure Depolama kaynakları, bu kaynaklar üzerinde sahip olduğu izinler ve SAS'nin ne kadar süre geçerli olduğu gibi sınırlamalarını belirtirsiniz.
Her bir SAS bir anahtarla imzalanır. SAS'i iki yoldan biriyle imzalayabilirsiniz:
- Microsoft Entra kimlik bilgileri kullanılarak oluşturulan bir anahtarla. Microsoft Entra kimlik bilgileriyle imzalanan SAS, kullanıcı temsilcisi SAS'dir. Azure RBAC rolü, kullanıcı yetkilendirme SAS’si oluşturan bir istemciye Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey eylemini içerecek şekilde atanmalıdır. Daha fazla bilgi edinmek için bkz Kullanıcı temsilcisi SAS'ı oluşturma.
- Depolama hesabı anahtarıyla. Hem hizmet SAS'i hem hesap SAS'i depolama hesabı anahtarıyla imzalanmıştır. Hizmet SAS'si oluşturan istemcinin hesap anahtarına doğrudan erişimi olmalıdır veya Microsoft.Storage/storageAccounts/listkeys/action izni atanmış olmalıdır. Daha fazla bilgi edinmek için bkz Hizmet SAS’ı oluşturma veya Hesap SAS’ı oluşturma.
Not
Kullanıcı temsilcisi SAS,depolama hesabı anahtarıyla imzalanmış bir SAS için üstün güvenlik sunar. Microsoft mümkün olduğunda kullanıcı temsilcisi SAS'sini kullanmanızı önerir. Daha fazla bilgi için bkz. Paylaşılan erişim imzaları (SAS) ile verilere sınırlı erişim verme.
Bu makalede, .NET için Azure Depolama istemci kitaplığını kullanarak kapsayıcı veya blob için kullanıcı temsilcisi SAS'i oluşturmak üzere Microsoft Entra kimlik bilgilerinin nasıl kullanılacağı gösterilmektedir.
Kullanıcı temsilcisi SAS hakkında
Kapsayıcıya veya bloba erişim için SAS belirteci, Microsoft Entra kimlik bilgileri veya hesap anahtarı kullanılarak güvenli hale getirilebilir. OAuth 2.0 belirteci kullanıcı adına istendiği için, Microsoft Entra kimlik bilgileriyle güvenliği sağlanan bir SAS, kullanıcı temsili SAS olarak adlandırılır.
Microsoft, mümkün olduğunda microsoft Entra kimlik bilgilerini daha kolay ele geçirilebilen hesap anahtarını kullanmak yerine en iyi güvenlik uygulaması olarak kullanmanızı önerir. Uygulama tasarımınız paylaşılan erişim imzaları gerektirdiğinde, üstün güvenlik için kullanıcı temsilcisi SAS'ı oluşturmak için Microsoft Entra kimlik bilgilerini kullanın. Kullanıcı temsilci SAS'si hakkında daha fazla bilgi için, Kullanıcı temsilci SAS'si oluşturma konusuna bakın.
Dikkat
Geçerli bir SAS'ye sahip olan tüm istemciler, bu SAS'nin izin verdiği şekilde depolama hesabınızdaki verilere erişebilir. SAS'yi kötü amaçlı veya istenmeyen kullanıma karşı korumak önemlidir. SAS dağıtırken sağduyu kullanın ve ele geçirilmiş bir SAS'yi iptal etmek için bir planınız hazır olsun.
Paylaşılan erişim imzaları hakkında daha fazla bilgi için bkz . Paylaşılan erişim imzalarını (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim verme.
Verilere erişim için Azure rolleri atama
Bir Microsoft Entra güvenlik sorumlusu verilere erişmeye çalıştığında, bu güvenlik sorumlusunun kaynak için izinleri olmalıdır. Güvenlik sorumlusunun Azure'da yönetilen bir kimlik veya geliştirme ortamında kod çalıştıran bir Microsoft Entra kullanıcı hesabı olması fark etmeksizin, güvenlik sorumlusuna verilere erişim izni veren bir Azure rolü atanmalıdır. Azure RBAC aracılığıyla izin atama hakkında bilgi için bkz Blob verilerine erişim için Azure rolü atama.
Projenizi ayarlama
Bu makaledeki kod örnekleriyle çalışmak için projenizi ayarlamak için bu adımları izleyin.
Paketleri yükleme
Aşağıdaki paketleri yükleyin:
dotnet add package Azure.Identity
dotnet add package Azure.Storage.Blobs
Uygulama kodunu ayarlama
Aşağıdaki using yönergeleri ekleyin:
using Azure;
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
using Azure.Storage.Sas;
Kimliği doğrulanmış belirteç alma
Kodunuzun Blob Depolama'ya yönelik istekleri yetkilendirmek için kullanabileceği bir belirteç kimlik bilgisi almak için DefaultAzureCredential sınıfının bir örneğini oluşturun. Yönetilen kimliği Blob Depolama'ya erişme yetkisi vermek için DefaultAzureCredential sınıfını kullanma hakkında daha fazla bilgi için Azure Identity istemci kitaplığı for .NET'e bakın.
Aşağıdaki kod parçacığında kimliği doğrulanmış belirteç kimlik bilgilerinin nasıl alınacağı ve Blob depolama için bir hizmet istemcisi oluşturmak için nasıl kullanılacağı gösterilmektedir:
// Construct the blob endpoint from the account name.
string endpoint = $"https://{accountName}.blob.core.windows.net";
// Create a blob service client object using DefaultAzureCredential
BlobServiceClient blobServiceClient = new BlobServiceClient(
new Uri(endpoint),
new DefaultAzureCredential());
.NET SDK ile uygulamalarınızdan Blob Depolamaya erişim yetkisi verme hakkında daha fazla bilgi edinmek için bkz . Azure hizmetleriyle .NET uygulamalarının kimliğini doğrulama.
Kullanıcı temsilcisi anahtarını alma
Her SAS bir anahtarla imzalanır. Kullanıcı temsilcisi SAS'ı oluşturmak için, önce bir kullanıcı temsilcisi anahtarı istemeniz gerekir; bu anahtar daha sonra SAS'yi imzalamak için kullanılır. Kullanıcı temsil anahtarı, Microsoft Entra kimlik bilgilerinize bağlı olması dışında, hizmet SAS veya hesap SAS imzalamada kullanılan hesap anahtarına benzer. bir istemci OAuth 2.0 belirtecini kullanarak kullanıcı temsilci anahtarı istediğinde Blob Depolama, kullanıcı adına kullanıcı temsilci anahtarını döndürür.
Kullanıcı temsilcisi anahtarına sahip olduktan sonra, anahtarın ömrü boyunca istediğiniz sayıda kullanıcı temsilcisi paylaşılan erişim imzası oluşturmak için bu anahtarı kullanabilirsiniz. Kullanıcı temsilcisi anahtarı, anahtarı almak için kullanılan OAuth 2.0 belirtecinin bağımsız olduğundan, anahtar hala geçerliyse belirtecin yenilenmesi gerekmez. Anahtarın en fazla yedi güne kadar geçerli kalacağı süreyi belirtebilirsiniz.
Kullanıcı temsilci anahtarını istemek için aşağıdaki yöntemlerden birini kullanın:
Aşağıdaki kod örneği, kullanıcı temsilcisi anahtarının nasıl isteneceklerini gösterir:
public static async Task<UserDelegationKey> RequestUserDelegationKey(
BlobServiceClient blobServiceClient)
{
// Get a user delegation key for the Blob service that's valid for 1 day
UserDelegationKey userDelegationKey =
await blobServiceClient.GetUserDelegationKeyAsync(
DateTimeOffset.UtcNow,
DateTimeOffset.UtcNow.AddDays(1));
return userDelegationKey;
}
Kullanıcı temsilcisi SAS’ı oluşturma
Uygulamanızın gereksinimlerine göre kapsayıcı veya blob için kullanıcı temsilcisi SAS oluşturabilirsiniz.
Kullanıcı temsilcisi anahtarını aldıktan sonra, bir kapsayıcıya sınırlı erişim yetkisi vermek için bir kullanıcı temsilcisi SAS'i oluşturabilirsiniz. Aşağıdaki kod örneği, bir kapsayıcı için kullanıcı temsilcisi SAS'sinin nasıl oluşturulacağını gösterir:
public static async Task<Uri> CreateUserDelegationSASContainer(
BlobContainerClient containerClient,
UserDelegationKey userDelegationKey)
{
// Create a SAS token for the container resource that's also valid for 1 day
BlobSasBuilder sasBuilder = new BlobSasBuilder()
{
BlobContainerName = containerClient.Name,
Resource = "c",
StartsOn = DateTimeOffset.UtcNow,
ExpiresOn = DateTimeOffset.UtcNow.AddDays(1)
};
// Specify the necessary permissions
sasBuilder.SetPermissions(BlobSasPermissions.Read | BlobSasPermissions.Write);
// Add the SAS token to the blob URI
BlobUriBuilder uriBuilder = new BlobUriBuilder(containerClient.Uri)
{
// Specify the user delegation key
Sas = sasBuilder.ToSasQueryParameters(
userDelegationKey,
containerClient.GetParentBlobServiceClient().AccountName)
};
return uriBuilder.ToUri();
}
İstemci nesnesini yetkilendirmek için kullanıcı temsilcisi SAS'si kullanma
Bir istemci nesnesini SAS tarafından verilen izinlere göre kapsayıcı veya blob üzerinde işlem gerçekleştirme yetkisi vermek için kullanıcı temsilcisi SAS kullanabilirsiniz.
Aşağıdaki kod örneği, bir BlobContainerClient nesnesini yetkilendirmek için kullanıcı temsilcisi SAS'sinin nasıl kullanılacağını gösterir. Bu istemci nesnesi, SAS tarafından verilen izinlere göre kapsayıcı kaynağında işlemler gerçekleştirmek için kullanılabilir.
// Create a Uri object with a user delegation SAS appended
BlobContainerClient containerClient = blobServiceClient
.GetBlobContainerClient("sample-container");
Uri containerSASURI = await CreateUserDelegationSASContainer(containerClient, userDelegationKey);
// Create a container client object with SAS authorization
BlobContainerClient containerClientSAS = new BlobContainerClient(containerSASURI);
Kaynaklar
.NET için Azure Blob Depolama istemci kitaplığını kullanarak kullanıcı temsilcisi SAS oluşturma hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.
Kod örnekleri
REST API işlemleri
.NET için Azure SDK, Azure REST API'sinin üzerinde derlenmiş kitaplıklar içerir ve tanıdık .NET paradigmalarıyla REST API işlemleriyle etkileşim kurmanızı sağlar. Kullanıcı temsilci anahtarı almak için istemci kitaplığı yöntemi aşağıdaki REST API işlemini kullanır:
- Kullanıcı Temsilcisi Anahtarını Al (REST API)
Müşteri kitaplık kaynakları
Ayrıca bkz.
- Paylaşılan erişim imzaları (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim izni verme
- Kullanıcı temsil yetkisi SAS oluşturma
İlgili içerik
- Bu makale, .NET için Blob Depolama geliştirici kılavuzunun bir parçasıdır. Daha fazla bilgi edinmek için .NET uygulamanızı geliştirin bölümünde geliştirici kılavuzu makalelerinin tam listesine bakın.