Dela via


Skapa ett konto-SAS med Python

Med en signatur för delad åtkomst (SAS) kan du bevilja begränsad åtkomst till containrar och blobar i ditt lagringskonto. När du skapar en SAS anger du dess begränsningar, inklusive vilka Azure Storage-resurser en klient har åtkomst till, vilka behörigheter de har för dessa resurser och hur länge SAS är giltigt.

Varje SAS signeras med en nyckel. Du kan signera en SAS på något av två sätt:

  • Med en nyckel som skapats med Microsoft Entra-autentiseringsuppgifter. En SAS som är signerad med Microsoft Entra-autentiseringsuppgifter är en SAS för användardelegering . En klient som skapar en SAS för användardelegering måste tilldelas en Azure RBAC-roll som innehåller åtgärden Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey . Mer information finns i Skapa en SAS för användardelegering.
  • Med lagringskontonyckeln. Både en tjänst-SAS och ett sas-konto signeras med lagringskontonyckeln. Klienten som skapar en tjänst-SAS måste antingen ha direkt åtkomst till kontonyckeln eller tilldelas behörigheten Microsoft.Storage/storageAccounts/listkeys/action . Mer information finns i Skapa en tjänst-SAS eller Skapa ett konto-SAS.

Kommentar

En SAS för användardelegering ger överlägsen säkerhet till en SAS som är signerad med lagringskontonyckeln. Microsoft rekommenderar att du använder en SAS för användardelegering när det är möjligt. Mer information finns i Bevilja begränsad åtkomst till data med signaturer för delad åtkomst (SAS).

Den här artikeln visar hur du använder lagringskontonyckeln för att skapa ett konto-SAS med Azure Storage-klientbiblioteket för Python.

Om kontots SAS

Ett SAS-konto skapas på lagringskontots nivå. Genom att skapa ett konto-SAS kan du:

  • Delegera åtkomst till åtgärder på tjänstnivå som för närvarande inte är tillgängliga med en tjänstspecifik SAS, till exempel Hämta blobtjänstegenskaper, Ange blobtjänstegenskaper och Hämta blobtjänststatistik.
  • Delegera åtkomst till mer än en tjänst i ett lagringskonto i taget. Du kan till exempel delegera åtkomst till resurser i både Azure Blob Storage och Azure Files med hjälp av ett konto-SAS.

Lagrade åtkomstprinciper stöds inte för ett konto-SAS.

Skapa en konto-SAS

Ett SAS-konto signeras med kontoåtkomstnyckeln. I följande kodexempel visas hur du anropar metoden generate_account_sas för att hämta kontots SAS-tokensträng.

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

Giltiga parametrar för ResourceTypes-konstruktorn är:

  • service: default is False; set to True grant access to service-level API:er.
  • container: standard är False; inställd på att True bevilja åtkomst till API:er på containernivå.
  • object: default is False; set to True grant access to object-level API:er for blobs, queue messages, and files.

Tillgängliga behörigheter finns i AccountSasPermissions.

Använda ett SAS-konto från en klient

Om du vill använda konto-SAS för att komma åt API:er på tjänstnivå för Blob-tjänsten skapar du ett BlobServiceClient-objekt med kontot SAS och Blob Storage-slutpunkten för ditt lagringskonto.

# 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)

Du kan också använda ett konto-SAS för att auktorisera och arbeta med ett ContainerClient-objekt eller BlobClient-objekt , om dessa resurstyper beviljas åtkomst som en del av signaturvärdena.

Resurser

Mer information om hur du skapar ett konto-SAS med hjälp av Azure Blob Storage-klientbiblioteket för Python finns i följande resurser.

Kodexempel

Klientbiblioteksresurser

Se även