Translated ['src/pentesting-cloud/azure-security/az-post-exploitation/az

This commit is contained in:
Translator
2025-02-22 12:48:19 +00:00
parent 7f933bfe4c
commit dfa7858a26
4 changed files with 245 additions and 45 deletions

View File

@@ -3,7 +3,7 @@
{{#include ../../../banners/hacktricks-training.md}}
## Logic Apps Database Post Exploitation
Logic Appsに関する詳細情報は、以下を参照してください
Logic Appsに関する詳細情報は、以下を確認してください:
{{#ref}}
../az-services/az-logic-apps.md
@@ -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>"
```
`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`
これらの権限を使用すると、App Service PlanにホストされているLogic Appsを作成または更新できます。これには、HTTPS強制の有効化または無効化などの設定の変更が含まれます。
```bash
@@ -35,7 +74,7 @@ az webapp start/stop/restart \
```
### `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/read` && `Microsoft.Web/sites/config/write`
この権限を持つことで、App Service Plan上でホストされているLogic Appsを含むWebアプリの設定を構成または変更できます。これにより、アプリ設定、接続文字列、認証構成などの変更が可能になります。
この権限を持つことで、App Service Plan上でホストされているLogic Appsを含むWebアプリの設定を構成または変更できます。これにより、アプリ設定、接続文字列、認証設定などの変更が可能になります。
```bash
az logicapp config appsettings set \
--name <logic_app_name> \
@@ -43,7 +82,7 @@ az logicapp config appsettings set \
--settings "<key>=<value>"
```
### `Microsoft.Logic/integrationAccounts/write`
この権限を使用すると、Azure Logic Apps 統合アカウントを作成、更新、または削除できます。これには、マップ、スキーマ、パートナー、契約などの統合アカウントレベルの構成の管理が含まれます。
この権限を使用すると、Azure Logic Apps統合アカウントを作成、更新、または削除できます。これには、マップ、スキーマ、パートナー、契約などの統合アカウントレベルの構成の管理が含まれます。
```bash
az logic integration-account create \
--resource-group <resource_group_name> \
@@ -66,7 +105,7 @@ az logic integration-account batch-configuration create \
}'
```
### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/maps/write`
この権限を持つことで、Azure Logic Apps 統合アカウント内マップを作成または変更できます。マップは、異なるシステムやアプリケーション間でのシームレスな統合を可能にするために、データをある形式から別の形式に変換するために使用されます。
この権限を持つことで、Azure Logic Apps 統合アカウント内マップを作成または変更できます。マップは、異なるシステムやアプリケーション間でのシームレスな統合を可能にするために、データをある形式から別の形式に変換するために使用されます。
```bash
az logic integration-account map create \
--resource-group <resource_group_name> \
@@ -77,7 +116,7 @@ az logic integration-account map create \
--map-content map-content.xslt
```
### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/partners/write`
この権限を使用すると、Azure Logic Apps 統合アカウント内のパートナーを作成または変更できます。パートナーは、ビジネス間 (B2B) ワークフローに参加するエンティティまたはシステムを表します。
この権限を持つことで、Azure Logic Apps 統合アカウント内のパートナーを作成または変更できます。パートナーは、ビジネス間 (B2B) ワークフローに参加するエンティティまたはシステムを表します。
```bash
az logic integration-account partner create \
--resource-group <resource_group_name> \
@@ -96,7 +135,7 @@ az logic integration-account partner create \
}'
```
### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/sessions/write`
この権限を持つことで、Azure Logic Apps インテグレーション アカウント内でセッションを作成または変更できます。セッションはB2B ワークフローでメッセージをグループ化し、定義された期間にわたる関連トランザクションを追跡するために使用されます。
この権限を持つことで、Azure Logic Appsの統合アカウント内でセッションを作成または変更できます。セッションはB2Bワークフローでメッセージをグループ化し、定義された期間にわたる関連する取引を追跡するために使用されます。
```bash
az logic integration-account session create \
--resource-group <resource_group_name> \
@@ -111,9 +150,19 @@ 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 に関連するリソースを削除できます。
この権限を持つ、Azure Logic Apps に関連するリソースを削除できます。

View File

@@ -3,7 +3,7 @@
{{#include ../../../banners/hacktricks-training.md}}
## Logic Apps Privesc
SQL Databaseに関する詳細情報は、以下を確認してください
SQL Databaseに関する詳細情報はを確認してください:
{{#ref}}
../az-services/az-logic-apps.md
@@ -32,6 +32,65 @@ az rest \
--body '{}' \
--headers "Content-Type=application/json"
```
`Microsoft.Logic/workflows/write` を使用すると、Authorization Policy を変更でき、例えば別のテナントにワークフローをトリガーする能力を与えることができます。
```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"
```
これにより、`https://prod-28.centralus.logic.azure.com:443/workflows/....` のようなコールバックURLが返されます。これを次のように実行できます:
```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`)
これらの権限を持つことで、ZIPファイルデプロイメントを使用してLogic Appワークフローをデプロイできます。これらの権限は、アプリの詳細を読み取ったり、公開資格情報にアクセスしたり、変更を加えたり、アプリの構成を一覧表示したりするアクションを可能にします。スタート権限とともに、希望するコンテンツで新しいLogic Appを更新およびデプロイできます。
```bash

View File

@@ -4,13 +4,13 @@
## Azure CosmosDB
**Azure Cosmos DB** は、単桁ミリ秒の応答時間、自動スケーラビリティ、エンタープライズグレードのセキュリティを備えた SLA に裏打ちされた可用性を提供する完全に **管理された NoSQL、リレーショナル、ベクターデータベース** です。これは、ターンキーのマルチリージョンデータ配信、オープンソースの API、人気のある言語向けの SDK、統合されたベクターサポートやシームレスな Azure AI 統合などの AI データベース機能を通じて、アプリ開発を加速します。
**Azure Cosmos DB** は、単桁ミリ秒の応答時間、自動スケーラビリティ、エンタープライズグレードのセキュリティを備えた SLA に裏打ちされた可用性を提供する完全に **管理された NoSQL、リレーショナル、ベクトルデータベース** です。これは、ターンキーのマルチリージョンデータ配信、オープンソースの API、人気のある言語向けの SDK、統合されたベクトルサポートやシームレスな Azure AI 統合などの AI データベース機能を通じて、アプリ開発を加速します。
Azure Cosmos DB は、ドキュメント、リレーショナル、キー-バリュー、グラフ、カラムファミリーデータモデルを使用して現実のデータをモデル化するための複数のデータベース API を提供しており、これらの API は NoSQL、MongoDB、PostgreSQL、Cassandra、Gremlin、Table です。
Azure Cosmos DB は、ドキュメント、リレーショナル、キー-バリュー、グラフ、カラムファミリーデータモデルを使用して現実のデータをモデル化するための複数のデータベース API を提供します。これらの API は NoSQL、MongoDB、PostgreSQL、Cassandra、Gremlin、および Table です。
CosmosDB の重要な側面の一つは Azure Cosmos アカウントです。**Azure Cosmos アカウント** は、データベースへの入り口として機能します。このアカウントは、グローバル配信、一貫性レベル、使用する特定の APINoSQL など)などの主要な設定を決定します。アカウントを通じて、データが複数のリージョンで低遅延アクセスのために利用可能であることを保証するグローバルレプリケーションを構成できます。さらに、パフォーマンスとデータの正確性のバランスを取る一貫性レベルを選択でき、強い一貫性から最終的な一貫性までのオプションがあります。
CosmosDB の重要な側面の一つは Azure Cosmos アカウントです。**Azure Cosmos アカウント** は、データベースへのエントリポイントとして機能します。このアカウントは、グローバル配信、一貫性レベル、使用する特定の APINoSQL など)などの主要な設定を決定します。アカウントを通じて、データが複数のリージョンで低遅延アクセスのために利用可能であることを保証するグローバルレプリケーションを構成できます。さらに、パフォーマンスとデータの正確性のバランスを取る一貫性レベルを選択でき、強い一貫性から最終的な一貫性までのオプションがあります。
Azure Cosmos DB は、**ユーザー割り当てのアイデンティティ** と **システム割り当ての管理アイデンティティ** をサポートしており、これらは自動的に作成され、リソースのライフサイクルに結び付けられています。これにより、適切な役割の割り当てがあるサービスに接続する際に、安全なトークンベースの認証が可能になります。ただし、Cosmos DB には Azure Blob Storage のような外部データソースを直接クエリするための組み込みメカニズムはありません。SQL Server の外部テーブル機能とは異なり、Cosmos DB では、データをそのネイティブクエリ機能でクエリできるようにする前に、Azure Data Factory、データ移行ツール、またはカスタムスクリプトなどの外部ツールを使用してそのコンテナに取り込む必要があります。
Azure Cosmos DB は、リソースのライフサイクルに自動的に作成され、関連付けられる **ユーザー割り当ての ID****システム割り当ての管理 ID** をサポートしてます。ただし、Cosmos DB には Azure Blob Storage のような外部データソースを直接クエリするための組み込みメカニズムはありません。SQL Server の外部テーブル機能とは異なり、Cosmos DB では、データをそのネイティブクエリ機能でクエリできるようにする前に、Azure Data Factory、データ移行ツール、またはカスタムスクリプトなどの外部ツールを使用してそのコンテナに取り込む必要があります。
### NoSQL
Azure Cosmos DB NoSQL API は、JSON をデータ形式として使用するドキュメントベースの API です。これは、JSON オブジェクトをクエリするための SQL に似たクエリ構文を提供し、構造化データおよび半構造化データの操作に適しています。サービスのエンドポイントは次のとおりです:
@@ -18,16 +18,16 @@ Azure Cosmos DB NoSQL API は、JSON をデータ形式として使用するド
https://<Account-Name>.documents.azure.com:443/
```
#### データベース
アカウント内で、1つ以上のデータベースを作成できます。これらはコンテナの論理的なグループとして機能します。データベースはリソース管理とユーザー権限の境界として機能します。データベースは、コンテナ間でプロビジョニングされたスループットを共有するか、個々のコンテナに専用のスループットを割り当てることができます。
アカウント内で、1つ以上のデータベースを作成できます。これらはコンテナの論理的なグループとして機能します。データベースはリソース管理とユーザー権限の境界として機能します。データベースは、複数のコンテナが共有のパフォーマンス容量を使用できるようにするか、コンテナに専用のパワーを与えることができます。
#### コンテナ
データストレージのコアユニットはコンテナであり、JSONドキュメントを保持し、効率的なクエリのために自動的にインデックスされます。コンテナは弾力的にスケーラブルで、ユーザー定義のパーティションキーによって決定されるパーティションに分散されます。パーティションキーは、最適なパフォーマンスと均等なデータ分配を確保するために重要です。たとえば、コンテナは顧客データを保存し、「customerId」をパーティションキーとして使用することがあります。
データストレージのコアユニットはコンテナであり、JSONドキュメントを保持し、効率的なクエリのために自動的にインデックスされます。コンテナは弾力的にスケーラブルで、ユーザー定義のパーティションキーによって決定されるパーティション全体に分散されています。パーティションキーは、最適なパフォーマンスと均等なデータ分配を確保するために重要です。たとえば、コンテナは顧客データを保存し、「customerId」をパーティションキーとして使用することがあります。
#### 主な機能
**グローバル分散**: 地域間レプリケーションのためのGeo-Redundancyを有効または無効にし、可用性を向上させるためのMulti-region Writesを使用します。
**ネットワーキングとセキュリティ**: 公開(すべて/選択されたネットワークまたはプライベートエンドポイント間の接続。TLS 1.2暗号化による安全な接続。リソースへの制御されたアクセスのためにCORSCross-Origin Resource Sharingをサポートします。
**バックアップと復元**: 定期的、継続的7日間、または継続的30日間のバックアップポリシーから、構成可能な間隔と保持期間で選択できます。
**データ暗号化**: デフォルトのサービス管理キーまたは顧客管理キーCMKによる暗号化CMKの選択は元に戻せません)。
- **グローバル配信**: 地域間レプリケーションのためのGeo-Redundancyを有効または無効にし、可用性を向上させるためのMulti-region Writesを使用します。
- **ネットワーキングとセキュリティ**: 公開(すべて/選択されたネットワーク)またはプライベートエンドポイント間の接続。TLS 1.2暗号化による安全な接続。リソースへの制御されたアクセスのためにCORSCross-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 }}
@@ -118,7 +131,8 @@ Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "<ResourceGroupName>" -A
#### 接続
azure-cosmosDBpip install azure-cosmosライブラリが必要です。さらに、エンドポイントとキーは接続を確立するための重要な要素です。
2つのキータイプ、読み書きフルと読み取り専用があります。これらは、Cosmos DBアカウント内のすべてのデータベース、コレクション、およびデータへのアクセスを提供します。
azure-cosmosDBに接続するにはpip install azure-cosmos、ライブラリが必要です。さらに、エンドポイントとキーは接続を確立するための重要なコンポーネントです。
```python
from azure.cosmos import CosmosClient, PartitionKey
@@ -157,7 +171,7 @@ print("All items in the container:")
for item in all_items:
print(item)
```
接続を確立する別の方法は、**DefaultAzureCredential()**を使用することです。権限を持つアカウントでログインaz loginし、それを実行するだけです。この場合、必要な権限を与える役割の割り当てを行う必要があります詳細については参照してください
接続を確立する別の方法は、**DefaultAzureCredential()**を使用することです。必要な権限を持つアカウントでログインaz loginし、それを実行するだけです。この場合、必要な権限を与える役割の割り当てを行う必要があります詳細については参照してください
```python
from azure.identity import DefaultAzureCredential
from azure.cosmos import CosmosClient
@@ -195,9 +209,9 @@ MongoDBにおけるデータストレージのコアユニットはコレクシ
#### リクエストユニットRUタイプの主な機能
**グローバル分散**: 地域間レプリケーションのためのGeo-Redundancyを有効または無効にし、可用性を向上させるためのマルチリージョン書き込みを行います。
**ネットワーキングとセキュリティ**: 公開(すべて/選択されたネットワークまたはプライベートエンドポイント間の接続。TLS 1.2暗号化による安全な接続。リソースへの制御されたアクセスのためにCORSCross-Origin Resource Sharingをサポートします。
**バックアップと復元**: 定期的、継続的7日間、無料、または継続的30日間、有料バックアップポリシーから、設定可能な間隔と保持期間でバックアップを行います。
**データ暗号化**: デフォルトのサービス管理キーまたは顧客管理キーCMKによる暗号化CMKの選択は不可逆です)。
**ネットワーキングとセキュリティ**: 公開(すべて/選択されたネットワークまたはプライベートエンドポイント間の接続。TLS 1.2暗号化による安全な接続。リソースへの制御されたアクセスのためにCORSCross-Origin Resource Sharingをサポートします。接続を行うには、キーを使用できます。
**バックアップと復元**: 定期的、継続的7日間、無料、または継続的30日間、有料バックアップポリシーから、設定可能な間隔と保持期間で選択できます。
**データ暗号化**: 暗号化のためのデフォルトのサービス管理キーまたは顧客管理キーCMKCMKの選択は元に戻せません)。
#### vCoreクラスタータイプの主な機能
**グローバル分散**: 高可用性とフェイルオーバーサポートのために、別のAzureリージョンに読み取りレプリカを有効にします。レプリカ名、リージョン、およびシャードごとのストレージを構成します。
@@ -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
#### 接続
ここでは、パスワードをキーまたは特権昇格セクションで説明されている方法で見つけることができます。
CosmoDBのRU MongoDBタイプには、読み書きフルと読み取り専用の2つのキータイプがあります。これらは、Cosmos DBアカウント内のすべてのデータベース、コレクション、およびデータへのアクセスを提供します。
パスワードには、キーを使用するか、特権昇格セクションで説明されている方法を使用できます。
```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}")
```
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)

View File

@@ -4,14 +4,11 @@
## 基本情報
Azure Logic Appsは、Microsoft Azureが提供するクラウドベースのサービスで、開発者が**さまざまなサービス**、データソース、およびアプリケーションを統合するワークフローを**作成および実行**できるようにします。これらのワークフローは、**ビジネスプロセスを自動化**し、タスクを調整し、異なるプラットフォーム間でデータ統合を実行するように設計されています。
Azure Logic Appsは、Microsoft Azureが提供するクラウドベースのサービスで、開発者が**さまざまなサービス**、データソース、アプリケーションを統合するワークフローを**作成および実行**できるようにします。これらのワークフローは、**ビジネスプロセスを自動化**し、タスクを調整し、異なるプラットフォーム間でデータ統合を実行するように設計されています。
Logic Appsは、**幅広い事前構築されたコネクタ**を使用してワークフローを作成するためのビジュアルデザイナーを提供しており、Office 365、Dynamics CRM、Salesforceなどのさまざまなサービスに簡単に接続して対話できます。また、特定のニーズに合わせたカスタムコネクタを作成することもできます。
Logic Appを作成する際には、ワークフローの状態、実行履歴、およびアーティファクトを保存する外部ストレージアカウントを作成またはリンクする必要があります。このストレージは、監視のための診断設定で構成でき、ネットワークアクセス制限で保護するか、仮想ネットワークに統合して入出力トラフィックを制御できます。
### マネージドアイデンティティ
Logic Appsには、そのライフサイクルに関連付けられた**システム割り当てのマネージドアイデンティティ**があります。有効にすると、他のAzureサービスに安全にアクセスするために必要な権限を付与するためにAzure RBACと共に使用できる一意のオブジェクトプリンシパルIDを受け取ります。これにより、コード内に資格情報を保存する必要がなくなります。なぜなら、アイデンティティはMicrosoft Entra IDを通じて認証されるからです。さらに、**ユーザー割り当てのマネージドアイデンティティ**も使用でき、複数のリソース間で共有できます。これらのアイデンティティにより、ワークフローとLogic Appsが外部システムと安全に対話できるようになり、必要なアクセス制御と権限がAzureのセキュリティフレームワークを通じて中央管理されることが保証されます。
Logic Appを作成する際には、ワークフローの状態、実行履歴、アーティファクトを保存する外部ストレージアカウントを作成またはリンクする必要があります。このストレージは、監視のための診断設定で構成でき、ネットワークアクセス制限で保護するか、仮想ネットワークに統合して入出力トラフィックを制御できます。
### 例
@@ -20,7 +17,7 @@ Logic Appsには、そのライフサイクルに関連付けられた**シス
### LogicAPPの可視化
グラフィックでLogicAppを表示することができます
グラフィックでLogicAppを表示することができます
<figure><img src="../../../images/image (197).png" alt=""><figcaption></figcaption></figure>
@@ -28,7 +25,7 @@ Logic Appsには、そのライフサイクルに関連付けられた**シス
### SSRF保護
たとえ**Logic AppがSSRFに対して脆弱である**ことがわかっても、Logic Appsはそれを許可しないため、メタデータから資格情報にアクセスすることはできません。
たとえ**Logic AppがSSRFに対して脆弱であっても**、Logic Appsはそれを許可しないため、メタデータから資格情報にアクセスすることはできません。
たとえば、次のようなものはトークンを返しません:
```bash
@@ -40,15 +37,66 @@ curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e9741
いくつかのホスティングオプションがあります:
* **消費型**
- **マルチテナント**共有コンピューティングリソースを提供し、パブリッククラウドで運用され、操作ごとの料金モデルに従います。これは軽量でコスト効果の高いワークロードに最適です。
* **標準**
- **ワークフローサービスプラン**ネットワーキングのためのVNET統合を持つ専用コンピューティングリソースで、ワークフローサービスプランインスタンスごとに料金が発生します。これは、より高い制御を必要とする要求の厳しいワークロードに適しています。
- **App Service Environment V3**完全な隔離とスケーラビリティを持つ専用コンピューティングリソースです。また、ネットワーキングのためにVNETと統合され、環境内のApp Serviceインスタンスに基づく料金モデルを使用します。これは、高い隔離を必要とするエンタープライズ規模のアプリケーションに最適です。
- **ハイブリッド**ローカル処理とマルチクラウドサポートのために設計されています。顧客管理のコンピューティングリソースをローカルネットワークアクセスと共に提供し、Kubernetes Event-Driven Autoscaling (KEDA)を利用します。
- **マルチテナント**: 共有コンピューティングリソースを提供し、パブリッククラウドで運用され、操作ごとの料金モデルに従います。これは軽量でコスト効果の高いワークロードに最適です。これにより「シングルワークフロー」が展開されます。
* **スタンダード**
- **ワークフローサービスプラン**: ネットワーキングのためのVNET統合を持つ専用コンピューティングリソースで、ワークフローサービスプランインスタンスごとに料金が発生します。これは、より高い制御を必要とする要求の厳しいワークロードに適しています。
- **アプリサービス環境V3**: 完全な隔離とスケーラビリティを持つ専用コンピューティングリソースです。また、ネットワーキングのためにVNETと統合され、環境内のアプリサービスインスタンスに基づく料金モデルを使用します。
- **ハイブリッド**: ローカル処理とマルチクラウドサポートのために設計されています。顧客管理のコンピューティングリソースをローカルネットワークアクセスと共に許可し、Kubernetes Event-Driven Autoscaling (KEDA)を利用します。これは、コンテナアプリ接続環境に依存しています。
### ワークフロー
### 主な機能
- **ストレージ**: Logic Appsは、ワークフローの状態、実行履歴を保存するために外部のAzure Storageアカウントを必要とし、Logic Appと同じリソースグループ内に存在する必要があります。
- **ネットワーキングとセキュリティ**: Logic Appsは、パブリックまたはプライベートアクセスで構成できます。デフォルトでは、アプリはインターネットに開放されていますが、隔離された接続のためにAzure Virtual Networkと統合できます。
- **アプリケーションインサイト**: Azure Monitor Application Insightsを通じてアプリケーションパフォーマンス管理APMを有効にし、パフォーマンスを追跡し、異常を検出し、分析を提供できます。
- **アクセス制御**: Logic Appsは、システム管理のIDとユーザー管理のIDをサポートしています。
Azure Logic Appsのワークフローは、さまざまなサービス間でアクションを調整するコア自動化プロセスです。ワークフローはトリガーイベントまたはスケジュールから始まり、その後、APIの呼び出し、データの処理、または他のAzureサービスとの対話など、一連のアクションを実行します。ワークフローは、デザイナーを使用して視覚的に定義するか、コードJSON定義を介して定義され、az logic workflow create、az logic workflow show、az logic workflow updateなどのコマンドを通じて管理されます。また、外部リソースとの統合や権限を安全に管理するために、アイデンティティ管理アイデンティティサブグループを介してをサポートしています。
### "シングル" ワークフロー
**ワークフロー**は、特定のプロセスや目的を実行するための自動化されたステップまたはタスクの構造化されたシーケンスです。異なるアクション、条件、決定がどのように相互作用して望ましい結果を達成するかを定義し、操作を合理化し、手動の労力を削減します。ワークフローは、複数のシステムを統合し、イベントやルールをトリガーし、一貫性と効率を確保します。
Azure Logic Appsは、**Logic App自体を必要とせずにシングルワークフローを作成する機能**を提供します。
各ワークフローには異なる**トリガー**があります。これらのトリガーは、ワークフローが従うステップです。各トリガーには、トリガーの種類に応じて異なるパラメータがあります:
- 接続名
- **認証タイプ**: アクセスキー、Microsoft Entra ID、統合サービスプリンシパル認証、Logic Apps管理IDなどがあります。
トリガーにはさまざまな設定もあります:
- スキーマ検証: 受信データが事前定義された構造に従っていることを確認します。
- 同時実行制御: 並行実行の数を制限します。
- トリガー条件: トリガーが発火する前に満たす必要がある条件です。
- ネットワーキング: データ転送のチャンクサイズを構成し、応答内のワークフローヘッダーを抑制することを許可します。
- **セキュリティ**: **セキュア入力/出力を有効にして**、ログや出力内の機密データを隠します。
**設定と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署名を持つ一意のエンドポイントを作成します。このSAS署名は、トリガーのURLに埋め込まれています。このキーは再生成でき、新しいSAS署名が付与されますが、キーはリストできません。
アクセスキーを使用して呼び出すためのURL
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>
### 列挙
@@ -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,8 +203,10 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<Lo
{{#endtab }}
{{#endtabs }}
### インテグレーション アカウント
**インテグレーション アカウント**は、Azure Logic Appsの機能です。インテグレーション アカウントは、EDI、AS2、XMLスキーマ管理などの高度なB2B機能を有効にすることにより、エンタープライズレベルの統合を促進するために使用されます。インテグレーション アカウントは、Logic Appsで使用される以下のアーティファクトを格納するAzureのコンテナです。
**インテグレーション アカウント**は、Azure Logic Appsの機能です。インテグレーション アカウントは、EDI、AS2、XMLスキーマ管理などの高度なB2B機能を有効にすること、エンタープライズレベルの統合を促進ます。インテグレーション アカウントは、Logic Appsで使用される以下のアーティファクトを格納するAzureのコンテナです。
* スキーマ: インテグレーション アカウント内のメッセージを検証および処理するためのXMLスキーマを管理します。
* マップ: インテグレーション ワークフロー内でデータ形式を変換するためのXSLTベースの変換を構成します。