mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['', 'src/pentesting-cloud/azure-security/az-services/az-sql.
This commit is contained in:
@@ -4,47 +4,47 @@
|
||||
|
||||
## Azure SQL
|
||||
|
||||
Azure SQL est une famille de produits gérés, secure et intelligents qui utilisent le **moteur de base de données SQL Server dans le cloud Azure**. Cela signifie que vous n’avez pas à vous soucier de l’administration physique de vos serveurs, et que vous pouvez vous concentrer sur la gestion de vos données.
|
||||
Azure SQL est une famille de produits managés, sécurisés et intelligents qui utilisent le **moteur de base de données SQL Server dans le cloud Azure**. Cela signifie que vous n'avez pas à vous soucier de l'administration physique de vos serveurs et que vous pouvez vous concentrer sur la gestion de vos données.
|
||||
|
||||
Azure SQL se compose de quatre offres principales :
|
||||
Azure SQL comprend quatre offres principales :
|
||||
|
||||
1. **Azure SQL Server** : un serveur est nécessaire pour le **déploiement et la gestion** des bases de données SQL Server.
|
||||
2. **Azure SQL Database** : il s’agit d’un **service de base de données entièrement géré**, qui vous permet d’héberger des bases de données individuelles dans le cloud Azure.
|
||||
3. **Azure SQL Managed Instance** : destiné aux déploiements à plus grande échelle, au niveau d’une instance SQL Server entière.
|
||||
4. **Azure SQL Server on Azure VMs** : c’est le mieux adapté aux architectures où vous voulez **un contrôle sur le système d’exploitation **et l’instance SQL Server.
|
||||
1. **Azure SQL Server** : Un serveur est nécessaire pour le **déploiement et la gestion** des bases de données SQL Server.
|
||||
2. **Azure SQL Database** : Il s'agit d'un **service de base de données entièrement managé**, qui vous permet d'héberger des bases de données individuelles dans le cloud Azure.
|
||||
3. **Azure SQL Managed Instance** : Cette offre est destinée aux déploiements à plus grande échelle couvrant l'intégralité d'une instance SQL Server.
|
||||
4. **Azure SQL Server on Azure VMs** : Cette offre est adaptée aux architectures dans lesquelles vous souhaitez **contrôler le système d'exploitation **et l'instance SQL Server.
|
||||
|
||||
### SQL Server Security Features
|
||||
### Fonctionnalités de sécurité de SQL Server
|
||||
|
||||
**Network access:**
|
||||
**Accès réseau :**
|
||||
|
||||
- Point de terminaison public (peut limiter l’accès à des réseaux spécifiques).
|
||||
- Points de terminaison privés.
|
||||
- Il est aussi possible de restreindre les connexions en fonction des noms de domaine.
|
||||
- Il est aussi possible d’autoriser les services Azure à y accéder (par exemple pour utiliser l’éditeur Query dans le portail ou pour permettre à une Azure VM de se connecter).
|
||||
- Si un SQL Server a *Allow Azure services and resources to access this server* défini sur "Enabled", Azure créera automatiquement une règle de firewall cachée qui autorise tout le trafic réseau provenant d’Azure à se connecter au SQL Server — y compris les ressources de n’importe quel tenant.
|
||||
- Cela signifie que si vous obtenez des identifiants SQL valides, vous pouvez vous connecter au SQL Server Azure de la victime depuis une Azure VM dans votre propre tenant contrôlé par l’attaquant. [La documentation MS l’explique](https://learn.microsoft.com/en-us/azure/azure-sql/database/network-access-controls-overview?view=azuresql#allow-azure-services)
|
||||
- Endpoint public (l'accès peut être limité à des réseaux spécifiques).
|
||||
- Endpoints privés.
|
||||
- Il est également possible de restreindre les connexions en fonction des noms de domaine.
|
||||
- Il est également possible d'autoriser les services Azure à y accéder (par exemple pour utiliser le Query editor dans le portail ou autoriser une Azure VM à se connecter).
|
||||
- Si un SQL Server a l'option *Allow Azure services and resources to access this server* définie sur « Enabled », Azure crée automatiquement une règle de firewall cachée qui autorise tout le trafic réseau provenant d'Azure à se connecter au SQL Server — y compris les ressources de n'importe quel tenant.
|
||||
- Cela signifie que si vous obtenez des identifiants SQL valides, vous pouvez vous connecter au serveur Azure SQL de la victime depuis une Azure VM située dans votre propre tenant contrôlé par l'attaquant. [La documentation MS l'explique](https://learn.microsoft.com/en-us/azure/azure-sql/database/network-access-controls-overview?view=azuresql#allow-azure-services)
|
||||
|
||||
**Authentication Methods:**
|
||||
**Méthodes d'authentification :**
|
||||
|
||||
- Authentification Microsoft **Entra-only** : vous devez indiquer les principals Entra qui auront accès au service.
|
||||
- Authentification **Both SQL and Microsoft Entra** : authentification SQL traditionnelle avec nom d’utilisateur et mot de passe, en plus de Microsoft Entra.
|
||||
- Authentification **Only SQL** : autoriser uniquement l’accès via des database users.
|
||||
- Authentification **Entra-only** : Vous devez indiquer les principaux Entra qui auront accès au service.
|
||||
- Authentification **SQL et Microsoft Entra** : Authentification SQL traditionnelle avec un nom d'utilisateur et un mot de passe, en parallèle de Microsoft Entra.
|
||||
- Authentification **Only SQL** : Autoriser uniquement l'accès via des utilisateurs de la base de données.
|
||||
|
||||
Notez que si une authentification SQL est autorisée, un utilisateur admin (nom d’utilisateur + mot de passe) doit être indiqué, et si l’authentification Entra ID est sélectionnée, il faut aussi indiquer au moins un principal avec des droits admin.
|
||||
Notez que si une authentification SQL est autorisée, un utilisateur administrateur (nom d'utilisateur + mot de passe) doit être indiqué et que si l'authentification Entra ID est sélectionnée, il est également nécessaire d'indiquer au moins un principal disposant d'un accès administrateur.
|
||||
|
||||
**Encryption:**
|
||||
**Chiffrement :**
|
||||
|
||||
- Cela s’appelle “Transparent data encryption” et cela chiffre les bases de données, les backups et les logs au repos.
|
||||
- Comme toujours, une Azure managed key est utilisée par défaut, mais une customer managed encryption key (CMEK) peut aussi être utilisée.
|
||||
- Il est appelé « Transparent data encryption » et chiffre les bases de données, les sauvegardes et les logs au repos.
|
||||
- Comme toujours, une clé managée par Azure est utilisée par défaut, mais une clé de chiffrement managée par le client (CMEK) peut également être utilisée.
|
||||
**Managed Identities:**
|
||||
|
||||
- Il est possible d’assigner des MIs système et utilisateur.
|
||||
- Utilisées pour accéder à la clé de chiffrement (si une CMEK est utilisée) et à d’autres services depuis les bases de données.
|
||||
- Pour quelques exemples des services Azure accessibles depuis la base de données, consultez [cette page de la documentation](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql)
|
||||
- Si plus d’une UMI est assignée, il est possible d’indiquer celle à utiliser par défaut.
|
||||
- Il est possible de configurer une federated client identity pour l’accès cross-tenant.
|
||||
- Il est possible d'attribuer des MI managées par le système et par l'utilisateur.
|
||||
- Elles sont utilisées pour accéder à la clé de chiffrement (si une CMEK est utilisée) et à d'autres services depuis les bases de données.
|
||||
- Pour quelques exemples de services Azure auxquels il est possible d'accéder depuis la base de données, consultez [cette page de la documentation](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql)
|
||||
- Si plusieurs UMI sont attribuées, il est possible d'indiquer celle à utiliser par défaut.
|
||||
- Il est possible de configurer une identité client fédérée pour un accès cross-tenant.
|
||||
|
||||
Quelques commandes pour accéder aux informations à l’intérieur d’un blob storage depuis une base de données SQL :
|
||||
Quelques commandes permettant d'accéder aux informations d'un blob storage depuis une base de données SQL :
|
||||
```sql
|
||||
-- Create a credential for the managed identity
|
||||
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
|
||||
@@ -71,60 +71,60 @@ GO
|
||||
```
|
||||
**Microsoft Defender :**
|
||||
|
||||
- Utile pour “mitigating potential database vulnerabilities, and detecting anomalous activities”
|
||||
- Utile pour « atténuer les vulnérabilités potentielles des bases de données et détecter les activités anormales »
|
||||
- Nous parlerons de Defender dans sa propre leçon (il peut être activé dans plusieurs autres services Azure)
|
||||
|
||||
**Backups :**
|
||||
- La fréquence des backups est gérée dans les politiques de rétention.
|
||||
|
||||
**Deleted databases :**
|
||||
- Il est possible de restaurer des DBs qui ont été supprimées à partir de backups existants.
|
||||
**Bases de données supprimées :**
|
||||
- Il est possible de restaurer les DB qui ont été supprimées à partir de backups existants.
|
||||
|
||||
## Azure SQL Database
|
||||
|
||||
**Azure SQL Database** est une **fully managed database platform as a service (PaaS)** qui fournit des solutions de base de données relationnelles évolutives et sécurisées. Elle est construite sur les dernières technologies SQL Server et élimine le besoin de gérer l'infrastructure, ce qui en fait un choix populaire pour les applications cloud.
|
||||
**Azure SQL Database** est une **plateforme de base de données entièrement gérée en tant que service (PaaS)** qui fournit des solutions de bases de données relationnelles évolutives et sécurisées. Elle est basée sur les dernières technologies SQL Server et élimine le besoin de gérer l’infrastructure, ce qui en fait un choix populaire pour les applications cloud.
|
||||
|
||||
Pour créer une SQL database, il faut indiquer le SQL server où elle sera hébergée.
|
||||
Pour créer une base de données SQL, il est nécessaire d’indiquer le serveur SQL sur lequel elle sera hébergée.
|
||||
|
||||
### SQL Database Security Features
|
||||
### Fonctionnalités de sécurité de SQL Database
|
||||
|
||||
- **Always Up-to-Date**: S'exécute sur la dernière version stable de SQL Server et reçoit automatiquement les nouvelles fonctionnalités et patches.
|
||||
- **Inherited SQL Server security features:**
|
||||
- Authentication (SQL and/or Entra ID)
|
||||
- Assigned Managed Identities
|
||||
- Network restrictions
|
||||
- Encryption
|
||||
- **Toujours à jour** : s’exécute sur la dernière version stable de SQL Server et reçoit automatiquement les nouvelles fonctionnalités et les patches.
|
||||
- **Fonctionnalités de sécurité SQL Server héritées :**
|
||||
- Authentification (SQL et/ou Entra ID)
|
||||
- Managed Identities assignées
|
||||
- Restrictions réseau
|
||||
- Chiffrement
|
||||
- Backups
|
||||
- …
|
||||
- **Data redundancy:** Les options sont local, zone, Geo ou Geo-Zone redundant.
|
||||
- **Ledger:** Vérifie cryptographiquement l'intégrité des données, garantissant que toute altération soit détectée. Utile pour les organisations financières, médicales et toute organisation gérant des données sensibles.
|
||||
- **Redondance des données :** les options sont la redondance locale, zonale, Geo ou Geo-Zone.
|
||||
- **Ledger :** vérifie cryptographiquement l’intégrité des données, garantissant que toute altération est détectée. Utile pour les organisations financières, médicales et toute organisation gérant des données sensibles.
|
||||
|
||||
|
||||
Une SQL database peut faire partie d'un **elastic Pool**. Les elastic pools sont une solution économique pour gérer plusieurs databases en partageant entre elles des ressources de calcul configurables (eDTUs) et de stockage, avec une tarification basée uniquement sur les ressources allouées plutôt que sur le nombre de databases.
|
||||
Une base de données SQL peut faire partie d’un **Elastic Pool**. Les Elastic Pools constituent une solution économique pour gérer plusieurs bases de données en partageant entre elles des ressources de calcul (eDTUs) et de stockage configurables, avec une tarification basée uniquement sur les ressources allouées plutôt que sur le nombre de bases de données.
|
||||
|
||||
#### Azure SQL Column Level Security (Masking) & Row Level Security
|
||||
|
||||
Le **dynamic** data masking d'Azure SQL est une fonctionnalité qui aide à **protéger les informations sensibles en les masquant** aux utilisateurs non autorisés. Au lieu de modifier les données réelles, elle masque dynamiquement les données affichées, garantissant que des détails sensibles comme les numéros de carte bancaire soient obscurcis.
|
||||
Le **Dynamic Data Masking** d’**Azure SQL** est une fonctionnalité qui aide à **protéger les informations sensibles en les masquant** aux utilisateurs non autorisés. Au lieu de modifier les données réelles, il masque dynamiquement les données affichées, garantissant que les informations sensibles comme les numéros de cartes bancaires sont masquées.
|
||||
|
||||
Le **Dynamic Data Masking** affecte tous les utilisateurs sauf ceux qui sont unmasked (ces utilisateurs doivent être indiqués) et les administrateurs. Il dispose d'une option de configuration qui spécifie quels utilisateurs SQL sont exemptés du dynamic data masking, avec les **administrateurs toujours exclus**.
|
||||
Le **Dynamic Data Masking** s’applique à tous les utilisateurs, à l’exception de ceux qui sont exemptés du masquage (ces utilisateurs doivent être indiqués) et des administrateurs. Il dispose d’une option de configuration permettant de spécifier quels utilisateurs SQL sont exemptés du Dynamic Data Masking, les **administrateurs étant toujours exclus**.
|
||||
|
||||
**Azure SQL Row Level Security (RLS)** est une fonctionnalité qui **contrôle quelles lignes un utilisateur peut voir ou modifier**, garantissant que chaque utilisateur ne voit que les données qui le concernent. En créant des security policies avec des filtres ou des block predicates, les organisations peuvent appliquer un contrôle d'accès fin au niveau de la database.
|
||||
**Azure SQL Row Level Security (RLS)** est une fonctionnalité qui **contrôle les lignes qu’un utilisateur peut consulter ou modifier**, garantissant que chaque utilisateur ne voit que les données qui le concernent. En créant des politiques de sécurité avec des prédicats de filtrage ou de blocage, les organisations peuvent appliquer un contrôle d’accès granulaire au niveau de la base de données.
|
||||
|
||||
### Azure SQL Managed Instance
|
||||
|
||||
Les **Azure SQL Managed Instances** sont destinées à des déploiements à grande échelle, à l'échelle de l'instance SQL Server entière. Elles offrent une compatibilité proche de 100% avec le dernier moteur de database SQL Server on-premises (Enterprise Edition), ce qui fournit une implémentation native en virtual network (VNet) qui répond aux préoccupations courantes de sécurité, ainsi qu'un modèle économique favorable pour les clients SQL Server on-premises.
|
||||
**Azure SQL Managed Instances** sont destinées aux déploiements à plus grande échelle couvrant l’ensemble d’une instance SQL Server. Elles offrent une compatibilité presque totale avec le dernier SQL Server on-premises (Database Engine de l’Enterprise Edition), qui fournit une implémentation native dans un réseau virtuel (VNet) répondant aux préoccupations de sécurité courantes, ainsi qu’un modèle économique favorable aux clients SQL Server on-premises.
|
||||
|
||||
### Azure SQL Virtual Machines
|
||||
|
||||
**Azure SQL Virtual Machines** permet de **contrôler le système d'exploitation** et l'instance SQL Server, car une VM sera créée dans le service VM exécutant le SQL server.
|
||||
**Azure SQL Virtual Machines** permettent de **contrôler le système d’exploitation** et l’instance SQL Server, car une VM sera déployée dans le service VM et exécutera le serveur SQL.
|
||||
|
||||
Lorsqu'une SQL Virtual Machine est créée, il est possible de **sélectionner tous les paramètres de la VM** (comme montré dans la leçon sur les VM) qui hébergera le SQL server.
|
||||
- Cela signifie que la VM accédera à un ou plusieurs VNet(s), pourra avoir des **Managed Identities attached** à elle, pourrait avoir des file shares montés… rendant un **pivoting from the SQL** vers la VM très intéressant.
|
||||
- De plus, il est possible de configurer un app id et un secret pour **allow the SQL to access an specific key vault**, qui pourrait contenir des informations sensibles.
|
||||
Lorsqu’une SQL Virtual Machine est créée, il est possible de **sélectionner tous les paramètres de la VM** (comme indiqué dans la leçon consacrée aux VM) qui hébergera le serveur SQL.
|
||||
- Cela signifie que la VM accédera à certains VNet, pourra avoir des **Managed Identities attachées**, des partages de fichiers montés, etc., ce qui rend un **pivoting depuis SQL** vers la VM particulièrement intéressant.
|
||||
- De plus, il est possible de configurer un app id et un secret pour **permettre à SQL d’accéder à un key vault spécifique**, qui pourrait contenir des informations sensibles.
|
||||
|
||||
Il est aussi possible de configurer des éléments comme les **automatic SQL updates**, les **automatic backups**, l'authentification **Entra ID** et la plupart des fonctionnalités des autres services SQL.
|
||||
Il est également possible de configurer des fonctionnalités telles que les **mises à jour SQL automatiques**, les **backups automatiques**, l’**authentification Entra ID** et la plupart des fonctionnalités des autres services SQL.
|
||||
|
||||
## Enumeration
|
||||
## Énumération
|
||||
|
||||
{{#tabs}}
|
||||
{{#tab name="az cli"}}
|
||||
@@ -261,7 +261,7 @@ Get-AzSqlVM
|
||||
{{#endtab}}
|
||||
{{#endtabs}}
|
||||
|
||||
De plus, si vous voulez énumérer les politiques Dynamic Data Masking et Row Level à l'intérieur de la base de données, vous pouvez interroger :
|
||||
De plus, si vous souhaitez énumérer les politiques Dynamic Data Masking et Row Level au sein de la base de données, vous pouvez interroger :
|
||||
```sql
|
||||
--Enumerates the masked columns
|
||||
SELECT
|
||||
@@ -288,7 +288,7 @@ ON sp.object_id = sp2.object_id;
|
||||
```
|
||||
### Se connecter et exécuter des requêtes SQL
|
||||
|
||||
Vous pourriez trouver une chaîne de connexion (contenant des credentials) à partir de l’exemple [enumerating an Az WebApp](az-app-services.md):
|
||||
Vous pouvez trouver une chaîne de connexion (contenant des identifiants) en suivant l’exemple d’[énumération d’une Az WebApp](az-app-services.md) :
|
||||
```bash
|
||||
function invoke-sql{
|
||||
param($query)
|
||||
@@ -307,7 +307,7 @@ $Connection.Close()
|
||||
|
||||
invoke-sql 'Select Distinct TABLE_NAME From information_schema.TABLES;'
|
||||
```
|
||||
Vous pouvez également utiliser sqlcmd pour accéder à la base de données. Il est important de savoir si le serveur autorise les connexions publiques `az sql server show --name <server-name> --resource-group <resource-group>`, et aussi si la règle de firewall autorise notre IP à accéder :
|
||||
Vous pouvez également utiliser sqlcmd pour accéder à la base de données. Il est important de vérifier si le serveur autorise les connexions publiques avec `az sql server show --name <server-name> --resource-group <resource-group>`, et également si la règle du pare-feu permet à notre IP d’y accéder :
|
||||
```bash
|
||||
sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passworkd> -d <database>
|
||||
```
|
||||
@@ -324,7 +324,7 @@ sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passwork
|
||||
../az-privilege-escalation/az-sql-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## Post Exploitation
|
||||
## Post-exploitation
|
||||
|
||||
{{#ref}}
|
||||
../az-post-exploitation/az-sql-post-exploitation.md
|
||||
|
||||
@@ -4,52 +4,52 @@
|
||||
|
||||
## Informations de base
|
||||
|
||||
Les Azure Storage Accounts sont des services fondamentaux dans Microsoft Azure qui fournissent un **stockage cloud** évolutif, sécurisé et hautement उपलब्ध pour différents types de données, y compris les blobs (binary large objects), files, queues et tables. Elles servent de conteneurs qui regroupent ces différents services de stockage sous un seul namespace pour une gestion facile.
|
||||
Les Azure Storage Accounts sont des services fondamentaux de Microsoft Azure qui fournissent un **stockage cloud évolutif, sécurisé et hautement disponible pour différents types de données**, notamment les blobs (objets binaires volumineux), les fichiers, les files d’attente et les tables. Ils servent de conteneurs regroupant ces différents services de stockage sous un espace de noms unique pour faciliter leur gestion.
|
||||
|
||||
**Principales options de configuration** :
|
||||
|
||||
- Chaque storage account doit avoir un **nom unique dans tout Azure**.
|
||||
- Chaque storage account est déployé dans une **région** ou dans une Azure extended zone
|
||||
- Il est possible de sélectionner la version **premium** du storage account pour de meilleures performances
|
||||
- Il est possible de sélectionner parmi **4 types de redundancy** pour protéger contre les pannes de rack, de disque et de datacenter.
|
||||
- Chaque storage account est déployé dans une **région** ou dans une extended zone Azure.
|
||||
- Il est possible de sélectionner la version **premium** du storage account pour de meilleures performances.
|
||||
- Il est possible de choisir parmi **4 types de redondance pour se protéger** contre les **défaillances** de racks, de disques et de datacenters.
|
||||
|
||||
**Options de configuration de sécurité** :
|
||||
|
||||
- **Require secure transfer for REST API operations** : Exiger TLS dans toute communication avec le stockage
|
||||
- **Allows enabling anonymous access on individual containers** : Sinon, il ne sera pas possible d’activer l’accès anonyme à l’avenir
|
||||
- **Enable storage account key access** : Sinon, l’accès avec Shared Keys sera interdit
|
||||
- **Require secure transfer for REST API operations** : exige TLS pour toute communication avec le stockage.
|
||||
- **Allows enabling anonymous access on individual containers** : permet d'activer l'accès anonyme sur des conteneurs individuels. Dans le cas contraire, il ne sera pas possible d'activer l'accès anonyme ultérieurement.
|
||||
- **Enable storage account key access** : si cette option n'est pas activée, l'accès avec des Shared Keys sera interdit.
|
||||
- **Minimum TLS version**
|
||||
- **Permitted scope for copy operations** : Autoriser depuis n’importe quel storage account, depuis n’importe quel storage account du même Entra tenant ou depuis un storage account avec private endpoints dans le même virtual network.
|
||||
- **Permitted scope for copy operations** : autorise les opérations depuis n'importe quel storage account, depuis n'importe quel storage account du même tenant Entra ou depuis un storage account disposant de private endpoints dans le même réseau virtuel.
|
||||
|
||||
**Options Blob Storage** :
|
||||
**Options de Blob Storage** :
|
||||
|
||||
- **Allow cross-tenant replication**
|
||||
- **Access tier** : Hot (données fréquemment consultées), Cool et Cold (données rarement consultées)
|
||||
- **Access tier** : Hot (données consultées fréquemment), Cool et Cold (données rarement consultées).
|
||||
|
||||
**Options réseau** :
|
||||
|
||||
- **Network access** :
|
||||
- Autoriser depuis tous les réseaux
|
||||
- Autoriser depuis des virtual networks et adresses IP sélectionnés
|
||||
- Désactiver l’accès public et utiliser un accès privé
|
||||
- **Private endpoints** : Permet une connexion privée au storage account depuis un virtual network
|
||||
- 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 un accès privé.
|
||||
- **Private endpoints** : permet une connexion privée au storage account depuis un réseau virtuel.
|
||||
|
||||
**Options de protection des données** :
|
||||
|
||||
- **Point-in-time restore for containers** : Permet de restaurer des containers à un état antérieur
|
||||
- Cela nécessite que versioning, change feed et blob soft delete soient activés.
|
||||
- **Enable soft delete for blobs** : Active une période de rétention en jours pour les blobs supprimés (y compris écrasés)
|
||||
- **Enable soft delete for containers** : Active une période de rétention en jours pour les containers supprimés
|
||||
- **Enable soft delete for file shares** : Active une période de rétention en jours pour les file shared supprimés
|
||||
- **Enable versioning for blobs** : Conserver les versions précédentes de vos blobs
|
||||
- **Enable blob change feed** : Conserver les logs des créations, modifications et suppressions de blobs
|
||||
- **Enable version-level immutability support** : Permet de définir une politique de rétention basée sur le temps au niveau du compte, qui s’appliquera à toutes les versions de blobs.
|
||||
- Le support de l’immutability au niveau de la version et le point-in-time restore for containers ne peuvent pas être activés simultanément.
|
||||
- **Point-in-time restore for containers** : permet de restaurer les conteneurs à un état antérieur.
|
||||
- Cette fonctionnalité nécessite l'activation de la gestion des versions, du change feed et de la suppression réversible des blobs.
|
||||
- **Enable soft delete for blobs** : active une période de rétention, en jours, pour les blobs supprimés (y compris ceux qui ont été écrasés).
|
||||
- **Enable soft delete for containers** : active une période de rétention, en jours, pour les conteneurs supprimés.
|
||||
- **Enable soft delete for file shares** : active une période de rétention, en jours, pour les partages de fichiers supprimés.
|
||||
- **Enable versioning for blobs** : conserve les versions précédentes de vos blobs.
|
||||
- **Enable blob change feed** : conserve les journaux des créations, modifications et suppressions de blobs.
|
||||
- **Enable version-level immutability support** : permet de définir une politique de rétention basée sur le temps au niveau du compte, qui s'appliquera à toutes les versions des blobs.
|
||||
- La prise en charge de l'immuabilité au niveau des versions et la restauration point-in-time des conteneurs ne peuvent pas être activées simultanément.
|
||||
|
||||
**Options de configuration du chiffrement** :
|
||||
|
||||
- **Encryption type** : Il est possible d’utiliser des Microsoft-managed keys (MMK) ou Customer-managed keys (CMK)
|
||||
- **Enable infrastructure encryption** : Permet de chiffrer les données deux fois "for more security"
|
||||
- **Encryption type** : 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).
|
||||
- **Enable infrastructure encryption** : permet de chiffrer les données deux fois « pour plus de sécurité ».
|
||||
|
||||
### Storage endpoints
|
||||
|
||||
@@ -64,19 +64,19 @@ Les Azure Storage Accounts sont des services fondamentaux dans Microsoft Azure q
|
||||
|
||||
### Exposition publique
|
||||
|
||||
Si "Allow Blob public access" est **activé** (désactivé par défaut), lors de la création d’un container il est possible de :
|
||||
Si l'option « Allow Blob public access » est **activée** (elle est désactivée 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 container** et les **lire**.
|
||||
- Le rendre totalement **privé**
|
||||
- Donner un **accès public en lecture aux blobs** (vous devez en connaître le nom).
|
||||
- **Lister les blobs du conteneur** et les **lire**.
|
||||
- Le rendre entièrement **privé**.
|
||||
|
||||
<figure><img src="https://lh7-rt.googleusercontent.com/slidesz/AGV_vUfoetUnYBPWQpRrWNnnlbqWpl8Rdoaeg5uBrCVlvcNDlnKwQHjZe8nUb2SfPspBgbu-lCZLmUei-hFi_Jl2eKbaxUtBGTjdUSDmkrcwr90VZkmuMjk9tyh92p75btfyzGiUTa0-=s2048?key=m8TV59TrCFPlkiNnmhYx3aZt" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Exposition du site statique (`$web`) & secrets leakés
|
||||
### Exposition du site statique (`$web`) et secrets leaked
|
||||
|
||||
- Les **sites statiques** sont servis depuis le container spécial `$web` via un endpoint spécifique à la région, comme `https://<account>.z13.web.core.windows.net/`.
|
||||
- Le container `$web` peut afficher `publicAccess: null` via l’API blob, mais les fichiers restent accessibles via le endpoint du site statique, donc y déposer des artefacts de config/IaC peut leak des secrets.
|
||||
- Flux d’audit rapide :
|
||||
- Les **sites statiques** sont servis depuis le conteneur spécial `$web` via un endpoint spécifique à la région, tel que `https://<account>.z13.web.core.windows.net/`.
|
||||
- Le conteneur `$web` peut retourner `publicAccess: null` via l'API blob, mais les fichiers restent accessibles via l'endpoint du site statique ; le fait d'y déposer des artefacts de configuration ou d'IaC peut donc entraîner un leak de secrets.
|
||||
- Workflow d'audit rapide :
|
||||
```bash
|
||||
# Identify storage accounts with static website hosting enabled
|
||||
az storage blob service-properties show --account-name <acc-name> --auth-mode login
|
||||
@@ -87,53 +87,53 @@ az storage blob list --container-name '$web' --account-name <acc-name> --auth-mo
|
||||
# Pull suspicious files directly (e.g., IaC tfvars containing secrets/SAS)
|
||||
az storage blob download -c '$web' --name iac/terraform.tfvars --file /dev/stdout --account-name <acc-name> --auth-mode login
|
||||
```
|
||||
### Auditer l'exposition anonyme des blobs
|
||||
### Audit de l’exposition anonyme des blob
|
||||
|
||||
- **Localisez les storage accounts** qui peuvent exposer des données: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. Si `allowBlobPublicAccess` est `false`, vous ne pouvez pas rendre les containers publics.
|
||||
- **Inspectez les comptes à risque** pour confirmer le flag et d'autres paramètres faibles: `az storage account show --name <acc> --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`.
|
||||
- **Énumérez l'exposition au niveau des containers** lorsque le flag est activé :
|
||||
- **Localisez les storage accounts** susceptibles d’exposer des données : `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. Si `allowBlobPublicAccess` vaut `false`, vous ne pouvez pas rendre les containers publics.
|
||||
- **Inspectez les comptes à risque** pour confirmer le flag et les autres paramètres faibles : `az storage account show --name <acc> --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`.
|
||||
- **Énumérez l’exposition au niveau des containers** lorsque le flag est activé :
|
||||
```bash
|
||||
az storage container list --account-name <acc> \
|
||||
--query '[].{name:name, access:properties.publicAccess}'
|
||||
```
|
||||
- `"Blob"`: lectures anonymes autorisées **uniquement lorsque le nom du blob est connu** (pas de listing).
|
||||
- `"Container"`: **list + read** anonymes de chaque blob.
|
||||
- `null`: privé ; authentification requise.
|
||||
- **Prouver l'accès** sans credentials :
|
||||
- Si `publicAccess` est `Container`, le listing anonyme fonctionne : `curl "https://<acc>.blob.core.windows.net/<container>?restype=container&comp=list"`.
|
||||
- Pour `Blob` et `Container`, le téléchargement anonyme du blob fonctionne lorsque le nom est connu :
|
||||
- `"Blob"` : les lectures anonymes sont autorisées **uniquement lorsque le nom du blob est connu** (aucune énumération).
|
||||
- `"Container"` : **list + read** anonymes de chaque blob.
|
||||
- `null` : privé ; authentification requise.
|
||||
- **Prouver l'accès** sans identifiants :
|
||||
- Si `publicAccess` est `Container`, l'énumération anonyme fonctionne : `curl "https://<acc>.blob.core.windows.net/<container>?restype=container&comp=list"`.
|
||||
- Pour `Blob` et `Container`, le téléchargement anonyme d'un blob fonctionne lorsque son nom est connu :
|
||||
```bash
|
||||
az storage blob download -c <container> -n <blob> --account-name <acc> --file /dev/stdout
|
||||
# or via raw HTTP
|
||||
curl "https://<acc>.blob.core.windows.net/<container>/<blob>"
|
||||
```
|
||||
### Connect to Storage
|
||||
### Se connecter à Storage
|
||||
|
||||
Si vous trouvez un **storage** auquel vous pouvez vous connecter, vous pouvez utiliser l'outil [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) pour le faire.
|
||||
Si vous trouvez un **storage** auquel vous pouvez vous connecter, vous pouvez utiliser l'outil [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) pour ce faire.
|
||||
|
||||
## Access to Storage <a href="#about-blob-storage" id="about-blob-storage"></a>
|
||||
## Accès à Storage <a href="#about-blob-storage" id="about-blob-storage"></a>
|
||||
|
||||
### RBAC
|
||||
|
||||
Il est possible d'utiliser des principals Entra ID avec des **RBAC roles** pour accéder aux storage accounts, et c'est la méthode recommandée.
|
||||
Il est possible d'utiliser des principals Entra ID avec des **rôles RBAC** pour accéder aux comptes de stockage, et c'est la méthode recommandée.
|
||||
|
||||
### Access Keys
|
||||
### Clés d'accès
|
||||
|
||||
Les storage accounts ont des access keys qui peuvent être utilisées pour y accéder. Cela fournit un **accès complet au storage account.**
|
||||
Les comptes de stockage disposent de clés d'accès qui peuvent être utilisées pour y accéder. Cela fournit un accès **complet au compte de stockage.**
|
||||
|
||||
<figure><img src="../../../images/image (5).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### **Shared Keys & Lite Shared Keys**
|
||||
|
||||
Il est possible de [**generate Shared Keys**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key), signées avec les access keys, pour autoriser l'accès à certaines ressources via une URL signée.
|
||||
Il est possible de [**générer des Shared Keys**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) signées avec les clés d'accès afin d'autoriser l'accès à certaines ressources via une URL signée.
|
||||
|
||||
> [!NOTE]
|
||||
> Notez que la partie `CanonicalizedResource` représente la ressource des storage services (URI). Et si une partie de l'URL est encodée, elle doit aussi être encodée à l'intérieur de `CanonicalizedResource`.
|
||||
> 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 dans `CanonicalizedResource`.
|
||||
|
||||
> [!NOTE]
|
||||
> Ceci est **used by default by `az` cli** pour authentifier les requêtes. Pour le faire utiliser les identifiants du principal Entra ID, indiquez le paramètre `--auth-mode login`.
|
||||
> Cette méthode est **utilisée par défaut par `az` cli** pour authentifier les requêtes. Pour lui faire utiliser les credentials du principal Entra ID, indiquez le paramètre `--auth-mode login`.
|
||||
|
||||
- Il est possible de générer une **shared key pour blob, queue et file services** en signant les informations suivantes :
|
||||
- Il est possible de générer une **shared key pour les services blob, queue et file** en signant les informations suivantes :
|
||||
```bash
|
||||
StringToSign = VERB + "\n" +
|
||||
Content-Encoding + "\n" +
|
||||
@@ -150,7 +150,7 @@ Range + "\n" +
|
||||
CanonicalizedHeaders +
|
||||
CanonicalizedResource;
|
||||
```
|
||||
- Il est possible de générer une **shared key pour table services** en signant les informations suivantes :
|
||||
- Il est possible de générer une **clé partagée pour les services de tables** en signant les informations suivantes :
|
||||
```bash
|
||||
StringToSign = VERB + "\n" +
|
||||
Content-MD5 + "\n" +
|
||||
@@ -158,7 +158,7 @@ Content-Type + "\n" +
|
||||
Date + "\n" +
|
||||
CanonicalizedResource;
|
||||
```
|
||||
- Il est possible de générer une **lite shared key pour blob, queue et file services** en signant les informations suivantes :
|
||||
- Il est possible de générer une **clé partagée lite pour les services Blob, Queue et File** en signant les informations suivantes :
|
||||
```bash
|
||||
StringToSign = VERB + "\n" +
|
||||
Content-MD5 + "\n" +
|
||||
@@ -167,12 +167,12 @@ Date + "\n" +
|
||||
CanonicalizedHeaders +
|
||||
CanonicalizedResource;
|
||||
```
|
||||
- Il est possible de générer une **lite shared key for table services** en signant les informations suivantes:
|
||||
- Il est possible de générer une **lite shared key pour les table services** en signant les informations suivantes :
|
||||
```bash
|
||||
StringToSign = Date + "\n"
|
||||
CanonicalizedResource
|
||||
```
|
||||
Puis, pour utiliser la clé, cela peut être fait dans l'en-tête Authorization en suivant la syntaxe :
|
||||
Ensuite, pour utiliser la key, cela peut être fait dans le header Authorization en suivant la syntaxe :
|
||||
```bash
|
||||
Authorization="[SharedKey|SharedKeyLite] <AccountName>:<Signature>"
|
||||
#e.g.
|
||||
@@ -186,76 +186,76 @@ Content-Length: 0
|
||||
```
|
||||
### **Shared Access Signature** (SAS)
|
||||
|
||||
Shared Access Signatures (SAS) sont des URL sécurisées à durée limitée qui **accordent des permissions spécifiques pour accéder aux ressources** d’un compte Azure Storage sans exposer les clés d’accès du compte. Alors que les clés d’accès donnent un accès administratif complet à toutes les ressources, SAS permet un contrôle granulaire en spécifiant des permissions (comme read ou write) et en définissant une date d’expiration.
|
||||
Les Shared Access Signatures (SAS) sont des URL sécurisées et limitées dans le temps qui **accordent des autorisations spécifiques pour accéder aux ressources** d'un compte Azure Storage 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, les SAS permettent un contrôle granulaire en spécifiant des autorisations (comme la lecture ou l'écriture) et en définissant une date d'expiration.
|
||||
|
||||
#### SAS Types
|
||||
#### Types de SAS
|
||||
|
||||
- **User delegation SAS**: Celui-ci est créé à partir d’un **Entra ID principal** qui signera le SAS et délèguera les permissions de l’utilisateur vers le SAS. Il ne peut être utilisé qu’avec **blob and data lake storage** ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Il est possible de **revoke** tous les user delegated SAS générés.
|
||||
- Même s’il est possible de générer un delegation SAS avec davantage de permissions que celles de l’utilisateur. Cependant, si le principal ne les a pas, cela ne fonctionnera pas (pas de privesc).
|
||||
- **Service SAS**: Celui-ci est signé à l’aide de l’une des **access keys** 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.
|
||||
- **Account SAS**: Il est aussi signé avec l’une des **access keys** 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.
|
||||
- **User delegation SAS** : cette SAS est créée à partir d'un **principal Entra ID** qui la signera et délèguera les autorisations de l'utilisateur à la SAS. Elle peut uniquement être utilisée avec le **blob et le data lake storage** ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Il est possible de **révoquer** toutes les SAS user delegation générées.
|
||||
- Même s'il est possible de générer une delegation SAS avec « davantage » d'autorisations que celles dont dispose l'utilisateur, elle ne fonctionnera pas si le principal ne possède pas ces autorisations (pas de privesc).
|
||||
- **Service SAS** : cette SAS est signée à l'aide de l'une des **clés d'accès** du compte de stockage. Elle peut être utilisée pour accorder l'accès à des ressources spécifiques dans un seul service de stockage. Si la clé est renouvelée, la SAS cesse de fonctionner.
|
||||
- **Account SAS** : cette SAS est également signée avec l'une des **clés d'accès** du compte de stockage. Elle accorde l'accès aux ressources des services d'un compte de stockage (Blob, Queue, Table, File) et peut inclure des opérations au niveau du service.
|
||||
|
||||
Une SAS URL signée par une **access key** ressemble à ceci :
|
||||
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 SAS URL signée en tant que **user delegation** ressemble à ceci :
|
||||
Une URL SAS signée en tant que **user delegation** 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`
|
||||
|
||||
Note some **http params** :
|
||||
Notez certains **paramètres http** :
|
||||
|
||||
- Le paramètre **`se`** indique la **date d’expiration** du SAS
|
||||
- Le paramètre **`sp`** indique les **permissions** du SAS
|
||||
- Le **`sig`** est la **signature** qui valide le SAS
|
||||
- Le paramètre **`se`** indique la **date d'expiration** de la SAS.
|
||||
- Le paramètre **`sp`** indique les **autorisations** de la SAS.
|
||||
- **`sig`** correspond à la **signature** qui valide la SAS.
|
||||
|
||||
#### SAS permissions
|
||||
#### Autorisations des SAS
|
||||
|
||||
Lors de la génération d’un SAS, il faut indiquer les permissions qu’il doit accorder. Selon l’objet sur lequel le SAS est généré, différentes permissions peuvent être incluses. Par exemple :
|
||||
Lors de la génération d'une SAS, il est nécessaire d'indiquer les autorisations qu'elle doit accorder. Selon l'objet sur lequel la SAS est générée, différentes autorisations peuvent être incluses. Par exemple :
|
||||
|
||||
- (a)dd, (c)reate, (d)elete, (e)xecute, (f)ilter_by_tags, (i)set_immutability_policy, (l)ist, (m)ove, (r)ead, (t)ag, (w)rite, (x)delete_previous_version, (y)permanent_delete
|
||||
|
||||
## SFTP Support for Azure Blob Storage
|
||||
## Prise en charge de SFTP pour Azure Blob Storage
|
||||
|
||||
Azure Blob Storage prend désormais en charge le SSH File Transfer Protocol (SFTP), permettant le transfert sécurisé de fichiers et leur gestion directement vers Blob Storage sans nécessiter de solutions personnalisées ni de produits tiers.
|
||||
Azure Blob Storage prend désormais en charge le SSH File Transfer Protocol (SFTP), ce qui permet de transférer et de gérer des fichiers de manière sécurisée directement dans Blob Storage, sans nécessiter de solutions personnalisées ni de produits tiers.
|
||||
|
||||
### Key Features
|
||||
### Fonctionnalités principales
|
||||
|
||||
- Protocol Support: SFTP fonctionne avec des comptes Blob Storage configurés avec hierarchical namespace (HNS). Cela organise les blobs en répertoires et sous-répertoires pour une navigation plus facile.
|
||||
- Security: SFTP peut utiliser des identités d’utilisateurs locaux, mais il prend aussi en charge l’accès basé sur Microsoft Entra ID avec Azure RBAC pour l’autorisation. Cela signifie que l’accès peut être accordé avec les rôles Blob Storage data-plane habituels au lieu de créer des utilisateurs SFTP locaux. Les utilisateurs locaux peuvent s’authentifier via :
|
||||
- Azure-generated passwords
|
||||
- Public-private SSH key pairs
|
||||
- Granular Permissions: Des permissions telles que Read, Write, Delete et List peuvent être attribuées aux utilisateurs locaux pour jusqu’à 100 containers.
|
||||
- Networking Considerations: Les connexions SFTP passent par le port 22. Azure prend en charge des configurations réseau comme les firewalls, private endpoints ou virtual networks pour sécuriser le trafic SFTP.
|
||||
- Prise en charge du protocole : SFTP fonctionne avec les comptes Blob Storage configurés avec un hierarchical namespace (HNS). Cela organise les blobs en répertoires et sous-répertoires pour faciliter la navigation.
|
||||
- Sécurité : SFTP peut utiliser des identités d'utilisateurs locaux, mais prend également en charge l'accès basé sur Microsoft Entra ID avec Azure RBAC pour l'autorisation. Cela signifie que l'accès peut être accordé avec les rôles habituels du data-plane de Blob Storage, au lieu de créer des utilisateurs SFTP locaux. Les utilisateurs locaux peuvent s'authentifier via :
|
||||
- Des mots de passe générés par Azure
|
||||
- Des paires de clés SSH publiques et privées
|
||||
- Autorisations granulaires : des autorisations telles que Read, Write, Delete et List peuvent être attribuées aux utilisateurs locaux pour un maximum de 100 conteneurs.
|
||||
- Considérations réseau : les connexions SFTP sont établies via le port 22. Azure prend en charge des configurations réseau telles que les firewalls, les private endpoints ou les réseaux virtuels afin de sécuriser le trafic SFTP.
|
||||
|
||||
### Setup Requirements
|
||||
### Prérequis de configuration
|
||||
|
||||
- Hierarchical Namespace: HNS doit être activé lors de la création du compte de stockage.
|
||||
- Supported Encryption: Requiert des algorithmes cryptographiques approuvés par Microsoft Security Development Lifecycle (SDL) (par ex. rsa-sha2-256, ecdsa-sha2-nistp256).
|
||||
- SFTP Configuration:
|
||||
- Hierarchical Namespace : HNS doit être activé lors de la création du compte de stockage.
|
||||
- Chiffrement pris en charge : nécessite des algorithmes cryptographiques approuvés par le Microsoft Security Development Lifecycle (SDL) (par exemple, rsa-sha2-256, ecdsa-sha2-nistp256).
|
||||
- Configuration de SFTP :
|
||||
- Activer SFTP sur le compte de stockage.
|
||||
- Pour l’accès local-user, créer des identités d’utilisateurs locaux avec les permissions appropriées.
|
||||
- Pour les utilisateurs locaux, configurer des home directories afin de définir leur emplacement de départ dans le container.
|
||||
- Pour l'accès des utilisateurs locaux, créer des identités d'utilisateurs locaux avec les autorisations appropriées.
|
||||
- Pour les utilisateurs locaux, configurer les répertoires personnels afin de définir leur emplacement de départ dans le conteneur.
|
||||
|
||||
### Permissions
|
||||
### Autorisations
|
||||
|
||||
| Permission | Symbol | Description |
|
||||
| ---------------------- | ------ | ------------------------------------ |
|
||||
| **Read** | `r` | Lire le contenu du fichier. |
|
||||
| Autorisation | Symbole | Description |
|
||||
| ------------------------ | ------ | ------------------------------------ |
|
||||
| **Read** | `r` | Lire le contenu des fichiers. |
|
||||
| **Write** | `w` | Téléverser des fichiers et créer des répertoires. |
|
||||
| **List** | `l` | Lister le contenu des répertoires. |
|
||||
| **Delete** | `d` | Supprimer des fichiers ou des répertoires. |
|
||||
| **Create** | `c` | Créer des fichiers ou des répertoires. |
|
||||
| **Modify Ownership** | `o` | Modifier l’utilisateur ou le groupe propriétaire. |
|
||||
| **Modify Permissions** | `p` | Modifier les ACLs sur des fichiers ou des répertoires. |
|
||||
| **List** | `l` | Lister le contenu des répertoires. |
|
||||
| **Delete** | `d` | Supprimer des fichiers ou des répertoires. |
|
||||
| **Create** | `c` | Créer des fichiers ou des répertoires. |
|
||||
| **Modify Ownership** | `o` | Modifier l'utilisateur ou le groupe propriétaire. |
|
||||
| **Modify Permissions** | `p` | Modifier les ACL sur les fichiers ou les répertoires. |
|
||||
|
||||
## Enumeration
|
||||
## Énumération
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
|
||||
<details>
|
||||
<summary>az cli enumeration</summary>
|
||||
<summary>énumération az cli</summary>
|
||||
```bash
|
||||
# Get storage accounts
|
||||
az storage account list #Get the account name from here
|
||||
@@ -442,13 +442,13 @@ New-AzStorageBlobSASToken `
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
### File Shares
|
||||
### Partages de fichiers
|
||||
|
||||
{{#ref}}
|
||||
az-file-shares.md
|
||||
{{#endref}}
|
||||
|
||||
## Privilege Escalation
|
||||
## Élévation de privilèges
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-storage-privesc.md
|
||||
@@ -466,7 +466,7 @@ az-file-shares.md
|
||||
../az-persistence/az-storage-persistence.md
|
||||
{{#endref}}
|
||||
|
||||
## References
|
||||
## Références
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction)
|
||||
- [https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview](https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview)
|
||||
|
||||
Reference in New Issue
Block a user