Share via


Java ile hesap SAS'i oluşturma

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, istemcinin erişmesine izin verilen Azure Depolama kaynakları, bu kaynaklar üzerinde sahip oldukları izinler ve SAS'nin ne kadar süre geçerli olduğu gibi sınırlamalarını belirtirsiniz.

Her 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. Kullanıcı temsilcisi SAS oluşturan bir istemciye Microsoft.Depolama içeren bir Azure RBAC rolü atanmalıdır/storageAccounts/blobServices/generateUserDelegationKey eylemi. Daha fazla bilgi edinmek için bkz . Kullanıcı temsilcisi SAS'ı oluşturma.
  • Depolama hesabı anahtarıyla. Hem hizmet SAS'i hem de 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.Depolama/storageAccounts/listkeys/action izni. Daha fazla bilgi edinmek için bkz . Hizmet SAS'i oluşturma veya Hesap SAS'ı oluşturma.

Dekont

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ıyla (SAS) verilere sınırlı erişim verme.

Bu makalede Depolama hesabı anahtarını kullanarak Java için Azure Depolama istemci kitaplığıyla hesap SAS'sinin nasıl oluşturulacağı gösterilmektedir.

Hesap SAS'i hakkında

Depolama hesabı düzeyinde bir hesap SAS oluşturulur ve hesap erişim anahtarıyla imzalanır. Hesap SAS'sini oluşturarak şunları yapabilirsiniz:

  • Blob Hizmeti Özelliklerini Alma, Blob Hizmeti Özelliklerini Ayarlama ve Blob Hizmeti İstatistiklerini Alma gibi hizmete özgü bir SAS ile şu anda kullanılamayan hizmet düzeyi işlemlere erişim yetkisi verin.
  • Bir depolama hesabında aynı anda birden fazla hizmete erişim yetkisi verin. Örneğin, hesap SAS'sini kullanarak hem Azure Blob Depolama hem de Azure Dosyalar kaynaklara erişimi devredebilirsiniz.

Hesap SAS'sinde depolanan erişim ilkeleri desteklenmez.

Projenizi ayarlama

Bu makaledeki kod örnekleriyle çalışmak için aşağıdaki içeri aktarma yönergelerini ekleyin:

import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.sas.*;
import com.azure.storage.common.sas.AccountSasPermission;
import com.azure.storage.common.sas.AccountSasResourceType;
import com.azure.storage.common.sas.AccountSasService;
import com.azure.storage.common.sas.AccountSasSignatureValues;

Hesap SAS’si oluşturma

Aşağıdaki yöntemi kullanarak depolama hesabı kaynaklarına sınırlı erişim yetkisi vermek için bir hesap SAS'ı oluşturabilirsiniz:

Hesap SAS'sinin imza değerlerini yapılandırmak için aşağıdaki yardımcı sınıfları kullanın:

  • AccountSasPermission: SAS tarafından izin verilen izinleri temsil eder. Örneğimizde, okuma iznini olarak trueayarlayacağız.
  • AccountSasService: SAS tarafından erişilebilen hizmetleri temsil eder. Örneğimizde Blob hizmetine erişime izin veririz.
  • AccountSasResourceType: SAS tarafından erişilebilen kaynak türlerini temsil eder. Örneğimizde hizmet düzeyi API'lere erişime izin veririz.

Yardımcı sınıflar yapılandırıldıktan sonra, AccountSasSignatureValues örneğiyle SAS için parametreleri başlatabilirsiniz.

Aşağıdaki kod örneği SAS parametrelerini yapılandırmayı ve hesap SAS'sini almak için generateAccountSas yöntemini çağırmayı gösterir:

public String createAccountSAS(BlobServiceClient blobServiceClient) {
    // Configure the SAS parameters
    OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);
    AccountSasPermission accountSasPermission = new AccountSasPermission()
            .setReadPermission(true);
    AccountSasService services = new AccountSasService()
            .setBlobAccess(true);
    AccountSasResourceType resourceTypes = new AccountSasResourceType()
            .setService(true);

    // Generate the account SAS
    AccountSasSignatureValues accountSasValues = new AccountSasSignatureValues(
        expiryTime,
        accountSasPermission,
        services,
        resourceTypes);
    String sasToken = blobServiceClient.generateAccountSas(accountSasValues);

    return sasToken;
}

İstemciden hesap SAS'i kullanma

Aşağıdaki kod örneğinde, blobServiceClient nesnesini yetkilendirmek için önceki örnekte oluşturulan hesap SAS'sinin nasıl kullanılacağı gösterilmektedir . Bu istemci nesnesi daha sonra SAS tarafından verilen izinlere göre hizmet düzeyi API'lere erişmek için kullanılabilir.

İlk olarak, hesap erişim anahtarıyla imzalanan bir BlobServiceClient nesnesi oluşturun:

String accountName = "<account-name>";
String accountKey = "<account-key>";
StorageSharedKeyCredential credential = new StorageSharedKeyCredential(accountName, accountKey);
        
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
        .endpoint(String.format("https://%s.blob.core.windows.net/", accountName))
        .credential(credential)
        .buildClient();

Ardından, önceki örnekte gösterildiği gibi hesap SAS'sini oluşturun ve BLOBServiceClient nesnesini yetkilendirmek için SAS'yi kullanın:

// Create a SAS token
String sasToken = createAccountSAS(blobServiceClient);

// Create a new BlobServiceClient using the SAS token
BlobServiceClient sasServiceClient = new BlobServiceClientBuilder()
        .endpoint(blobServiceClient.getAccountUrl())
        .sasToken(sasToken)
        .buildClient();

Ayrıca, bu kaynak türlerine imza değerlerinin bir parçası olarak erişim verildiyse, bir BlobContainerClient nesnesini veya BlobClient nesnesini yetkilendirmek ve bunlarla çalışmak için bir hesap SAS'si de kullanabilirsiniz.

Kaynaklar

Java için Azure Blob Depolama istemci kitaplığını kullanarak hesap SAS'ı oluşturma hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.

Kod örnekleri

İstemci kitaplığı kaynakları

Ayrıca bkz.