Share via


Python 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 Python için Azure Depolama istemci kitaplığıyla bir hesap SAS'sinin nasıl oluşturulacağı gösterilmektedir.

Hesap SAS'i hakkında

Depolama hesabı düzeyinde bir hesap SAS'i oluşturulur. 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.

Hesap SAS’si oluşturma

Hesap erişim anahtarıyla bir hesap SAS'i imzalanır. Aşağıdaki kod örneği, hesap SAS belirteci dizesini almak için generate_account_sas yöntemini çağırmayı gösterir.

def create_account_sas(self, account_name: str, account_key: str):
    # Create an account SAS that's valid for one day
    start_time = datetime.datetime.now(datetime.timezone.utc)
    expiry_time = start_time + datetime.timedelta(days=1)

    # Define the SAS token permissions
    sas_permissions=AccountSasPermissions(read=True)

    # Define the SAS token resource types
    # For this example, we grant access to service-level APIs
    sas_resource_types=ResourceTypes(service=True)

    sas_token = generate_account_sas(
        account_name=account_name,
        account_key=account_key,
        resource_types=sas_resource_types,
        permission=sas_permissions,
        expiry=expiry_time,
        start=start_time
    )

    return sas_token

ResourceTypes oluşturucu için geçerli parametreler şunlardır:

  • service: default is False; hizmet düzeyi API'lere erişim vermek için olarak ayarlanır True .
  • kapsayıcı: varsayılan ; Falsekapsayıcı düzeyi API'lere erişim vermek için olarak ayarlanır True .
  • object: default is False; bloblar, kuyruk iletileri ve dosyalar için nesne düzeyi API'lere erişim vermek üzere olarak ayarlanır True .

Kullanılabilir izinler için bkz . AccountSasPermissions.

İstemciden hesap SAS'i kullanma

Blob hizmetinin hizmet düzeyi API'lerine erişmek üzere hesap SAS'sini kullanmak için, depolama hesabınız için hesap SAS'sini ve Blob Depolama uç noktasını kullanarak bir BlobServiceClient nesnesi oluşturun.

# The SAS token string can be appended to the account URL with a ? delimiter
# or passed as the credential argument to the client constructor
account_sas_url = f"{blob_service_client.url}?{sas_token}"

# Create a BlobServiceClient object
blob_service_client_sas = BlobServiceClient(account_url=account_sas_url)

Ayrıca, bu kaynak türlerine imza değerlerinin bir parçası olarak erişim verilirse, bir ContainerClient nesnesine veya BlobClient nesnesine yetki vermek ve bu nesneyle çalışmak için bir hesap SAS'si de kullanabilirsiniz.

Kaynaklar

Python 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.