Aracılığıyla paylaş


Python ile kapsayıcı 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, Python için Blob Depolama istemci kitaplığına sahip bir kapsayıcı için hizmet SAS'i oluşturmak üzere depolama hesabı anahtarının nasıl kullanılacağı 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.

Kapsayıcı için hizmet SAS'i oluşturma

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:

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 bağımsız değişken olarak permission yöntemine geçirilir ve ContainerSasPermissions sınıfında tanımlanır.

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:

def create_service_sas_container(self, container_client: ContainerClient, 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_container_sas(
        account_name=container_client.account_name,
        container_name=container_client.container_name,
        account_key=account_key,
        permission=ContainerSasPermissions(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 ContainerClient 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 kapsayıcı kaynağında işlemler 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"{container_client.url}?{sas_token}"

# Create a ContainerClient object with SAS authorization
container_client_sas = ContainerClient.from_container_url(container_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.