Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation

This commit is contained in:
Translator
2025-02-20 00:39:22 +00:00
parent c342ee1f06
commit 8c2a58e626
9 changed files with 240 additions and 142 deletions

File diff suppressed because one or more lines are too long

View File

@@ -31,10 +31,20 @@ az mysql flexible-server update \
--name <server_name> \
--admin-password <password_to_update>
```
De plus, il est nécessaire d'avoir l'accès public activé si vous souhaitez accéder depuis un point de terminaison non privé. Pour l'activer :
De plus, il est nécessaire d'avoir l'accès public activé si vous souhaitez accéder depuis un point de terminaison non privé, pour l'activer :
```bash
az mysql flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
```
### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.DBforMySQL/flexibleServers/backups/read`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Avec ces autorisations, vous pouvez restaurer un serveur MySQL à partir d'une sauvegarde :
```bash
az mysql flexible-server restore \
--resource-group <resource_group_name> \
--name <restore_server_name> \
--source-server <server_name> \
--yes
```
### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforMySQL/flexibleServers/administrators/write` && `Microsoft.DBforMySQL/flexibleServers/administrators/read`
Avec cette permission, vous pouvez configurer des administrateurs Azure Active Directory (AD) pour un serveur MySQL Flexible. Cela peut être exploité en se définissant soi-même ou en définissant un autre compte comme administrateur AD, accordant un contrôle administratif total sur le serveur MySQL. Il est important que le flexible-server ait des identités gérées assignées à un utilisateur à utiliser.

View File

@@ -30,16 +30,62 @@ az postgres flexible-server update \
--resource-group <resource_group_name> \
--name <server_name> \
--admin-password <password_to_update>
```
De plus, avec les autorisations, vous pouvez activer l'identité assignée, et opérer avec l'identité gérée attachée au serveur. Ici, vous pouvez trouver toutes les extensions que le serveur flexible Azure PostgreSQL prend en charge [https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions](https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions). Pour pouvoir utiliser ces extensions, certains paramètres du serveur (azure.extensions) doivent être modifiés. Par exemple, ici avec une identité gérée qui peut accéder à Azure Storage :
Tout d'abord, nous changeons les paramètres et nous assurons que l'identité assignée est activée :
```bash
az postgres flexible-server parameter set \
--resource-group <YourResourceGroupName> \
--server-name <YourServerName> \
--name azure.extensions \
--value "AZURE_STORAGE"
az postgres flexible-server identity update \
--resource-group <YourResourceGroupName> \
--server-name <YourServerName> \
--system-assigned Enabled
```
```sql
CREATE EXTENSION IF NOT EXISTS azure_storage;
CREATE EXTERNAL DATA SOURCE ManagedIdentity
SELECT azure_storage.account_add('<storage-account>', '<storage-key>');
SELECT *
FROM azure_storage.blob_get(
'<storage-account>',
'<container>',
'message.txt',
decoder := 'text'
) AS t(content text)
LIMIT 1;
```
De plus, il est nécessaire d'avoir l'accès public activé si vous souhaitez accéder depuis un point de terminaison non privé, pour l'activer :
```bash
az postgres flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
```
### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.DBforPostgreSQL/flexibleServers/backups/read`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Avec ces autorisations, vous pouvez restaurer un serveur à partir d'une sauvegarde avec :
```bash
az postgres flexible-server restore \
--resource-group <RESOURCE_GROUP> \
--name <NEW_SERVER_NAME> \
--source-server <SOURCE_SERVER_NAME> \
--restore-time "<ISO8601_TIMESTAMP>" \
--yes
```
### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforPostgreSQL/flexibleServers/administrators/write` && `Microsoft.DBforPostgreSQL/flexibleServers/administrators/read`
Avec cette permission, vous pouvez configurer des administrateurs Azure Active Directory (AD) pour un serveur flexible PostgreSQL. Cela peut être exploité en se définissant soi-même ou un autre compte comme administrateur AD, accordant un contrôle administratif total sur le serveur PostgreSQL. La mise à jour d'un principal existant n'est pas encore prise en charge, donc s'il y en a un créé, vous devez d'abord le supprimer.
Il est important que le serveur flexible ait des identités gérées assignées à un utilisateur à utiliser.
Il est important que le serveur flexible ait des identités gérées assignées à utiliser.
```bash
az postgres flexible-server ad-admin create \
--resource-group <ResourceGroupName> \

View File

@@ -44,6 +44,11 @@ az sql server update \
```
```sql
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
WITH IDENTITY = 'Managed Identity';
GO
CREATE EXTERNAL DATA SOURCE ManagedIdentity
WITH (
TYPE = BLOB_STORAGE,
@@ -109,7 +114,7 @@ az sql server ad-admin create \
```
### `Microsoft.Sql/servers/azureADOnlyAuthentications/write` && `Microsoft.Sql/servers/azureADOnlyAuthentications/read`
Avec ces autorisations, vous pouvez configurer et appliquer "Microsoft Entra Authentication Only" sur un serveur SQL Azure, ce qui pourrait faciliter l'escalade de privilèges dans certains scénarios. Un attaquant ou un utilisateur autorisé avec ces autorisations peut activer ou désactiver l'authentification uniquement Azure AD.
Avec ces autorisations, vous pouvez configurer et appliquer "Authentification uniquement Microsoft Entra" sur un serveur SQL Azure, ce qui pourrait faciliter l'escalade de privilèges dans certains scénarios. Un attaquant ou un utilisateur autorisé avec ces autorisations peut activer ou désactiver l'authentification uniquement Azure AD.
```bash
#Enable
az sql server azure-ad-only-auth enable \
@@ -121,4 +126,20 @@ az sql server azure-ad-only-auth disable \
--server <server_name> \
--resource-group <resource_group_name>
```
### Microsoft.Sql/servers/databases/dataMaskingPolicies/write
Modifiez (ou désactivez) les politiques de masquage des données sur vos bases de données SQL.
```bash
az rest --method put \
--uri "https://management.azure.com/subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group>/providers/Microsoft.Sql/servers/<your-server>/databases/<your-database>/dataMaskingPolicies/Default?api-version=2021-11-01" \
--body '{
"properties": {
"dataMaskingState": "Disable"
}
}'
```
### Supprimer la sécurité au niveau des lignes
Si vous vous connectez en tant qu'admin, vous pouvez supprimer les politiques de l'admin lui-même et d'autres utilisateurs.
```sql
DROP SECURITY POLICY [Name_of_policy];
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,23 +4,31 @@
## Azure CosmosDB
**Azure Cosmos DB** est une base de données **NoSQL, relationnelle et vectorielle entièrement gérée** offrant des temps de réponse en millisecondes à un chiffre, une évolutivité automatique et une disponibilité soutenue par un SLA avec une sécurité de niveau entreprise. Elle permet un développement d'applications plus rapide grâce à une distribution de données multi-régions clé en main, des API open-source, des SDK pour des langages populaires et des fonctionnalités de base de données AI comme le support intégré des vecteurs et une intégration transparente avec Azure AI.
**Azure Cosmos DB** est une base de données **NoSQL, relationnelle et vectorielle entièrement gérée** offrant des temps de réponse en millisecondes à un chiffre, une scalabilité automatique et une disponibilité soutenue par un SLA avec une sécurité de niveau entreprise. Elle permet un développement d'applications plus rapide grâce à une distribution de données multi-régions clé en main, des API open-source, des SDK pour des langages populaires, et des fonctionnalités de base de données AI comme le support intégré des vecteurs et une intégration transparente avec Azure AI.
Azure Cosmos DB fournit plusieurs API de base de données pour modéliser des données du monde réel en utilisant des documents, des modèles de données relationnels, clé-valeur, graphes et familles de colonnes, ces API étant NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin et Table.
Un aspect clé de CosmosDB est le Compte Azure Cosmos. **Le Compte Azure Cosmos** agit comme le point d'entrée vers les bases de données. Le compte détermine les paramètres clés tels que la distribution mondiale, les niveaux de cohérence et l'API spécifique à utiliser, comme NoSQL. Grâce au compte, vous pouvez configurer la réplication mondiale pour garantir que les données sont disponibles dans plusieurs régions pour un accès à faible latence. De plus, vous pouvez choisir un niveau de cohérence qui équilibre performance et précision des données, avec des options allant de la cohérence forte à la cohérence éventuelle.
Un aspect clé de CosmosDB est le Compte Azure Cosmos. **Le Compte Azure Cosmos** agit comme le point d'entrée vers les bases de données. Le compte détermine des paramètres clés tels que la distribution mondiale, les niveaux de cohérence et l'API spécifique à utiliser, comme NoSQL. Grâce au compte, vous pouvez configurer la réplication mondiale pour garantir que les données sont disponibles dans plusieurs régions pour un accès à faible latence. De plus, vous pouvez choisir un niveau de cohérence qui équilibre performance et précision des données, avec des options allant de la cohérence forte à la cohérence éventuelle.
### NoSQL (sql)
Azure Cosmos DB prend en charge **les identités assignées par l'utilisateur** et **les identités gérées assignées par le système** qui sont automatiquement créées et liées au cycle de vie de la ressource, permettant une authentification sécurisée basée sur des jetons lors de la connexion à d'autres services, à condition que ces services aient les attributions de rôle appropriées. Cependant, Cosmos DB n'a pas de mécanisme intégré pour interroger directement des sources de données externes comme Azure Blob Storage. Contrairement aux fonctionnalités de table externe de SQL Server, Cosmos DB nécessite que les données soient ingérées dans ses conteneurs à l'aide d'outils externes tels qu'Azure Data Factory, l'outil de migration de données ou des scripts personnalisés avant qu'elles puissent être interrogées avec ses capacités de requête natives.
### NoSQL
L'API NoSQL d'Azure Cosmos DB est une API basée sur des documents qui utilise JSON comme format de données. Elle fournit une syntaxe de requête similaire à SQL pour interroger des objets JSON, ce qui la rend adaptée au travail avec des données structurées et semi-structurées. Le point de terminaison du service est :
```bash
https://<Account-Name>.documents.azure.com:443/
```
#### Bases de données
Au sein d'un compte, vous pouvez créer une ou plusieurs bases de données, qui servent de regroupements logiques de conteneurs. Une base de données agit comme une limite pour la gestion des ressources et les autorisations des utilisateurs. Les bases de données peuvent soit partager le débit provisionné entre leurs conteneurs, soit allouer un débit dédié à des conteneurs individuels.
Dans un compte, vous pouvez créer une ou plusieurs bases de données, qui servent de regroupements logiques de conteneurs. Une base de données agit comme une limite pour la gestion des ressources et les autorisations des utilisateurs. Les bases de données peuvent soit partager le débit provisionné entre leurs conteneurs, soit allouer un débit dédié à des conteneurs individuels.
#### Conteneurs
L'unité de base du stockage de données est le conteneur, qui contient des documents JSON et est automatiquement indexé pour des requêtes efficaces. Les conteneurs sont élastiquement évolutifs et distribués sur des partitions, qui sont déterminées par une clé de partition définie par l'utilisateur. La clé de partition est essentielle pour garantir des performances optimales et une distribution uniforme des données. Par exemple, un conteneur pourrait stocker des données clients, avec "customerId" comme clé de partition.
#### Caractéristiques clés
**Distribution mondiale** : Activer ou désactiver la géo-redondance pour la réplication inter-régions et les écritures multi-régions pour une disponibilité améliorée.
**Réseautage et sécurité** : entre des points de terminaison publics (tous/sélectionner des réseaux) ou privés pour la connectivité. Connexions sécurisées avec un chiffrement TLS 1.2. Prend en charge CORS (Cross-Origin Resource Sharing) pour un accès contrôlé aux ressources.
**Sauvegarde et récupération** : à partir de politiques de sauvegarde périodiques, continues (7 jours) ou continues (30 jours) avec des intervalles et une rétention configurables.
**Chiffrement des données** : Clés gérées par le service par défaut ou clés gérées par le client (CMK) pour le chiffrement (la sélection de CMK est irréversible).
#### Énumération
{{#tabs }}
@@ -42,21 +50,21 @@ az cosmosdb identity show --resource-group <ResourceGroupName> --name <AccountNa
# CosmoDB (NoSQL)
## List the SQL databases under an Azure Cosmos DB account.
## List the NoSQL databases under an Azure Cosmos DB account.
az cosmosdb sql database list --resource-group <ResourceGroupName> --account-name <AccountName>
## List the SQL containers under an Azure Cosmos DB SQL database.
## List the NoSQL containers under an Azure Cosmos DB NoSQL database.
az cosmosdb sql container list --account-name <AccountName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List all SQL role assignments under an Azure Cosmos DB
## List all NoSQL role assignments under an Azure Cosmos DB
az cosmosdb sql role assignment list --resource-group <ResourceGroupName> --account-name <AccountName>
## List all SQL role definitions under an Azure Cosmos DB
## List all NoSQL role definitions under an Azure Cosmos DB
az cosmosdb sql role definition list --resource-group <ResourceGroupName> --account-name <AccountName>
## List the SQL stored procedures under an Azure Cosmos DB
## List the NoSQL stored procedures under an Azure Cosmos DB
az cosmosdb sql stored-procedure list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List the SQL triggers under an Azure Cosmos DB SQL container.
## List the NoSQL triggers under an Azure Cosmos DB NoSQL container.
az cosmosdb sql trigger list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List the SQL user defined functions under an Azure Cosmos DB SQL container
## List the NoSQL user defined functions under an Azure Cosmos DB NoSQL container
az cosmosdb sql user-defined-function list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
```
@@ -180,10 +188,21 @@ L'API NoSQL MongoDB est une API basée sur des documents qui utilise BSON (Binar
mongodb://<hostname>:<port>/<database>
```
#### Bases de données
Dans MongoDB, vous pouvez créer une ou plusieurs bases de données au sein d'une instance. Chaque base de données sert de regroupement logique de collections et fournit une limite pour l'organisation et la gestion des ressources. Les bases de données aident à séparer et à gérer les données de manière logique, par exemple pour différentes applications ou projets.
Dans MongoDB, vous pouvez créer une ou plusieurs bases de données au sein d'une instance. Chaque base de données sert de regroupement logique de collections et fournit une limite pour l'organisation et la gestion des ressources. Les bases de données aident à séparer et gérer les données de manière logique, par exemple pour différentes applications ou projets.
#### Collections
L'unité de base du stockage de données dans MongoDB est la collection, qui contient des documents et est conçue pour des requêtes efficaces et un design de schéma flexible. Les collections sont élastiquement évolutives et peuvent prendre en charge des opérations à fort débit sur plusieurs nœuds dans une configuration distribuée.
L'unité de base du stockage de données dans MongoDB est la collection, qui contient des documents et est conçue pour des requêtes efficaces et un design de schéma flexible. Les collections sont élastiquement évolutives et peuvent prendre en charge des opérations à haut débit sur plusieurs nœuds dans une configuration distribuée.
#### Caractéristiques clés du type d'unité de demande (RU)
**Distribution mondiale** : Activer ou désactiver la géo-redondance pour la réplication inter-régionale et les écritures multi-régionales pour une disponibilité améliorée.
**Réseautage et sécurité** : entre des points de terminaison publics (tous/sélectionner des réseaux) ou privés pour la connectivité. Connexions sécurisées avec cryptage TLS 1.2. Prend en charge CORS (Cross-Origin Resource Sharing) pour un accès contrôlé aux ressources.
**Sauvegarde et récupération** : à partir de politiques de sauvegarde périodiques, continues (7 jours, gratuites) ou continues (30 jours, payantes) avec des intervalles et une rétention configurables.
**Chiffrement des données** : Clés gérées par le service par défaut ou clés gérées par le client (CMK) pour le chiffrement (la sélection de CMK est irréversible).
#### Caractéristiques clés du type de cluster vCore
**Distribution mondiale** : Activer un réplicat de lecture dans une autre région Azure pour une haute disponibilité et un support de basculement. Configurer le nom du réplicat, la région et le stockage par shard.
**Réseautage et sécurité** : Prend en charge l'accès public avec des IP publiques assignées et l'accès privé. Restreindre les connexions à l'aide de règles de pare-feu—par défaut, aucune IP publique n'est autorisée.
**Connexions chiffrées** : Applique le chiffrement TLS pour une transmission sécurisée des données.
#### Énumération
@@ -312,6 +331,4 @@ print(f"Inserted document with ID: {result.inserted_id}")
* Jetez un œil à la post exploitation "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" et aux définitions de rôle car ici il pourrait y avoir une escalade de privilèges
* Jetez un œil aux restaurations
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -8,14 +8,19 @@ Azure Logic Apps est un service basé sur le cloud fourni par Microsoft Azure qu
Logic Apps fournit un concepteur visuel pour créer des workflows avec une **large gamme de connecteurs préconçus**, ce qui facilite la connexion et l'interaction avec divers services, tels qu'Office 365, Dynamics CRM, Salesforce, et bien d'autres. Vous pouvez également créer des connecteurs personnalisés pour vos besoins spécifiques.
Lors de la création d'une Logic App, vous devez soit créer, soit lier un compte de stockage externe qui stocke l'état du workflow, l'historique des exécutions et les artefacts. Ce stockage peut être configuré avec des paramètres de diagnostic pour le suivi et peut être sécurisé avec des restrictions d'accès réseau ou intégré dans un réseau virtuel pour contrôler le trafic entrant et sortant.
### Identités gérées
Logic Apps a une **identité gérée assignée au système** liée à son cycle de vie. Lorsqu'elle est activée, elle reçoit un ID d'objet (principal) unique qui peut être utilisé avec Azure RBAC pour accorder les autorisations nécessaires pour accéder à d'autres services Azure de manière sécurisée. Cela élimine le besoin de stocker des identifiants dans le code car l'identité est authentifiée via Microsoft Entra ID. De plus, vous pouvez également utiliser des **identités gérées assignées par l'utilisateur**, qui peuvent être partagées entre plusieurs ressources. Ces identités permettent aux workflows et aux Logic Apps d'interagir de manière sécurisée avec des systèmes externes, garantissant que les contrôles d'accès et les autorisations nécessaires sont gérés de manière centralisée via le cadre de sécurité d'Azure.
### Exemples
- **Automatisation des pipelines de données** : Logic Apps peut automatiser **les processus de transfert et de transformation des données** en combinaison avec Azure Data Factory. Cela est utile pour créer des pipelines de données évolutifs et fiables qui déplacent et transforment des données entre divers magasins de données, comme Azure SQL Database et Azure Blob Storage, aidant ainsi dans les opérations d'analytique et d'intelligence d'affaires.
- **Intégration avec Azure Functions** : Logic Apps peut fonctionner aux côtés d'Azure Functions pour développer **des applications sophistiquées, déclenchées par des événements qui s'adaptent selon les besoins** et s'intègrent parfaitement avec d'autres services Azure. Un exemple d'utilisation est d'utiliser une Logic App pour déclencher une Azure Function en réponse à certains événements, tels que des changements dans un compte de stockage Azure, permettant un traitement dynamique des données.
- **Automatisation des pipelines de données** : Logic Apps peut automatiser **les processus de transfert et de transformation de données** en combinaison avec Azure Data Factory. Cela est utile pour créer des pipelines de données évolutifs et fiables qui déplacent et transforment des données entre divers magasins de données, comme Azure SQL Database et Azure Blob Storage, aidant ainsi aux opérations d'analytique et d'intelligence d'affaires.
- **Intégration avec Azure Functions** : Logic Apps peut fonctionner aux côtés d'Azure Functions pour développer **des applications sophistiquées, déclenchées par des événements qui s'adaptent selon les besoins** et s'intègrent parfaitement avec d'autres services Azure. Un exemple de cas d'utilisation est d'utiliser une Logic App pour déclencher une Azure Function en réponse à certains événements, tels que des changements dans un compte de stockage Azure, permettant un traitement dynamique des données.
### Visualiser un LogicAPP
### Visualiser une LogicAPP
Il est possible de visualiser un LogicApp avec des graphiques :
Il est possible de visualiser une LogicApp avec des graphiques :
<figure><img src="../../../images/image (197).png" alt=""><figcaption></figcaption></figure>
@@ -38,8 +43,12 @@ Il existe plusieurs options d'hébergement :
- **Multi-tenant** : fournit des ressources de calcul partagées, fonctionne dans le cloud public et suit un modèle de tarification à la consommation. Cela est idéal pour des charges de travail légères et rentables.
* **Standard**
- **Workflow Service Plan** : ressources de calcul dédiées avec intégration VNET pour le réseau et facturation par instance de plan de service de flux de travail. Il convient aux charges de travail plus exigeantes nécessitant un plus grand contrôle.
- **App Service Environment V3** ressources de calcul dédiées avec isolation complète et évolutivité. Il s'intègre également avec VNET pour le réseau et utilise un modèle de tarification basé sur les instances de service d'application au sein de l'environnement. Cela est idéal pour des applications à l'échelle d'entreprise nécessitant une haute isolation.
- **Hybride** conçu pour le traitement local et le support multi-cloud. Il permet des ressources de calcul gérées par le client avec accès au réseau local et utilise l'autoscaling basé sur les événements Kubernetes (KEDA).
- **App Service Environment V3** ressources de calcul dédiées avec isolation complète et évolutivité. Il s'intègre également à VNET pour le réseau et utilise un modèle de tarification basé sur les instances de service d'application au sein de l'environnement. Cela est idéal pour les applications à l'échelle de l'entreprise nécessitant une haute isolation.
- **Hybride** conçu pour le traitement local et le support multi-cloud. Il permet des ressources de calcul gérées par le client avec accès au réseau local et utilise Kubernetes Event-Driven Autoscaling (KEDA).
### Flux de travail
Les flux de travail dans Azure Logic Apps sont les processus automatisés de base qui orchestrent des actions à travers divers services. Un flux de travail commence par un déclencheur—un événement ou un horaire—et exécute ensuite une série d'actions, telles que l'appel d'APIs, le traitement de données ou l'interaction avec d'autres services Azure. Les flux de travail peuvent être définis visuellement à l'aide d'un concepteur ou via du code (définitions JSON) et sont gérés par des commandes telles que az logic workflow create, az logic workflow show et az logic workflow update. Ils prennent également en charge la gestion des identités (via le sous-groupe d'identité) pour gérer en toute sécurité les autorisations et les intégrations avec des ressources externes.
### Énumération
@@ -137,8 +146,6 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<Lo
{{#endtab }}
{{#endtabs }}
### Comptes d'intégration
**Comptes d'intégration**, sont une fonctionnalité d'Azure Logic Apps. Les Comptes d'intégration sont utilisés pour faciliter les intégrations au niveau de l'entreprise en permettant des capacités B2B avancées, telles que la gestion EDI, AS2 et XML schema. Les Comptes d'intégration sont un conteneur dans Azure qui stocke les artefacts suivants utilisés pour les Logic Apps :

View File

@@ -3,7 +3,7 @@
{{#include ../../../banners/hacktricks-training.md}}
## Azure MySQL
Azure Database for MySQL est un service de base de données relationnelle entièrement géré basé sur l'édition communautaire MySQL, conçu pour offrir évolutivité, sécurité et flexibilité pour divers besoins d'application. Il dispose de deux modèles de déploiement différents :
Azure Database for MySQL est un service de base de données relationnelle entièrement géré basé sur l'édition communautaire de MySQL, conçu pour offrir évolutivité, sécurité et flexibilité pour divers besoins d'application. Il dispose de deux modèles de déploiement différents :
* **Serveur unique** (est sur la voie de la retraite) :
- Optimisé pour des déploiements MySQL rentables et faciles à gérer.
@@ -13,13 +13,13 @@ Azure Database for MySQL est un service de base de données relationnelle entiè
- Offre plus de contrôle sur la gestion et la configuration de la base de données.
- Prend en charge la haute disponibilité (dans la même zone et redondante entre zones).
- Comprend une mise à l'échelle élastique, la gestion des correctifs et l'optimisation des charges de travail.
- Offre une fonctionnalité d'arrêt/démarrage pour des économies de coûts.
- Offre des fonctionnalités d'arrêt/démarrage pour des économies de coûts.
### Caractéristiques clés
* **Gestion des serveurs** : La fonctionnalité **ad-admin** permet de gérer les administrateurs Azure Active Directory (AAD) pour les serveurs MySQL, offrant un contrôle sur l'accès administratif via des identifiants AAD, tandis que la fonctionnalité **identity** permet l'attribution et la gestion des identités gérées Azure, offrant une authentification sécurisée sans identifiants pour accéder aux ressources Azure.
* **Gestion des serveurs** : La fonctionnalité **ad-admin** permet de gérer les administrateurs Azure Entra ID pour les serveurs MySQL, offrant un contrôle sur l'accès administratif via des identifiants Entra ID. Mysql prend en charge les identités gérées par l'utilisateur, utilisées pour s'authentifier sans avoir besoin de credentials, et peut être utilisées par d'autres services.
* **Gestion du cycle de vie** : options pour démarrer ou arrêter un serveur, supprimer une instance de serveur flexible, redémarrer un serveur pour appliquer rapidement des modifications de configuration, et attendre pour s'assurer qu'un serveur répond à des conditions spécifiques avant de procéder avec des scripts d'automatisation.
* **Sécurité et mise en réseau** : peut gérer les règles de pare-feu du serveur pour un accès sécurisé à la base de données et détacher les configurations de réseau virtuel si nécessaire.
* **Protection des données et sauvegarde** : comprend des options pour gérer les sauvegardes de serveurs flexibles pour la récupération des données, effectuer une restauration géographique pour récupérer un serveur dans une autre région, exporter des sauvegardes de serveur pour un usage externe (en aperçu), et restaurer un serveur à partir d'une sauvegarde à un moment spécifique.
* **Sécurité et mise en réseau** : Sécurisez votre serveur en restreignant les connexions via des règles de pare-feu qui n'autorisent que des adresses IP publiques spécifiques, ou en utilisant des points de terminaison privés qui intègrent votre serveur dans un réseau virtuel. Toutes les connexions sont protégées par un chiffrement TLS 1.2. Les bases de données, les sauvegardes et les journaux sont chiffrés au repos par défaut à l'aide de clés gérées par le service ou de clés personnalisées.
* **Protection des données et sauvegarde** : inclut des options pour gérer les sauvegardes de serveurs flexibles pour la récupération des données, effectuer une restauration géographique pour récupérer un serveur dans une autre région, exporter des sauvegardes de serveur pour un usage externe (en aperçu), et restaurer un serveur à partir d'une sauvegarde à un moment spécifique.
### Énumération

View File

@@ -11,7 +11,7 @@
- Idéal pour les applications avec des charges de travail prévisibles.
* **Serveur flexible** :
- Offre un meilleur contrôle sur la gestion et la configuration de la base de données.
- Prend en charge la haute disponibilité, à la fois dans la même zone et à travers les zones.
- Prend en charge la haute disponibilité, à la fois dans la même zone et entre les zones.
- Comprend une mise à l'échelle élastique, une maintenance automatisée et des fonctionnalités d'économie de coûts.
- Permet de démarrer et d'arrêter le serveur pour optimiser les coûts.
@@ -23,6 +23,7 @@
* **Sauvegardes automatiques** : Sauvegardes quotidiennes intégrées avec des périodes de conservation configurables jusqu'à 35 jours.
* **Accès basé sur les rôles** : Contrôlez les autorisations des utilisateurs et l'accès administratif via Azure Active Directory.
* **Sécurité et mise en réseau** : peut gérer les règles de pare-feu du serveur pour un accès sécurisé à la base de données et détacher les configurations de réseau virtuel si nécessaire.
* **Identités gérées** : permettent à votre serveur de s'authentifier de manière sécurisée avec d'autres services Azure sans stocker de credentials. Cela permet d'accéder à d'autres services qui seraient une identité gérée assignée au système et d'être accessibles par d'autres services avec d'autres identités qui sont une identité gérée assignée à l'utilisateur.
### Énumération
@@ -130,7 +131,7 @@ psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser
## À faire
* Chercher un moyen d'accéder avec ad-admin pour vérifier si c'est une méthode d'escalade de privilèges
* Chercher un moyen d'accéder avec ad-admin pour vérifier s'il s'agit d'une méthode d'escalade de privilèges
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -8,144 +8,92 @@ Azure SQL est une famille de produits gérés, sécurisés et intelligents qui u
Azure SQL se compose de quatre principales offres :
1. **Azure SQL Server** : Azure SQL Server est un service de base de données relationnelle géré qui simplifie le déploiement et la gestion des bases de données SQL Server, avec des fonctionnalités de sécurité et de performance intégrées.
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. Il offre une intelligence intégrée qui apprend vos modèles de base de données uniques et fournit des recommandations personnalisées et un réglage automatique.
3. **Azure SQL Managed Instance** : Cela concerne les déploiements à grande échelle, à portée de l'ensemble de l'instance SQL Server. Il offre une compatibilité presque totale avec le dernier moteur de base de données SQL Server sur site (Édition Entreprise), qui fournit une mise en réseau virtuelle (VNet) native qui répond aux préoccupations de sécurité courantes, et un modèle commercial favorable aux clients SQL Server sur site.
4. **Azure SQL Server sur des machines virtuelles Azure** : Il s'agit d'une Infrastructure en tant que Service (IaaS) et est préférable pour les migrations où vous souhaitez **contrôler le système d'exploitation et l'instance SQL Server**, comme si c'était un serveur fonctionnant sur site.
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** : C'est pour des déploiements à plus grande échelle, à l'échelle de l'ensemble de l'instance SQL Server.
4. **Azure SQL Server sur des machines virtuelles Azure** : C'est le meilleur choix pour les architectures où vous souhaitez **contrôler le système d'exploitation** et l'instance SQL Server.
### Azure SQL Server
### Fonctionnalités de sécurité de SQL Server
Azure SQL Server est un système de gestion de base de données relationnelle (RDBMS) qui utilise Transact-SQL pour les opérations de données et est conçu pour gérer des systèmes de niveau entreprise. Il offre des fonctionnalités robustes pour la performance, la sécurité, l'évolutivité et l'intégration avec diverses applications Microsoft. Les bases de données Azure SQL s'appuient sur ce serveur, car elles sont construites sur ces serveurs et c'est le point d'entrée pour l'utilisateur pour accéder aux bases de données.
**Accès réseau :**
#### Réseau
- Point de terminaison public (peut limiter l'accès à des réseaux spécifiques).
- Points de terminaison privés.
- Il est également possible de restreindre les connexions en fonction des noms de domaine.
- Il est également possible de permettre aux services Azure d'y accéder (comme pour utiliser l'éditeur de requêtes dans le portail ou pour permettre à une machine virtuelle Azure de se connecter).
**Connectivité réseau** : Choisissez d'activer l'accès via un point de terminaison public ou un point de terminaison privé. Si vous sélectionnez Aucun accès, aucun point de terminaison n'est créé jusqu'à ce qu'il soit configuré manuellement :
- Aucun accès : Aucun point de terminaison n'est configuré, bloquant les connexions entrantes jusqu'à ce qu'elles soient configurées manuellement.
- Point de terminaison public : Permet des connexions directes via Internet public, sous réserve des règles de pare-feu et d'autres configurations de sécurité.
- Point de terminaison privé : Restreint la connectivité à un réseau privé.
**Méthodes d'authentification :**
**Politique de connexion** : Définissez comment les clients communiquent avec le serveur de base de données SQL :
- Par défaut : Utilise une politique de redirection pour toutes les connexions des clients depuis l'intérieur d'Azure (sauf celles utilisant des points de terminaison privés) et une politique de proxy pour les connexions depuis l'extérieur d'Azure.
- Proxy : Achemine toutes les connexions des clients via la passerelle Azure SQL Database.
- Redirection : Les clients se connectent directement au nœud hébergeant la base de données.
- Authentification **Entra uniquement** : Vous devez indiquer les principaux Entra qui auront accès au service.
- Authentification **SQL et Microsoft Entra** : Authentification SQL traditionnelle avec nom d'utilisateur et mot de passe, en plus de Microsoft Entra.
- Authentification **uniquement SQL** : Autoriser l'accès uniquement via des utilisateurs de base de données.
#### Méthodes d'authentification
Azure SQL prend en charge diverses méthodes d'authentification pour sécuriser l'accès à la base de données :
Notez que si une authentification SQL est autorisée, un utilisateur administrateur (nom d'utilisateur + mot de passe) doit être indiqué et si l'authentification Entra ID est sélectionnée, il est également nécessaire d'indiquer au moins un principal avec un accès administrateur.
- **Authentification Microsoft Entra uniquement** : Utilise Microsoft Entra (anciennement Azure AD) pour la gestion centralisée des identités et l'authentification unique.
- **Authentification SQL et Microsoft Entra** : Vous permet d'utiliser l'authentification SQL traditionnelle aux côtés de Microsoft Entra.
- **Authentification SQL** : Dépend uniquement des noms d'utilisateur et des mots de passe SQL Server.
**Chiffrement :**
#### Fonctionnalités de sécurité
- Cela s'appelle "Chiffrement des données transparent" et cela chiffre les bases de données, les sauvegardes et les journaux au repos.
- Comme toujours, une clé gérée par Azure est utilisée par défaut, mais une clé de chiffrement gérée par le client (CMEK) peut également être utilisée.
**Identités gérées :**
Les serveurs SQL ont des **Identités gérées**. Les identités gérées permettent à votre serveur de s'authentifier de manière sécurisée avec d'autres services Azure sans stocker de credentials. Cela permet d'accéder à d'autres services qui seraient une identité gérée assignée au système et d'être accessibles par d'autres services avec d'autres identités qui sont une identité gérée assignée à l'utilisateur. Certains des services auxquels SQL peut accéder sont Azure Storage Account(V2), Azure Data Lake Storage Gen2, SQL Server, Oracle, Teradata, MongoDB ou Cosmos DB API pour MongoDB, ODBC générique, opérations en masse et stockage d'objets compatible S3.
- Il est possible d'assigner des identités gérées système et utilisateur.
- Utilisé pour accéder à la clé de chiffrement (si un CMEK est utilisé) et à d'autres services à partir des bases de données.
- Si plus d'une UMI est assignée, il est possible d'indiquer celle par défaut à utiliser.
- Il est possible de configurer une identité de client fédéré pour un accès inter-locataire.
D'autres fonctionnalités de sécurité que le serveur SQL possède sont :
**Microsoft Defender :**
- **Règles de pare-feu** : Les règles de pare-feu contrôlent l'accès à votre serveur en restreignant ou en autorisant le trafic. C'est une fonctionnalité des bases de données elles-mêmes aussi.
- **Chiffrement des données transparent (TDE)** : TDE chiffre vos bases de données, sauvegardes et journaux au repos pour protéger vos données même si le stockage est compromis. Cela peut être fait avec une clé gérée par le service ou une clé gérée par le client.
- **Microsoft Defender for SQL** : Microsoft Defender for SQL peut être activé, offrant des évaluations de vulnérabilité et une protection avancée contre les menaces pour un serveur.
- Utile pour "atténuer les vulnérabilités potentielles des bases de données et détecter des activités anormales".
- Nous parlerons de Defender dans sa propre leçon (il peut être activé dans plusieurs autres services Azure).
#### Modèles de déploiement
**Sauvegardes :**
- La fréquence des sauvegardes est gérée dans les politiques de rétention.
Azure SQL Database prend en charge des options de déploiement flexibles pour répondre à divers besoins :
**Bases de données supprimées :**
- Il est possible de restaurer des bases de données qui ont été supprimées à partir de sauvegardes existantes.
- **Base de données unique** :
- Une base de données entièrement isolée avec ses propres ressources dédiées.
- Idéal pour les microservices ou les applications nécessitant une source de données unique.
- **Pool élastique** :
- Permet à plusieurs bases de données de partager des ressources au sein d'un pool.
- Économique pour les applications avec des modèles d'utilisation fluctuants à travers plusieurs bases de données.
## Azure SQL Database
### Azure SQL Database
**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 construite sur les dernières technologies SQL Server et élimine le besoin de gestion d'infrastructure, ce qui en fait un choix populaire pour les applications basées sur le 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 base de données relationnelle évolutives et sécurisées. Elle est construite sur les dernières technologies SQL Server et élimine le besoin de gestion d'infrastructure, ce qui en fait un choix populaire pour les applications basées sur le cloud.
Pour créer une base de données SQL, il est cessaire d'indiquer le serveur SQL où elle sera hébergée.
#### Fonctionnalités clés
### Fonctionnalités de sécurité de la base de données SQL
- **Toujours à jour** : Fonctionne sur la dernière version stable de SQL Server et reçoit automatiquement de nouvelles fonctionnalités et correctifs.
- **Capacités PaaS** : Haute disponibilité intégrée, sauvegardes et mises à jour.
- **Flexibilité des données** : Prend en charge les données relationnelles et non relationnelles (par exemple, graphiques, JSON, spatial et XML).
- **Fonctionnalités de sécurité héritées de SQL Server :**
- Authentification (SQL et/ou Entra ID)
- Identités gérées assignées
- Restrictions réseau
- Chiffrement
- Sauvegardes
-
- **Redondance des données :** Les options sont locales, zone, géo ou géo-zone redondantes.
- **Registre :** Il vérifie cryptographiquement l'intégrité des données, garantissant que toute falsification est détectée. Utile pour les organisations financières, médicales et toute organisation gérant des données sensibles.
#### Réseau
Une base de données SQL pourrait faire partie d'un **pool élastique**. Les pools élastiques sont une solution rentable pour gérer plusieurs bases de données en partageant des ressources de calcul (eDTUs) et de stockage configurables entre elles, avec une tarification basée uniquement sur les ressources allouées plutôt que sur le nombre de bases de données.
**Connectivité réseau** : Choisissez d'activer l'accès via un point de terminaison public ou un point de terminaison privé. Si vous sélectionnez Aucun accès, aucun point de terminaison n'est créé jusqu'à ce qu'il soit configuré manuellement :
- Aucun accès : Aucun point de terminaison n'est configuré, bloquant les connexions entrantes jusqu'à ce qu'elles soient configurées manuellement.
- Point de terminaison public : Permet des connexions directes via Internet public, sous réserve des règles de pare-feu et d'autres configurations de sécurité.
- Point de terminaison privé : Restreint la connectivité à un réseau privé.
#### Sécurité au niveau des colonnes Azure SQL (Masquage) & Sécurité au niveau des lignes
**Politique de connexion** : Définissez comment les clients communiquent avec le serveur de base de données SQL :
- Par défaut : Utilise une politique de redirection pour toutes les connexions des clients depuis l'intérieur d'Azure (sauf celles utilisant des points de terminaison privés) et une politique de proxy pour les connexions depuis l'extérieur d'Azure.
- Proxy : Achemine toutes les connexions des clients via la passerelle Azure SQL Database.
- Redirection : Les clients se connectent directement au nœud hébergeant la base de données.
Le masquage dynamique des données **d'Azure SQL** est une fonctionnalité qui aide à **protéger les informations sensibles en les cachant** des utilisateurs non autorisés. Au lieu de modifier les données réelles, il masque dynamiquement les données affichées, garantissant que des détails sensibles comme les numéros de carte de crédit sont obscurcis.
#### Fonctionnalités de sécurité
Le **masquage dynamique des données** affecte tous les utilisateurs sauf ceux qui sont non masqués (ces utilisateurs doivent être indiqués) et les administrateurs. Il dispose de l'option de configuration qui spécifie quels utilisateurs SQL sont exemptés du masquage dynamique des données, avec **les administrateurs toujours exclus**.
- **Microsoft Defender for SQL** : peut être activé, offrant des évaluations de vulnérabilité et une protection avancée contre les menaces.
- **Registre** : vérifie cryptographiquement l'intégrité des données, garantissant que toute falsification est détectée.
- **Identité du serveur** : utilise des identités gérées assignées au système et à l'utilisateur pour permettre un accès centralisé.
- **Gestion des clés de chiffrement des données transparentes** : chiffre les bases de données, sauvegardes et journaux au repos sans nécessiter de modifications de l'application. Le chiffrement peut être activé sur chaque base de données, et si configuré au niveau de la base de données, ces paramètres remplacent la configuration au niveau du serveur.
- **Toujours chiffré** : est un ensemble de fonctionnalités avancées de protection des données qui sépare la propriété des données de la gestion des données. Cela garantit que les administrateurs ou opérateurs ayant des privilèges élevés ne peuvent pas accéder aux données sensibles.
#### Modèles d'achat / Niveaux de service
- **Basé sur vCore** : Choisissez le calcul, la mémoire et le stockage indépendamment. Pour usage général, Business Critical (avec haute résilience et performance pour les applications OLTP), et évolue jusqu'à 128 To de stockage.
- **Basé sur DTU** : Regroupe le calcul, la mémoire et l'I/O en niveaux fixes. Ressources équilibrées pour des tâches courantes.
- Standard : Ressources équilibrées pour des tâches courantes.
- Premium : Haute performance pour des charges de travail exigeantes.
#### Performance évolutive et pools
- **Bases de données uniques** : Chaque base de données est isolée et dispose de ses propres ressources de calcul, de mémoire et de stockage dédiées. Les ressources peuvent être évoluées dynamiquement (vers le haut ou vers le bas) sans temps d'arrêt (1 à 128 vCores, 32 Go à 4 To de stockage, et jusqu'à 128 To).
- **Pools élastiques** : Partagent des ressources entre plusieurs bases de données dans un pool pour maximiser l'efficacité et économiser des coûts. Les ressources peuvent également être évoluées dynamiquement pour l'ensemble du pool.
- **Flexibilité des niveaux de service** : Commencez petit avec une base de données unique dans le niveau Usage général. Passez aux niveaux Business Critical ou Hyperscale à mesure que les besoins augmentent.
- **Options d'évolutivité** : Évolutivité dynamique ou alternatives d'autoscaling.
#### Surveillance et optimisation intégrées
- **Query Store** : Suit les problèmes de performance, identifie les principaux consommateurs de ressources et offre des recommandations exploitables.
- **Réglage automatique** : Optimise proactivement la performance avec des fonctionnalités telles que l'indexation automatique et les corrections de plans de requêtes.
- **Intégration de télémétrie** : Prend en charge la surveillance via Azure Monitor, Event Hubs ou Azure Storage pour des informations personnalisées.
#### Récupération après sinistre et disponibilité
- **Sauvegardes automatiques** : SQL Database effectue automatiquement des sauvegardes complètes, différentielles et de journaux de transactions des bases de données.
- **Restauration à un instant donné** : Récupérez les bases de données à tout état passé dans la période de rétention des sauvegardes.
- **Géo-redondance**
- **Groupes de basculement** : Simplifie la récupération après sinistre en regroupant les bases de données pour un basculement automatique entre les régions.
La **sécurité au niveau des lignes (RLS) d'Azure SQL** 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 politiques de sécurité avec des filtres ou des prédicats de blocage, les organisations peuvent appliquer un accès granulaire au niveau de la base de données.
### Azure SQL Managed Instance
**Azure SQL Managed Instance** est un moteur de base de données en tant que service (PaaS) qui offre une compatibilité presque totale avec SQL Server et gère automatiquement la plupart des tâches de gestion (par exemple, mise à niveau, correctifs, sauvegardes, surveillance). Il fournit une solution cloud pour migrer les bases de données SQL Server sur site avec des modifications minimales.
Les **instances gérées Azure SQL** sont destinées à des déploiements à plus grande échelle, à l'échelle de l'ensemble de l'instance SQL Server. Elles offrent une compatibilité presque totale avec le dernier moteur de base de données SQL Server sur site (édition Entreprise), qui fournit une mise en œuvre native de réseau virtuel (VNet) répondant aux préoccupations de sécurité courantes, et un modèle commercial favorable aux clients SQL Server sur site.
#### Niveaux de service
### Machines virtuelles Azure SQL
- **Usage général** : Option économique pour les applications avec des exigences standard en matière d'I/O et de latence.
- **Business Critical** : Option haute performance avec une faible latence I/O pour les charges de travail critiques.
Les **machines virtuelles Azure SQL** permettent de **contrôler le système d'exploitation** et l'instance SQL Server, car une VM sera lancée dans le service VM exécutant le serveur SQL.
#### Fonctionnalités de sécurité avancées
Lorsqu'une machine virtuelle SQL est créée, il est possible de **sélectionner tous les paramètres de la VM** (comme indiqué dans la leçon sur les VM) qui hébergera le serveur SQL.
- Cela signifie que la VM accédera à certains VNet, pourra avoir des **identités gérées attachées** à elle, pourrait avoir des partages de fichiers montés… rendant un **pivotement du SQL** vers la VM très intéressant.
- De plus, il est possible de configurer un ID d'application et un secret pour **permettre au SQL d'accéder à un coffre-fort de clés spécifique**, qui pourrait contenir des informations sensibles.
* **Protection contre les menaces** : Alertes de protection avancée contre les menaces pour les activités suspectes et les attaques par injection SQL. Audit pour suivre et enregistrer les événements de base de données pour la conformité.
* **Contrôle d'accès** : Authentification Microsoft Entra pour la gestion centralisée des identités. Sécurité au niveau des lignes et masquage dynamique des données pour un contrôle d'accès granulaire.
* **Sauvegardes** : Sauvegardes automatisées et manuelles avec capacité de restauration à un instant donné.
### Azure SQL Virtual Machines
**Azure SQL Virtual Machines** est préférable pour les migrations où vous souhaitez **contrôler le système d'exploitation et l'instance SQL Server**, comme si c'était un serveur fonctionnant sur site. Il peut avoir différentes tailles de machines et une large sélection de versions et d'éditions de SQL Server.
#### Fonctionnalités clés
**Sauvegarde automatisée** : Planifiez des sauvegardes pour les bases de données SQL.
**Mise à jour automatique** : Automatise l'installation des mises à jour de Windows et de SQL Server pendant une fenêtre de maintenance.
**Intégration d'Azure Key Vault** : Configure automatiquement Key Vault pour les machines virtuelles SQL Server.
**Intégration de Defender for Cloud** : Affiche les recommandations de Defender for SQL dans le portail.
**Flexibilité de version/édition** : Changez les métadonnées de version ou d'édition de SQL Server sans redéployer la machine virtuelle.
#### Fonctionnalités de sécurité
**Microsoft Defender for SQL** : Informations et alertes de sécurité.
**Intégration d'Azure Key Vault** : Stockage sécurisé des credentials et des clés de chiffrement.
**Microsoft Entra (Azure AD)** : Authentification et contrôle d'accès.
Il est également possible de configurer des éléments tels que **mises à jour SQL automatiques**, **sauvegardes automatiques**, **authentification Entra ID** et la plupart des fonctionnalités des autres services SQL.
## Énumération
@@ -216,6 +164,30 @@ az sql midb show --resource-group <res-grp> --name <name>
# Lis all sql VM
az sql vm list
az sql vm show --resource-group <res-grp> --name <name>
# List schema by the database
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas?api-version=2021-11-01"
# Get tables of a database with the schema
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas/<schemaName>/tables?api-version=2021-11-01"
# Get columns of a database
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/columns?api-version=2021-11-01"
# Get columns of a table
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas/<schemaName>/tables/<tableName>/columns?api-version=2021-11-01"
# Get DataMaskingPolicies of a database
az rest --method get \
--uri "https://management.azure.com/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.Sql/servers/getstorageserver/databases/masktest/dataMaskingPolicies/Default?api-version=2021-11-01"
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/dataMaskingPolicies/Default/rules?api-version=2021-11-01"
```
{{#endtab}}
@@ -260,9 +232,34 @@ Get-AzSqlVM
{{#endtab}}
{{#endtabs}}
De plus, si vous souhaitez énumérer le Dynamic Data Masking et les politiques de niveau de ligne dans la base de données, vous pouvez interroger :
```sql
--Enumerates the masked columns
SELECT
OBJECT_NAME(mc.object_id) AS TableName,
c.name AS ColumnName,
mc.masking_function AS MaskingFunction
FROM sys.masked_columns AS mc
JOIN sys.columns AS c
ON mc.object_id = c.object_id
AND mc.column_id = c.column_id
--Enumerates Row level policies
SELECT
sp.name AS PolicyName,
sp.is_enabled,
sp.create_date,
sp.modify_date,
OBJECT_NAME(sp.object_id) AS TableName,
sp2.predicate_definition AS PredicateDefinition
FROM sys.security_policies AS sp
JOIN sys.security_predicates AS sp2
ON sp.object_id = sp2.object_id;
```
### Connecter et exécuter des requêtes SQL
Vous pourriez trouver une chaîne de connexion (contenant des identifiants) dans l'exemple [énumérer un Az WebApp](az-app-services.md) :
Vous pourriez trouver une chaîne de connexion (contenant des identifiants) à partir de l'exemple [énumérer un Az WebApp](az-app-services.md) :
```bash
function invoke-sql{
param($query)