Een account-SAS maken met Python
Met een Shared Access Signature (SAS) kunt u beperkte toegang verlenen tot containers en blobs in uw opslagaccount. Wanneer u een SAS maakt, geeft u de beperkingen op, waaronder welke Azure Storage-resources een client mag openen, welke machtigingen ze hebben voor deze resources en hoe lang de SAS geldig is.
Elke SAS is ondertekend met een sleutel. U kunt een SAS op twee manieren ondertekenen:
- Met een sleutel die is gemaakt met behulp van Microsoft Entra-referenties. Een SAS die is ondertekend met Microsoft Entra-referenties is een SAS voor gebruikersdelegatie . Aan een client die een SAS voor gebruikersdelegering maakt, moet een Azure RBAC-rol worden toegewezen die de actie Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey bevat. Zie Een SAS voor gebruikersdelegatie maken voor meer informatie.
- Met de sleutel van het opslagaccount. Zowel een service-SAS als een account-SAS zijn ondertekend met de sleutel van het opslagaccount. De client die een service-SAS maakt, moet directe toegang hebben tot de accountsleutel of de machtiging Microsoft.Storage/storageAccounts/listkeys/action toewijzen. Zie Een service-SAS maken of Een account-SAS maken voor meer informatie.
Notitie
Een SAS voor gebruikersdelegering biedt superieure beveiliging voor een SAS die is ondertekend met de sleutel van het opslagaccount. Microsoft raadt het gebruik van een SAS voor gebruikersdelegering aan, indien mogelijk. Zie Beperkte toegang verlenen tot gegevens met Shared Access Signatures (SAS) voor meer informatie.
In dit artikel wordt beschreven hoe u de sleutel van het opslagaccount gebruikt om een account-SAS te maken met de Azure Storage-clientbibliotheek voor Python.
Over de ACCOUNT-SAS
Er wordt een account-SAS gemaakt op het niveau van het opslagaccount. Door een account-SAS te maken, kunt u het volgende doen:
- Gedelegeerdentoegang tot bewerkingen op serviceniveau die momenteel niet beschikbaar zijn met een servicespecifieke SAS, zoals Eigenschappen van blobservice ophalen, Eigenschappen van blobservice instellen en Blob-servicestatistieken ophalen.
- Gedelegeerdentoegang tot meer dan één service in een opslagaccount tegelijk. U kunt bijvoorbeeld toegang tot resources delegeren in zowel Azure Blob Storage als Azure Files met behulp van een account-SAS.
Opgeslagen toegangsbeleid wordt niet ondersteund voor een account-SAS.
Een account-SAS maken
Een account-SAS is ondertekend met de accounttoegangssleutel. In het volgende codevoorbeeld ziet u hoe u de methode generate_account_sas aanroept om de SAS-tokentekenreeks voor het account op te halen.
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
Geldige parameters voor de ResourceTypes-constructor zijn:
- service: standaard is
False
; ingesteld omTrue
toegang te verlenen tot API's op serviceniveau. - container: standaard is
False
; ingesteld omTrue
toegang te verlenen tot API's op containerniveau. - object: standaard is
False
; ingesteld omTrue
toegang te verlenen tot API's op objectniveau voor blobs, wachtrijberichten en bestanden.
Zie AccountSasPermissions voor beschikbare machtigingen.
Een account-SAS van een client gebruiken
Als u de account-SAS wilt gebruiken voor toegang tot API's op serviceniveau voor de Blob-service, maakt u een BlobServiceClient-object met behulp van de account-SAS en het Blob Storage-eindpunt voor uw opslagaccount.
# 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)
U kunt ook een account-SAS gebruiken om een ContainerClient-object of BlobClient-object te autoriseren en te werken, als deze resourcetypen toegang krijgen als onderdeel van de handtekeningwaarden.
Resources
Zie de volgende resources voor meer informatie over het maken van een account-SAS met behulp van de Azure Blob Storage-clientbibliotheek voor Python.