mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-29 08:14:19 -08:00
Translated ['src/pentesting-cloud/azure-security/az-post-exploitation/az
This commit is contained in:
@@ -18,6 +18,45 @@ az logic workflow identity remove/assign \
|
||||
--system-assigned true \
|
||||
--user-assigned "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity_name>"
|
||||
```
|
||||
De plus, avec juste `Microsoft.Logic/workflows/write`, vous pouvez modifier certaines configurations telles que les adresses IP entrantes autorisées ou les jours de conservation de l'historique d'exécution :
|
||||
```bash
|
||||
az rest --method PUT \
|
||||
--uri "https://management.azure.com/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.Logic/workflows/<workflow_name>?api-version=2019-05-01" \
|
||||
--headers "Content-Type=application/json" \
|
||||
--body '{
|
||||
"location": "<location>",
|
||||
"properties": {
|
||||
"state": "Enabled",
|
||||
"definition": {
|
||||
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
|
||||
"contentVersion": "1.0.0.0",
|
||||
"parameters": {},
|
||||
"triggers": {
|
||||
"<trigger_name>": {
|
||||
"type": "Request",
|
||||
"kind": "Http"
|
||||
}
|
||||
},
|
||||
"actions": {},
|
||||
"outputs": {}
|
||||
},
|
||||
"runtimeConfiguration": {
|
||||
"lifetime": {
|
||||
"unit": "day",
|
||||
"count": <count>
|
||||
}
|
||||
},
|
||||
"accessControl": {
|
||||
"triggers": {
|
||||
"allowedCallerIpAddresses": []
|
||||
},
|
||||
"actions": {
|
||||
"allowedCallerIpAddresses": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}'
|
||||
```
|
||||
### `Microsoft.Web/sites/read`, `Microsoft.Web/sites/write`
|
||||
Avec ces autorisations, vous pouvez créer ou mettre à jour des Logic Apps hébergées sur un App Service Plan. Cela inclut la modification des paramètres tels que l'activation ou la désactivation de l'application de HTTPS.
|
||||
```bash
|
||||
@@ -111,6 +150,16 @@ az logic integration-account session create \
|
||||
}
|
||||
}
|
||||
}'
|
||||
```
|
||||
### `Microsoft.Logic/workflows/regenerateAccessKey/action`
|
||||
|
||||
Les utilisateurs ayant cette autorisation peuvent régénérer les clés d'accès de l'application Logic, et en cas de mauvaise utilisation, cela peut entraîner des interruptions de service.
|
||||
```bash
|
||||
az rest --method POST \
|
||||
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Logic/workflows/<workflow-name>/regenerateAccessKey?api-version=<api-version>" \
|
||||
--body '{"keyType": "<key-type>"}' \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
```
|
||||
### "*/delete"
|
||||
Avec ces autorisations, vous pouvez supprimer des ressources liées à Azure Logic Apps
|
||||
|
||||
@@ -32,8 +32,67 @@ az rest \
|
||||
--body '{}' \
|
||||
--headers "Content-Type=application/json"
|
||||
```
|
||||
De plus, avec juste `Microsoft.Logic/workflows/write`, vous pouvez modifier la politique d'autorisation, donnant par exemple à un autre locataire la capacité de déclencher le flux de travail :
|
||||
```bash
|
||||
az rest --method PUT \
|
||||
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Logic/workflows/<workflow-name>?api-version=2016-10-01" \
|
||||
--body '{
|
||||
"location": "<region>",
|
||||
"properties": {
|
||||
"definition": {
|
||||
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
|
||||
"contentVersion": "1.0.0.0",
|
||||
"parameters": {
|
||||
"$connections": {
|
||||
"defaultValue": {},
|
||||
"type": "Object"
|
||||
}
|
||||
},
|
||||
"triggers": {
|
||||
"<trigger-name>": {
|
||||
"type": "Request",
|
||||
"kind": "Http"
|
||||
}
|
||||
},
|
||||
"actions": {},
|
||||
"outputs": {}
|
||||
},
|
||||
"accessControl": {
|
||||
"triggers": {
|
||||
"openAuthenticationPolicies": {
|
||||
"policies": {
|
||||
"<policy-name>": {
|
||||
"type": "AAD",
|
||||
"claims": [
|
||||
{
|
||||
"name": "iss",
|
||||
"value": "<issuer-url>"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}'
|
||||
|
||||
```
|
||||
### `Microsoft.Logic/workflows/triggers/listCallbackUrl/action`
|
||||
Vous pouvez obtenir l'URL de rappel du déclencheur et l'exécuter.
|
||||
```bash
|
||||
az rest --method POST \
|
||||
--uri "https://management.azure.com/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.Logic/workflows/<workflow_name>/triggers/<trigger_name>/listCallbackUrl?api-version=2019-05-01"
|
||||
```
|
||||
Cela renverra une URL de rappel comme `https://prod-28.centralus.logic.azure.com:443/workflows/....`. Maintenant, nous pouvons l'exécuter avec :
|
||||
```bash
|
||||
curl --request POST \
|
||||
--url "https://prod-28.centralus.logic.azure.com:443/workflows/<workflow_id>/triggers/<trigger_name>/paths/invoke?api-version=2019-05-01&sp=%2Ftriggers%2F<trigger_name>%2Frun&sv=1.0&sig=<signature>" \
|
||||
--header 'Content-Type: application/json' \
|
||||
--data '{"exampleKey": "exampleValue"}'
|
||||
```
|
||||
### (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/basicPublishingCredentialsPolicies/read`, `Microsoft.Web/sites/write`, `Microsoft.Web/sites/config/list/action`) && (`Microsoft.Web/sites/start/action`)
|
||||
Avec ces autorisations, vous pouvez déployer des workflows Logic App en utilisant des déploiements de fichiers ZIP. Ces autorisations permettent des actions telles que la lecture des détails de l'application, l'accès aux informations d'identification de publication, l'écriture de modifications et la liste des configurations d'application. Avec les autorisations de démarrage, vous pouvez mettre à jour et déployer une nouvelle Logic App avec le contenu souhaité.
|
||||
Avec ces autorisations, vous pouvez déployer des workflows Logic App en utilisant des déploiements de fichiers ZIP. Ces autorisations permettent des actions telles que la lecture des détails de l'application, l'accès aux informations d'identification de publication, l'écriture de modifications et la liste des configurations de l'application. Avec les autorisations de démarrage, vous pouvez mettre à jour et déployer une nouvelle Logic App avec le contenu souhaité.
|
||||
```bash
|
||||
az logicapp deployment source config-zip \
|
||||
--name <logic_app_name> \
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
|
||||
## 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 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** 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 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 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.
|
||||
|
||||
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.
|
||||
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. 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 :
|
||||
@@ -18,16 +18,16 @@ L'API NoSQL d'Azure Cosmos DB est une API basée sur des documents qui utilise J
|
||||
https://<Account-Name>.documents.azure.com:443/
|
||||
```
|
||||
#### Bases de données
|
||||
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.
|
||||
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 permettre à plusieurs conteneurs d'utiliser un pool partagé de capacité de performance, soit donner à chaque conteneur sa propre puissance dédiée.
|
||||
|
||||
#### 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).
|
||||
- **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/choisir 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. Microsoft Defender for Cloud peut être activé. Pour établir la connexion, vous pouvez utiliser des clés.
|
||||
- **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
|
||||
|
||||
@@ -67,6 +67,19 @@ az cosmosdb sql trigger list --account-name <AccountName> --container-name <Cont
|
||||
## 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>
|
||||
|
||||
|
||||
## MongoDB (vCore)
|
||||
# Install az cli extension
|
||||
az extension add --name cosmosdb-preview
|
||||
# List all MongoDB databases in a specified Azure Cosmos DB account
|
||||
az cosmosdb mongocluster list
|
||||
az cosmosdb mongocluster show --cluster-name <name> --resource-group <ResourceGroupName>
|
||||
# Get firewall rules
|
||||
az cosmosdb mongocluster firewall rule list --cluster-name <name> --resource-group <ResourceGroupName>
|
||||
# Connect to in
|
||||
brew install mongosh
|
||||
mongosh "mongodb://<username>:<password>@<account-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retryWrites=false" --username <username> --password <password>
|
||||
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
@@ -118,7 +131,7 @@ Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "<ResourceGroupName>" -A
|
||||
|
||||
#### Connexion
|
||||
|
||||
Pour se connecter, la bibliothèque azure-cosmosDB (pip install azure-cosmos) est nécessaire. De plus, le point de terminaison et la clé sont des composants cruciaux pour établir la connexion.
|
||||
Il existe 2 types de clés, Lecture-écriture (complète) et Lecture seule. Elles donnent l'accès indiqué à toutes les bases de données, collections et données à l'intérieur du compte Cosmos DB. Pour se connecter, la bibliothèque azure-cosmosDB (pip install azure-cosmos) est nécessaire. De plus, le point de terminaison et la clé sont des composants cruciaux pour établir la connexion.
|
||||
```python
|
||||
from azure.cosmos import CosmosClient, PartitionKey
|
||||
|
||||
@@ -191,18 +204,18 @@ mongodb://<hostname>:<port>/<database>
|
||||
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 à haut débit sur plusieurs nœuds dans une configuration distribuée.
|
||||
L'unité de base de stockage des 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.
|
||||
#### Caractéristiques clés du type Request unit (RU)
|
||||
**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électionnés) 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. Pour établir la connexion, vous pouvez utiliser des clés.
|
||||
**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
|
||||
#### Caractéristiques clés du type vCore cluster
|
||||
**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.
|
||||
**Connexions chiffrées** : Imposer le chiffrement TLS pour une transmission sécurisée des données.
|
||||
|
||||
#### Énumération
|
||||
|
||||
@@ -229,10 +242,23 @@ az cosmosdb mongodb database list --account-name <AccountName> --resource-group
|
||||
# List all collections in a specific MongoDB database within an Azure Cosmos DB account
|
||||
az cosmosdb mongodb collection list --account-name <AccountName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
|
||||
#RBAC FUNCTIONALITIES MUST BE ENABLED TO USE THIS
|
||||
# List all role definitions for MongoDB within an Azure Cosmos DB account
|
||||
az cosmosdb mongodb role definition list --account-name <AccountName> --resource-group <ResourceGroupName>
|
||||
# List all user definitions for MongoDB within an Azure Cosmos DB account
|
||||
az cosmosdb mongodb user definition list --account-name <AccountName> --resource-group <ResourceGroupName>
|
||||
|
||||
## MongoDB (vCore)
|
||||
# Install az cli extension
|
||||
az extension add --name cosmosdb-preview
|
||||
# List all MongoDB databases in a specified Azure Cosmos DB account
|
||||
az cosmosdb mongocluster list
|
||||
az cosmosdb mongocluster show --cluster-name <name> --resource-group <ResourceGroupName>
|
||||
# Get firewall rules
|
||||
az cosmosdb mongocluster firewall rule list --cluster-name <name> --resource-group <ResourceGroupName>
|
||||
# Connect to in
|
||||
brew install mongosh
|
||||
mongosh "mongodb://<username>:<password>@<account-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retryWrites=false" --username <username> --password <password>
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
@@ -273,14 +299,15 @@ Get-AzCosmosDBMongoDBRoleDefinition -AccountName <account-name> -ResourceGroupNa
|
||||
|
||||
#### Connexion
|
||||
|
||||
Ici, le mot de passe que vous pouvez trouver avec les clés ou avec la méthode décrite dans la section privesc.
|
||||
Le type RU MongoDB dans CosmoDB a 2 types de clés, Lecture-écriture (complet) et Lecture seule. Ils donnent l'accès indiqué à toutes les bases de données, collections et données à l'intérieur du compte Cosmos DB. Pour le mot de passe, vous pouvez utiliser les clés ou avec la méthode décrite dans la section privesc.
|
||||
```python
|
||||
from pymongo import MongoClient
|
||||
|
||||
# Updated connection string with retryWrites=false
|
||||
connection_string = "mongodb://<account-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retryWrites=false"
|
||||
|
||||
# Create the client
|
||||
# Create the client. The password and username is a custom one if the type is "vCore cluster".
|
||||
# In case that is a Request unit (RU) the username is the account name and the password is the key of the cosomosDB account.
|
||||
client = MongoClient(connection_string, username="<username>", password="<password>")
|
||||
|
||||
# Access the database
|
||||
@@ -306,6 +333,10 @@ document = {
|
||||
result = collection.insert_one(document)
|
||||
print(f"Inserted document with ID: {result.inserted_id}")
|
||||
```
|
||||
Ou en utilisant un utilisateur dans le mongo :
|
||||
```bash
|
||||
mongosh "mongodb://<myUser>:<mySecurePassword>@<account_name>.mongo.cosmos.azure.com:10255/<mymongodatabase>?ssl=true&replicaSet=globaldb&retrywrites=false"
|
||||
```
|
||||
## Références
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api](https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api)
|
||||
@@ -331,4 +362,6 @@ 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}}
|
||||
|
||||
@@ -10,13 +10,10 @@ Logic Apps fournit un concepteur visuel pour créer des workflows avec une **lar
|
||||
|
||||
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 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.
|
||||
- **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.
|
||||
|
||||
### Visualiser une LogicAPP
|
||||
|
||||
@@ -24,7 +21,7 @@ Il est possible de visualiser une LogicApp avec des graphiques :
|
||||
|
||||
<figure><img src="../../../images/image (197).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
ou de vérifier le code dans la section "**Vue du code de l'application Logic**".
|
||||
ou de vérifier le code dans la section "**Vue du code de l'application logique**".
|
||||
|
||||
### Protection SSRF
|
||||
|
||||
@@ -40,15 +37,66 @@ curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e9741
|
||||
Il existe plusieurs options d'hébergement :
|
||||
|
||||
* **Consommation**
|
||||
- **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.
|
||||
- **Multi-tenant** : fournit des ressources de calcul partagées, fonctionne dans le cloud public et suit un modèle de tarification à la demande. Cela est idéal pour des charges de travail légères et rentables. Cela déploie un "Single Workflow".
|
||||
* **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 à 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).
|
||||
- **Workflow Service Plan** : ressources de calcul dédiées avec intégration VNET pour le réseau et des frais par instance de plan de service de workflow. Il est adapté 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.
|
||||
- **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). Il repose sur un environnement d'application conteneurisée connecté.
|
||||
|
||||
### Flux de travail
|
||||
### Caractéristiques clés
|
||||
- **Stockage** : Les Logic Apps nécessitent un compte de stockage Azure externe pour stocker l'état du workflow, l'historique des exécutions… et doivent être dans le même groupe de ressources que la Logic App.
|
||||
- **Réseautage et sécurité** : Les Logic Apps peuvent être configurées avec un accès public ou privé. Par défaut, l'application est ouverte à Internet mais peut être intégrée à un réseau virtuel Azure pour une connectivité isolée.
|
||||
- **Application Insights** : La gestion des performances des applications (APM) via Azure Monitor Application Insights peut être activée pour suivre les performances, détecter les anomalies et fournir des analyses.
|
||||
- **Contrôle d'accès** : Les Logic Apps prennent en charge les identités gérées par le système et les identités gérées par l'utilisateur.
|
||||
|
||||
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.
|
||||
### Workflows "Single"
|
||||
|
||||
Un **workflow** est une séquence structurée d'étapes ou de tâches automatisées qui exécutent un processus ou un objectif spécifique. Il définit comment différentes actions, conditions et décisions interagissent pour atteindre un résultat souhaité, rationalisant les opérations et réduisant l'effort manuel. Les workflows peuvent intégrer plusieurs systèmes, déclencher des événements et des règles, garantissant la cohérence et l'efficacité des processus.
|
||||
|
||||
Azure Logic Apps offre la fonctionnalité de **créer un workflow unique sans avoir besoin d'une Logic App** elle-même.
|
||||
|
||||
Chaque workflow a différents **déclencheurs**. Ces déclencheurs sont les étapes que suit le workflow. Chaque déclencheur a ses paramètres qui peuvent varier en fonction du type de déclencheur :
|
||||
- Nom de connexion
|
||||
- **Type d'authentification** qui peut être, Clé d'accès, Microsoft Entra ID, authentification de principal de service intégré et identité gérée par Logic Apps.
|
||||
|
||||
Les déclencheurs ont également divers paramètres :
|
||||
- Validation de schéma : Assure que les données entrantes suivent une structure prédéfinie.
|
||||
- Contrôle de concurrence : Limite le nombre d'exécutions parallèles.
|
||||
- Conditions de déclenchement : conditions qui doivent être remplies avant que le déclencheur ne s'active.
|
||||
- Réseautage : Configure la taille des morceaux pour le transfert de données et permet de supprimer les en-têtes de workflow dans les réponses.
|
||||
- **Sécurité** : Active **Secure Inputs/Outputs pour cacher** les données sensibles dans les journaux et les sorties.
|
||||
|
||||
**Paramètres et connexions API :**
|
||||
|
||||
Un workflow a différents paramètres tels que :
|
||||
- Adresses IP entrantes autorisées : Ce paramètre vous permet de restreindre qui peut déclencher ou démarrer votre Logic App. Les options sont Toute IP, Seulement d'autres Logic Apps et Plages IP spécifiques.
|
||||
- Compte d'intégration : Ici, vous pouvez lier votre Logic App à un compte d'intégration.
|
||||
- Haut débit : Ce paramètre permet à votre Logic App de gérer plus de demandes rapidement.
|
||||
- Conservation de l'historique des exécutions : pendant combien de temps l'historique des exécutions de votre Logic App est conservé.
|
||||
|
||||
Vous pouvez voir les différentes connexions API que le workflow a. À l'intérieur de chacune de ces connexions, elles ont différentes propriétés et la possibilité de modifier la connexion API où le type d'authentification peut être changé.
|
||||
|
||||
**Historique et versions :**
|
||||
Il a l'option d'accéder à l'**historique** des différentes exécutions, il montre, Paramètres, Sortie, Paramètres et le Code.
|
||||
|
||||
Il a également l'option d'accéder à différentes **versions** du workflow, où vous pouvez vérifier le code et changer le workflow actuel avec une version antérieure de celui-ci.
|
||||
|
||||
**Autorisation :**
|
||||
Les Azure Logic Apps prennent en charge les **politiques d'autorisation** avec Entra ID pour sécuriser les déclencheurs basés sur des requêtes en exigeant un jeton d'accès valide. Ce jeton doit inclure des revendications spécifiques :
|
||||
- Émetteur (iss) pour vérifier le fournisseur d'identité
|
||||
- Public (aud) pour s'assurer que le jeton est destiné à la Logic App
|
||||
- Sujet (sub) pour identifier l'appelant
|
||||
- ID JWT (identifiant de jeton Web JSON)
|
||||
- Revendication personnalisée
|
||||
|
||||
Lorsqu'une requête est reçue, les Logic Apps valident le jeton par rapport à ces revendications et permettent l'exécution uniquement s'il correspond à la politique configurée. Cela peut être utilisé pour permettre à un autre locataire de déclencher le workflow ou de refuser le déclenchement d'autres sources, par exemple en n'autorisant le déclenchement que s'il provient de https://login.microsoftonline.com/.
|
||||
|
||||
**Clés d'accès :**
|
||||
Lorsque vous enregistrez un déclencheur basé sur une requête pour la première fois, les Logic Apps créent automatiquement un point de terminaison unique avec une signature SAS (créée à partir de la clé d'accès) qui accorde la permission d'appeler le workflow. Cette signature SAS est intégrée dans l'URL du déclencheur. Cette clé peut être régénérée et elle donnera une nouvelle signature SAS, mais les clés ne peuvent pas être listées.
|
||||
|
||||
L'URL pour l'invoquer avec la clé d'accès :
|
||||
|
||||
https://<region>.logic.azure.com:443/workflows/<workflow-id>/triggers/<trigger-name>/paths/invoke?api-version=<api-version>&sp=%2Ftriggers%2F<trigger-name>%2Frun&sv=<version>&sig=<signature>
|
||||
|
||||
### Énumération
|
||||
|
||||
@@ -102,11 +150,6 @@ az rest \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/versions/{versionName}?api-version=2016-06-01" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://examplelogicapp1994.scm.azurewebsites.net/api/functions/admin/download?includeCsproj=true&includeAppSettings=true" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
# List all Logic Apps in the specified resource group
|
||||
az logicapp list --resource-group <ResourceGroupName>
|
||||
|
||||
@@ -115,6 +158,20 @@ az logicapp show --name <LogicAppName> --resource-group <ResourceGroupName>
|
||||
|
||||
# List all application settings for a specific Logic App
|
||||
az logicapp config appsettings list --name <LogicAppName> --resource-group <ResourceGroupName>
|
||||
|
||||
# Get a Parameters from an Azure App Service using Azure REST API
|
||||
az rest --method GET --url "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{app-service-name}/hostruntime/admin/vfs/parameters.json?api-version=2018-11-01&relativepath=1"
|
||||
|
||||
# Get webhook-triggered workflows from an Azure Logic App using Azure REST API
|
||||
az rest --method GET --url "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{logic-app-name}/hostruntime/runtime/webhooks/workflow/api/management/workflows?api-version=2018-11-01"
|
||||
|
||||
# Get workflows from an Azure Logic App using Azure REST API
|
||||
az rest --method GET --url "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{logic-app-name}/workflows?api-version=2018-11-01"
|
||||
|
||||
# Get details of a specific workflow including its connections and parameters in Azure Logic Apps using Azure REST API
|
||||
az rest --method GET --uri "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{logic-app-name}/workflows/{workflow-name}?api-version=2018-11-01&\$expand=connections.json,parameters.json"
|
||||
|
||||
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user