Share via


Python 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, Depolama hesabı anahtarını kullanarak Python için Blob Depolama istemci kitaplığına sahip bir blob için hizmet SAS'sinin nasıl oluşturulacağı gösterilmektedir.

Hizmet SAS'i hakkında

Depolama hesabı erişim anahtarıyla bir hizmet SAS'i imzalanır. Hizmet SAS'i, Blob Depolama gibi tek bir Azure Depolama hizmetindeki bir kaynağa erişim yetkisi verir.

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:

SAS'yi imzalamak için kullanılan depolama hesabı erişim anahtarı yöntemine bağımsız değişken olarak account_key geçirilir. İzin verilen izinler yöntemine bağımsız değişken olarak permission geçirilir ve BlobSasPermissions sınıfında tanımlanır.

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

def create_service_sas_blob(self, blob_client: BlobClient, account_key: str):
    # Create a SAS token that's valid for one day, as an example
    start_time = datetime.datetime.now(datetime.timezone.utc)
    expiry_time = start_time + datetime.timedelta(days=1)

    sas_token = generate_blob_sas(
        account_name=blob_client.account_name,
        container_name=blob_client.container_name,
        blob_name=blob_client.blob_name,
        account_key=account_key,
        permission=BlobSasPermissions(read=True),
        expiry=expiry_time,
        start=start_time
    )

    return sas_token

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

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

# Create a BlobClient object with SAS authorization
blob_client_sas = BlobClient.from_blob_url(blob_url=sas_url)

Kaynaklar

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

Kod örnekleri

İstemci kitaplığı kaynakları

Ayrıca bkz.