Guide de sécurité Azure StorageAzure Storage security guide

Stockage Azure propose un ensemble complet de fonctionnalités de sécurité qui, une fois réunies, permettent aux développeurs de créer des applications sécurisées :Azure Storage provides a comprehensive set of security capabilities that together enable developers to build secure applications:

  • Toutes les données (y compris les métadonnées) écrites dans le stockage Azure sont automatiquement chiffrées à l’aide de Storage Service Encryption (SSE).All data (including metadata) written to Azure Storage is automatically encrypted using Storage Service Encryption (SSE). Pour plus d’informations, consultez Annonce du chiffrement par défaut des objets blob, fichiers, tables et stockages de file d’attente Azure.For more information, see Announcing Default Encryption for Azure Blobs, Files, Table and Queue Storage.
  • Azure Active Directory (Azure AD) et le contrôle d’accès en fonction du rôle (RBAC) sont pris en charge pour le stockage Azure pour les opérations de gestion des ressources et les opérations de données comme suit :Azure Active Directory (Azure AD) and Role-Based Access Control (RBAC) are supported for Azure Storage for both resource management operations and data operations, as follows:
    • Vous pouvez attribuer des rôles RBAC limités au compte de stockage à des principaux de sécurité et utiliser Azure AD pour autoriser les opérations de gestion des ressources telles que la gestion des clés.You can assign RBAC roles scoped to the storage account to security principals and use Azure AD to authorize resource management operations such as key management.
    • L’intégration d’Azure AD est prise en charge pour les opérations de données d’objets blob et de file d’attente.Azure AD integration is supported for blob and queue data operations. Vous pouvez attribuer des rôles RBAC limités à un abonnement, groupe de ressources, compte de stockage, ou un conteneur ou une file d’attente à un principal de sécurité ou une identité managée pour des ressources Azure.You can assign RBAC roles scoped to a subscription, resource group, storage account, or an individual container or queue to a security principal or a managed identity for Azure resources. Pour plus d’informations, consultez Authentifier l’accès au Stockage Azure à l’aide d’Azure Active Directory.For more information, see Authenticate access to Azure Storage using Azure Active Directory.
  • Les données peuvent être sécurisées en transit entre une application et Azure au moyen du chiffrement côté client, de HTTPS ou de SMB 3.0.Data can be secured in transit between an application and Azure by using Client-Side Encryption, HTTPS, or SMB 3.0.
  • Les disques de système d’exploitation et de données utilisés par les machines virtuelles Azure peuvent être chiffrés à l’aide d’Azure Disk Encryption.OS and data disks used by Azure virtual machines can be encrypted using Azure Disk Encryption.
  • Il est possible d’accorder un accès délégué aux objets de données d’Azure Storage en utilisant des signatures d’accès partagé.Delegated access to the data objects in Azure Storage can be granted using Shared Access Signatures.

Cet article fournit une vue d’ensemble sur chacune de ces fonctionnalités de sécurité, qui peuvent être utilisées avec le stockage Azure.This article provides an overview of each of these security features that can be used with Azure Storage. Des liens vers des articles détaillés vous sont proposés pour vous permettre d’explorer de façon plus détaillée chaque fonctionnalité.Links are provided to articles that will give details of each feature so you can easily do further investigation on each topic.

Voici les sujets qui sont abordés dans cet article :Here are the topics to be covered in this article:

  • Sécurité du plan de gestion – Sécurisation de votre compte de stockageManagement Plane Security – Securing your Storage Account

    Le plan de gestion se compose des ressources utilisées pour gérer votre compte de stockage.The management plane consists of the resources used to manage your storage account. Cette section couvre le modèle de déploiement Azure Resource Manager et la façon d’utiliser le contrôle d’accès en fonction du rôle (RBAC) pour contrôler l’accès à vos comptes de stockage.This section covers the Azure Resource Manager deployment model and how to use Role-Based Access Control (RBAC) to control access to your storage accounts. Elle couvre aussi la gestion des clés de compte de stockage et vous explique comment les regénérer.It also addresses managing your storage account keys and how to regenerate them.

  • Sécurité du plan de données – Sécurisation de l’accès à vos donnéesData Plane Security – Securing Access to Your Data

    Dans cette section, nous verrons comment autoriser l’accès aux objets de données réels de votre compte de stockage (objets blob, fichiers, files d’attente et tables) en utilisant des signatures d’accès partagé et des stratégies d’accès stockées.In this section, we'll look at allowing access to the actual data objects in your Storage account, such as blobs, files, queues, and tables, using Shared Access Signatures and Stored Access Policies. Nous évoquerons à la fois les signatures d’accès partagé (SAP) au niveau des services et les signatures d’accès partagé au niveau des comptes.We will cover both service-level SAS and account-level SAS. Nous verrons aussi comment limiter l’accès à une adresse IP spécifique (ou à une plage d’adresses IP), comment limiter le protocole utilisé pour HTTPS et comment révoquer une signature d’accès partagé sans attendre son expiration.We'll also see how to limit access to a specific IP address (or range of IP addresses), how to limit the protocol used to HTTPS, and how to revoke a Shared Access Signature without waiting for it to expire.

  • Chiffrement en transitEncryption in Transit

    Cette section explique comment sécuriser les données pendant leur transfert vers et à partir d’Azure Storage.This section discusses how to secure data when you transfer it into or out of Azure Storage. Nous vous livrerons des recommandations concernant l’utilisation de HTTPS et vous parlerons du chiffrement utilisé par SMB 3.0 pour les partages de fichiers Azure.We'll talk about the recommended use of HTTPS and the encryption used by SMB 3.0 for Azure file shares. Nous nous intéresserons aussi au chiffrement côté client, qui vous permet de chiffrer les données avant leur transfert vers Storage dans une application cliente et de déchiffrer les données après leur transfert à partir de Storage.We will also take a look at Client-side Encryption, which enables you to encrypt the data before it is transferred into Storage in a client application, and to decrypt the data after it is transferred out of Storage.

  • Chiffrement au reposEncryption at Rest

    Nous parlerons du chiffrement de service de stockage (SSE), qui est maintenant activé automatiquement pour les comptes de stockage nouveaux et existants.We will talk about Storage Service Encryption (SSE), which is now automatically enabled for new and existing storage accounts. Nous verrons aussi comment utiliser Azure Disk Encryption et explorerons les différences fondamentales entre Disk Encryption, SSE et le chiffrement côté client, ainsi que des cas d’utilisation.We will also look at how you can use Azure Disk Encryption and explore the basic differences and cases of Disk Encryption versus SSE versus Client-Side Encryption. Nous nous pencherons brièvement sur la conformité aux normes FIPS des ordinateurs de l’administration américaine.We will briefly look at FIPS compliance for U.S. Government computers.

  • Audit de l’accès d’Azure Storage à l’aide de Storage AnalyticsUsing Storage Analytics to audit access of Azure Storage

    Cette section explique comment rechercher des informations dans les journaux d’activité d’analyse du stockage pour une demande donnée.This section discusses how to find information in the storage analytics logs for a request. Nous examinerons des données de journal d’analyse de stockage réelles et verrons comment déterminer si une demande est formulée avec la clé de compte de stockage, une signature d’accès partagé ou de façon anonyme, et si elle a abouti ou échoué.We'll take a look at real storage analytics log data and see how to discern whether a request is made with the Storage account key, with a Shared Access signature, or anonymously, and whether it succeeded or failed.

  • Activation de clients basés sur le navigateur à l’aide de CORSEnabling Browser-Based Clients using CORS

    Cette section explique comment autoriser le partage des ressources cross-origin (CORS).This section talks about how to allow cross-origin resource sharing (CORS). Nous évoquerons l’accès intra-domaines, ainsi que sa gestion à l’aide des fonctionnalités CORS intégrées au stockage Azure.We'll talk about cross-domain access, and how to handle it with the CORS capabilities built into Azure Storage.

Sécurité du plan de gestionManagement Plane Security

Le plan de gestion se compose des opérations qui affectent le compte de stockage proprement dit.The management plane consists of operations that affect the storage account itself. Par exemple, vous pouvez créer ou supprimer un compte de stockage, obtenir la liste des comptes de stockage d’un abonnement, récupérer les clés de compte de stockage ou régénérer les clés de compte de stockage.For example, you can create or delete a storage account, get a list of storage accounts in a subscription, retrieve the storage account keys, or regenerate the storage account keys.

Quand vous créez un compte de stockage, vous sélectionnez un modèle de déploiement Classique ou Resource Manager.When you create a new storage account, you select a deployment model of Classic or Resource Manager. Le modèle classique de création de ressources dans Azure autorise seulement un accès « tout ou rien » à l’abonnement et, à tour de rôle, au compte de stockage.The Classic model of creating resources in Azure only allows all-or-nothing access to the subscription, and in turn, the storage account.

Ce guide porte essentiellement sur le modèle Resource Manager, qui est la méthode recommandée pour créer des comptes de stockage.This guide focuses on the Resource Manager model that is the recommended means for creating storage accounts. Au lieu d’accorder l’accès à l’ensemble de l’abonnement, les comptes de stockage Resource Manager vous permettent de contrôler l’accès au plan de gestion à un niveau plus limité en utilisant le contrôle d’accès en fonction du rôle (RBAC).With the Resource Manager storage accounts, rather than giving access to the entire subscription, you can control access on a more finite level to the management plane using Role-Based Access Control (RBAC).

Comment sécuriser un compte de stockage en utilisant le contrôle d’accès en fonction du rôle (RBAC)How to secure your storage account with Role-Based Access Control (RBAC)

Pour commencer, expliquons ce qu’est RBAC et voyons comment l’utiliser.Let's talk about what RBAC is, and how you can use it. À chaque abonnement Azure correspond un annuaire Azure Active Directory.Each Azure subscription has an Azure Active Directory. Les utilisateurs, les groupes et les applications de cet annuaire peuvent être autorisés à gérer les ressources de l’abonnement Azure qui reposent sur le modèle de déploiement Gestionnaire de ressources.Users, groups, and applications from that directory can be granted access to manage resources in the Azure subscription that use the Resource Manager deployment model. Ce type de sécurité porte le nom de contrôle d’accès en fonction du rôle (RBAC).This type of security is referred to as Role-Based Access Control (RBAC). Pour gérer cet accès, vous pouvez utiliser le Portail Azure, les outils de l’interface de ligne de commande Azure, PowerShell ou les API REST du fournisseur de ressources de stockage Azure.To manage this access, you can use the Azure portal, the Azure CLI tools, PowerShell, or the Azure Storage Resource Provider REST APIs.

Avec le modèle Gestionnaire de ressources, vous devez placer le compte de stockage dans un groupe de ressources et contrôler l’accès au plan de gestion de ce compte de stockage spécifique à l’aide d’Azure Active Directory.With the Resource Manager model, you put the storage account in a resource group and control access to the management plane of that specific storage account using Azure Active Directory. Par exemple, vous pouvez permettre à certains utilisateurs d’accéder aux clés de compte de stockage, pendant que d’autres pourront voir les informations relatives au compte de stockage, mais pas accéder aux clés de compte de stockage.For example, you can give specific users the ability to access the storage account keys, while other users can view information about the storage account, but cannot access the storage account keys.

Octroi de l’accèsGranting Access

L’accès est octroyé en attribuant le rôle RBAC approprié aux utilisateurs, groupes et applications, dans l’étendue appropriée.Access is granted by assigning the appropriate RBAC role to users, groups, and applications, at the right scope. Pour octroyer l’accès à l’ensemble de l’abonnement, vous devez attribuer un rôle au niveau de l’abonnement.To grant access to the entire subscription, you assign a role at the subscription level. Vous pouvez accorder l’accès à toutes les ressources d’un groupe de ressources en octroyant des autorisations au groupe de ressources proprement dit.You can grant access to all of the resources in a resource group by granting permissions to the resource group itself. Vous pouvez aussi attribuer des rôles spécifiques à certaines ressources, telles que des comptes de stockage.You can also assign specific roles to specific resources, such as storage accounts.

Voici les principaux points à prendre en compte pour accéder aux opérations de gestion d’un compte de stockage Azure à l’aide de RBAC :Here are the main points that you need to know about using RBAC to access the management operations of an Azure Storage account:

  • Quand vous attribuez un accès, vous attribuez en fait un rôle au compte auquel vous souhaitez accéder.When you assign access, you basically assign a role to the account that you want to have access. Vous pouvez contrôler l’accès aux opérations servant à gérer ce compte de stockage, mais pas aux objets de données du compte.You can control access to the operations used to manage that storage account, but not to the data objects in the account. Par exemple, vous pouvez accorder une autorisation pour récupérer les propriétés du compte de stockage (par exemple, la redondance), mais pas pour accéder à un conteneur ou aux données d’un conteneur à l’intérieur de Blob Storage.For example, you can grant permission to retrieve the properties of the storage account (such as redundancy), but not to a container or data within a container inside Blob Storage.

  • Pour permettre à une personne d’accéder aux objets de données du compte de stockage, vous pouvez lui accorder l’autorisation de lire les clés de compte de stockage, ce qui lui permettra d’utiliser ces clés pour accéder aux objets blob, files d'attente, tables et autres fichiers.For someone to have permission to access the data objects in the storage account, you can give them permission to read the storage account keys, and that user can then use those keys to access the blobs, queues, tables, and files.

  • Il est possible d’attribuer des rôles à un compte d’utilisateur spécifique, à un groupe d’utilisateurs ou à une application déterminée.Roles can be assigned to a specific user account, a group of users, or to a specific application.

  • À chaque rôle correspond une liste d’actions et de non-actions.Each role has a list of Actions and Not Actions. Par exemple, le rôle de contributeur de machine virtuelle dispose d’une action nommée « listKeys » qui autorise la lecture des clés de compte de stockage.For example, the Virtual Machine Contributor role has an Action of "listKeys" that allows the storage account keys to be read. Le contributeur dispose de « non-actions », telles que la mise à jour de l’accès des utilisateurs présents dans Active Directory.The Contributor has "Not Actions" such as updating the access for users in the Active Directory.

  • Les rôles relatifs au stockage sont (entre autres) les suivants :Roles for storage include (but are not limited to) the following roles:

    • Propriétaire : il peut tout gérer, y compris l’accès.Owner – They can manage everything, including access.

    • Contributeur : il a les mêmes prérogatives que le propriétaire, sauf qu’il ne peut pas attribuer l’accès.Contributor – They can do anything the owner can do except assign access. Une personne associée à ce rôle peut afficher et régénérer les clés de compte de stockage.Someone with this role can view and regenerate the storage account keys. Les clés de compte de stockage lui permettent d’accéder aux objets de données.With the storage account keys, they can access the data objects.

    • Lecteur : il peut afficher les informations relatives au compte de stockage, à l’exception des secrets.Reader – They can view information about the storage account, except secrets. Par exemple, si vous attribuez un rôle avec des autorisations de lecture sur le compte de stockage, l’utilisateur qui en bénéficie peut afficher les propriétés du compte de stockage, mais il ne peut y apporter aucune modification ni afficher les clés de compte de stockage.For example, if you assign a role with reader permissions on the storage account to someone, they can view the properties of the storage account, but they can't make any changes to the properties or view the storage account keys.

    • Contributeur de compte de stockage : il peut gérer le compte de stockage, à savoir lire les groupes de ressources et les ressources de l’abonnement, créer et gérer des déploiements de groupes de ressources d’abonnement.Storage Account Contributor – They can manage the storage account – they can read the subscription's resource groups and resources, and create and manage subscription resource group deployments. Il peut également accéder aux clés de compte de stockage, ce qui sous-entend qu’il peut accéder au plan de données.They can also access the storage account keys, which in turn means they can access the data plane.

    • Administrateur de l’accès utilisateur : il peut gérer l’accès utilisateur au compte de stockage.User Access Administrator – They can manage user access to the storage account. Par exemple, il peut accorder un accès en lecture à un utilisateur spécifique.For example, they can grant Reader access to a specific user.

    • Contributeur de machine virtuelle : il peut gérer les machines virtuelles, mais pas le compte de stockage auquel elles sont connectées.Virtual Machine Contributor – They can manage virtual machines but not the storage account to which they are connected. Ce rôle permet de dresser la liste des clés de compte de stockage, ce qui signifie que l’utilisateur qui en bénéficie peut mettre à jour le plan de données.This role can list the storage account keys, which means that the user to whom you assign this role can update the data plane.

      Pour pouvoir créer une machine virtuelle, l’utilisateur doit pouvoir créer le fichier VHD correspondant dans un compte de stockage.In order for a user to create a virtual machine, they have to be able to create the corresponding VHD file in a storage account. Pour ce faire, il doit pouvoir récupérer la clé de compte de stockage et la passer à l’API chargée de créer la machine virtuelle.To do that, they need to be able to retrieve the storage account key and pass it to the API creating the VM. Autrement dit, il doit disposer de cette autorisation pour pouvoir dresser la liste des clés de compte de stockage.Therefore, they must have this permission so they can list the storage account keys.

  • Cette possibilité de définir des rôles personnalisés est une spécificité qui vous permet de composer un ensemble d’actions à partir d’une liste d’actions applicables aux ressources Azure.The ability to define custom roles is a feature that allows you to compose a set of actions from a list of available actions that can be performed on Azure resources.

  • Pour pouvoir affecter un rôle à l’utilisateur, celui-ci doit au préalable avoir été défini dans Azure Active Directory.The user must be set up in your Azure Active Directory before you can assign a role to them.

  • Vous pouvez créer un rapport indiquant qui a accordé/révoqué tel type d’accès à telle personne sur telle étendue à l’aide de PowerShell ou de l’interface de ligne de commande Azure.You can create a report of who granted/revoked what kind of access to/from whom and on what scope using PowerShell or the Azure CLI.

RessourcesResources

Gestion des clés de compte de stockageManaging Your Storage Account Keys

Les clés de compte de stockage sont des chaînes de 512 bits créées par Azure qui, combinées avec le nom de compte de stockage, permettent d’accéder aux objets de données présents dans le compte de stockage, notamment les blobs, les entités d’une table, les messages de file d’attente et les fichiers se trouvant sur un partage de fichiers Azure.Storage account keys are 512-bit strings created by Azure that, along with the storage account name, can be used to access the data objects stored in the storage account, for example, blobs, entities within a table, queue messages, and files on an Azure file share. Le contrôle d’accès aux clés de compte de stockage permet de contrôler l’accès au plan de données de ce compte de stockage.Controlling access to the storage account keys controls access to the data plane for that storage account.

Chaque compte de stockage a deux clés appelées « Clé 1 » et « Clé 2 » dans le portail Azure et dans les applets de commande PowerShell.Each storage account has two keys referred to as "Key 1" and "Key 2" in the Azure portal and in the PowerShell cmdlets. Il est possible de les régénérer manuellement au moyen de diverses méthodes, notamment avec le Portail Azure, PowerShell, l’interface de ligne de commande Azure ou par programmation en utilisant la bibliothèque cliente de stockage .NET ou l’API REST des services de Stockage Azure.These can be regenerated manually using one of several methods, including, but not limited to using the Azure portal, PowerShell, the Azure CLI, or programmatically using the .NET Storage Client Library or the Azure Storage Services REST API.

La décision de régénérer les clés de compte de stockage peut être motivée par différents facteurs.There are any number of reasons to regenerate your storage account keys.

  • Vous pouvez souhaiter les régénérer à intervalles réguliers pour des raisons de sécurité.You might regenerate them on a regular basis for security reasons.
  • De même, vous régénérerez vos clés de compte de stockage si un individu a réussi à s’introduire dans une application et a pu récupérer la clé qui était codée en dur ou enregistrée dans un fichier de configuration. En pareil cas, il aura en effet un accès complet à votre compte de stockage.You would regenerate your storage account keys if someone managed to hack into an application and retrieve the key that was hardcoded or saved in a configuration file, giving them full access to your storage account.
  • Autre cas où vos clés devront être régénérées : si votre équipe utilise une application Storage Explorer qui conserve la clé de compte de stockage et que l’un des membres de l’équipe est sur le départ.Another case for key regeneration is if your team is using a Storage Explorer application that retains the storage account key, and one of the team members leaves. L’application continuera de fonctionner, et cette personne sera en mesure d’accéder à votre compte de stockage après être parti.The application would continue to work, giving them access to your storage account after they're gone. Il s’agit de fait du premier motif de création de signatures d’accès partagé au niveau des comptes, qui se substituent au stockage des clés d’accès dans un fichier de configuration.This is actually the primary reason they created account-level Shared Access Signatures – you can use an account-level SAS instead of storing the access keys in a configuration file.

Plan de régénération de cléKey regeneration plan

Vous ne pouvez pas vous permettre de régénérer la clé que vous utilisez sans aucune planification.You don't want to just regenerate the key you are using without some planning. Vous risqueriez en effet de couper tous les accès au compte de stockage, ce qui provoquerait une interruption majeure.If you do that, you could cut off all access to that storage account, which can cause major disruption. C’est la raison pour laquelle il existe deux clés.This is why there are two keys. Nous vous recommandons de régénérer une seule clé à la fois.You should regenerate one key at a time.

Avant de régénérer vos clés, veillez à dresser une liste qui recense toutes les applications qui dépendent du compte de stockage, ainsi que tous les autres services que vous utilisez dans Azure, le cas échéant.Before you regenerate your keys, be sure you have a list of all of your applications that are dependent on the storage account, as well as any other services you are using in Azure. Par exemple, si vous utilisez Azure Media Services et que ce produit dépend de votre compte de stockage, vous devez resynchroniser les clés d’accès avec ce service après avoir régénéré la clé.For example, if you are using Azure Media Services that are dependent on your storage account, you must resync the access keys with your media service after you regenerate the key. Si vous utilisez des applications telles que Storage Explorer, vous devrez aussi fournir les nouvelles clés à ces applications.If you are using any applications such as a storage explorer, you will need to provide the new keys to those applications as well. Si vous disposez de machines virtuelles dont les fichiers VHD sont stockés dans le compte de stockage, elles ne seront pas affectées par la régénération des clés de compte de stockage.If you have VMs whose VHD files are stored in the storage account, they will not be affected by regenerating the storage account keys.

Vous pouvez régénérer vos clés dans le Portail Azure.You can regenerate your keys in the Azure portal. Une fois les clés régénérées, leur synchronisation au niveau des services de stockage peut prendre jusqu’à 10 minutes.Once keys are regenerated, they can take up to 10 minutes to be synchronized across Storage Services.

Quand vous êtes prêt, voici la procédure générale à suivre pour modifier votre clé.When you're ready, here's the general process detailing how you should change your key. Dans ce cas, vous êtes censé utiliser actuellement la clé 1 et vous apprêter à tout modifier pour utiliser la clé 2.In this case, the assumption is that you are currently using Key 1 and you are going to change everything to use Key 2 instead.

  1. Régénérez la clé 2 de façon à la sécuriser.Regenerate Key 2 to ensure that it is secure. Vous pouvez faire cette opération dans le Portail Azure.You can do this in the Azure portal.
  2. Dans toutes les applications où est stockée la clé de stockage, remplacez la valeur de clé de stockage par la nouvelle valeur de la clé 2.In all of the applications where the storage key is stored, change the storage key to use Key 2's new value. Testez et publiez l’application.Test and publish the application.
  3. Dès lors que l’ensemble des applications et des services fonctionnent correctement, régénérez la clé 1.After all of the applications and services are up and running successfully, regenerate Key 1. Cela garantit que toute personne à laquelle vous n’avez pas accordé expressément la nouvelle clé n’aura plus accès au compte de stockage.This ensures that anybody to whom you have not expressly given the new key will no longer have access to the storage account.

Si vous utilisez actuellement la clé 2, vous pouvez utiliser le même processus, mais en inversant les noms des clés.If you are currently using Key 2, you can use the same process, but reverse the key names.

Vous pouvez effectuer la migration sur deux jours, en modifiant chaque application pour utiliser la nouvelle clé et en la publiant.You can migrate over a couple of days, changing each application to use the new key and publishing it. Quand vous avez traité l’ensemble des services et applications, vous devez revenir en arrière et régénérer l’ancienne clé pour qu’elle ne fonctionne plus.After all of them are done, you should then go back and regenerate the old key so it no longer works.

Une autre option consiste à placer la clé de compte de stockage dans Azure Key Vault en tant que clé secrète et à faire en sorte que vos applications la récupèrent à cet endroit.Another option is to put the storage account key in an Azure Key Vault as a secret and have your applications retrieve the key from there. Ensuite, quand vous régénérez la clé et mettez à jour Azure Key Vault, vous n’avez pas à redéployer les applications, car elles choisissent automatiquement la nouvelle clé dans Azure Key Vault.Then when you regenerate the key and update the Azure Key Vault, the applications will not need to be redeployed because they will pick up the new key from the Azure Key Vault automatically. Notez que vous pouvez faire en sorte que l’application lise la clé chaque fois que vous en avez besoin, ou vous pouvez la mettre en cache en mémoire et, en cas d’échec lors de son utilisation, vous pouvez de nouveau la récupérer dans Azure Key Vault.Note that you can have the application read the key each time you need it, or you can cache it in memory and if it fails when using it, retrieve the key again from the Azure Key Vault.

L’utilisation d’Azure Key Vault ajoute également un autre niveau de sécurité pour les clés de stockage.Using Azure Key Vault also adds another level of security for your storage keys. Si vous utilisez cette méthode, la clé de stockage n’est jamais codée en dur dans un fichier de configuration, ce qui rend impossible l’accès aux clés par une personne sans autorisation spécifique.If you use this method, you will never have the storage key hardcoded in a configuration file, which removes that avenue of somebody getting access to the keys without specific permission.

Un autre avantage de l’utilisation d’Azure Key Vault est que vous pouvez également contrôler l’accès à vos clés à l’aide d’Azure Active Directory.Another advantage of using Azure Key Vault is you can also control access to your keys using Azure Active Directory. Cela signifie que vous pouvez accorder l’accès aux quelques applications qui doivent récupérer les clés dans Azure Key Vault, tout en sachant que d’autres applications ne seront pas en mesure d’accéder aux clés si l’autorisation ne leur est pas expressément accordée.This means you can grant access to the handful of applications that need to retrieve the keys from Azure Key Vault, and know that other applications will not be able to access the keys without granting them permission specifically.

Notes

Microsoft recommande d’utiliser uniquement l’une des clés dans toutes vos applications en même temps.Microsoft recommends using only one of the keys in all of your applications at the same time. Si vous utilisez parfois la clé 1 et parfois la clé 2, vous ne pouvez effectuer aucune rotation de vos clés sans qu’une application ne perde l’accès.If you use Key 1 in some places and Key 2 in others, you will not be able to rotate your keys without some application losing access.

RessourcesResources

Sécurité du plan de donnéesData Plane Security

La sécurité du plan de données fait référence aux méthodes permettant de sécuriser les objets de données stockés dans Azure Storage : les objets blob, files d’attente, tables et fichiers.Data Plane Security refers to the methods used to secure the data objects stored in Azure Storage – the blobs, queues, tables, and files. Nous avons vu des méthodes qui permettent de chiffrer les données et la sécurité pendant le transit des données, mais comment faire pour contrôler l’accès aux objets ?We've seen methods to encrypt the data and security during transit of the data, but how do you go about controlling access to the objects?

Trois options vous permettent d’autoriser l’accès aux objets de données dans le stockage Azure, notamment :You have three options for authorizing access to data objects in Azure Storage, including:

  • Utilisation d’Azure AD pour autoriser l’accès aux conteneurs et files d’attente.Using Azure AD to authorize access to containers and queues. Azure AD offre des avantages par rapport à d’autres approches d’autorisation, notamment la suppression de la nécessité de stocker des secret dans votre code.Azure AD provides advantages over other approaches to authorization, including removing the need to store secrets in your code. Pour plus d’informations, consultez Authentifier l’accès au Stockage Azure à l’aide d’Azure Active Directory.For more information, see Authenticate access to Azure Storage using Azure Active Directory.
  • Utilisation de vos clés de compte de stockage pour autoriser l’accès via la clé partagée.Using your storage account keys to authorize access via Shared Key. L’autorisation via la clé partagée nécessite de stocker vos clés de compte de stockage dans votre application. Lorsque cela est possible, Microsoft recommande donc d’utiliser Azure AD.Authorizing via Shared Key requires storing your storage account keys in your application, so Microsoft recommends using Azure AD instead where possible.
  • Utilisation de signatures d’accès partagé pour accorder des autorisations contrôlées sur des objets de données spécifiques pour une durée spécifique.Using Shared Access Signatures to grant controlled permissions to specific data objects for a specific amount of time.

Par ailleurs, pour le stockage Blob, vous pouvez autoriser un accès public à vos objets blob en définissant de manière appropriée le niveau d’accès du conteneur qui contient les objets blob.In addition, for Blob Storage, you can allow public access to your blobs by setting the access level for the container that holds the blobs accordingly. Si vous définissez l’accès pour un conteneur sur Objet blob ou Conteneur, vous autorisez l’accès en lecture public pour les objets blob de ce conteneur.If you set access for a container to Blob or Container, it will allow public read access for the blobs in that container. Cela signifie que toute personne avec une URL pointant vers un objet blob dans ce conteneur peut l’ouvrir dans un navigateur sans utiliser de signature d’accès partagé ni disposer de clé de compte de stockage.This means anyone with a URL pointing to a blob in that container can open it in a browser without using a Shared Access Signature or having the storage account keys.

En plus de limiter l’accès par le biais de l’autorisation, vous pouvez également utiliser Pare-feu et réseaux virtuels pour limiter l’accès au compte de stockage en fonction des règles de réseau.In addition to limiting access through authorization, you can also use Firewalls and Virtual Networks to limit access to the storage account based on network rules. Cette approche vous permet de refuser l’accès au trafic Internet public et d’accorder l’accès uniquement à certains réseaux virtuels Azure ou certaines plages d’adresses IP Internet publiques.This approach enables you deny access to public internet traffic, and to grant access only to specific Azure Virtual Networks or public internet IP address ranges.

Clés de compte de stockageStorage Account Keys

Les clés de compte de stockage sont des chaînes de 512 bits créées par Azure qui, combinées avec le nom de compte, permettent d’accéder aux objets de données stockés dans le compte de stockage.Storage account keys are 512-bit strings created by Azure that, along with the storage account name, can be used to access the data objects stored in the storage account.

Par exemple, vous pouvez lire des objets blob, écrire dans des files d’attente, créer des tables et modifier des fichiers.For example, you can read blobs, write to queues, create tables, and modify files. La plupart de ces actions peuvent être effectuées avec le Portail Azure ou à l’aide de l’une des nombreuses applications de l’explorateur de stockage.Many of these actions can be performed through the Azure portal, or using one of many Storage Explorer applications. Vous pouvez également écrire du code pour utiliser l’API REST ou l’une des bibliothèques clientes de stockage pour effectuer ces opérations.You can also write code to use the REST API or one of the Storage Client Libraries to perform these operations.

Comme indiqué dans la section Sécurité du plan de gestion, l’accès aux clés de stockage pour un compte de stockage classique peut être accordé en donnant un accès complet à l’abonnement Azure.As discussed in the section on the Management Plane Security, access to the storage keys for a Classic storage account can be granted by giving full access to the Azure subscription. L’accès aux clés de stockage pour un compte de stockage avec le modèle Azure Resource Manager peut être contrôlé via le contrôle d’accès en fonction du rôle (RBAC).Access to the storage keys for a storage account using the Azure Resource Manager model can be controlled through Role-Based Access Control (RBAC).

Comment déléguer l’accès aux objets dans votre compte à l’aide de signatures d’accès partagé et stratégies d’accès stockéesHow to delegate access to objects in your account using Shared Access Signatures and Stored Access Policies

Une signature d’accès partagé (SAP) est une chaîne contenant un jeton de sécurité qui peut être associé à un URI et vous permet de déléguer l’accès aux objets de stockage et de spécifier des restrictions telles que les autorisations et la plage des dates/heures d’accès.A Shared Access Signature is a string containing a security token that can be attached to a URI that allows you to delegate access to storage objects and specify constraints such as the permissions and the date/time range of access.

Vous pouvez accorder l’accès à des objets blob, conteneurs, messages de file d’attente, fichiers et tables.You can grant access to blobs, containers, queue messages, files, and tables. Avec les tables, vous pouvez en fait accorder l’autorisation d’accéder à un ensemble d’entités dans la table en spécifiant les plages de clés de partition et de ligne auxquelles vous souhaitez que l’utilisateur ait accès.With tables, you can actually grant permission to access a range of entities in the table by specifying the partition and row key ranges to which you want the user to have access. Par exemple, si vous avez des données stockées avec une clé de partition d’état géographique, vous pouvez permettre à quelqu’un d’accéder uniquement aux données pour la Californie.For example, if you have data stored with a partition key of geographical state, you could give someone access to just the data for California.

Dans un autre exemple, vous pouvez donner à une application web un jeton SAP qui lui permet d’écrire des entrées dans une file d’attente, et donner à une application de rôle de travail un jeton SAP pour obtenir des messages à partir de la file d’attente et les traiter.In another example, you might give a web application a SAS token that enables it to write entries to a queue, and give a worker role application a SAS token to get messages from the queue and process them. Vous pouvez également donner à un client un jeton SAP qu’il peut utiliser pour charger des images sur un conteneur de stockage d’objets blob et donner à une application web l’autorisation de lire ces images.Or you could give one customer a SAS token they can use to upload pictures to a container in Blob Storage, and give a web application permission to read those pictures. Dans les deux cas, les problèmes sont séparés : chaque application peut recevoir uniquement l’accès dont elle a besoin pour effectuer sa tâche.In both cases, there is a separation of concerns – each application can be given just the access that they require in order to perform their task. Ceci est possible avec l’utilisation des signatures d’accès partagé.This is possible through the use of Shared Access Signatures.

Pourquoi utiliser des signatures d’accès partagéWhy you want to use Shared Access Signatures

Pourquoi utiliser une signature d’accès partagé au lieu de donner simplement votre clé de compte de stockage, ce qui est tellement plus facile ?Why would you want to use an SAS instead of just giving out your storage account key, which is so much easier? La distribution de votre clé de compte de stockage revient à partager les clés de votre royaume de stockage.Giving out your storage account key is like sharing the keys of your storage kingdom. L’accès accordé est complet.It grants complete access. Une personne peut utiliser vos clés et charger l’intégralité de son audiothèque sur votre compte de stockage.Someone could use your keys and upload their entire music library to your storage account. Elle peut également remplacer vos fichiers par des versions infectées par des virus, ou voler vos données.They could also replace your files with virus-infected versions, or steal your data. Le fait d’accorder un accès illimité à votre compte de stockage est une décision que vous ne devez pas prendre à la légère.Giving away unlimited access to your storage account is something that should not be taken lightly.

Avec les signatures d’accès partagé, vous pouvez donner à un client uniquement les autorisations requises pour une durée limitée.With Shared Access Signatures, you can give a client just the permissions required for a limited amount of time. Par exemple, si un utilisateur charge un objet blob sur votre compte, vous pouvez lui accorder un accès en écriture juste le temps nécessaire de charger l’objet blob (selon la taille de l’objet blob, bien sûr).For example, if someone is uploading a blob to your account, you can grant them write access for just enough time to upload the blob (depending on the size of the blob, of course). Si vous changez ensuite d’avis, vous pouvez révoquer cet accès.And if you change your mind, you can revoke that access.

En outre, vous pouvez spécifier que les demandes effectuées à l’aide d’une signature d’accès partagé doivent être limitées à une certaine adresse IP ou plage d’adresses IP externe à Azure.Additionally, you can specify that requests made using a SAS are restricted to a certain IP address or IP address range external to Azure. Vous pouvez également exiger que les demandes soient effectuées à l’aide d’un protocole spécifique (HTTPS ou HTTP/HTTPS).You can also require that requests are made using a specific protocol (HTTPS or HTTP/HTTPS). Cela signifie que, si vous souhaitez uniquement autoriser le trafic HTTPS, vous pouvez affecter la valeur HTTPS uniquement au protocole requis et le trafic HTTP sera bloqué.This means if you only want to allow HTTPS traffic, you can set the required protocol to HTTPS only, and HTTP traffic will be blocked.

Définition d’une signature d’accès partagéDefinition of a Shared Access Signature

Une signature d’accès partagé est un ensemble de paramètres de requête ajoutés à l’URL pointant vers la ressourceA Shared Access Signature is a set of query parameters appended to the URL pointing at the resource

qui fournit des informations sur l’accès autorisé et la durée pendant laquelle l’accès est autorisé.that provides information about the access allowed and the length of time for which the access is permitted. Voici un exemple ; cet URI fournit un accès en lecture à un objet blob pendant cinq minutes.Here is an example; this URI provides read access to a blob for five minutes. Notez que les paramètres de requête SAP doivent être encodés dans une URL, par exemple %3A pour le signe deux-points (:) ou %20 pour un espace.Note that SAS query parameters must be URL Encoded, such as %3A for colon (:) or %20 for a space.

http://mystorage.blob.core.windows.net/mycontainer/myblob.txt (URL to the blob)
?sv=2015-04-05 (storage service version)
&st=2015-12-10T22%3A18%3A26Z (start time, in UTC time and URL encoded)
&se=2015-12-10T22%3A23%3A26Z (end time, in UTC time and URL encoded)
&sr=b (resource is a blob)
&sp=r (read access)
&sip=168.1.5.60-168.1.5.70 (requests can only come from this range of IP addresses)
&spr=https (only allow HTTPS requests)
&sig=Z%2FRHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk%3D (signature used for the authentication of the SAS)

Autorisation de la signature d’accès partagé par le service de Stockage AzureHow the Shared Access Signature is authorized by the Azure Storage Service

Quand le service de stockage reçoit la demande, il accepte les paramètres de requête d’entrée et crée une signature en utilisant la même méthode que le programme appelant.When the storage service receives the request, it takes the input query parameters and creates a signature using the same method as the calling program. Il compare ensuite les deux signatures.It then compares the two signatures. Si elles correspondent, le service de stockage peut vérifier que la version du service de stockage est valide, que la date et l’heure sont dans la fenêtre spécifiée, que l’accès demandé correspond à la demande effectuée, etc.If they agree, then the storage service can check the storage service version to make sure it's valid, verify that the current date and time are within the specified window, make sure the access requested corresponds to the request made, etc.

Par exemple, avec notre URL ci-dessus, si l’URL pointe vers un fichier au lieu d’un objet blob, cette demande échoue, car elle spécifie que la signature d’accès partagé concerne un objet blob.For example, with our URL above, if the URL was pointing to a file instead of a blob, this request would fail because it specifies that the Shared Access Signature is for a blob. Si la commande REST appelée doit mettre à jour un objet blob, elle échoue car la signature d’accès partagé spécifie que seul l’accès en lecture est autorisé.If the REST command being called was to update a blob, it would fail because the Shared Access Signature specifies that only read access is permitted.

Types de signatures d’accès partagéTypes of Shared Access Signatures

  • Une signature d’accès partagé de niveau service permet d’accéder à des ressources spécifiques dans un compte de stockage.A service-level SAS can be used to access specific resources in a storage account. À titre d’exemple, il peut s’agir de la récupération d’une liste d’objets blob dans un conteneur, du téléchargement d’un objet blob, de la mise à jour d’une entité dans une table, de l’ajout de messages à une file d’attente ou du chargement d’un fichier sur un partage de fichiers.Some examples of this are retrieving a list of blobs in a container, downloading a blob, updating an entity in a table, adding messages to a queue, or uploading a file to a file share.
  • Une signature d’accès partagé de niveau compte permet d’accéder à tout ce pour quoi une signature d’accès partagé de niveau service peut être utilisée.An account-level SAS can be used to access anything that a service-level SAS can be used for. En outre, elle peut proposer des options pour des ressources qui ne sont pas autorisées avec une signature d’accès partagé de niveau service, telles que la capacité de créer des conteneurs, tables, files d’attente et partages de fichiers.Additionally, it can give options to resources that are not permitted with a service-level SAS, such as the ability to create containers, tables, queues, and file shares. Vous pouvez également spécifier l’accès à plusieurs services à la fois.You can also specify access to multiple services at once. Par exemple, vous pouvez accorder à un utilisateur l’accès à la fois aux objets blob et aux fichiers dans votre compte de stockage.For example, you might give someone access to both blobs and files in your storage account.

Création d’un URI SASCreating a SAS URI

  1. Vous pouvez créer un URI à la demande, en définissant chaque fois l’ensemble des paramètres de requête.You can create a URI on demand, defining all of the query parameters each time.

    Cette approche est flexible, mais si vous avez un ensemble logique de paramètres qui sont chaque fois similaires, il est plus judicieux d’utiliser une stratégie d’accès stockée.This approach is flexible, but if you have a logical set of parameters that are similar each time, using a Stored Access Policy is a better idea.

  2. Vous pouvez créer une stratégie d’accès stockée pour un conteneur entier, un partage de fichiers, une table ou une file d’attente.You can create a Stored Access Policy for an entire container, file share, table, or queue. Vous pouvez ensuite l’utiliser comme base pour les URI SAP que vous créez.Then you can use this as the basis for the SAS URIs you create. Les autorisations basées sur les stratégies d’accès stockées peuvent être facilement révoquées.Permissions based on Stored Access Policies can be easily revoked. Jusqu’à cinq stratégies peuvent être définies sur chaque conteneur, file d’attente, table ou partage de fichiers.You can have up to five policies defined on each container, queue, table, or file share.

    Par exemple, si un grand nombre de personnes doivent lire les objets blob dans un conteneur spécifique, vous pouvez créer une stratégie d’accès stockée qui indique « d’accorder l’accès en lecture » et tous les autres paramètres qui seront chaque fois les mêmes.For example, if you were going to have many people read the blobs in a specific container, you could create a Stored Access Policy that says "give read access" and any other settings that will be the same each time. Vous pouvez ensuite créer un URI SAP en utilisant les paramètres de la stratégie d’accès stockée et en spécifiant la date/l’heure d’expiration.Then you can create an SAS URI using the settings of the Stored Access Policy and specifying the expiration date/time. L’avantage de cette opération est que vous n’avez pas à spécifier chaque fois tous les paramètres de requête.The advantage of this is that you don't have to specify all of the query parameters every time.

RévocationRevocation

Supposons que votre signature d’accès partagé a été compromise ou que vous voulez la modifier en raison des exigences de sécurité de l’entreprise ou de conformité aux réglementations.Suppose your SAS has been compromised, or you want to change it because of corporate security or regulatory compliance requirements. Comment révoquer l’accès à une ressource à l’aide de cette signature ?How do you revoke access to a resource using that SAS? Cela dépend de la façon dont vous avez créé l’URI SAP.It depends on how you created the SAS URI.

Si vous utilisez des URI appropriés, vous avez trois possibilités.If you are using ad hoc URIs, you have three options. Vous pouvez émettre des jetons SAP avec des stratégies de délai d’expiration court et attendre que la signature d’accès partagé expire.You can issue SAS tokens with short expiration policies and wait for the SAS to expire. Vous pouvez renommer ou supprimer la ressource (en supposant que le jeton a été étendu à un objet unique).You can rename or delete the resource (assuming the token was scoped to a single object). Vous pouvez modifier les clés de compte de stockage.You can change the storage account keys. Cette dernière option peut avoir un impact important, en fonction du nombre de services qui utilisent ce compte de stockage, et n’est probablement pas souhaitable sans une certaine planification.This last option can have a significant impact, depending on how many services are using that storage account, and probably isn't something you want to do without some planning.

Si vous utilisez une signature d’accès partagé dérivée d’une stratégie d’accès stockée, vous pouvez supprimer l’accès en révoquant la stratégie d’accès stockée : vous pouvez simplement la modifier de sorte qu’elle ait déjà expiré, ou la supprimer complètement.If you are using a SAS derived from a Stored Access Policy, you can remove access by revoking the Stored Access Policy – you can just change it so it has already expired, or you can remove it altogether. Cette opération prend effet immédiatement et invalide toutes les signatures d’accès partagé créées à l’aide de cette stratégie d’accès stockée.This takes effect immediately, and invalidates every SAS created using that Stored Access Policy. La mise à jour ou la suppression de la stratégie d’accès stockée peut avoir un impact sur les personnes qui accèdent à ce conteneur, ce partage de fichiers, cette table ou cette file d’attente spécifique via une signature d’accès partagé, mais si les clients sont écrits pour demander une nouvelle signature quand l’ancienne n’est plus valide, cela fonctionne correctement.Updating or removing the Stored Access Policy may impact people accessing that specific container, file share, table, or queue via SAS, but if the clients are written so they request a new SAS when the old one becomes invalid, this will work fine.

Comme l’utilisation d’une signature d’accès partagé dérivée d’une stratégie d’accès stockée vous permet de révoquer immédiatement cette signature d’accès partagé, il est recommandé de toujours utiliser des stratégies d’accès stockées quand cela est possible.Because using a SAS derived from a Stored Access Policy gives you the ability to revoke that SAS immediately, it is the recommended best practice to always use Stored Access Policies when possible.

RessourcesResources

Pour plus d’informations sur l’utilisation des signatures d’accès partagé et des stratégies d’accès stockées, ainsi que pour obtenir des exemples, consultez les articles suivants :For more detailed information on using Shared Access Signatures and Stored Access Policies, complete with examples, refer to the following articles:

Chiffrement en transitEncryption in Transit

Chiffrement au niveau du transport – Utilisation de HTTPSTransport-Level Encryption – Using HTTPS

Une autre étape à suivre pour garantir la sécurité de vos données Azure Storage consiste à chiffrer les données entre le client et Azure Storage.Another step you should take to ensure the security of your Azure Storage data is to encrypt the data between the client and Azure Storage. La première recommandation est de toujours utiliser le protocole HTTPS , qui garantit une communication sécurisée via l’Internet public.The first recommendation is to always use the HTTPS protocol, which ensures secure communication over the public Internet.

Pour disposer d’un canal de communication sécurisé, vous devez toujours utiliser HTTPS lors de l’appel des API REST ou de l’accès aux objets dans le stockage.To have a secure communication channel, you should always use HTTPS when calling the REST APIs or accessing objects in storage. De plus, les signatures d’accès partagé, qui peuvent être utilisées pour déléguer l’accès aux objets de stockage Azure, incluent une option pour spécifier que seul le protocole HTTPS est autorisé avec les signatures d’accès partagé. Cette option garantit que le protocole approprié est utilisé par tous ceux qui envoient des liens avec des jetons SAP.Also, Shared Access Signatures, which can be used to delegate access to Azure Storage objects, include an option to specify that only the HTTPS protocol can be used when using Shared Access Signatures, ensuring that anybody sending out links with SAS tokens will use the proper protocol.

Vous pouvez appliquer l’utilisation du protocole HTTPS lorsque vous appelez les API REST pour accéder aux objets dans les comptes de stockage en activant l’option Transfert sécurisé requis pour le compte de stockage.You can enforce the use of HTTPS when calling the REST APIs to access objects in storage accounts by enabling Secure transfer required for the storage account. Les connexions utilisant le protocole HTTP seront refusées une fois cette option activée.Connections using HTTP will be refused once this is enabled.

Utilisation du chiffrement pendant le transit avec des partages de fichiers AzureUsing encryption during transit with Azure file shares

Azure Files prend en charge le chiffrement via SMB 3.0 et avec HTTPS lors de l’utilisation de l’API REST File.Azure Files supports encryption via SMB 3.0 and with HTTPS when using the File REST API. Lors du montage en dehors de la région Azure dans laquelle se trouve le partage de fichiers Azure, comme localement ou dans une autre région Azure, SMB 3.0 avec chiffrement est toujours requis.When mounting outside of the Azure region the Azure file share is located in, such as on-premises or in another Azure region, SMB 3.0 with encryption is always required. SMB 2.1 ne prend pas en charge le chiffrement. Par défaut, les connexions ne sont autorisées que dans la même région dans Azure, mais SMB 3.0 avec chiffrement peut être appliqué en exigeant un transfert sécurisé pour le compte de stockage.SMB 2.1 does not support encryption, so by default connections are only allowed within the same region in Azure, but SMB 3.0 with encryption can be enforced by requiring secure transfer for the storage account.

SMB 3.0 avec chiffrement est disponible dans tous les systèmes d’exploitation Windows et Windows Server pris en charge à l’exception de Windows 7 et Windows Server 2008 R2, qui prennent uniquement en charge SMB 2.1.SMB 3.0 with encryption is available in all supported Windows and Windows Server operating systems except Windows 7 and Windows Server 2008 R2, which only support SMB 2.1. SMB 3.0 est également pris en charge sur macOS et sur les distributions de Linux utilisant le noyau Linux 4.11 et versions ultérieures.SMB 3.0 is also supported on macOS and on distributions of Linux using Linux kernel 4.11 and above. La prise en charge du chiffrement pour SMB 3.0 a également été appliquée dans des versions antérieures du noyau Linux par plusieurs distributions Linux, consultez Understanding SMB client requirements (Présentation des exigences de client SMB).Encryption support for SMB 3.0 has also been backported to older versions of the Linux kernel by several Linux distributions, consult Understanding SMB client requirements.

Utilisation du chiffrement côté client pour sécuriser les données envoyées dans le stockageUsing Client-side encryption to secure data that you send to storage

Le chiffrement côté client est une autre méthode possible pour garantir la sécurité de vos données pendant leur transfert entre une application cliente et Azure Storage.Another option that helps you ensure that your data is secure while being transferred between a client application and Storage is Client-side Encryption. Les données sont chiffrées avant d’être transférées vers Azure Storage.The data is encrypted before being transferred into Azure Storage. Quand vous récupérez les données d’Azure Storage, les données sont déchiffrées seulement après leur réception côté client.When retrieving the data from Azure Storage, the data is decrypted after it is received on the client side. Même si les données sont chiffrées quand elles sont en transit sur le réseau, nous vous recommandons d’utiliser également le protocole HTTPS. En effet, HTTPS inclut des vérifications de l’intégrité des données qui contribuent à réduire les erreurs réseau ayant un impact sur l’intégrité des données.Even though the data is encrypted going across the wire, we recommend that you also use HTTPS, as it has data integrity checks built in which help mitigate network errors affecting the integrity of the data.

Le chiffrement côté client est aussi une méthode qui vous permet de chiffrer vos données au repos, car les données sont stockées dans leur forme chiffrée.Client-side encryption is also a method for encrypting your data at rest, as the data is stored in its encrypted form. Nous discuterons de ce point plus en détail dans la section sur le chiffrement au repos.We'll talk about this in more detail in the section on Encryption at Rest.

Chiffrement au reposEncryption at Rest

Il existe trois fonctionnalités Azure qui fournissent un chiffrement au repos.There are three Azure features that provide encryption at rest. La première, Azure Disk Encryption, s’utilise pour chiffrer les disques de données et de système d’exploitation utilisés par des machines virtuelles IaaS.Azure Disk Encryption is used to encrypt the OS and data disks in IaaS Virtual Machines. Le chiffrement côté client et SSE sont utilisés pour chiffrer les données dans le stockage Azure.Client-side Encryption and SSE are both used to encrypt data in Azure Storage.

Vous pouvez utiliser le chiffrement côté client pour chiffrer les données en transit (ces données sont également stockées dans leur forme chiffrée dans le stockage Azure). Si vous préférez, vous pouvez aussi utiliser le protocole HTTPS pendant le transfert et utiliser un autre moyen de votre choix pour chiffrer automatiquement les données stockées.While you can use Client-side Encryption to encrypt the data in transit (which is also stored in its encrypted form in Storage), you may prefer to use HTTPS during the transfer, and have some way for the data to be automatically encrypted when it is stored. Il existe deux méthodes possibles : Azure Disk Encryption et SSE.There are two ways to do this -- Azure Disk Encryption and SSE. La première chiffre les données directement sur les disques de données et de système d’exploitation. La seconde chiffre les données qui sont écrites dans le stockage Azure Blob Storage.One is used to directly encrypt the data on OS and data disks used by VMs, and the other is used to encrypt data written to Azure Blob Storage.

Storage Service Encryption (SSE)Storage Service Encryption (SSE)

SSE est activé pour tous les comptes de stockage et ne peut pas être désactivé.SSE is enabled for all storage accounts and cannot be disabled. SSE chiffre automatiquement vos données lors de leur écriture dans le stockage Azure.SSE automatically encrypts your data when writing it to Azure Storage. Lorsque vous lisez des données depuis le stockage Azure, elles sont déchiffrées par le stockage Azure avant d’être retournées.When you read data from Azure Storage, it is decrypted by Azure Storage before being returned. SSE vous permet de sécuriser vos données sans avoir à modifier le code existant ni à ajouter du code dans les applications.SSE enables you to secure your data without having to modify code or add code to any applications.

Vous pouvez utiliser des clés gérées par Microsoft ou vos propres clés personnalisées.You can use either Microsoft-managed keys or your own custom keys. Microsoft génère les clés gérées, puis gère leur stockage sécurisé ainsi que leur rotation régulière, conformément à la politique interne de Microsoft en la matière.Microsoft generates managed keys and handles their secure storage as well as their regular rotation, as defined by internal Microsoft policy. Pour en savoir plus sur l’utilisation de clés personnalisées, consultez Storage Service Encryption avec des clés gérées par le client dans Azure Key Vault.For more information about using custom keys, see Storage Service Encryption using customer-managed keys in Azure Key Vault.

Le chiffrement du service de stockage chiffre automatiquement les données pour tous les niveaux de performance (Standard ou Premium), tous les modèles de déploiement (Azure Resource Manager et Classic) et tous les services de Stockage Azure (blob, file d’attente, table et fichier).SSE automatically encrypts data in all performance tiers (Standard and Premium), all deployment models (Azure Resource Manager and Classic), and all of the Azure Storage services (Blob, Queue, Table, and File).

chiffrement côté clientClient-side Encryption

Nous avons déjà mentionné le chiffrement côté client quand nous avons parlé du chiffrement des données en transit.We mentioned client-side encryption when discussing the encryption of the data in transit. Cette fonctionnalité vous permet de chiffrer par programmation vos données dans une application cliente avant de les envoyer via le réseau vers Azure Storage, et de les déchiffrer par programmation une fois que vous les avez récupérées d’Azure Storage.This feature allows you to programmatically encrypt your data in a client application before sending it across the wire to be written to Azure Storage, and to programmatically decrypt your data after retrieving it from Azure Storage.

Elle fournit le chiffrement en transit, mais également le chiffrement au repos.This does provide encryption in transit, but it also provides the feature of Encryption at Rest. Même si les données sont chiffrées quand elles sont en transit, nous vous recommandons encore d’utiliser le protocole HTTPS, car HTTPS inclut des vérifications de l’intégrité des données qui contribuent à réduire les erreurs réseau ayant un impact sur l’intégrité des données.Although the data is encrypted in transit, we still recommend using HTTPS to take advantage of the built-in data integrity checks that help mitigate network errors affecting the integrity of the data.

Par exemple, utilisez cette fonctionnalité si vous avez une application web qui stocke et récupère des objets blob, et si vous souhaitez sécuriser au maximum l’application et les données.An example of where you might use this is if you have a web application that stores blobs and retrieves blobs, and you want the application and data to be as secure as possible. Dans ce cas, le chiffrement côté client est la méthode appropriée.In that case, you would use client-side encryption. Le trafic entre le client et le service Azure Blob contient la ressource chiffrée, et personne ne peut interpréter les données en transit et les reconstituer dans vos objets blob privés.The traffic between the client and the Azure Blob Service contains the encrypted resource, and nobody can interpret the data in transit and reconstitute it into your private blobs.

Le chiffrement côté client est intégré aux bibliothèques clientes de stockage Java et .NET, qui utilisent à leur tour les API Azure Key Vault, ce qui rend son implémentation facile.Client-side encryption is built into the Java and the .NET storage client libraries, which in turn use the Azure Key Vault APIs, making it easy for you to implement. Le processus de chiffrement et déchiffrement des données utilise la technique d’enveloppe, et stocke les métadonnées utilisées par le chiffrement dans chaque objet de stockage.The process of encrypting and decrypting the data uses the envelope technique, and stores metadata used by the encryption in each storage object. Par exemple, pour les objets blob, il les stocke dans les métadonnées d’objet blob et, pour les files d’attente, il les ajoute à chaque message de file d’attente.For example, for blobs, it stores it in the blob metadata, while for queues, it adds it to each queue message.

Pour le chiffrement proprement dit, vous pouvez créer et gérer vos propres clés de chiffrement.For the encryption itself, you can generate and manage your own encryption keys. Vous pouvez également utiliser les clés générées par la bibliothèque cliente Azure Storage, ou demander à Azure Key Vault de générer les clés.You can also use keys generated by the Azure Storage Client Library, or you can have the Azure Key Vault generate the keys. Vous pouvez stocker vos clés de chiffrement dans votre stockage de clés local, ou les stocker dans un coffre Azure Key Vault.You can store your encryption keys in your on-premises key storage, or you can store them in an Azure Key Vault. Azure Key Vault vous permet d’accorder l’accès à des clés secrètes dans Azure Key Vault à des utilisateurs spécifiques à l’aide d’Azure Active Directory.Azure Key Vault allows you to grant access to the secrets in Azure Key Vault to specific users using Azure Active Directory. De cette manière, vous limitez les personnes autorisées à accéder au coffre de clés Azure Key Vault et à récupérer les clés que vous utilisez pour le chiffrement côté client.This means that not just anybody can read the Azure Key Vault and retrieve the keys you're using for client-side encryption.

RessourcesResources

Utilisation de la fonctionnalité Azure Disk Encryption pour chiffrer les disques utilisés par vos machines virtuellesUsing Azure Disk Encryption to encrypt disks used by your virtual machines

Azure Disk Encryption vous permet de chiffrer les disques de système d’exploitation et de données utilisés par une machine virtuelle IaaS.Azure Disk Encryption allows you to encrypt the OS disks and Data disks used by an IaaS Virtual Machine. Sur Windows, les disques sont chiffrés à l’aide de la technologie de chiffrement BitLocker standard.For Windows, the drives are encrypted using industry-standard BitLocker encryption technology. Sur Linux, les disques sont chiffrés à l’aide de la technologie DM-Crypt.For Linux, the disks are encrypted using the DM-Crypt technology. La fonctionnalité est intégrée à Azure Key Vault pour vous permettre de contrôler et gérer les clés de chiffrement de disque.This is integrated with Azure Key Vault to allow you to control and manage the disk encryption keys.

La solution prend en charge les scénarios de machines virtuelles IaaS suivants lorsqu’ils sont activés dans Microsoft Azure :The solution supports the following scenarios for IaaS VMs when they are enabled in Microsoft Azure:

  • Prise en main d’Azure Key VaultIntegration with Azure Key Vault
  • Machines virtuelles de niveau Standard : Machines virtuelles IaaS des séries A, D, DS, G, GS, etc.Standard tier VMs: A, D, DS, G, GS, and so forth series IaaS VMs
  • Activation du chiffrement sur les machines virtuelles IaaS Windows et LinuxEnabling encryption on Windows and Linux IaaS VMs
  • Désactivation du chiffrement sur les systèmes d’exploitation et les lecteurs de données pour les machines virtuelles IaaS WindowsDisabling encryption on OS and data drives for Windows IaaS VMs
  • Désactivation du chiffrement sur les lecteurs de données pour les machines virtuelles IaaS LinuxDisabling encryption on data drives for Linux IaaS VMs
  • Activation du chiffrement sur les machines virtuelles IaaS exécutant le système d’exploitation client WindowsEnabling encryption on IaaS VMs that are running Windows client OS
  • Activation du chiffrement sur les volumes avec chemins d’accès de montageEnabling encryption on volumes with mount paths
  • Activation du chiffrement sur les machines virtuelles Linux configurées avec entrelacement de disques (RAID) à l’aide de mdadmEnabling encryption on Linux VMs that are configured with disk striping (RAID) by using mdadm
  • Activation du chiffrement sur les machines virtuelles Linux à l’aide de LVM pour les disques de donnéesEnabling encryption on Linux VMs by using LVM for data disks
  • Activation du chiffrement sur les machines virtuelles Windows configurées à l’aide d’espaces de stockageEnabling encryption on Windows VMs that are configured by using storage spaces
  • Toutes les régions publiques Azure sont prises en chargeAll Azure public regions are supported

La solution ne prend pas en charge les scénarios, fonctionnalités et technologies suivants dans la version :The solution does not support the following scenarios, features, and technology in the release:

  • Machines virtuelles IaaS de niveau de baseBasic tier IaaS VMs
  • Désactivation du chiffrement sur un lecteur de système d’exploitation pour les machines virtuelles IaaS LinuxDisabling encryption on an OS drive for Linux IaaS VMs
  • Machines virtuelles IaaS créées à l’aide de la méthode classique de création de machines virtuellesIaaS VMs that are created by using the classic VM creation method
  • Intégration à votre service de gestion de clés localIntegration with your on-premises Key Management Service
  • Azure Files (système de partage de fichiers), NFS (Network File System), volumes dynamiques et machines virtuelles Windows configurées avec des systèmes RAID logicielsAzure Files (shared file system), Network File System (NFS), dynamic volumes, and Windows VMs that are configured with software-based RAID systems

Notes

Le chiffrement du disque de système d’exploitation Linux est actuellement pris en charge sur les distributions Linux suivantes : RHEL 7.2, CentOS 7.2n et Ubuntu 16.04Linux OS disk encryption is currently supported on the following Linux distributions: RHEL 7.2, CentOS 7.2n, and Ubuntu 16.04.

Cette fonctionnalité garantit que toutes les données sur les disques de vos machines virtuelles sont chiffrées au repos dans Azure Storage.This feature ensures that all data on your virtual machine disks is encrypted at rest in Azure Storage.

RessourcesResources

Comparaison entre Azure Disk Encryption, SSE et le chiffrement côté clientComparison of Azure Disk Encryption, SSE, and Client-Side Encryption

Machines virtuelles IaaS et fichiers VHD associésIaaS VMs and their VHD files

Pour les disques de données utilisés par des machines virtuelles IaaS, nous vous recommandons d’utiliser le chiffrement Azure Disk Encryption.For data disks used by IaaS VMs, Azure Disk Encryption is recommended. Si vous créez une machine virtuelle avec des disques non managés à l’aide d’une image issue de la Place de marché Microsoft, Azure effectue une copie superficielle de l’image pour votre compte de stockage dans le Stockage Azure qui n’est pas chiffrée, même si vous êtes compatible SSE.If you create a VM with unmanaged disks using an image from the Azure Marketplace, Azure performs a shallow copy of the image to your storage account in Azure Storage, and it is not encrypted even if you have SSE enabled. SSE commence le chiffrement des données après avoir créé la machine virtuelle et démarré la mise à jour de l’image.After it creates the VM and starts updating the image, SSE will start encrypting the data. Pour cette raison, il est conseillé d’utiliser Azure Disk Encryption sur des machines virtuelles avec des disques non managés créés à partir d’images dans la Place de marché Azure si vous souhaitez qu’elles soient complètement chiffrées.For this reason, it's best to use Azure Disk Encryption on VMs with unmanaged disks created from images in the Azure Marketplace if you want them fully encrypted. Si vous créez une machine virtuelle avec la fonctionnalité Disques managés, SSE chiffre toutes les données par défaut à l’aide de clés managées de la plate-forme.If you create a VM with Managed Disks, SSE encrypts all the data by default using platform managed keys.

Si vous ajoutez une machine virtuelle déjà chiffrée dans Azure à partir d’un emplacement local, vous pouvez charger les clés de chiffrement dans Azure Key Vault et continuer à utiliser le chiffrement qui était utilisé localement pour cette machine virtuelle.If you bring a pre-encrypted VM into Azure from on-premises, you will be able to upload the encryption keys to Azure Key Vault, and continue using the encryption for that VM that you were using on-premises. Dans ce scénario, le chiffrement Azure Disk Encryption est activé.Azure Disk Encryption is enabled to handle this scenario.

Si vous utilisez un fichier VHD local non chiffré, vous pouvez le charger dans la galerie comme une image personnalisée et approvisionner une machine virtuelle à partir de cette image.If you have non-encrypted VHD from on-premises, you can upload it into the gallery as a custom image and provision a VM from it. Si vous le faites à l’aide de modèles Resource Manager, vous pouvez demander l’activation de la fonctionnalité Azure Disk Encryption au démarrage de la machine virtuelle.If you do this using the Resource Manager templates, you can ask it to turn on Azure Disk Encryption when it boots up the VM.

Quand vous ajoutez un disque de données et le montez ensuite sur la machine virtuelle, vous pouvez activer Azure Disk Encryption sur ce disque.When you add a data disk and mount it on the VM, you can turn on Azure Disk Encryption on that data disk. Azure Disk Encryption chiffrera d’abord ce disque de données localement, puis la couche de modèle de déploiement classique effectuera une écriture différée sur le stockage pour en chiffrer le contenu.It will encrypt that data disk locally first, and then the classic deployment model layer will do a lazy write against storage so the storage content is encrypted.

chiffrement côté clientClient-side encryption

Le chiffrement côté client est la méthode la plus sûre pour chiffrer vos données, car il chiffre les données avant leur transit.Client-side encryption is the most secure method of encrypting your data, because it encrypts data prior to transit. Toutefois, cette méthode vous oblige à ajouter du code dans vos applications qui utilisent le stockage, ce qui peut ne pas vous convenir.However, it does require that you add code to your applications using storage, which you may not want to do. Dans ce cas, vous pouvez utiliser le protocole HTTPS pour sécuriser vos données en transit.In those cases, you can use HTTPS to secure your data in transit. Une fois que les données atteignent le stockage Azure, elles sont chiffrées par SSE.Once data reaches Azure Storage, it is encrypted by SSE.

Le chiffrement côté client vous permet de chiffrer des entités de table, des messages de file d’attente et des objets blob.With client-side encryption, you can encrypt table entities, queue messages, and blobs.

Le chiffrement côté client est entièrement géré par l’application.Client-side encryption is managed entirely by the application. C’est l’approche la plus sûre, mais elle vous oblige à effectuer des modifications par programmation dans votre application et à mettre en place des processus de gestion des clés.This is the most secure approach, but does require you to make programmatic changes to your application and put key management processes in place. Choisissez cette méthode pour bénéficier d’une sécurité maximale pendant le transit des données et si vous souhaitez que vos données stockées soient chiffrées.You would use this when you want the extra security during transit, and you want your stored data to be encrypted.

Le chiffrement côté client entraîne une plus grande charge pour le client. Vous devez donc tenir compte de ce paramètre dans vos plans d’extensibilité, en particulier si vous chiffrez et transférez une grande quantité de données.Client-side encryption is more load on the client, and you have to account for this in your scalability plans, especially if you are encrypting and transferring a large amount of data.

Storage Service Encryption (SSE)Storage Service Encryption (SSE)

SSE est géré par le Stockage Azure.SSE is managed by Azure Storage. SSE ne sécurise pas les données en transit, mais chiffre les données quand elles sont écrites dans le stockage Azure.SSE does not provide for the security of the data in transit, but it does encrypt the data as it is written to Azure Storage. Le chiffrement du service de stockage n’affecte pas les performances de Stockage Azure.SSE does not affect Azure Storage performance.

Il est possible de chiffrer tous types de données du compte de stockage avec SSE (objets blob de blocs, objets blob d’ajout, objets blob de pages, données de table, données de file d’attente et fichiers).You can encrypt any kind of data of the storage account using SSE (block blobs, append blobs, page blobs, table data, queue data, and files).

Si vous utilisez une archive ou une bibliothèque de fichiers VHD comme base pour créer des machines virtuelles, créez un compte de stockage, puis chargez les fichiers VHD dans le nouveau compte.If you have an archive or library of VHD files that you use as a basis for creating new virtual machines, you can create a new storage account and then upload the VHD files to that account. Ces fichiers VHD seront chiffrés par Azure Storage.Those VHD files will be encrypted by Azure Storage.

Si Azure Disk Encryption est activé pour les disques dans une machine virtuelle, toutes les données qui viennent d’être écrites sont chiffrées par SSE et par le chiffrement de disque Azure.If you have Azure Disk Encryption enabled for the disks in a VM, then any newly written data is encrypted both by SSE and by Azure Disk Encryption.

Storage AnalyticsStorage Analytics

Utilisation de Storage Analytics pour surveiller le type d’autorisationUsing Storage Analytics to monitor authorization type

Pour chaque compte de stockage, vous pouvez activer Azure Storage Analytics pour effectuer la journalisation et stocker les données de métriques.For each storage account, you can enable Azure Storage Analytics to perform logging and store metrics data. Il s’agit d’un excellent outil à utiliser quand vous voulez vérifier les métriques de performances d’un compte de stockage, ou que vous devez résoudre des problèmes liés à un compte de stockage car vos performances ne sont pas satisfaisantes.This is a great tool to use when you want to check the performance metrics of a storage account, or need to troubleshoot a storage account because you are having performance problems.

Les journaux d’activité d’analyse du stockage vous permettent de voir un autre élément de données : la méthode d’authentification utilisée par un utilisateur lors de l’accès au stockage.Another piece of data you can see in the storage analytics logs is the authentication method used by someone when they access storage. Par exemple, avec Blob Storage, vous pouvez voir s’il a utilisé une signature d’accès partagé ou les clés de compte de stockage, ou si l’objet blob qui a fait l’objet d’un accès est public.For example, with Blob Storage, you can see if they used a Shared Access Signature or the storage account keys, or if the blob accessed was public.

Cela peut être utile si vous surveillez étroitement l’accès au stockage.This can be helpful if you are tightly guarding access to storage. Par exemple, dans Blob Storage, vous pouvez définir tous les conteneurs comme privés et implémenter l’utilisation d’un service SAP dans toutes vos applications.For example, in Blob Storage you can set all of the containers to private and implement the use of an SAS service throughout your applications. Vous pouvez alors vérifier régulièrement les journaux d’activité pour voir si vos objets blob font l’objet d’un accès à l’aide de clés de compte de stockage, ce qui peut indiquer une violation de la sécurité, ou si les objets blob sont publics alors qu’ils ne devraient pas l’être.Then you can check the logs regularly to see if your blobs are accessed using the storage account keys, which may indicate a breach of security, or if the blobs are public but they shouldn't be.

Comment se présentent les journaux d’activité ?What do the logs look like?

Une fois que vous avez activé les métriques de compte de stockage et la journalisation par le biais du Portail Azure, les données d’analyse commencent à s’accumuler rapidement.After you enable the storage account metrics and logging through the Azure portal, analytics data will start to accumulate quickly. La journalisation et les métriques de chaque service sont distinctes : la journalisation est écrite uniquement en cas d’activité dans ce compte de stockage, tandis que les métriques sont consignées chaque minute, chaque heure ou chaque jour, en fonction de leur configuration.The logging and metrics for each service is separate; the logging is only written when there is activity in that storage account, while the metrics will be logged every minute, every hour, or every day, depending on how you configure it.

Les journaux d’activité sont stockés dans des objets blob de blocs se trouvant dans un conteneur nommé $logs dans le compte de stockage.The logs are stored in block blobs in a container named $logs in the storage account. Ce conteneur est automatiquement créé quand Storage Analytics est activé.This container is automatically created when Storage Analytics is enabled. Une fois ce conteneur créé, vous ne pouvez pas le supprimer, même si vous pouvez en supprimer le contenu.Once this container is created, you can't delete it, although you can delete its contents.

Sous le conteneur $logs se trouve un dossier correspondant à chaque service, puis des sous-dossiers pour l’année/le mois/le jour/l’heure.Under the $logs container, there is a folder for each service, and then there are subfolders for the year/month/day/hour. Sous les heures, les journaux d’activité sont numérotés.Under hour, the logs are numbered. La structure des répertoires se présente ainsi :This is what the directory structure will look like:

Affichage des fichiers journaux

Chaque requête à Azure Storage est consignée.Every request to Azure Storage is logged. Voici un instantané d’un fichier journal montrant les premiers champs.Here's a snapshot of a log file, showing the first few fields.

Instantané d’un fichier journal

Vous voyez que vous pouvez utiliser les journaux d’activité pour suivre des appels de tous types à un compte de stockage.You can see that you can use the logs to track any kind of calls to a storage account.

À quoi servent tous ces champs ?What are all of those fields for?

Un article répertorié dans les ressources ci-dessous fournit la liste des nombreux champs présents dans les journaux d’activité et indique ce pour quoi ils sont utilisés.There is an article listed in the resources below that provides the list of the many fields in the logs and what they are used for. Voici la liste de ces champs, dans l’ordre :Here is the list of fields in order:

Instantané des champs d’un fichier journal

Nous nous intéressons aux entrées de GetBlob et à leur mode d’autorisation. Nous devons donc rechercher les entrées ayant pour operation-type « Get-Blob » et examiner request-status (quatrième colonne) et authorization-type (huitième colonne).We're interested in the entries for GetBlob, and how they are authorized, so we need to look for entries with operation-type "Get-Blob", and check the request-status (fourth column) and the authorization-type (eighth column).

Par exemple, dans les premières lignes de la liste ci-dessus, l’état de la requête est « Success » et le type d’autorisation est « authenticated ».For example, in the first few rows in the listing above, the request-status is "Success" and the authorization-type is "authenticated". Cela signifie que la requête a été autorisée à l’aide de la clé de compte de stockage.This means the request was authorized using the storage account key.

Autorisation de l’accès aux objets blobHow is access to my blobs being authorized?

Trois cas nous intéressent.We have three cases that we are interested in.

  1. L’objet blob est public et les utilisateurs y accèdent à l’aide d’une URL sans signature d’accès partagé.The blob is public and it is accessed using a URL without a Shared Access Signature. Dans ce cas, l’état de la requête est « AnonymousSuccess » et authorization-type est « anonymous ».In this case, the request-status is "AnonymousSuccess" and the authorization-type is "anonymous".

    1.0;2015-11-17T02:01:29.0488963Z;GetBlob;AnonymousSuccess;200;124;37;anonymous;;mystorage…1.0;2015-11-17T02:01:29.0488963Z;GetBlob;AnonymousSuccess;200;124;37;anonymous;;mystorage…

  2. L’objet blob est privé et a été utilisé avec une signature d’accès partagé.The blob is private and was used with a Shared Access Signature. Dans ce cas, l’état de la requête est « SASSuccess » et authorization-type est « sas ».In this case, the request-status is "SASSuccess" and the authorization-type is "sas".

    1.0;2015-11-16T18:30:05.6556115Z;GetBlob;SASSuccess;200;416;64;sas;;mystorage…1.0;2015-11-16T18:30:05.6556115Z;GetBlob;SASSuccess;200;416;64;sas;;mystorage…

  3. L’objet blob est privé et la clé de stockage a été utilisée pour y accéder.The blob is private and the storage key was used to access it. Dans ce cas, l’état de la requête est « Success » et authorization-type est « authenticated ».In this case, the request-status is "Success" and the authorization-type is "authenticated".

    1.0;2015-11-16T18:32:24.3174537Z;GetBlob;Success;206;59;22;authenticated;mystorage…1.0;2015-11-16T18:32:24.3174537Z;GetBlob;Success;206;59;22;authenticated;mystorage…

Vous pouvez utiliser Microsoft Message Analyzer pour afficher et analyser ces journaux d’activité.You can use the Microsoft Message Analyzer to view and analyze these logs. Il inclue des fonctions de recherche et de filtre.It includes search and filter capabilities. Par exemple, vous voulez peut-être rechercher les instances de GetBlob pour voir si l’utilisation répond à vos attentes, par exemple, pour vérifier que personne n’accède à votre compte de stockage de façon inappropriée.For example, you might want to search for instances of GetBlob to see if the usage is what you expect, that is, to make sure someone is not accessing your storage account inappropriately.

RessourcesResources

Partage des ressources cross-origin (CORS)Cross-Origin Resource Sharing (CORS)

Accès interdomaines des ressourcesCross-domain access of resources

Quand un navigateur web s’exécutant dans un domaine effectue une requête HTTP pour une ressource à partir d’un autre domaine, on parle de requête HTTP cross-origin.When a web browser running in one domain makes an HTTP request for a resource from a different domain, this is called a cross-origin HTTP request. Par exemple, une page HTML traitée à partir de contoso.com effectue une requête pour une image jpeg hébergée sur fabrikam.blob.core.windows.net.For example, an HTML page served from contoso.com makes a request for a jpeg hosted on fabrikam.blob.core.windows.net. Pour des raisons de sécurité, les navigateurs limitent les requêtes HTTP cross-origin lancées à partir de scripts, comme JavaScript.For security reasons, browsers restrict cross-origin HTTP requests initiated from within scripts, such as JavaScript. Ainsi, quand du code JavaScript sur une page web contoso.com demande cet élément jpeg sur fabrikam.blob.core.windows.net, le navigateur n’autorise pas la requête.This means that when some JavaScript code on a web page on contoso.com requests that jpeg on fabrikam.blob.core.windows.net, the browser will not allow the request.

Quel est le rapport avec Azure Storage ?What does this have to do with Azure Storage? En fait, si vous stockez des ressources statiques telles que les fichiers de données JSON ou XML dans Blob Storage à l’aide d’un compte de stockage nommé Fabrikam, le domaine des ressources est fabrikam.blob.core.windows.net et l’application web contoso.com ne peut pas y accéder à l’aide de JavaScript, car les domaines sont différents.Well, if you are storing static assets such as JSON or XML data files in Blob Storage using a storage account called Fabrikam, the domain for the assets will be fabrikam.blob.core.windows.net, and the contoso.com web application will not be able to access them using JavaScript because the domains are different. Il est en de même si vous essayez d’appeler l’un des services de stockage Azure, tels que Stockage Table, qui retournent les données JSON qui doivent être traitées par le client JavaScript.This is also true if you're trying to call one of the Azure Storage Services – such as Table Storage – that return JSON data to be processed by the JavaScript client.

Solutions possiblesPossible solutions

Une façon de résoudre ce problème consiste à attribuer un domaine personnalisé comme « storage.contoso.com » à fabrikam.blob.core.windows.net.One way to resolve this is to assign a custom domain like "storage.contoso.com" to fabrikam.blob.core.windows.net. Le souci est que vous pouvez attribuer ce domaine personnalisé uniquement à un compte de stockage.The problem is that you can only assign that custom domain to one storage account. Que se passe-t-il si les ressources sont stockées dans plusieurs comptes de stockage ?What if the assets are stored in multiple storage accounts?

Une autre façon de résoudre ce problème consiste à faire en sorte que l’application web joue le rôle de proxy pour les appels de stockage.Another way to resolve this is to have the web application act as a proxy for the storage calls. Cela signifie que si vous chargez un fichier sur Blob Storage, soit l’application web l’écrit localement puis le copie dans Blob Storage, soit elle le lit en intégralité en mémoire puis l’écrit dans Blob Storage.This means if you are uploading a file to Blob Storage, the web application would either write it locally and then copy it to Blob Storage, or it would read all of it into memory and then write it to Blob Storage. Vous pouvez également écrire une application web dédiée (par exemple, une API web) qui charge les fichiers localement et les écrit dans Blob Storage.Alternately, you could write a dedicated web application (such as a Web API) that uploads the files locally and writes them to Blob Storage. Dans les deux cas, vous devez prendre en compte cette fonction pour déterminer les besoins en termes d’extensibilité.Either way, you have to account for that function when determining the scalability needs.

En quoi CORS peut constituer une aide ?How can CORS help?

Azure Storage vous permet d’activer le Partage des ressources cross-origin (CORS, Cross Origin Resource Sharing).Azure Storage allows you to enable CORS – Cross Origin Resource Sharing. Pour chaque compte de stockage, vous pouvez spécifier les domaines qui peuvent accéder aux ressources de ce compte de stockage.For each storage account, you can specify domains that can access the resources in that storage account. Par exemple, dans le cas indiqué ci-dessus, nous pouvons activer CORS sur le compte de stockage fabrikam.blob.core.windows.net et le configurer pour autoriser l’accès à contoso.com.For example, in our case outlined above, we can enable CORS on the fabrikam.blob.core.windows.net storage account and configure it to allow access to contoso.com. L’application web contoso.com peut alors accéder directement aux ressources dans fabrikam.blob.core.windows.net.Then the web application contoso.com can directly access the resources in fabrikam.blob.core.windows.net.

Concernant CORS, il convient de noter qu’il autorise l’accès, mais qu’il ne fournit pas d’authentification, ce qui est nécessaire pour l’accès non public aux ressources de stockage.One thing to note is that CORS allows access, but it does not provide authentication, which is required for all non-public access of storage resources. Cela signifie que vous pouvez accéder uniquement aux objets blob s’ils sont publics ou que vous devez inclure une signature d’accès partagé vous donnant l’autorisation appropriée.This means you can only access blobs if they are public or you include a Shared Access Signature giving you the appropriate permission. Les tables, les files d’attente et les fichiers n’ont pas d’accès public et requièrent une SAP.Tables, queues, and files have no public access, and require a SAS.

Par défaut, CORS est désactivé sur tous les services.By default, CORS is disabled on all services. Vous pouvez activer CORS à l’aide de l’API REST ou de la bibliothèque cliente de stockage afin d’appeler l’une des méthodes pour définir les stratégies de service.You can enable CORS by using the REST API or the storage client library to call one of the methods to set the service policies. Quand vous procédez ainsi, vous incluez une règle CORS, qui est au format XML.When you do that, you include a CORS rule, which is in XML. Voici un exemple d’une règle CORS qui a été définie à l’aide de l’opération Set Service Properties pour le service Blob pour un compte de stockage.Here's an example of a CORS rule that has been set using the Set Service Properties operation for the Blob Service for a storage account. Vous pouvez effectuer cette opération à l’aide de la bibliothèque cliente de stockage ou des API REST pour Azure Storage.You can perform that operation using the storage client library or the REST APIs for Azure Storage.

<Cors>    
    <CorsRule>
        <AllowedOrigins>http://www.contoso.com, http://www.fabrikam.com</AllowedOrigins>
        <AllowedMethods>PUT,GET</AllowedMethods>
        <AllowedHeaders>x-ms-meta-data*,x-ms-meta-target*,x-ms-meta-abc</AllowedHeaders>
        <ExposedHeaders>x-ms-meta-*</ExposedHeaders>
        <MaxAgeInSeconds>200</MaxAgeInSeconds>
    </CorsRule>
<Cors>

Voici ce que signifie chaque ligne :Here's what each row means:

  • AllowedOrigins Cette ligne indique quels domaines sans correspondance peuvent demander et recevoir des données du service de stockage.AllowedOrigins This tells which non-matching domains can request and receive data from the storage service. Cela indique que contoso.com et fabrikam.com peuvent demander des données à partir de Blob Storage pour un compte de stockage spécifique.This says that both contoso.com and fabrikam.com can request data from Blob Storage for a specific storage account. Vous pouvez également définir ici un caractère générique (*) pour autoriser tous les domaines à effectuer des demandes d’accès.You can also set this to a wildcard (*) to allow all domains to access requests.
  • AllowedMethods Cette ligne répertorie les méthodes (verbes de requête HTTP) qui peuvent être utilisées lors de la requête.AllowedMethods This is the list of methods (HTTP request verbs) that can be used when making the request. Dans cet exemple, seuls PUT et GET sont autorisés.In this example, only PUT and GET are allowed. Vous pouvez définir ici un caractère générique (*) pour autoriser l’utilisation de toutes les méthodes.You can set this to a wildcard (*) to allow all methods to be used.
  • AllowedHeaders Cette ligne représente les en-têtes de requête que le domaine d’origine peut spécifier lors de la requête.AllowedHeaders This is the request headers that the origin domain can specify when making the request. Dans cet exemple, tous les en-têtes de métadonnées commençant par x-ms-meta-data, x-ms-meta-target et x-ms-meta-abc sont autorisés.In this example, all metadata headers starting with x-ms-meta-data, x-ms-meta-target, and x-ms-meta-abc are permitted. Le caractère générique (*) indique que tout en-tête commençant par le préfixe spécifié est autorisé.The wildcard character (*) indicates that any header beginning with the specified prefix is allowed.
  • ExposedHeaders Cette ligne indique quels en-têtes de réponse doivent être exposés par le navigateur à l’émetteur de la requête.ExposedHeaders This tells which response headers should be exposed by the browser to the request issuer. Dans cet exemple, tout en-tête commençant par « x-ms - meta-» est exposé.In this example, any header starting with "x-ms-meta-" will be exposed.
  • MaxAgeInSeconds Cette ligne indique la durée maximale pendant laquelle un navigateur met en cache la requête OPTIONS préliminaire.MaxAgeInSeconds This is the maximum amount of time that a browser will cache the preflight OPTIONS request. (Pour plus d’informations sur la requête préliminaire, consultez le premier article ci-dessous).(For more information about the preflight request, check the first article below.)

RessourcesResources

Pour plus d’informations sur CORS et sur la façon de l’activer, consultez les ressources suivantes.For more information about CORS and how to enable it, check out these resources.

Questions fréquemment posées (FAQ) sur la sécurité Azure StorageFrequently asked questions about Azure Storage security

  1. Comment puis-je vérifier l’intégrité des objets blob que je transfère vers ou à partir du stockage Azure si je ne peux pas utiliser le protocole HTTPS ?How can I verify the integrity of the blobs I'm transferring into or out of Azure Storage if I can't use the HTTPS protocol?

    Si, pour une raison quelconque, vous devez utiliser le protocole HTTP au lieu de HTTPS et que vous travaillez avec des objets blob de blocs, vous pouvez utiliser la vérification MD5 pour vérifier l’intégrité des objets blob transférés.If for any reason you need to use HTTP instead of HTTPS and you are working with block blobs, you can use MD5 checking to help verify the integrity of the blobs being transferred. Ceci contribuera à la protection contre les erreurs au niveau du réseau/transport, mais pas nécessairement contre les attaques intermédiaires.This will help with protection from network/transport layer errors, but not necessarily with intermediary attacks.

    Si vous pouvez utiliser le protocole HTTPS, qui fournit une sécurité au niveau du transport, alors l’utilisation de la vérification MD5 est redondant et inutile.If you can use HTTPS, which provides transport level security, then using MD5 checking is redundant and unnecessary.

    Pour plus d’informations, consultez Présentation d’Azure Blob MD5.For more information, please check out the Azure Blob MD5 Overview.

  2. Qu’en est-il de la conformité aux normes FIPS pour l’État fédéral américain ?What about FIPS-Compliance for the U.S. Government?

    Les normes FIPS (Federal Information Processing Standard) des États-Unis définissent les algorithmes de chiffrement qui sont approuvés pour une utilisation sur les systèmes informatiques de l’État fédéral américain dans le but de protéger les données sensibles.The United States Federal Information Processing Standard (FIPS) defines cryptographic algorithms approved for use by U.S. Federal government computer systems for the protection of sensitive data. L’activation du mode FIPS sur un serveur ou un bureau Windows indique au système d’exploitation que seuls les algorithmes de chiffrement conformes aux normes FIPS doivent être utilisés.Enabling FIPS mode on a Windows server or desktop tells the OS that only FIPS-validated cryptographic algorithms should be used. Si une application utilise des algorithmes non conformes, les applications s’arrêtent.If an application uses non-compliant algorithms, the applications will break. Avec .NET Framework versions 4.5.2 ou ultérieures, l’application bascule automatiquement les algorithmes de chiffrement pour utiliser des algorithmes conformes aux normes FIPS quand l’ordinateur est en mode FIPS.With.NET Framework versions 4.5.2 or higher, the application automatically switches the cryptography algorithms to use FIPS-compliant algorithms when the computer is in FIPS mode.

    Microsoft laisse à chaque client le soin de décider si le mode FIPS doit être activé.Microsoft leaves it up to each customer to decide whether to enable FIPS mode. Nous pensons qu’il n’existe aucune raison valable pour les clients qui ne sont pas soumis aux réglementations gouvernementales d’activer le mode FIPS par défaut.We believe there is no compelling reason for customers who are not subject to government regulations to enable FIPS mode by default.

RessourcesResources