mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-30 06:30:35 -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>"
|
||||
```
|
||||
In aggiunta, con `Microsoft.Logic/workflows/write` puoi modificare alcune configurazioni come gli indirizzi IP in ingresso consentiti o i giorni di conservazione della cronologia delle esecuzioni:
|
||||
```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`
|
||||
Con questi permessi, puoi creare o aggiornare Logic Apps ospitati su un App Service Plan. Questo include la modifica delle impostazioni come l'abilitazione o la disabilitazione dell'applicazione forzata di HTTPS.
|
||||
```bash
|
||||
@@ -96,7 +135,7 @@ az logic integration-account partner create \
|
||||
}'
|
||||
```
|
||||
### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/sessions/write`
|
||||
Con questo permesso, puoi creare o modificare sessioni all'interno di un account di integrazione di Azure Logic Apps. Le sessioni sono utilizzate nei flussi di lavoro B2B per raggruppare i messaggi e tenere traccia delle transazioni correlate per un periodo definito.
|
||||
Con questo permesso, puoi creare o modificare sessioni all'interno di un account di integrazione Azure Logic Apps. Le sessioni sono utilizzate nei flussi di lavoro B2B per raggruppare i messaggi e tenere traccia delle transazioni correlate su un periodo definito.
|
||||
```bash
|
||||
az logic integration-account session create \
|
||||
--resource-group <resource_group_name> \
|
||||
@@ -111,6 +150,16 @@ az logic integration-account session create \
|
||||
}
|
||||
}
|
||||
}'
|
||||
```
|
||||
### `Microsoft.Logic/workflows/regenerateAccessKey/action`
|
||||
|
||||
Gli utenti con questo permesso possono rigenerare le chiavi di accesso dell'App Logica e, se abusato, può portare a interruzioni del servizio.
|
||||
```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"
|
||||
Con questi permessi puoi eliminare risorse relative ad Azure Logic Apps
|
||||
|
||||
@@ -32,8 +32,67 @@ az rest \
|
||||
--body '{}' \
|
||||
--headers "Content-Type=application/json"
|
||||
```
|
||||
In aggiunta, con solo `Microsoft.Logic/workflows/write` puoi modificare la Politica di Autorizzazione, dando ad esempio a un altro tenant la possibilità di attivare il workflow:
|
||||
```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`
|
||||
Puoi ottenere l'URL di callback del trigger e eseguirlo.
|
||||
```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"
|
||||
```
|
||||
Questo restituirà un URL di callback come `https://prod-28.centralus.logic.azure.com:443/workflows/....`. Ora possiamo eseguirlo con:
|
||||
```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`)
|
||||
Con queste autorizzazioni, puoi distribuire flussi di lavoro di Logic App utilizzando distribuzioni di file ZIP. Queste autorizzazioni abilitano azioni come la lettura dei dettagli dell'app, l'accesso alle credenziali di pubblicazione, la scrittura di modifiche e l'elenco delle configurazioni dell'app. Insieme alle autorizzazioni di avvio, puoi aggiornare e distribuire una nuova Logic App con il contenuto desiderato.
|
||||
Con questi permessi, puoi distribuire flussi di lavoro di Logic App utilizzando distribuzioni di file ZIP. Questi permessi abilitano azioni come la lettura dei dettagli dell'app, l'accesso alle credenziali di pubblicazione, la scrittura di modifiche e l'elenco delle configurazioni dell'app. Insieme ai permessi di avvio, puoi aggiornare e distribuire una nuova Logic App con il contenuto desiderato.
|
||||
```bash
|
||||
az logicapp deployment source config-zip \
|
||||
--name <logic_app_name> \
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
|
||||
## Azure CosmosDB
|
||||
|
||||
**Azure Cosmos DB** è un **database NoSQL, relazionale e vettoriale completamente gestito** che offre tempi di risposta a singolo millisecondo, scalabilità automatica e disponibilità supportata da SLA con sicurezza di livello enterprise. Consente uno sviluppo più rapido delle app attraverso la distribuzione dei dati multi-regione "chiavi in mano", API open-source, SDK per linguaggi popolari e funzionalità di database AI come il supporto vettoriale integrato e l'integrazione fluida con Azure AI.
|
||||
**Azure Cosmos DB** è un **database NoSQL, relazionale e vettoriale completamente gestito** che offre tempi di risposta a singolo millisecondo, scalabilità automatica e disponibilità supportata da SLA con sicurezza di livello enterprise. Consente uno sviluppo più rapido delle app attraverso la distribuzione di dati multi-regione chiavi in mano, API open-source, SDK per linguaggi popolari e funzionalità di database AI come il supporto vettoriale integrato e l'integrazione fluida con Azure AI.
|
||||
|
||||
Azure Cosmos DB fornisce più API di database per modellare i dati del mondo reale utilizzando modelli di dati documentali, relazionali, chiave-valore, grafico e a colonne, essendo queste API NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin e Table.
|
||||
Azure Cosmos DB fornisce più API di database per modellare dati del mondo reale utilizzando modelli di dati documentali, relazionali, chiave-valore, grafico e a colonne, essendo queste API NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin e Table.
|
||||
|
||||
Un aspetto chiave di CosmosDB è l'Azure Cosmos Account. **Azure Cosmos Account** funge da punto di accesso ai database. L'account determina impostazioni chiave come distribuzione globale, livelli di coerenza e l'API specifica da utilizzare, come NoSQL. Attraverso l'account, puoi configurare la replicazione globale per garantire che i dati siano disponibili in più regioni per un accesso a bassa latenza. Inoltre, puoi scegliere un livello di coerenza che bilancia tra prestazioni e accuratezza dei dati, con opzioni che vanno da Strong a Eventual consistency.
|
||||
Un aspetto chiave di CosmosDB è l'Azure Cosmos Account. **Azure Cosmos Account** funge da punto di accesso ai database. L'account determina impostazioni chiave come distribuzione globale, livelli di coerenza e l'API specifica da utilizzare, come NoSQL. Attraverso l'account, puoi configurare la replica globale per garantire che i dati siano disponibili in più regioni per un accesso a bassa latenza. Inoltre, puoi scegliere un livello di coerenza che bilancia tra prestazioni e accuratezza dei dati, con opzioni che vanno da Strong a Eventual consistency.
|
||||
|
||||
Azure Cosmos DB supporta **identità assegnate dall'utente** e **identità gestite assegnate dal sistema** che vengono create automaticamente e collegate al ciclo di vita della risorsa, consentendo un'autenticazione sicura basata su token quando ci si connette ad altri servizi, a condizione che questi servizi abbiano le assegnazioni di ruolo appropriate. Tuttavia, Cosmos DB non ha un meccanismo integrato per interrogare direttamente fonti di dati esterne come Azure Blob Storage. A differenza delle funzionalità delle tabelle esterne di SQL Server, Cosmos DB richiede che i dati vengano ingeriti nei suoi contenitori utilizzando strumenti esterni come Azure Data Factory, il Data Migration Tool o script personalizzati prima di poter essere interrogati con le sue capacità di query native.
|
||||
Azure Cosmos DB supporta **identità assegnate dall'utente** e **identità gestite assegnate dal sistema** che vengono create automaticamente e collegate al ciclo di vita della risorsa. Tuttavia, Cosmos DB non ha un meccanismo integrato per interrogare direttamente fonti di dati esterne come Azure Blob Storage. A differenza delle funzionalità delle tabelle esterne di SQL Server, Cosmos DB richiede che i dati vengano ingeriti nei suoi contenitori utilizzando strumenti esterni come Azure Data Factory, il Data Migration Tool o script personalizzati prima di poter essere interrogati con le sue capacità di query native.
|
||||
|
||||
### NoSQL
|
||||
L'API NoSQL di Azure Cosmos DB è un'API basata su documenti che utilizza JSON come formato di dati. Fornisce una sintassi di query simile a SQL per interrogare oggetti JSON, rendendola adatta per lavorare con dati strutturati e semi-strutturati. L'endpoint del servizio è:
|
||||
@@ -18,16 +18,16 @@ L'API NoSQL di Azure Cosmos DB è un'API basata su documenti che utilizza JSON c
|
||||
https://<Account-Name>.documents.azure.com:443/
|
||||
```
|
||||
#### Database
|
||||
All'interno di un account, puoi creare uno o più database, che fungono da raggruppamenti logici di contenitori. Un database agisce come un confine per la gestione delle risorse e dei permessi utente. I database possono condividere la capacità di throughput provisionata tra i loro contenitori o allocare throughput dedicato a contenitori individuali.
|
||||
All'interno di un account, puoi creare uno o più database, che fungono da raggruppamenti logici di contenitori. Un database agisce come un confine per la gestione delle risorse e dei permessi utente. I database possono consentire a più contenitori di utilizzare un pool condiviso di capacità di prestazione o dare a ciascun contenitore la propria potenza dedicata.
|
||||
|
||||
#### Contenitori
|
||||
L'unità fondamentale di archiviazione dei dati è il contenitore, che contiene documenti JSON ed è automaticamente indicizzato per query efficienti. I contenitori sono scalabili in modo elastico e distribuiti su partizioni, che sono determinate da una chiave di partizione definita dall'utente. La chiave di partizione è fondamentale per garantire prestazioni ottimali e una distribuzione uniforme dei dati. Ad esempio, un contenitore potrebbe memorizzare dati sui clienti, con "customerId" come chiave di partizione.
|
||||
L'unità fondamentale di archiviazione dei dati è il contenitore, che contiene documenti JSON ed è automaticamente indicizzato per query efficienti. I contenitori sono elastici e scalabili e distribuiti su partizioni, determinate da una chiave di partizione definita dall'utente. La chiave di partizione è fondamentale per garantire prestazioni ottimali e una distribuzione uniforme dei dati. Ad esempio, un contenitore potrebbe memorizzare dati sui clienti, con "customerId" come chiave di partizione.
|
||||
|
||||
#### Caratteristiche principali
|
||||
**Distribuzione globale**: Abilita o disabilita la Geo-Redundancy per la replica tra regioni e Multi-region Writes per una disponibilità migliorata.
|
||||
**Networking & Sicurezza**: tra endpoint pubblici (tutti/seleziona reti) o privati per la connettività. Connessioni sicure con crittografia TLS 1.2. Supporta CORS (Cross-Origin Resource Sharing) per un accesso controllato alle risorse.
|
||||
**Backup & Ripristino**: da politiche di backup Periodiche, Continue (7 giorni) o Continue (30 giorni) con intervalli e retention configurabili.
|
||||
**Crittografia dei dati**: Chiavi gestite dal servizio predefinite o chiavi gestite dal cliente (CMK) per la crittografia (la selezione della CMK è irreversibile).
|
||||
- **Distribuzione globale**: Abilita o disabilita la Geo-Redundancy per la replica tra regioni e Multi-region Writes per una disponibilità migliorata.
|
||||
- **Networking & Sicurezza**: tra endpoint pubblici (tutti/seleziona reti) o privati per la connettività. Connessioni sicure con crittografia TLS 1.2. Supporta CORS (Cross-Origin Resource Sharing) per un accesso controllato alle risorse. Microsoft Defender for Cloud può essere abilitato. Per stabilire la connessione puoi utilizzare le chiavi.
|
||||
- **Backup & Ripristino**: da politiche di backup Periodiche, Continue (7 giorni) o Continue (30 giorni) con intervalli e retention configurabili.
|
||||
- **Crittografia dei dati**: Chiavi gestite dal servizio predefinite o chiavi gestite dal cliente (CMK) per la crittografia (la selezione della CMK è irreversibile).
|
||||
|
||||
#### Enumerazione
|
||||
|
||||
@@ -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,6 +131,7 @@ Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "<ResourceGroupName>" -A
|
||||
|
||||
#### Connessione
|
||||
|
||||
Ha 2 tipi di chiavi, Read-write (completo) e Read-only. Forniscono l'accesso indicato a tutti i database, collezioni e dati all'interno dell'account Cosmos DB.
|
||||
Per connettersi è necessaria la libreria azure-cosmosDB (pip install azure-cosmos). Inoltre, l'endpoint e la chiave sono componenti cruciali per stabilire la connessione.
|
||||
```python
|
||||
from azure.cosmos import CosmosClient, PartitionKey
|
||||
@@ -183,7 +197,7 @@ container.create_item(item)
|
||||
print("Document inserted.")
|
||||
```
|
||||
### MongoDB
|
||||
L'API NoSQL di MongoDB è un'API basata su documenti che utilizza BSON (Binary JSON) simile a JSON come formato dei dati. Fornisce un linguaggio di query con capacità di aggregazione, rendendola adatta per lavorare con dati strutturati, semi-strutturati e non strutturati. L'endpoint del servizio segue tipicamente questo formato:
|
||||
L'API NoSQL di MongoDB è un'API basata su documenti che utilizza BSON (Binary JSON) simile a JSON come formato dei dati. Fornisce un linguaggio di query con capacità di aggregazione, rendendolo adatto per lavorare con dati strutturati, semi-strutturati e non strutturati. L'endpoint del servizio segue tipicamente questo formato:
|
||||
```bash
|
||||
mongodb://<hostname>:<port>/<database>
|
||||
```
|
||||
@@ -191,13 +205,13 @@ mongodb://<hostname>:<port>/<database>
|
||||
In MongoDB, puoi creare uno o più database all'interno di un'istanza. Ogni database funge da raggruppamento logico di collezioni e fornisce un confine per l'organizzazione e la gestione delle risorse. I database aiutano a separare e gestire i dati in modo logico, ad esempio per diverse applicazioni o progetti.
|
||||
|
||||
#### Collezioni
|
||||
L'unità fondamentale di archiviazione dei dati in MongoDB è la collezione, che contiene documenti ed è progettata per interrogazioni efficienti e un design dello schema flessibile. Le collezioni sono scalabili in modo elastico e possono supportare operazioni ad alta capacità attraverso più nodi in un'architettura distribuita.
|
||||
L'unità fondamentale di archiviazione dei dati in MongoDB è la collezione, che contiene documenti ed è progettata per interrogazioni efficienti e un design dello schema flessibile. Le collezioni sono elastico scalabili e possono supportare operazioni ad alta capacità attraverso più nodi in un setup distribuito.
|
||||
|
||||
#### Caratteristiche principali del tipo di unità di richiesta (RU)
|
||||
**Distribuzione globale**: Abilita o disabilita la geo-redundanza per la replica tra regioni e scritture multi-regione per una disponibilità migliorata.
|
||||
**Networking & Sicurezza**: tra endpoint pubblici (tutti/selezionati) o privati per la connettività. Connessioni sicure con crittografia TLS 1.2. Supporta CORS (Cross-Origin Resource Sharing) per un accesso controllato alle risorse.
|
||||
**Backup & Ripristino**: da politiche di backup periodiche, continue (7 giorni, gratuite) o continue (30 giorni, a pagamento) con intervalli e retention configurabili.
|
||||
**Crittografia dei dati**: Chiavi gestite dal servizio predefinite o chiavi gestite dal cliente (CMK) per la crittografia (la selezione di CMK è irreversibile).
|
||||
**Distribuzione globale**: Abilita o disabilita la Geo-Redundancy per la replica tra regioni e le scritture multi-regione per una disponibilità migliorata.
|
||||
**Networking & Sicurezza**: tra endpoint pubblici (tutti/selezionati) o privati per la connettività. Connessioni sicure con crittografia TLS 1.2. Supporta CORS (Cross-Origin Resource Sharing) per un accesso controllato alle risorse. Per effettuare la connessione puoi utilizzare le chiavi.
|
||||
**Backup & Ripristino**: da politiche di backup Periodiche, Continue (7 giorni, gratuite) o Continue (30 giorni, a pagamento) con intervalli e retention configurabili.
|
||||
**Crittografia dei dati**: Chiavi gestite dal servizio predefinite o chiavi gestite dal cliente (CMK) per la crittografia (la selezione della CMK è irreversibile).
|
||||
|
||||
#### Caratteristiche principali del tipo di cluster vCore
|
||||
**Distribuzione globale**: Abilita una replica di lettura in un'altra regione Azure per alta disponibilità e supporto al failover. Configura il nome della replica, la regione e lo storage per shard.
|
||||
@@ -229,10 +243,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 +300,16 @@ Get-AzCosmosDBMongoDBRoleDefinition -AccountName <account-name> -ResourceGroupNa
|
||||
|
||||
#### Connessione
|
||||
|
||||
Qui la password puoi trovarla con le chiavi o con il metodo descritto nella sezione privesc.
|
||||
Il tipo RU MongoDB in CosmoDB ha 2 tipi di chiavi, Read-write (completo) e Read-only. Forniscono l'accesso indicato a tutti i database, collezioni e dati all'interno dell'account Cosmos DB.
|
||||
Per la password puoi utilizzare le chiavi o il metodo descritto nella sezione 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 +335,10 @@ document = {
|
||||
result = collection.insert_one(document)
|
||||
print(f"Inserted document with ID: {result.inserted_id}")
|
||||
```
|
||||
O utilizzando un utente all'interno del mongo:
|
||||
```bash
|
||||
mongosh "mongodb://<myUser>:<mySecurePassword>@<account_name>.mongo.cosmos.azure.com:10255/<mymongodatabase>?ssl=true&replicaSet=globaldb&retrywrites=false"
|
||||
```
|
||||
## Riferimenti
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api](https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api)
|
||||
|
||||
@@ -2,20 +2,17 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Informazioni di base
|
||||
## Informazioni di Base
|
||||
|
||||
Azure Logic Apps è un servizio basato su cloud fornito da Microsoft Azure che consente agli sviluppatori di **creare e eseguire flussi di lavoro che integrano vari servizi**, fonti di dati e applicazioni. Questi flussi di lavoro sono progettati per **automatizzare i processi aziendali**, orchestrare attività e eseguire integrazioni di dati tra diverse piattaforme.
|
||||
|
||||
Logic Apps fornisce un designer visivo per creare flussi di lavoro con un **ampia gamma di connettori predefiniti**, che facilita la connessione e l'interazione con vari servizi, come Office 365, Dynamics CRM, Salesforce e molti altri. Puoi anche creare connettori personalizzati per le tue esigenze specifiche.
|
||||
Logic Apps fornisce un designer visivo per creare flussi di lavoro con una **ampia gamma di connettori predefiniti**, che facilita la connessione e l'interazione con vari servizi, come Office 365, Dynamics CRM, Salesforce e molti altri. Puoi anche creare connettori personalizzati per le tue esigenze specifiche.
|
||||
|
||||
Quando crei un Logic App, devi creare o collegare un account di archiviazione esterno che memorizza lo stato del flusso di lavoro, la cronologia delle esecuzioni e gli artefatti. Questo storage può essere configurato con impostazioni diagnostiche per il monitoraggio e può essere protetto con restrizioni di accesso alla rete o integrato in una rete virtuale per controllare il traffico in entrata e in uscita.
|
||||
|
||||
### Identità gestite
|
||||
Logic Apps ha un'**identità gestita assegnata al sistema** legata al suo ciclo di vita. Quando abilitata, riceve un ID Oggetto (principale) unico che può essere utilizzato con Azure RBAC per concedere le autorizzazioni necessarie per accedere ad altri servizi Azure in modo sicuro. Questo elimina la necessità di memorizzare le credenziali nel codice poiché l'identità è autenticata tramite Microsoft Entra ID. Inoltre, puoi anche utilizzare **identità gestite assegnate all'utente**, che possono essere condivise tra più risorse. Queste identità consentono ai flussi di lavoro e ai Logic Apps di interagire in modo sicuro con sistemi esterni, garantendo che i controlli di accesso e le autorizzazioni necessari siano gestiti centralmente attraverso il framework di sicurezza di Azure.
|
||||
Quando crei un Logic App, devi creare o collegare un account di archiviazione esterno che memorizza lo stato del flusso di lavoro, la cronologia delle esecuzioni e gli artefatti. Questo spazio di archiviazione può essere configurato con impostazioni diagnostiche per il monitoraggio e può essere protetto con restrizioni di accesso alla rete o integrato in una rete virtuale per controllare il traffico in entrata e in uscita.
|
||||
|
||||
### Esempi
|
||||
|
||||
- **Automatizzare i pipeline di dati**: Logic Apps può automatizzare **processi di trasferimento e trasformazione dei dati** in combinazione con Azure Data Factory. Questo è utile per creare pipeline di dati scalabili e affidabili che spostano e trasformano i dati tra vari archivi di dati, come Azure SQL Database e Azure Blob Storage, supportando le operazioni di analisi e business intelligence.
|
||||
- **Automatizzare i Pipeline di Dati**: Logic Apps può automatizzare **processi di trasferimento e trasformazione dei dati** in combinazione con Azure Data Factory. Questo è utile per creare pipeline di dati scalabili e affidabili che spostano e trasformano i dati tra vari archivi di dati, come Azure SQL Database e Azure Blob Storage, supportando le operazioni di analisi e business intelligence.
|
||||
- **Integrazione con Azure Functions**: Logic Apps può lavorare insieme ad Azure Functions per sviluppare **applicazioni sofisticate e basate su eventi che scalano secondo necessità** e si integrano perfettamente con altri servizi Azure. Un esempio di caso d'uso è utilizzare un Logic App per attivare una Azure Function in risposta a determinati eventi, come cambiamenti in un account di archiviazione Azure, consentendo un'elaborazione dinamica dei dati.
|
||||
|
||||
### Visualizza un LogicAPP
|
||||
@@ -40,15 +37,66 @@ curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e9741
|
||||
Ci sono diverse opzioni di hosting:
|
||||
|
||||
* **Consumption**
|
||||
- **Multi-tenant**: fornisce risorse di calcolo condivise, opera nel cloud pubblico e segue un modello di prezzo pay-per-operation. Questo è ideale per carichi di lavoro leggeri e convenienti.
|
||||
- **Multi-tenant**: fornisce risorse di calcolo condivise, opera nel cloud pubblico e segue un modello di prezzo pay-per-operation. Questo è ideale per carichi di lavoro leggeri e convenienti. Questo distribuisce un "Single Workflow".
|
||||
* **Standard**
|
||||
- **Workflow Service Plan**: risorse di calcolo dedicate con integrazione VNET per il networking e addebiti per ogni istanza del piano di servizio workflow. È adatto per carichi di lavoro più esigenti che richiedono un maggiore controllo.
|
||||
- **App Service Environment V3** risorse di calcolo dedicate con piena isolamento e scalabilità. Si integra anche con VNET per il networking e utilizza un modello di prezzo basato sulle istanze di App Service all'interno dell'ambiente. Questo è ideale per applicazioni su scala enterprise che necessitano di elevato isolamento.
|
||||
- **Hybrid** progettato per l'elaborazione locale e il supporto multi-cloud. Consente risorse di calcolo gestite dal cliente con accesso alla rete locale e utilizza Kubernetes Event-Driven Autoscaling (KEDA).
|
||||
- **Workflow Service Plan**: risorse di calcolo dedicate con integrazione VNET per il networking e addebiti per istanza del piano di servizio workflow. È adatto per carichi di lavoro più esigenti che richiedono un maggiore controllo.
|
||||
- **App Service Environment V3** risorse di calcolo dedicate con piena isolamento e scalabilità. Si integra anche con VNET per il networking e utilizza un modello di prezzo basato sulle istanze di App Service all'interno dell'ambiente.
|
||||
- **Hybrid** progettato per l'elaborazione locale e il supporto multi-cloud. Consente risorse di calcolo gestite dal cliente con accesso alla rete locale e utilizza Kubernetes Event-Driven Autoscaling (KEDA). Si basa su un Container App Connected Environment.
|
||||
|
||||
### Flussi di lavoro
|
||||
### Caratteristiche principali
|
||||
- **Storage**: Le Logic Apps richiedono un account Azure Storage esterno per memorizzare lo stato del workflow, la cronologia delle esecuzioni… e devono trovarsi nello stesso gruppo di risorse della Logic App.
|
||||
- **Networking & Sicurezza**: Le Logic Apps possono essere configurate con accesso pubblico o privato. Per impostazione predefinita, l'app è aperta a Internet ma può essere integrata con una Azure Virtual Network per una connettività isolata.
|
||||
- **Application Insights**: La gestione delle prestazioni delle applicazioni (APM) tramite Azure Monitor Application Insights può essere abilitata per monitorare le prestazioni, rilevare anomalie e fornire analisi.
|
||||
- **Controllo degli accessi**: Le Logic Apps supportano le identità gestite dal sistema e le identità gestite dall'utente.
|
||||
|
||||
I flussi di lavoro in Azure Logic Apps sono i processi automatizzati fondamentali che orchestrano azioni attraverso vari servizi. Un flusso di lavoro inizia con un trigger—un evento o un programma—e poi esegue una serie di azioni, come chiamare API, elaborare dati o interagire con altri servizi Azure. I flussi di lavoro possono essere definiti visivamente utilizzando un designer o tramite codice (definizioni JSON) e sono gestiti tramite comandi come az logic workflow create, az logic workflow show e az logic workflow update. Supportano anche la gestione dell'identità (tramite il sottogruppo di identità) per gestire in modo sicuro permessi e integrazioni con risorse esterne.
|
||||
### "Single" Workflows
|
||||
|
||||
Un **workflow** è una sequenza strutturata di passaggi o attività automatizzate che eseguono un processo o obiettivo specifico. Definisce come diverse azioni, condizioni e decisioni interagiscono per raggiungere un risultato desiderato, semplificando le operazioni e riducendo lo sforzo manuale. I workflow possono integrare più sistemi, attivare eventi e regole, garantendo coerenza ed efficienza nei processi.
|
||||
|
||||
Azure Logic Apps offre la funzionalità di **creare un singolo workflow senza la necessità di una Logic App** stessa.
|
||||
|
||||
Ogni workflow ha diversi **triggers**. Questi triggers sono i passaggi che il workflow segue. Ogni trigger ha i propri parametri che possono variare a seconda del tipo di trigger:
|
||||
- Nome della connessione
|
||||
- **Tipo di autenticazione** che può essere, Access Key, Microsoft Entra ID, autenticazione del principal di servizio integrato e identità gestita delle Logic Apps.
|
||||
|
||||
I triggers hanno anche varie impostazioni:
|
||||
- Validazione dello schema: Garantisce che i dati in arrivo seguano una struttura predefinita.
|
||||
- Controllo della concorrenza: Limita il numero di esecuzioni parallele.
|
||||
- Condizioni del trigger: condizioni che devono essere soddisfatte prima che il trigger venga attivato.
|
||||
- Networking: Configura la dimensione dei chunk per il trasferimento dei dati e consente di sopprimere le intestazioni del workflow nelle risposte.
|
||||
- **Sicurezza**: Abilita **Input/Output Sicuri per nascondere** dati sensibili nei log e nelle uscite.
|
||||
|
||||
**Impostazioni & Connessioni API:**
|
||||
|
||||
Un workflow ha diverse impostazioni come:
|
||||
- Indirizzi IP in entrata consentiti: Questa impostazione consente di limitare chi può attivare o avviare la tua Logic App. Le opzioni sono Qualsiasi IP, Solo altre Logic Apps e Intervalli IP specifici.
|
||||
- Account di integrazione: Qui puoi collegare la tua Logic App a un Account di Integrazione.
|
||||
- Alta capacità: Questa impostazione consente alla tua Logic App di gestire più richieste rapidamente.
|
||||
- Conservazione della cronologia delle esecuzioni: per quanto tempo viene mantenuta la cronologia delle esecuzioni della tua Logic App.
|
||||
|
||||
Puoi vedere le diverse connessioni API che il workflow ha. All'interno di ciascuna di queste connessioni hanno diverse proprietà e la possibilità di modificare la connessione API dove il tipo di autenticazione può essere cambiato.
|
||||
|
||||
**Cronologia & Versioni:**
|
||||
Ha l'opzione di accedere alla **cronologia** delle diverse esecuzioni, mostra Impostazioni, Output, Parametri e il Codice.
|
||||
|
||||
Ha anche l'opzione di accedere a diverse **versioni** del workflow, dove puoi controllare il codice e cambiare il workflow attuale con una versione precedente di esso.
|
||||
|
||||
**Autorizzazione:**
|
||||
Le Azure Logic Apps supportano **politiche di autorizzazione** con Entra ID per proteggere i trigger basati su richiesta richiedendo un token di accesso valido. Questo token deve includere specifiche dichiarazioni:
|
||||
- Emittente (iss) per verificare il fornitore di identità
|
||||
- Destinatario (aud) per garantire che il token sia destinato alla Logic App
|
||||
- Soggetto (sub) per identificare il chiamante
|
||||
- ID JWT (identificatore del token Web JSON)
|
||||
- Dichiarazione personalizzata
|
||||
|
||||
Quando viene ricevuta una richiesta, le Logic Apps convalidano il token rispetto a queste dichiarazioni e consentono l'esecuzione solo se corrispondono alla politica configurata. Questo può essere utilizzato per consentire a un altro tenant di attivare il workflow o negare l'attivazione da altre fonti, ad esempio consentendo l'attivazione solo se proviene da https://login.microsoftonline.com/.
|
||||
|
||||
**Chiavi di accesso:**
|
||||
Quando salvi un trigger basato su richiesta per la prima volta, le Logic Apps creano automaticamente un endpoint unico con una firma SAS (creata dalla Access Key) che concede il permesso di chiamare il workflow. Questa firma SAS è incorporata nell'URL del trigger. Questa chiave può essere rigenerata e darà una nuova firma SAS, ma le chiavi non possono essere elencate.
|
||||
|
||||
L'URL per invocarlo con la Access Key:
|
||||
|
||||
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>
|
||||
|
||||
### Enumerazione
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
@@ -150,7 +207,7 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<Lo
|
||||
**Account di Integrazione**, sono una funzionalità di Azure Logic Apps. Gli Account di Integrazione vengono utilizzati per facilitare integrazioni a livello aziendale abilitando capacità B2B avanzate, come EDI, AS2 e gestione degli schemi XML. Gli Account di Integrazione sono un contenitore in Azure che memorizza i seguenti artefatti utilizzati per le Logic Apps:
|
||||
|
||||
* Schemi: Gestisci gli schemi XML per convalidare e elaborare i messaggi nel tuo account di integrazione.
|
||||
* Mappe: Configura trasformazioni basate su XSLT per convertire i formati di dati all'interno dei tuoi flussi di lavoro di integrazione.
|
||||
* Mappe: Configura trasformazioni basate su XSLT per convertire i formati dei dati all'interno dei tuoi flussi di lavoro di integrazione.
|
||||
* Assemblaggi: Gestisci gli assemblaggi dell'account di integrazione per semplificare la logica e l'elaborazione dei dati.
|
||||
* Certificati: Gestisci i certificati per crittografare e firmare i messaggi, garantendo comunicazioni sicure.
|
||||
* Partner: Gestisci le informazioni sui partner commerciali per le transazioni B2B, abilitando integrazioni senza soluzione di continuità.
|
||||
|
||||
Reference in New Issue
Block a user