Partager via


Créer une SAP de compte avec Python

Une signature d’accès partagé (SAP) vous permet d’accorder un accès limité aux conteneurs et aux objets blob de votre compte de stockage. Lorsque vous créez une SAP, vous spécifiez ses contraintes, notamment les ressources de Stockage Azure auxquelles un client est autorisé à accéder, les autorisations dont ils disposent sur ces ressources et la durée de validité de la SAP.

Chaque SAP est signée avec une clé. Vous pouvez signer une SAP grâce à l’une des deux méthodes suivantes :

  • Avec une clé créée en utilisant les informations d’identification Microsoft Entra. Une SAS signée avec des informations d’identification Microsoft Entra est une SAS de délégation d’utilisateur. Un client qui crée une signature d’accès partagé de délégation d’utilisateur doit avoir un rôle RBAC Azure qui inclut l’action Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Pour en savoir plus, consultez Créer une SAS de délégation d'utilisateur.
  • Avec la clé du compte de stockage. Une SAP de service et une SAP de compte sont signées avec la clé du compte de stockage. Le client qui crée une signature d’accès partagé de service doit avoir un accès direct à la clé de compte ou une autorisation Microsoft.Storage/storageAccounts/listkeys/action. Pour plus d’informations, consultez Créer une SAS de service ou Créer une SAS de compte.

Notes

Une SAP de délégation d’utilisateur offre une meilleure sécurité à une SAP signée avec la clé de compte de stockage. Microsoft recommande d’utiliser une SAP de délégation d’utilisateur dans la mesure du possible. Pour plus d’informations, consultez Accorder un accès limité aux données avec des signatures d’accès partagé (SAP).

Cet article explique comment utiliser la clé du compte de stockage pour créer une SAP de compte avec la bibliothèque cliente Stockage Azure pour Python.

À propos de la SAP de compte

Une SAP de compte est créée au niveau du compte de stockage. En créant une SAP de compte, vous pouvez :

Les stratégies d’accès stockées ne sont pas encore prises en charge pour les SAP de compte.

Créer une SAP de compte

Une SAP de compte est signée avec la clé d’accès du compte. L’exemple de code suivant montre comment appeler la méthode generate_account_sas pour obtenir la chaîne du jeton SAP du compte.

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

Les paramètres valides pour le constructeur ResourceTypes sont les suivants :

  • service : la valeur par défaut est False ; définie sur True pour accorder l’accès aux API de niveau de service.
  • container : la valeur par défaut est False ; définie sur True pour accorder l’accès aux API au niveau du conteneur.
  • objet : la valeur par défaut est False ; définie sur True pour accorder l’accès aux API au niveau de l’objet pour les objets blob, les messages de file d’attente et les fichiers.

Pour connaître les autorisations disponibles, consultez AccountSasPermissions.

Utilisation d’une SAP de compte à partir d’un client

Afin utiliser la SAP de compte pour accéder aux API au niveau du service pour le service BLOB, créez un objet BlobServiceClient à l’aide de la SAP du compte et du point de terminaison de stockage Blob de votre compte de stockage.

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

Vous pouvez également utiliser un SAS de compte pour autoriser et utiliser un objet ContainerClient ou BlobClient, si ces types de ressources sont autorisés dans le cadre des valeurs de la signature.

Ressources

Pour en savoir plus sur la création d’une SAP de compte à l’aide de la bibliothèque cliente Stockage Blob Azure pour Python, consultez les ressources suivantes.

Exemples de code

Ressources de bibliothèque cliente

Voir aussi