Créer une SAP de service pour un blob avec .NET
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 à l’aide des informations d’identification d’Azure Active Directory (Azure AD). Une SAP signée avec des informations d’identification d’Azure AD est une SAP 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 SAP 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 SAP de service ou Créer une SAP 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 .NET.
À propos de la SAP de service
Une SAP de service est signée avec la clé d’accès au compte. Vous pouvez utiliser la classe StorageSharedKeyCredential afin de créer les informations d’identification utilisées pour signer le jeton SAP de service.
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
L’exemple de code suivant montre comment créer une SAP de service pour une ressource blob. Tout d’abord, le code vérifie que l’objet BlobClient est autorisé avec des informations d’identification de clé partagée en vérifiant la propriété CanGenerateSasUri. Ensuite, il génère la SAP de service via la classe BlobSasBuilder et appelle GenerateSasUri pour créer un URI SAP de service basé sur les objets client et générateur.
public static async Task<Uri> CreateServiceSASBlob(
BlobClient blobClient,
string storedPolicyName = null)
{
// Check if BlobContainerClient object has been authorized with Shared Key
if (blobClient.CanGenerateSasUri)
{
// Create a SAS token that's valid for one day
BlobSasBuilder sasBuilder = new BlobSasBuilder()
{
BlobContainerName = blobClient.GetParentBlobContainerClient().Name,
BlobName = blobClient.Name,
Resource = "b"
};
if (storedPolicyName == null)
{
sasBuilder.ExpiresOn = DateTimeOffset.UtcNow.AddDays(1);
sasBuilder.SetPermissions(BlobContainerSasPermissions.Read);
}
else
{
sasBuilder.Identifier = storedPolicyName;
}
Uri sasURI = blobClient.GenerateSasUri(sasBuilder);
return sasURI;
}
else
{
// Client object is not authorized via Shared Key
return null;
}
}
Utiliser une SAP de service pour autoriser un objet client
L’exemple de code suivant montre comment utiliser la SAP de service 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é.
// Create a Uri object with a service SAS appended
BlobClient blobClient = blobServiceClientSharedKey
.GetBlobContainerClient("sample-container")
.GetBlobClient("sample-blob.txt");
Uri blobSASURI = await CreateServiceSASBlob(blobClient);
// Create a blob client object representing 'sample-blob.txt' with SAS authorization
BlobClient blobClientSAS = new BlobClient(blobSASURI);
Ressources
Pour en savoir plus sur la création d’une SAP de service à l’aide de la bibliothèque cliente Stockage Blob Azure pour .NET, consultez les ressources suivantes.
Ressources de bibliothèque cliente
- Documentation de référence sur la bibliothèque cliente
- Code source de la bibliothèque de client
- Package (NuGet)
Voir aussi
- Accorder un accès limité aux ressources du Stockage Azure à l’aide des signatures d’accès partagé (SAP)
- Créer une SAP de service
- Pour obtenir des exemples de code associés utilisant des Kits de développement logiciel (SDK) .NET version 11.x dépréciés, consultez l’article Exemples de code utilisant .NET version 11.x.