Partager via


Créer une SAP de service pour un blob 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 service pour un objet blob avec la bibliothèque cliente Stockage Blob pour Python.

À propos de la SAS de service

Une SAP de service est signée avec la clé d’accès au compte de stockage. Une SAP de service délègue l’accès à une ressource dans un seul service de stockage Azure, tel que Stockage Blob.

Vous pouvez également utiliser une stratégie d’accès stockée pour définir les autorisations et la durée de la signature d’accès partagé. Si le nom d’une stratégie d’accès stockée existante est fourni, cette stratégie est associée à la SAP. Pour plus d’informations sur les stratégies d’accès stockées, consultez Définir une stratégie d’accès stockée. Si aucune stratégie d’accès stockée n’est fournie, les exemples de code de cet article montrent comment définir des autorisations et une durée pour la SAP.

Créer une SAP de service pour un objet blob

Vous pouvez créer une SAP de service pour déléguer un accès limité à une ressource de blob à l’aide de la méthode suivante :

La clé d’accès au compte de stockage utilisée pour signer la signature d’accès partagé est passée à la méthode en tant qu’argument account_key. Les autorisations autorisées sont transmises à la méthode en tant qu’argument permission et sont définies dans la classe BlobSasPermissions.

L'exemple de code suivant montre comment créer un SAS de service avec des autorisations de lecture pour une ressource blob :

def create_service_sas_blob(self, blob_client: BlobClient, 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_blob_sas(
        account_name=blob_client.account_name,
        container_name=blob_client.container_name,
        blob_name=blob_client.blob_name,
        account_key=account_key,
        permission=BlobSasPermissions(read=True),
        expiry=expiry_time,
        start=start_time
    )

    return sas_token

Utiliser une SAS de service pour autoriser un objet client

L’exemple de code suivant montre comment utiliser la SAP de service créée dans l’exercice précédent pour autoriser un objet BlobClient. Cet objet client peut être utilisé pour effectuer des opérations sur la ressource d’objet blob en fonction des autorisations accordées par la signature d’accès partagé.

# 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"{blob_client.url}?{sas_token}"

# Create a BlobClient object with SAS authorization
blob_client_sas = BlobClient.from_blob_url(blob_url=sas_url)

Ressources

Pour en savoir plus sur l'utilisation de la bibliothèque client Azure Blob Storage pour Python, consultez les ressources suivantes.

Exemples de code

Ressources de bibliothèque cliente

Voir aussi