Créer un compte SAS avec Java

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 .NET.

À propos de la SAP de compte

Un SAS de compte est créé au niveau du compte de stockage et est signé avec la clé d'accès au compte. 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.

Configuration de votre projet

Pour utiliser les exemples de code de cet article, ajoutez les directives d’importation suivantes :

import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.sas.*;
import com.azure.storage.common.sas.AccountSasPermission;
import com.azure.storage.common.sas.AccountSasResourceType;
import com.azure.storage.common.sas.AccountSasService;
import com.azure.storage.common.sas.AccountSasSignatureValues;

Créer une SAP de compte

Vous pouvez créer une sap de compte pour déléguer un accès limité aux ressources du compte de stockage à l’aide de la méthode suivante :

Pour configurer les valeurs de signature pour la SAP du compte, utilisez les classes d’assistance suivantes :

  • AccountSasPermission: Représente les permissions autorisées par le SAS. Dans notre exemple, nous définissons l’autorisation de lecture sur true.
  • AccountSasService : représente les services accessibles par la SAP. Dans notre exemple, nous autorisons l’accès au service Blob.
  • AccountSasResourceType: représente les types de ressources accessibles par le SAS. Dans notre exemple, nous autorisons l’accès aux API de niveau de service.

Une fois les classes d’assistance configurées, vous pouvez initialiser les paramètres de la sap avec une instance AccountSasSignatureValues.

L’exemple de code suivant montre comment configurer les paramètres SAS et appeler la méthode generateAccountSas pour obtenir la SAP du compte :

public String createAccountSAS(BlobServiceClient blobServiceClient) {
    // Configure the SAS parameters
    OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);
    AccountSasPermission accountSasPermission = new AccountSasPermission()
            .setReadPermission(true);
    AccountSasService services = new AccountSasService()
            .setBlobAccess(true);
    AccountSasResourceType resourceTypes = new AccountSasResourceType()
            .setService(true);

    // Generate the account SAS
    AccountSasSignatureValues accountSasValues = new AccountSasSignatureValues(
        expiryTime,
        accountSasPermission,
        services,
        resourceTypes);
    String sasToken = blobServiceClient.generateAccountSas(accountSasValues);

    return sasToken;
}

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

L'exemple de code suivant montre comment utiliser le compte SAS créé dans l'exemple précédent pour autoriser un objet BlobServiceClient. Cet objet client peut ensuite être utilisé pour accéder aux API de niveau service en fonction des autorisations accordées par le SAS.

Tout d’abord, créez un objet BlobServiceClient signé avec la clé d’accès au compte :

String accountName = "<account-name>";
String accountKey = "<account-key>";
StorageSharedKeyCredential credential = new StorageSharedKeyCredential(accountName, accountKey);
        
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
        .endpoint(String.format("https://%s.blob.core.windows.net/", accountName))
        .credential(credential)
        .buildClient();

Ensuite, générez le SAS de compte comme indiqué dans l'exemple précédent et utilisez le SAS pour autoriser un objet BlobServiceClient :

// Create a SAS token
String sasToken = createAccountSAS(blobServiceClient);

// Create a new BlobServiceClient using the SAS token
BlobServiceClient sasServiceClient = new BlobServiceClientBuilder()
        .endpoint(blobServiceClient.getAccountUrl())
        .sasToken(sasToken)
        .buildClient();

Vous pouvez également utiliser un SAS de compte pour autoriser et utiliser un objet BlobContainerClient 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'un compte SAS et l'utilisation de la bibliothèque client stockage Blob Azure pour Java, consultez les ressources suivantes.

Exemples de code

Ressources de bibliothèque cliente

Voir aussi