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 :
- Déléguer l’accès aux opérations de niveau de service qui ne sont actuellement pas disponibles avec une SAP spécifique au service, telles que Obtenir les propriétés du service blob, Définir les propriétés du service blob et Obtenir les statistiques du service blob.
- Déléguer l'accès à plusieurs services à la fois dans un compte de stockage. Par exemple, vous pouvez déléguer l’accès aux ressources dans Stockage Blob Azure et Azure Files à l’aide d’une SAP de compte.
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 surTrue
pour accorder l’accès aux API de niveau de service. - container : la valeur par défaut est
False
; définie surTrue
pour accorder l’accès aux API au niveau du conteneur. - objet : la valeur par défaut est
False
; définie surTrue
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
- Documentation de référence sur la bibliothèque cliente
- Code source de la bibliothèque de client
- Package (PyPi)