Aracılığıyla paylaş


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, 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 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.Storage/storageAccounts/blobServices/generateUserDelegationKey eylemini içeren bir Azure RBAC rolü atanmalıdır. Daha fazla bilgi edinmek için Kullanıcı temsilcisi SAS oluşturma konusuna bakın.
  • Depolama hesabı anahtarıyla. Hem hizmet SAS'i hem de hesap SAS'i depolama hesabı anahtarıyla imzalanmıştır. Hizmet SAS'ini oluşturan istemci, ya hesap anahtarına doğrudan erişime sahip olmalıdır ya da Microsoft.Storage/storageAccounts/listkeys/action izni atanmış olmalıdır. Daha fazla bilgi edinmek için Hizmet SAS'i oluşturma veya Hesap SAS'ı oluşturma kısmına bakın.

Uyarı

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

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

Hesap SAS 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:

SAS hesapları için depolanmış 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;

SAS hesabı oluştur

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;
}

İstemci hesap SAS'ini 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'i oluşturma hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.

Kod örnekleri

İstemci kitaplığı kaynakları

Ayrıca bkz.