Java ile kapsayıcı veya 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, 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 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.Storage/storageAccounts/listkeys/action izni atanmış olmalıdır. Daha fazla bilgi edinmek için bkz . Hizmet SAS'i 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ıyla (SAS) verilere sınırlı erişim verme.
Bu makalede, Java için Blob Depolama istemci kitaplığıyla bir kapsayıcı veya 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 StorageSharedKeyCredential 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.
Hizmet SAS’si oluşturma
Uygulamanızın gereksinimlerine göre kapsayıcı veya blob için hizmet SAS'i oluşturabilirsiniz.
Aşağıdaki yöntemi kullanarak kapsayıcı 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 BlobContainerSasPermission örneği olarak belirtilir.
Aşağıdaki kod örneği, bir kapsayıcı kaynağı için okuma izinlerine sahip bir hizmet SAS'sinin nasıl oluşturulacağını gösterir:
public String createServiceSASContainer(BlobContainerClient containerClient) {
// 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
BlobContainerSasPermission sasPermission = new BlobContainerSasPermission()
.setReadPermission(true);
BlobServiceSasSignatureValues sasSignatureValues = new BlobServiceSasSignatureValues(expiryTime, sasPermission)
.setStartTime(OffsetDateTime.now().minusMinutes(5));
String sasToken = containerClient.generateSas(sasSignatureValues);
return sasToken;
}
İstemci nesnesini yetkilendirmek için hizmet 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 bir hizmet SAS'si kullanabilirsiniz.
Aşağıdaki kod örnekleri, bir BlobContainerClient nesnesini yetkilendirmek için hizmet 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.
İ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 hizmet SAS'sini oluşturun ve BLOBContainerClient nesnesini yetkilendirmek için SAS'yi kullanın:
// Create a SAS token
BlobContainerClient containerClient = blobServiceClient
.getBlobContainerClient("sample-container");
String sasToken = createServiceSASContainer(containerClient);
// Create a new BlobContainerClient using the SAS token
BlobContainerClient sasContainerClient = new BlobContainerClientBuilder()
.endpoint(containerClient.getBlobContainerUrl())
.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.