mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-12 21:13:45 -08:00
Translated ['src/pentesting-cloud/azure-security/az-post-exploitation/az
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
{{#endref}}
|
||||
|
||||
### `Microsoft.Logic/workflows/read`, `Microsoft.Logic/workflows/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
|
||||
З цими дозволами ви можете змінювати робочі процеси Logic App і керувати їхніми ідентичностями. Зокрема, ви можете призначати або видаляти системно призначені та призначені користувачем керовані ідентичності для робочих процесів, що дозволяє Logic App автентифікуватися та отримувати доступ до інших ресурсів Azure без явних облікових даних.
|
||||
З цими дозволами ви можете змінювати робочі процеси Logic App і керувати їхніми ідентичностями. Зокрема, ви можете призначати або видаляти системно призначені та призначені користувачем керовані ідентичності для робочих процесів, що дозволяє Logic App аутентифікуватися та отримувати доступ до інших ресурсів Azure без явних облікових даних.
|
||||
```bash
|
||||
az logic workflow identity remove/assign \
|
||||
--name <workflow_name> \
|
||||
@@ -18,8 +18,47 @@ az logic workflow identity remove/assign \
|
||||
--system-assigned true \
|
||||
--user-assigned "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity_name>"
|
||||
```
|
||||
Додатково, з `Microsoft.Logic/workflows/write` ви можете змінити деякі налаштування, такі як Дозволені вхідні IP-адреси або Дні зберігання історії виконання:
|
||||
```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`
|
||||
З цими дозволами ви можете створювати або оновлювати Logic Apps, розміщені на App Service Plan. Це включає зміну налаштувань, таких як увімкнення або вимкнення примусу HTTPS.
|
||||
З цими дозволами ви можете створювати або оновлювати Logic Apps, розміщені на App Service Plan. Це включає зміну налаштувань, таких як увімкнення або вимкнення примусової перевірки HTTPS.
|
||||
```bash
|
||||
az logicapp update \
|
||||
--resource-group <resource_group_name> \
|
||||
@@ -111,6 +150,16 @@ az logic integration-account session create \
|
||||
}
|
||||
}
|
||||
}'
|
||||
```
|
||||
### `Microsoft.Logic/workflows/regenerateAccessKey/action`
|
||||
|
||||
Користувачі з цим дозволом можуть регенерувати ключі доступу до Logic App, і якщо їх неправильно використовувати, це може призвести до збоїв у роботі сервісу.
|
||||
```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"
|
||||
З цими правами ви можете видаляти ресурси, пов'язані з Azure Logic Apps
|
||||
|
||||
@@ -32,6 +32,65 @@ az rest \
|
||||
--body '{}' \
|
||||
--headers "Content-Type=application/json"
|
||||
```
|
||||
Додатково, використовуючи лише `Microsoft.Logic/workflows/write`, ви можете змінити політику авторизації, надаючи, наприклад, іншому орендарю можливість запускати робочий процес:
|
||||
```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`
|
||||
Ви можете отримати URL зворотного виклику тригера та виконати його.
|
||||
```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"
|
||||
```
|
||||
Це поверне URL зворотного виклику, наприклад, `https://prod-28.centralus.logic.azure.com:443/workflows/....`. Тепер ми можемо запустити його за допомогою:
|
||||
```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`)
|
||||
З цими дозволами ви можете розгортати робочі процеси Logic App, використовуючи розгортання ZIP-файлів. Ці дозволи дозволяють виконувати такі дії, як читання деталей програми, доступ до облікових даних публікації, внесення змін і перерахування конфігурацій програми. Разом із дозволами на запуск ви можете оновити та розгорнути новий Logic App з бажаним вмістом.
|
||||
```bash
|
||||
|
||||
@@ -4,30 +4,30 @@
|
||||
|
||||
## Azure CosmosDB
|
||||
|
||||
**Azure Cosmos DB** - це повністю **керована NoSQL, реляційна та векторна база даних**, яка забезпечує час відповіді в одиничні мілісекунди, автоматичну масштабованість та доступність з підтримкою SLA з безпекою корпоративного рівня. Вона дозволяє швидше розробляти додатки завдяки готовій багаторегіональній розподільній системі даних, відкритим API, SDK для популярних мов та функціям бази даних AI, таким як інтегрована підтримка векторів та безшовна інтеграція з Azure AI.
|
||||
**Azure Cosmos DB** - це повністю **керована NoSQL, реляційна та векторна база даних**, яка забезпечує час відповіді в одиничні мілісекунди, автоматичну масштабованість та доступність, що підтримується SLA, з безпекою корпоративного рівня. Вона дозволяє швидше розробляти додатки завдяки готовій багаторегіональній розподільній системі даних, відкритим API, SDK для популярних мов та функціям бази даних AI, таким як інтегрована підтримка векторів та безшовна інтеграція з Azure AI.
|
||||
|
||||
Azure Cosmos DB надає кілька API бази даних для моделювання реальних даних, використовуючи документи, реляційні, ключ-значення, графові та колонові моделі даних, серед яких NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin та Table.
|
||||
|
||||
Одним з ключових аспектів CosmosDB є Azure Cosmos Account. **Azure Cosmos Account** є точкою входу до баз даних. Обліковий запис визначає ключові налаштування, такі як глобальний розподіл, рівні узгодженості та конкретний API, який буде використовуватися, наприклад, NoSQL. Через обліковий запис ви можете налаштувати глобальну реплікацію, щоб забезпечити доступність даних у кількох регіонах для доступу з низькою затримкою. Крім того, ви можете вибрати рівень узгодженості, який балансує між продуктивністю та точністю даних, з варіантами від сильної до остаточної узгодженості.
|
||||
|
||||
Azure Cosmos DB підтримує **призначені користувачем ідентичності** та **системно призначені керовані ідентичності**, які автоматично створюються та пов'язані з життєвим циклом ресурсу, що дозволяє безпечну аутентифікацію на основі токенів при підключенні до інших служб — за умови, що ці служби мають відповідні призначення ролей. Однак Cosmos DB не має вбудованого механізму для безпосереднього запиту зовнішніх джерел даних, таких як Azure Blob Storage. На відміну від функцій зовнішніх таблиць SQL Server, Cosmos DB вимагає, щоб дані були імпортовані в його контейнери за допомогою зовнішніх інструментів, таких як Azure Data Factory, інструмент міграції даних або користувацькі скрипти, перш ніж їх можна буде запитувати за допомогою його рідних можливостей запиту.
|
||||
Azure Cosmos DB підтримує **ідентифікатори, призначені користувачем**, та **системні керовані ідентичності**, які автоматично створюються та пов'язані з життєвим циклом ресурсу. Однак Cosmos DB не має вбудованого механізму для безпосереднього запиту зовнішніх джерел даних, таких як Azure Blob Storage. На відміну від функцій зовнішніх таблиць SQL Server, Cosmos DB вимагає, щоб дані були імпортовані в його контейнери за допомогою зовнішніх інструментів, таких як Azure Data Factory, інструмент міграції даних або користувацькі скрипти, перш ніж їх можна буде запитувати за допомогою його рідних можливостей запиту.
|
||||
|
||||
### NoSQL
|
||||
API NoSQL Azure Cosmos DB є документно-орієнтованим API, який використовує JSON як формат даних. Він надає синтаксис запитів, подібний до SQL, для запитів JSON-об'єктів, що робить його придатним для роботи зі структурованими та напівструктурованими даними. Точка доступу служби:
|
||||
API NoSQL Azure Cosmos DB є документно-орієнтованим API, який використовує JSON як формат даних. Він надає синтаксис запиту, подібний до SQL, для запитів до об'єктів JSON, що робить його придатним для роботи зі структурованими та напівструктурованими даними. Точка доступу служби:
|
||||
```bash
|
||||
https://<Account-Name>.documents.azure.com:443/
|
||||
```
|
||||
#### Бази даних
|
||||
У межах облікового запису ви можете створити одну або кілька баз даних, які слугують логічними групами контейнерів. База даних діє як межа для управління ресурсами та правами користувачів. Бази даних можуть або ділити виділену пропускну здатність між своїми контейнерами, або виділяти окрему пропускну здатність для індивідуальних контейнерів.
|
||||
У межах облікового запису ви можете створити одну або кілька баз даних, які слугують логічними групами контейнерів. База даних діє як межа для управління ресурсами та правами користувачів. Бази даних можуть або дозволяти кільком контейнерам використовувати спільний пул продуктивності, або надавати кожному контейнеру власну виділену потужність.
|
||||
|
||||
#### Контейнери
|
||||
Основною одиницею зберігання даних є контейнер, який містить JSON-документи і автоматично індексується для ефективного запиту. Контейнери еластично масштабуються і розподіляються по розділах, які визначаються ключем розділу, заданим користувачем. Ключ розділу є критично важливим для забезпечення оптимальної продуктивності та рівномірного розподілу даних. Наприклад, контейнер може зберігати дані клієнтів, з "customerId" як ключем розділу.
|
||||
|
||||
#### Ключові особливості
|
||||
**Глобальне розподілення**: Увімкніть або вимкніть гео-резервування для міжрегіональної реплікації та багаторегіональних записів для покращення доступності.
|
||||
**Мережа та безпека**: між публічними (всі/вибрані мережі) або приватними кінцевими точками для підключення. Захищені з'єднання з шифруванням TLS 1.2. Підтримує CORS (Обмін ресурсами між джерелами) для контрольованого доступу до ресурсів.
|
||||
**Резервне копіювання та відновлення**: з періодичних, безперервних (7 днів) або безперервних (30 днів) політик резервного копіювання з налаштовуваними інтервалами та зберіганням.
|
||||
**Шифрування даних**: Ключі, що керуються за замовчуванням, або ключі, що керуються клієнтом (CMK) для шифрування (вибір CMK є незворотним).
|
||||
- **Глобальне розповсюдження**: Увімкніть або вимкніть гео-резервування для міжрегіональної реплікації та багаторегіональних записів для покращення доступності.
|
||||
- **Мережа та безпека**: між публічними (всі/вибрані мережі) або приватними кінцевими точками для підключення. Захищені з'єднання з шифруванням TLS 1.2. Підтримує CORS (Cross-Origin Resource Sharing) для контрольованого доступу до ресурсів. Microsoft Defender for Cloud може бути увімкнено. Для встановлення з'єднання ви можете використовувати ключі.
|
||||
- **Резервне копіювання та відновлення**: з періодичних, безперервних (7 днів) або безперервних (30 днів) політик резервного копіювання з налаштовуваними інтервалами та зберіганням.
|
||||
- **Шифрування даних**: Ключі, керовані службою за замовчуванням, або ключі, керовані клієнтом (CMK) для шифрування (вибір CMK є незворотним).
|
||||
|
||||
#### Перерахування
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
@@ -116,9 +129,9 @@ Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "<ResourceGroupName>" -A
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
#### Підключення
|
||||
#### З'єднання
|
||||
|
||||
Для підключення потрібна бібліотека azure-cosmosDB (pip install azure-cosmos). Крім того, кінцева точка та ключ є критично важливими компонентами для встановлення з'єднання.
|
||||
Він має 2 типи ключів: читання-запис (повний) та тільки читання. Вони надають вказаний доступ до всіх баз даних, колекцій та даних всередині облікового запису Cosmos DB. Для підключення потрібна бібліотека azure-cosmosDB (pip install azure-cosmos). Крім того, кінцева точка та ключ є критично важливими компонентами для встановлення з'єднання.
|
||||
```python
|
||||
from azure.cosmos import CosmosClient, PartitionKey
|
||||
|
||||
@@ -183,7 +196,7 @@ container.create_item(item)
|
||||
print("Document inserted.")
|
||||
```
|
||||
### MongoDB
|
||||
MongoDB NoSQL API є документно-орієнтованим API, який використовує формат даних, схожий на JSON, BSON (Binary JSON). Він надає мову запитів з можливостями агрегації, що робить його придатним для роботи зі структурованими, напівструктурованими та неструктурованими даними. Кінцева точка сервісу зазвичай має такий формат:
|
||||
API MongoDB NoSQL є документно-орієнтованим API, який використовує формат даних, схожий на JSON, BSON (Binary JSON). Він надає мову запитів з можливостями агрегації, що робить його придатним для роботи зі структурованими, напівструктурованими та неструктурованими даними. Кінцева точка сервісу зазвичай має такий формат:
|
||||
```bash
|
||||
mongodb://<hostname>:<port>/<database>
|
||||
```
|
||||
@@ -195,14 +208,14 @@ mongodb://<hostname>:<port>/<database>
|
||||
|
||||
#### Ключові особливості типу Request unit (RU)
|
||||
**Глобальне розповсюдження**: Увімкніть або вимкніть гео-резервування для міжрегіональної реплікації та багаторегіональних записів для покращення доступності.
|
||||
**Мережа та безпека**: між публічними (всі/вибрані мережі) або приватними кінцевими точками для підключення. Захищені з'єднання з шифруванням TLS 1.2. Підтримує CORS (Cross-Origin Resource Sharing) для контрольованого доступу до ресурсів.
|
||||
**Мережа та безпека**: між публічними (всі/вибрані мережі) або приватними кінцевими точками для підключення. Захищені з'єднання з шифруванням TLS 1.2. Підтримує CORS (Cross-Origin Resource Sharing) для контрольованого доступу до ресурсів. Для підключення ви можете використовувати ключі.
|
||||
**Резервне копіювання та відновлення**: з періодичних, безперервних (7 днів, безкоштовно) або безперервних (30 днів, платно) політик резервного копіювання з налаштовуваними інтервалами та збереженням.
|
||||
**Шифрування даних**: Ключі, що керуються за замовчуванням, або ключі, що керуються клієнтом (CMK) для шифрування (вибір CMK є незворотним).
|
||||
|
||||
#### Ключові особливості типу vCore кластеру
|
||||
**Глобальне розповсюдження**: Увімкніть репліку для читання в іншому регіоні Azure для високої доступності та підтримки аварійного переключення. Налаштуйте ім'я репліки, регіон і зберігання на шард.
|
||||
**Глобальне розповсюдження**: Увімкніть репліку для читання в іншому регіоні Azure для високої доступності та підтримки відмов. Налаштуйте ім'я репліки, регіон і зберігання на шард.
|
||||
**Мережа та безпека**: Підтримує публічний доступ з призначеними публічними IP-адресами та приватний доступ. Обмежте з'єднання за допомогою правил брандмауера — за замовчуванням публічні IP-адреси не дозволені.
|
||||
**Зашифровані з'єднання**: Зобов'язує використовувати шифрування TLS для безпечної передачі даних.
|
||||
**Зашифровані з'єднання**: Зобов'язує шифрування TLS для безпечної передачі даних.
|
||||
|
||||
#### Перерахування
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
@@ -271,16 +297,17 @@ Get-AzCosmosDBMongoDBRoleDefinition -AccountName <account-name> -ResourceGroupNa
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
#### Підключення
|
||||
#### Connection
|
||||
|
||||
Тут ви можете знайти пароль за допомогою ключів або за допомогою методу, описаного в розділі privesc.
|
||||
Тип MongoDB в CosmoDB має 2 типи ключів: читання-запис (повний) та тільки читання. Вони надають вказаний доступ до всіх баз даних, колекцій та даних всередині облікового запису Cosmos DB. Для пароля ви можете використовувати ключі або метод, описаний у розділі 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}")
|
||||
```
|
||||
Або використовуючи користувача в mongo:
|
||||
```bash
|
||||
mongosh "mongodb://<myUser>:<mySecurePassword>@<account_name>.mongo.cosmos.azure.com:10255/<mymongodatabase>?ssl=true&replicaSet=globaldb&retrywrites=false"
|
||||
```
|
||||
## Посилання
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api](https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api)
|
||||
|
||||
@@ -10,12 +10,9 @@ Logic Apps надає візуальний дизайнер для створе
|
||||
|
||||
При створенні Logic App ви повинні або створити, або зв'язати зовнішній обліковий запис зберігання, який зберігає стан робочого процесу, історію виконання та артефакти. Це зберігання можна налаштувати з діагностичними налаштуваннями для моніторингу та можна захистити обмеженнями доступу до мережі або інтегрувати в віртуальну мережу для контролю вхідного та вихідного трафіку.
|
||||
|
||||
### Керовані ідентичності
|
||||
Logic Apps має **системно призначену керовану ідентичність**, пов'язану з її життєвим циклом. Коли вона активована, вона отримує унікальний об'єкт (принципал) ID, який можна використовувати з Azure RBAC для надання необхідних дозволів для безпечного доступу до інших сервісів Azure. Це усуває необхідність зберігати облікові дані в коді, оскільки ідентичність аутентифікується через Microsoft Entra ID. Крім того, ви також можете використовувати **ідентичності, призначені користувачем**, які можуть бути спільними для кількох ресурсів. Ці ідентичності дозволяють робочим процесам та Logic Apps безпечно взаємодіяти з зовнішніми системами, забезпечуючи централізоване управління необхідними контролями доступу та дозволами через безпекову структуру Azure.
|
||||
|
||||
### Приклади
|
||||
|
||||
- **Автоматизація даних**: Logic Apps можуть автоматизувати **процеси передачі та перетворення даних** у поєднанні з Azure Data Factory. Це корисно для створення масштабованих та надійних конвеєрів даних, які переміщують та перетворюють дані між різними сховищами даних, такими як Azure SQL Database та Azure Blob Storage, що сприяє аналітиці та бізнес-інтелекту.
|
||||
- **Автоматизація даних**: Logic Apps можуть автоматизувати **процеси передачі та трансформації даних** у поєднанні з Azure Data Factory. Це корисно для створення масштабованих та надійних конвеєрів даних, які переміщують та трансформують дані між різними сховищами даних, такими як Azure SQL Database та Azure Blob Storage, що сприяє аналітиці та бізнес-інтелекту.
|
||||
- **Інтеграція з Azure Functions**: Logic Apps можуть працювати разом з Azure Functions для розробки **складних, подієвих додатків, які масштабуються за потреби** та безшовно інтегруються з іншими сервісами Azure. Прикладом використання є використання Logic App для виклику Azure Function у відповідь на певні події, такі як зміни в обліковому записі Azure Storage, що дозволяє динамічно обробляти дані.
|
||||
|
||||
### Візуалізація LogicAPP
|
||||
@@ -24,33 +21,84 @@ Logic Apps має **системно призначену керовану ід
|
||||
|
||||
<figure><img src="../../../images/image (197).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
або перевірити код у розділі "**Перегляд коду Logic app**".
|
||||
або перевірити код у розділі "**Перегляд коду Logic App**".
|
||||
|
||||
### Захист від SSRF
|
||||
|
||||
Навіть якщо ви знайдете **Logic App вразливим до SSRF**, ви не зможете отримати облікові дані з метаданих, оскільки Logic Apps цього не дозволяє.
|
||||
Навіть якщо ви знайдете **Logic App вразливим до SSRF**, ви не зможете отримати доступ до облікових даних з метаданих, оскільки Logic Apps цього не дозволяє.
|
||||
|
||||
Наприклад, щось на кшталт цього не поверне токен:
|
||||
```bash
|
||||
# The URL belongs to a Logic App vulenrable to SSRF
|
||||
curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e974123adf0b98159966644/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_8_oqqsCXc0u2c7hNjtSZmT0uM4Xi3hktw6Uze0O34s' -d '{"url": "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"}' -H "Content-type: application/json" -v
|
||||
```
|
||||
### Варіанти хостингу
|
||||
### Hosting options
|
||||
|
||||
Існує кілька варіантів хостингу:
|
||||
Є кілька варіантів хостингу:
|
||||
|
||||
* **Споживання**
|
||||
- **Багатоорендний**: надає спільні обчислювальні ресурси, працює в публічному хмарі та дотримується моделі ціноутворення "плата за операцію". Це ідеально підходить для легких і економічних навантажень.
|
||||
* **Стандартний**
|
||||
- **План служби робочого процесу**: виділені обчислювальні ресурси з інтеграцією VNET для мережі та стягнення плати за екземпляр плану служби робочого процесу. Він підходить для більш вимогливих навантажень, які потребують більшого контролю.
|
||||
- **Середовище служби додатків V3**: виділені обчислювальні ресурси з повною ізоляцією та масштабованістю. Він також інтегрується з VNET для мережі та використовує модель ціноутворення на основі екземплярів служби додатків у середовищі. Це ідеально підходить для корпоративних додатків, які потребують високої ізоляції.
|
||||
- **Гібридний**: розроблений для локальної обробки та підтримки багатохмарності. Він дозволяє керованим клієнтом обчислювальним ресурсам з доступом до локальної мережі та використовує Kubernetes Event-Driven Autoscaling (KEDA).
|
||||
* **Consumption**
|
||||
- **Multi-tenant**: надає спільні обчислювальні ресурси, працює в публічному хмарі та дотримується моделі ціноутворення "плата за операцію". Це ідеально підходить для легких і економічних навантажень. Це розгортає "Один робочий процес".
|
||||
* **Standard**
|
||||
- **Workflow Service Plan**: виділені обчислювальні ресурси з інтеграцією VNET для мережі та стягує плату за екземпляр плану служби робочого процесу. Він підходить для більш вимогливих навантажень, які потребують більшого контролю.
|
||||
- **App Service Environment V3** виділені обчислювальні ресурси з повною ізоляцією та масштабованістю. Він також інтегрується з VNET для мережі та використовує модель ціноутворення на основі екземплярів App Service в середовищі.
|
||||
- **Hybrid** розроблений для локальної обробки та підтримки багатохмарних рішень. Він дозволяє керованим клієнтом обчислювальним ресурсам з доступом до локальної мережі та використовує Kubernetes Event-Driven Autoscaling (KEDA). Він покладається на Container App Connected Environment.
|
||||
|
||||
### Робочі процеси
|
||||
### Key Features
|
||||
- **Storage**: Logic Apps вимагають зовнішнього облікового запису Azure Storage для зберігання стану робочого процесу, історії виконання… і повинні бути в тій же групі ресурсів, що й Logic App.
|
||||
- **Networking & Security**: Logic Apps можуть бути налаштовані з публічним або приватним доступом. За замовчуванням, додаток відкритий для Інтернету, але може бути інтегрований з Azure Virtual Network для ізольованого з'єднання.
|
||||
- **Application Insights**: Управління продуктивністю додатків (APM) через Azure Monitor Application Insights може бути активовано для відстеження продуктивності, виявлення аномалій та надання аналітики.
|
||||
- **Access Control**: Logic apps підтримують System Managed Identities & User Managed Identities.
|
||||
|
||||
Робочі процеси в Azure Logic Apps є основними автоматизованими процесами, які координують дії між різними службами. Робочий процес починається з тригера — події або розкладу — а потім виконує серію дій, таких як виклик API, обробка даних або взаємодія з іншими службами Azure. Робочі процеси можна визначати візуально за допомогою конструктора або через код (визначення JSON) і керувати ними за допомогою команд, таких як az logic workflow create, az logic workflow show та az logic workflow update. Вони також підтримують управління ідентичністю (через підгрупу ідентичності) для безпечного управління дозволами та інтеграціями з зовнішніми ресурсами.
|
||||
### "Single" Workflows
|
||||
|
||||
### Перерахування
|
||||
**робочий процес** - це структурована послідовність автоматизованих кроків або завдань, які виконують певний процес або мету. Він визначає, як різні дії, умови та рішення взаємодіють для досягнення бажаного результату, спрощуючи операції та зменшуючи ручні зусилля. Робочі процеси можуть інтегрувати кілька систем, викликати події та правила, забезпечуючи узгодженість і ефективність у процесах.
|
||||
|
||||
Azure Logic apps надає функціональність **створення одного робочого процесу без необхідності в самому Logic App**.
|
||||
|
||||
Кожен робочий процес має різні **тригери**. Ці тригери - це кроки, які виконує робочий процес. Кожен тригер має свої параметри, які можуть варіюватися в залежності від типу тригера:
|
||||
- Ім'я з'єднання
|
||||
- **Тип аутентифікації**, який може бути Access Key, Microsoft Entra ID, Integrated Service principal authentication та Logic Apps Managed Identity.
|
||||
|
||||
Тригери також мають різні налаштування:
|
||||
- Перевірка схеми: забезпечує, щоб вхідні дані відповідали попередньо визначеній структурі.
|
||||
- Контроль паралельності: обмежує кількість паралельних виконань.
|
||||
- Умови тригера: умови, які повинні бути виконані перед спрацьовуванням тригера.
|
||||
- Мережа: налаштовує розмір частини для передачі даних і дозволяє подавляти заголовки робочого процесу у відповідях.
|
||||
- **Безпека**: дозволяє **Безпечні Входи/Виходи для приховування** чутливих даних у журналах та виходах.
|
||||
|
||||
**Налаштування та API з'єднання:**
|
||||
|
||||
Робочий процес має різні налаштування, такі як:
|
||||
- Дозволені вхідні IP-адреси: це налаштування дозволяє обмежити, хто може викликати або запускати ваш Logic App. Варіанти: будь-яка IP-адреса, лише інші Logic Apps та конкретні діапазони IP.
|
||||
- Інтеграційний обліковий запис: тут ви можете зв'язати свій Logic App з інтеграційним обліковим записом.
|
||||
- Висока пропускна здатність: це налаштування дозволяє вашому Logic App обробляти більше запитів швидше.
|
||||
- Збереження історії виконання: на скільки довго зберігається історія виконань вашого Logic App.
|
||||
|
||||
Ви можете бачити різні API з'єднання, які має робочий процес. Усередині кожного з цих з'єднань є різні властивості та можливість редагувати API з'єднання, де тип аутентифікації може бути змінений.
|
||||
|
||||
**Історія та версії:**
|
||||
Є можливість доступу до **історії** різних виконань, вона показує Налаштування, Вихід, Параметри та Код.
|
||||
|
||||
Також є можливість доступу до різних **версій** робочого процесу, де ви можете перевірити код і змінити поточний робочий процес на старішу версію.
|
||||
|
||||
**Авторизація:**
|
||||
Azure Logic Apps підтримують **політики авторизації** з Entra ID для захисту тригерів на основі запитів, вимагаючи дійсний токен доступу. Цей токен повинен містити специфічні вимоги:
|
||||
- Видавець (iss) для перевірки постачальника ідентичності
|
||||
- Аудиторія (aud) для забезпечення того, що токен призначений для Logic App
|
||||
- Суб'єкт (sub) для ідентифікації виклику
|
||||
- JWT ID (ідентифікатор JSON Web Token)
|
||||
- Користувацький запит
|
||||
|
||||
Коли запит отримується, Logic Apps перевіряє токен на відповідність цим вимогам і дозволяє виконання лише у разі їх відповідності налаштованій політиці. Це може бути використано для дозволу іншому орендарю викликати робочий процес або відмовити у виклику з інших джерел, наприклад, дозволяючи тригер лише якщо він надходить з https://login.microsoftonline.com/.
|
||||
|
||||
**Ключі доступу:**
|
||||
Коли ви вперше зберігаєте тригер на основі запиту, Logic Apps автоматично створює унікальну кінцеву точку з підписом SAS (створеним з Access Key), який надає дозвіл на виклик робочого процесу. Цей підпис SAS вбудований в URL тригера. Цей ключ може бути згенерований заново, і він надасть новий підпис SAS, але ключі не можуть бути перераховані.
|
||||
|
||||
URL для виклику з 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>
|
||||
|
||||
### Enumeration
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -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 }}
|
||||
|
||||
@@ -146,6 +203,8 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<Lo
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
|
||||
|
||||
### Інтеграційні облікові записи
|
||||
**Інтеграційні облікові записи** - це функція Azure Logic Apps. Інтеграційні облікові записи використовуються для полегшення інтеграцій на рівні підприємства, надаючи розширені можливості B2B, такі як EDI, AS2 та управління XML-схемами. Інтеграційні облікові записи є контейнером в Azure, який зберігає наступні артефакти, що використовуються для Logic Apps:
|
||||
|
||||
@@ -260,7 +319,7 @@ Get-AzIntegrationAccountSchema -ResourceGroupName <resource-group-name> -Integra
|
||||
|
||||
## Підвищення Привілеїв
|
||||
|
||||
Те ж саме, що і підвищення привілеїв логічних додатків:
|
||||
Так само, як і privesc логічних додатків:
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-logic-apps-privesc.md
|
||||
|
||||
Reference in New Issue
Block a user