Share via


Java ile blob için hizmet 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, Java için Blob Depolama istemci kitaplığıyla blob için hizmet SAS'i oluşturmak üzere depolama hesabı anahtarının nasıl kullanılacağı gösterilmektedir.

Hizmet SAS'i hakkında

Hizmet SAS'i hesap erişim anahtarıyla imzalanır. hizmet SAS'sini imzalamak için kullanılan kimlik bilgilerini oluşturmak için Depolama SharedKeyCredential sınıfını kullanabilirsiniz.

SAS'nin izinlerini ve süresini tanımlamak için bir depolanmış erişim ilkesi de kullanabilirsiniz. Mevcut bir depolanmış erişim ilkesinin adı sağlanırsa, bu ilke SAS ile ilişkilendirilir. Depolanan erişim ilkeleri hakkında daha fazla bilgi edinmek için bkz . Saklı erişim ilkesi tanımlama. Depolanmış erişim ilkesi sağlanmazsa, bu makaledeki kod örneklerinde SAS için izinleri ve süreyi tanımlama gösterilmektedir.

Blob için hizmet SAS'i oluşturma

Aşağıdaki yöntemi kullanarak bir blob kaynağına sınırlı erişim yetkisi vermek için bir hizmet SAS'i oluşturabilirsiniz:

Süre sonu ve imzalı izinler gibi SAS imza değerleri, BlobServiceSasSignatureValues örneğinin bir parçası olarak yöntemine geçirilir. İzinler BlobSasPermission örneği olarak belirtilir.

Aşağıdaki kod örneği, blob kaynağı için okuma izinlerine sahip bir hizmet SAS'sinin nasıl oluşturulacağını gösterir:

public String createServiceSASBlob(BlobClient blobClient) {
    // Create a SAS token that's valid for 1 day, as an example
    OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);

    // Assign read permissions to the SAS token
    BlobSasPermission sasPermission = new BlobSasPermission()
            .setReadPermission(true);

    BlobServiceSasSignatureValues sasSignatureValues = new BlobServiceSasSignatureValues(expiryTime, sasPermission)
            .setStartTime(OffsetDateTime.now().minusMinutes(5));

    String sasToken = blobClient.generateSas(sasSignatureValues);
    return sasToken;
}

İstemci nesnesini yetkilendirmek için hizmet SAS'si kullanma

Aşağıdaki kod örneği, bir BlobClient nesnesini yetkilendirmek için önceki örnekte oluşturulan hizmet SAS'sinin nasıl kullanılacağını gösterir. Bu istemci nesnesi, SAS tarafından verilen izinlere göre blob kaynağında işlem gerçekleştirmek 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();

Daha sonra, önceki örnekte gösterildiği gibi hizmet SAS'sini oluşturun ve BLOBClient nesnesini yetkilendirmek için SAS'yi kullanın:

// Create a SAS token
BlobClient blobClient = blobServiceClient
        .getBlobContainerClient("sample-container")
        .getBlobClient("sample-blob.txt");
String sasToken = createServiceSASBlob(blobClient);

// Create a new BlobClient using the SAS token
BlobClient sasBlobClient = new BlobClientBuilder()
        .endpoint(blobClient.getBlobUrl())
        .sasToken(sasToken)
        .buildClient();

Kaynaklar

Java için Azure Blob Depolama istemci kitaplığını kullanma hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.

İstemci kitaplığı kaynakları

Ayrıca bkz.