Aracılığıyla paylaş


JavaScript 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. Azure RBAC rolü, kullanıcı devretme SAS oluşturmak isteyen 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. Hizmet SAS'i ve hesap SAS'i, her ikisi de depolama hesabı anahtarıyla imzalanır. Hizmet SAS'si oluşturan istemcinin ya hesap anahtarına doğrudan erişimi olmalı ya da 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 Paylaşılan erişim imzaları (SAS) ile verilere sınırlı erişim verme konusuna bakın.

Bu makalede, JavaScript 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.

Blob kapsayıcısı için bir hizmet SAS'i oluşturma

Aşağıdaki kod örneği bir kapsayıcı için SAS oluşturur. Mevcut bir depolanmış erişim ilkesinin adı sağlanırsa, bu ilke SAS ile ilişkilendirilir. Önceden tanımlanmış bir erişim ilkesi sağlanmazsa, kod kapsayıcıda geçici bir SAS oluşturur.

Hizmet SAS'i hesap erişim anahtarıyla imzalanır. SAS'yi imzalamak için kullanılan kimlik bilgilerini oluşturmak için StorageSharedKeyCredential sınıfını kullanın. Ardından, SAS belirteç dizesini almak için gerekli parametreleri sağlayan generateBlobSASQueryParameters işlevini çağırın.

// Create a service SAS for a blob container
function getContainerSasUri(containerClient, sharedKeyCredential, storedPolicyName) {
    const sasOptions = {
        containerName: containerClient.containerName,
        permissions: ContainerSASPermissions.parse("c")
    };

    if (storedPolicyName == null) {
        sasOptions.startsOn = new Date();
        sasOptions.expiresOn = new Date(new Date().valueOf() + 3600 * 1000);
    } else {
        sasOptions.identifier = storedPolicyName;
    }

    const sasToken = generateBlobSASQueryParameters(sasOptions, sharedKeyCredential).toString();
    console.log(`SAS token for blob container is: ${sasToken}`);

    return `${containerClient.url}?${sasToken}`;
}

Blob için hizmet SAS'i oluşturma

Aşağıdaki kod örneği blob üzerinde sas oluşturur. Mevcut bir depolanmış erişim ilkesinin adı sağlanırsa, bu ilke SAS ile ilişkilendirilir. Depolanan erişim ilkesi sağlanmazsa kod blob üzerinde geçici bir SAS oluşturur.

Blob için hizmet SAS'i oluşturmak için gerekli parametreleri sağlayan generateBlobSASQueryParameters işlevini çağırın.

// Create a service SAS for a blob
function getBlobSasUri(containerClient, blobName, sharedKeyCredential, storedPolicyName) {
    const sasOptions = {
        containerName: containerClient.containerName,
        blobName: blobName
    };

    if (storedPolicyName == null) {
        sasOptions.startsOn = new Date();
        sasOptions.expiresOn = new Date(new Date().valueOf() + 3600 * 1000);
        sasOptions.permissions = BlobSASPermissions.parse("r");
    } else {
        sasOptions.identifier = storedPolicyName;
    }

    const sasToken = generateBlobSASQueryParameters(sasOptions, sharedKeyCredential).toString();
    console.log(`SAS token for blob is: ${sasToken}`);

    return `${containerClient.getBlockBlobClient(blobName).url}?${sasToken}`;
}

JavaScript ile geliştirme kaynakları

Aşağıdaki bağlantılar JavaScript için Azure Depolama istemci kitaplığını kullanan geliştiriciler için yararlı kaynaklar sağlar

Blob depolama API'leri

JavaScript araçları

Sonraki adımlar