Beispiel #1
0
def _create_short_lived_file_sas(account_name, account_key, share, directory_name, file_name):
    # if dir is empty string change it to None
    directory_name = directory_name if directory_name else None
    expiry = (datetime.utcnow() + timedelta(days=1)).strftime('%Y-%m-%dT%H:%M:%SZ')
    sas = SharedAccessSignature(account_name, account_key)
    return sas.generate_file(share, directory_name=directory_name, file_name=file_name,
                             permission=BlobPermissions(read=True), expiry=expiry, protocol='https')
    def generate_shared_access_signature(self,
                                         table_name,
                                         shared_access_policy=None,
                                         sas_version=X_MS_VERSION):
        '''
        Generates a shared access signature for the table.
        Use the returned signature with the sas_token parameter of TableService.

        table_name:
            Required. Name of table.
        shared_access_policy:
            Instance of SharedAccessPolicy class.
        sas_version:
            x-ms-version for storage service, or None to get a signed query
            string compatible with pre 2012-02-12 clients, where the version
            is not included in the query string.
        '''
        _validate_not_none('table_name', table_name)
        _validate_not_none('shared_access_policy', shared_access_policy)
        _validate_not_none('self.account_name', self.account_name)
        _validate_not_none('self.account_key', self.account_key)

        sas = SharedAccessSignature(self.account_name, self.account_key)
        return sas.generate_signed_query_string(
            table_name,
            None,
            shared_access_policy,
            sas_version,
            table_name=table_name,
        )
Beispiel #3
0
def _create_short_lived_blob_sas(account_name, account_key, container, blob):
    expiry = (datetime.utcnow() +
              timedelta(days=1)).strftime('%Y-%m-%dT%H:%M:%SZ')
    sas = SharedAccessSignature(account_name, account_key)
    return sas.generate_blob(container,
                             blob,
                             permission=BlobPermissions(read=True),
                             expiry=expiry,
                             protocol='https')
Beispiel #4
0
 def __init__(self, account_name, account_key, socket_timeout=600):
     self.__settings = Settings()
     self.__account_name = account_name
     self.__account_key = account_key
     self.__blockblob_service = BlockBlobService(
         account_name=self.__account_name,
         account_key=self.__account_key,
         socket_timeout=socket_timeout)
     self.__blob_access_signature = SharedAccessSignature(
         self.__account_name, self.__account_key)
Beispiel #5
0
 def disk_image_sas(self, container_name, image_name, start, expiry,
                    permissions):
     sas = SharedAccessSignature(self.account_name, self.account_key)
     signed_query = sas.generate_blob(
         container_name,
         image_name,
         permission=permissions,
         expiry=expiry.strftime(ISO8061_FORMAT),
         start=start.strftime(ISO8061_FORMAT))
     return 'https://{}.blob.{}/{}/{}?{}'.format(
         self.account_name, self.blob_service_host_base, container_name,
         image_name, signed_query)
Beispiel #6
0
def create_short_lived_container_sas(account_name, account_key, container):
    from datetime import datetime, timedelta
    from azure.storage.sharedaccesssignature import SharedAccessSignature
    from azure.storage.blob.models import BlobPermissions

    expiry = (datetime.utcnow() +
              timedelta(days=1)).strftime('%Y-%m-%dT%H:%M:%SZ')
    sas = SharedAccessSignature(account_name, account_key)
    return sas.generate_container(container,
                                  permission=BlobPermissions(read=True),
                                  expiry=expiry,
                                  protocol='https')
Beispiel #7
0
 def sas(self, container, start, expiry, permissions):
     sas = SharedAccessSignature(
         self.account_name, self.account_key
     )
     signed_query = sas.generate_container(
         container_name=container,
         permission=permissions,
         expiry=expiry.strftime(ISO8061_FORMAT),
         start=start.strftime(ISO8061_FORMAT)
     )
     return 'https://{}.blob.core.windows.net/{}?{}'.format(
         self.account_name, container, signed_query
     )
Beispiel #8
0
    def url(self, name):
        ap = AccessPolicy(expiry=(timezone.datetime.utcnow() + timezone.timedelta(seconds=600)).strftime('%Y-%m-%dT%H:%M:%SZ'), \
                          start=(timezone.datetime.utcnow() + timezone.timedelta(seconds=-600)).strftime('%Y-%m-%dT%H:%M:%SZ'), \
                          permission='r')
        sap = SharedAccessPolicy(ap)
        sas = SharedAccessSignature(self.account_name, self.account_key)
        url = sas.generate_signed_query_string(path=self.azure_container +
                                               '/' + name,
                                               resource_type='b',
                                               shared_access_policy=sap)

        return self.connection.make_blob_url(self.azure_container,
                                             name) + "?" + url
Beispiel #9
0
def sasUrl(account, key, container, permission):

    start = datetime.utcnow()
    expiry = start + timedelta(hours=24)

    accss_plcy = AccessPolicy()
    accss_plcy.start = start.strftime('%Y-%m-%dT%H:%M:%SZ')
    accss_plcy.expiry = expiry.strftime('%Y-%m-%dT%H:%M:%SZ')
    accss_plcy.permission = permission

    sas = SharedAccessSignature(account_name=account, account_key=key)

    query = sas.generate_signed_query_string(
        container,
        ResourceType.RESOURCE_CONTAINER,
        SharedAccessPolicy(accss_plcy),
    )

    return query
 def setUp(self):
     self.sas = SharedAccessSignature(account_name=DEV_ACCOUNT_NAME, 
                                      account_key=DEV_ACCOUNT_KEY)