Az - Storage Accounts & Blobs
Last updated
Last updated
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE) Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Les comptes de stockage Azure sont des services fondamentaux dans Microsoft Azure qui fournissent un stockage cloud évolutif, sécurisé et hautement disponible pour divers types de données, y compris les blobs (objets binaires volumineux), les fichiers, les files d'attente et les tables. Ils servent de conteneurs qui regroupent ces différents services de stockage sous un seul espace de noms pour une gestion facile.
Options de configuration principales :
Chaque compte de stockage doit avoir un nom unique dans tout Azure.
Chaque compte de stockage est déployé dans une région ou dans une zone étendue Azure.
Il est possible de sélectionner la version premium du compte de stockage pour de meilleures performances.
Il est possible de choisir parmi 4 types de redondance pour se protéger contre les pannes de rack, de disque et de centre de données.
Options de configuration de sécurité :
Exiger un transfert sécurisé pour les opérations de l'API REST : Exiger TLS dans toute communication avec le stockage.
Permettre l'accès anonyme sur des conteneurs individuels : Sinon, il ne sera pas possible d'activer l'accès anonyme à l'avenir.
Activer l'accès par clé de compte de stockage : Sinon, l'accès avec des clés partagées sera interdit.
Version TLS minimale.
Portée autorisée pour les opérations de copie : Autoriser depuis n'importe quel compte de stockage, depuis n'importe quel compte de stockage du même locataire Entra ou depuis un compte de stockage avec des points de terminaison privés dans le même réseau virtuel.
Options de stockage de blobs :
Autoriser la réplication inter-locataires.
Niveau d'accès : Chaud (données fréquemment accessibles), Froid et Très Froid (données rarement accessibles).
Options de mise en réseau :
Accès réseau :
Autoriser depuis tous les réseaux.
Autoriser depuis des réseaux virtuels et des adresses IP sélectionnés.
Désactiver l'accès public et utiliser l'accès privé.
Points de terminaison privés : Cela permet une connexion privée au compte de stockage depuis un réseau virtuel.
Options de protection des données :
Restauration à un instant donné pour les conteneurs : Permet de restaurer les conteneurs à un état antérieur.
Cela nécessite que la version, le flux de modifications et la suppression douce des blobs soient activés.
Activer la suppression douce pour les blobs : Cela active une période de conservation en jours pour les blobs supprimés (même écrasés).
Activer la suppression douce pour les conteneurs : Cela active une période de conservation en jours pour les conteneurs supprimés.
Activer la suppression douce pour les partages de fichiers : Cela active une période de conservation en jours pour les fichiers partagés supprimés.
Activer la version pour les blobs : Maintenir les versions précédentes de vos blobs.
Activer le flux de modifications des blobs : Conserver des journaux des créations, modifications et suppressions des blobs.
Activer le support d'immuabilité au niveau de la version : Vous permet de définir une politique de conservation basée sur le temps au niveau du compte qui s'appliquera à toutes les versions de blobs.
Le support d'immuabilité au niveau de la version et la restauration à un instant donné pour les conteneurs ne peuvent pas être activés simultanément.
Options de configuration de chiffrement :
Type de chiffrement : Il est possible d'utiliser des clés gérées par Microsoft (MMK) ou des clés gérées par le client (CMK).
Activer le chiffrement de l'infrastructure : Permet de chiffrer les données deux fois "pour plus de sécurité".
Stockage de blobs |
|
Stockage Data Lake |
|
Azure Files |
|
Stockage de files d'attente |
|
Stockage de tables |
|
Si "Autoriser l'accès public aux blobs" est activé (désactivé par défaut), lors de la création d'un conteneur, il est possible de :
Donner un accès public pour lire les blobs (vous devez connaître le nom).
Lister les blobs du conteneur et les lire.
Le rendre complètement privé.
Si vous trouvez un stockage auquel vous pouvez vous connecter, vous pouvez utiliser l'outil Microsoft Azure Storage Explorer pour le faire.
Il est possible d'utiliser des principaux Entra ID avec des rôles RBAC pour accéder aux comptes de stockage et c'est la méthode recommandée.
Les comptes de stockage ont des clés d'accès qui peuvent être utilisées pour y accéder. Cela fournit un accès complet au compte de stockage.
Il est possible de générer des clés partagées signées avec les clés d'accès pour autoriser l'accès à certaines ressources via une URL signée.
Notez que la partie CanonicalizedResource
représente la ressource des services de stockage (URI). Et si une partie de l'URL est encodée, elle doit également être encodée à l'intérieur de CanonicalizedResource
.
Ceci est utilisé par défaut par az
cli pour authentifier les demandes. Pour qu'il utilise les identifiants du principal Entra ID, indiquez le paramètre --auth-mode login
.
Il est possible de générer une clé partagée pour les services de blobs, de files d'attente et de fichiers en signant les informations suivantes :
Il est possible de générer une clé partagée pour les services de table en signant les informations suivantes :
Il est possible de générer une clé partagée légère pour les services blob, queue et file en signant les informations suivantes :
Il est possible de générer une clé partagée légère pour les services de table en signant les informations suivantes :
Alors, pour utiliser la clé, cela peut se faire dans l'en-tête Authorization suivant la syntaxe :
Les signatures d'accès partagé (SAS) sont des URL sécurisées et temporisées qui accordent des autorisations spécifiques pour accéder aux ressources dans un compte de stockage Azure sans exposer les clés d'accès du compte. Alors que les clés d'accès fournissent un accès administratif complet à toutes les ressources, le SAS permet un contrôle granulaire en spécifiant des autorisations (comme lire ou écrire) et en définissant une durée d'expiration.
SAS de délégation utilisateur : Cela est créé à partir d'un principal Entra ID qui signera le SAS et délèguera les autorisations de l'utilisateur au SAS. Il ne peut être utilisé qu'avec blob et stockage de lac de données (docs). Il est possible de révoquer tous les SAS délégués par l'utilisateur générés.
Même s'il est possible de générer un SAS de délégation avec "plus" d'autorisations que celles dont dispose l'utilisateur. Cependant, si le principal ne les a pas, cela ne fonctionnera pas (pas de privesc).
SAS de service : Cela est signé en utilisant l'une des clés d'accès du compte de stockage. Il peut être utilisé pour accorder l'accès à des ressources spécifiques dans un seul service de stockage. Si la clé est renouvelée, le SAS cessera de fonctionner.
SAS de compte : Il est également signé avec l'une des clés d'accès du compte de stockage. Il accorde l'accès aux ressources à travers les services d'un compte de stockage (Blob, Queue, Table, File) et peut inclure des opérations au niveau du service.
Une URL SAS signée par une clé d'accès ressemble à ceci :
https://<container_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D
Une URL SAS signée en tant que délégation utilisateur ressemble à ceci :
https://<container_name>.blob.core.windows.net/testing-container?sp=r&st=2024-11-22T15:07:40Z&se=2024-11-22T23:07:40Z&skoid=d77c71a1-96e7-483d-bd51-bd753aa66e62&sktid=fdd066e1-ee37-49bc-b08f-d0e152119b04&skt=2024-11-22T15:07:40Z&ske=2024-11-22T23:07:40Z&sks=b&skv=2022-11-02&spr=https&sv=2022-11-02&sr=c&sig=7s5dJyeE6klUNRulUj9TNL0tMj2K7mtxyRc97xbYDqs%3D
Notez quelques params http :
Le paramètre se
indique la date d'expiration du SAS
Le paramètre sp
indique les autorisations du SAS
Le sig
est la signature validant le SAS
Lors de la génération d'un SAS, il est nécessaire d'indiquer les autorisations qu'il doit accorder. Selon l'objet sur lequel le SAS est généré, différentes autorisations peuvent être incluses. Par exemple :
(a)jouter, (c)réer, (d)élete, (e)xécuter, (f)iltrer_par_tags, (i)ndiquer_politique_d'immuabilité, (l)ister, (m)ouvoir, (r)ead, (t)ag, (w)riter, (x)delete_previous_version, (y)permanent_delete
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)