mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-09 22:30:47 -08:00
Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -3,7 +3,7 @@
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## MySQLデータベースの特権昇格
|
||||
SQLデータベースに関する詳細情報は以下を確認してください:
|
||||
SQLデータベースに関する詳細情報は次を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
../az-services/az-mysql.md
|
||||
@@ -11,7 +11,7 @@ SQLデータベースに関する詳細情報は以下を確認してくださ
|
||||
|
||||
### `Microsoft.DBforMySQL/flexibleServers/read` && `Microsoft.DBforMySQL/flexibleServers/write`
|
||||
|
||||
この権限を持つことで、Azure上でMySQL Flexible Serverインスタンスを作成、更新、または削除できます。これには新しいサーバーのプロビジョニング、既存のサーバー構成の変更、またはサーバーの廃止が含まれます。
|
||||
この権限を持つことで、Azure上でMySQL Flexible Serverインスタンスを作成、更新、または削除できます。これには、新しいサーバーのプロビジョニング、既存のサーバー構成の変更、またはサーバーの廃止が含まれます。
|
||||
```bash
|
||||
az mysql flexible-server create \
|
||||
--name <ServerName> \
|
||||
@@ -31,13 +31,23 @@ az mysql flexible-server update \
|
||||
--name <server_name> \
|
||||
--admin-password <password_to_update>
|
||||
```
|
||||
さらに、プライベートエンドポイント以外からアクセスする場合は、パブリックアクセスを有効にする必要があります。有効にするには:
|
||||
パブリックアクセスを有効にする必要があります。非プライベートエンドポイントからアクセスする場合は、これを有効にするには:
|
||||
```bash
|
||||
az mysql flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
|
||||
```
|
||||
### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.DBforMySQL/flexibleServers/backups/read`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
|
||||
|
||||
これらの権限を持つことで、バックアップからMySQLサーバーを復元できます:
|
||||
```bash
|
||||
az mysql flexible-server restore \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <restore_server_name> \
|
||||
--source-server <server_name> \
|
||||
--yes
|
||||
```
|
||||
### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforMySQL/flexibleServers/administrators/write` && `Microsoft.DBforMySQL/flexibleServers/administrators/read`
|
||||
|
||||
この権限を使用すると、MySQL Flexible ServerのAzure Active Directory (AD) 管理者を構成できます。これは、自分自身または他のアカウントをAD管理者として設定することで悪用でき、MySQLサーバーに対する完全な管理権限を付与します。フレキシブルサーバーには、使用するためにユーザー割り当てのマネージドアイデンティティが必要です。
|
||||
この権限を持つことで、MySQL Flexible ServerのAzure Active Directory (AD) 管理者を構成できます。これは、自分自身または他のアカウントをAD管理者として設定することで悪用でき、MySQLサーバーに対する完全な管理権限を付与します。フレキシブルサーバーには、使用するためにユーザー割り当てのマネージドIDが必要です。
|
||||
```bash
|
||||
az mysql flexible-server ad-admin create \
|
||||
--resource-group <ResourceGroupName> \
|
||||
|
||||
@@ -31,9 +31,55 @@ az postgres flexible-server update \
|
||||
--name <server_name> \
|
||||
--admin-password <password_to_update>
|
||||
```
|
||||
パブリックアクセスを有効にする必要があります。非プライベートエンドポイントからアクセスする場合は、これを有効にするには:
|
||||
さらに、権限を使用して、割り当てられたアイデンティティを有効にし、サーバーに接続されたマネージドアイデンティティで操作できます。ここでは、Azure PostgreSQL フレキシブル サーバーがサポートするすべての拡張機能を見つけることができます [https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions](https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions)。これらの拡張機能を使用するには、いくつかのサーバーパラメーター (azure.extensions) を変更する必要があります。たとえば、Azure Storage にアクセスできるマネージドアイデンティティを使用する場合は、次のようになります。
|
||||
|
||||
まず、パラメーターを変更し、割り当てられたアイデンティティが有効になっていることを確認します:
|
||||
```bash
|
||||
az postgres flexible-server parameter set \
|
||||
--resource-group <YourResourceGroupName> \
|
||||
--server-name <YourServerName> \
|
||||
--name azure.extensions \
|
||||
--value "AZURE_STORAGE"
|
||||
|
||||
az postgres flexible-server identity update \
|
||||
--resource-group <YourResourceGroupName> \
|
||||
--server-name <YourServerName> \
|
||||
--system-assigned Enabled
|
||||
```
|
||||
|
||||
```sql
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS azure_storage;
|
||||
|
||||
CREATE EXTERNAL DATA SOURCE ManagedIdentity
|
||||
|
||||
SELECT azure_storage.account_add('<storage-account>', '<storage-key>');
|
||||
|
||||
SELECT *
|
||||
FROM azure_storage.blob_get(
|
||||
'<storage-account>',
|
||||
'<container>',
|
||||
'message.txt',
|
||||
decoder := 'text'
|
||||
) AS t(content text)
|
||||
LIMIT 1;
|
||||
|
||||
```
|
||||
パブリックアクセスを有効にする必要があります。プライベートエンドポイント以外からアクセスしたい場合は、これを有効にするには:
|
||||
```bash
|
||||
az postgres flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
|
||||
```
|
||||
### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.DBforPostgreSQL/flexibleServers/backups/read`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
|
||||
|
||||
この権限を使用すると、バックアップからサーバーを復元できます:
|
||||
```bash
|
||||
az postgres flexible-server restore \
|
||||
--resource-group <RESOURCE_GROUP> \
|
||||
--name <NEW_SERVER_NAME> \
|
||||
--source-server <SOURCE_SERVER_NAME> \
|
||||
--restore-time "<ISO8601_TIMESTAMP>" \
|
||||
--yes
|
||||
|
||||
```
|
||||
### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforPostgreSQL/flexibleServers/administrators/write` && `Microsoft.DBforPostgreSQL/flexibleServers/administrators/read`
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ SQL Databaseに関する詳細情報は、以下を確認してください:
|
||||
|
||||
### `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/write`
|
||||
|
||||
これらの権限を持つユーザーは、Azure SQLサーバーを更新または作成し、管理者資格情報を含む重要な設定を変更することで特権昇格を行うことができます。この権限により、ユーザーはSQLサーバー管理者パスワードを含むサーバーのプロパティを更新でき、不正アクセスやサーバーの制御を可能にします。また、新しいサーバーを作成することもでき、悪意のある目的のためにシャドウインフラストラクチャを導入する可能性があります。特に「Microsoft Entra Authentication Only」が無効になっている環境では、SQLベースの認証を利用して無制限のアクセスを得ることができるため、これは特に重要です。
|
||||
これらの権限を持つユーザーは、Azure SQLサーバーを更新または作成し、管理者資格情報を含む重要な設定を変更することで特権昇格を行うことができます。この権限により、ユーザーはSQLサーバー管理者のパスワードを含むサーバーのプロパティを更新でき、不正アクセスやサーバーの制御を可能にします。また、新しいサーバーを作成することもでき、悪意のある目的のためにシャドウインフラストラクチャを導入する可能性があります。特に「Microsoft Entra Authentication Only」が無効になっている環境では、SQLベースの認証を利用して制限のないアクセスを得ることができるため、これは特に重要です。
|
||||
```bash
|
||||
# Change the server password
|
||||
az sql server update \
|
||||
@@ -35,7 +35,7 @@ az sql server update \
|
||||
--resource-group <resource-group> \
|
||||
--enable-public-network true
|
||||
```
|
||||
さらに、権限を使用して、割り当てられた ID を有効にし、サーバーに添付されたマネージド ID で操作できます。たとえば、ここでは Azure Storage にアクセスできるマネージド ID を使用しています:
|
||||
さらに、権限を使用して、割り当てられた ID を有効にし、サーバーに添付された管理 ID で操作できます。たとえば、ここでは Azure Storage にアクセスできる管理 ID を使用しています:
|
||||
```bash
|
||||
az sql server update \
|
||||
--name <server-name> \
|
||||
@@ -44,6 +44,11 @@ az sql server update \
|
||||
```
|
||||
|
||||
```sql
|
||||
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
|
||||
WITH IDENTITY = 'Managed Identity';
|
||||
GO
|
||||
|
||||
|
||||
CREATE EXTERNAL DATA SOURCE ManagedIdentity
|
||||
WITH (
|
||||
TYPE = BLOB_STORAGE,
|
||||
@@ -99,7 +104,7 @@ az sql server firewall-rule create \
|
||||
|
||||
### `Microsoft.Sql/servers/administrators/write` && `Microsoft.Sql/servers/administrators/read`
|
||||
|
||||
これらの権限を使用すると、Azure SQL Server 環境で SQL データベースにアクセスし、重要な情報を取得することができます。以下のコマンドを使用することで、攻撃者または認可されたユーザーは、自分自身または別のアカウントを Azure AD 管理者として設定できます。「Microsoft Entra Authentication Only」が有効になっている場合、サーバーおよびそのインスタンスにアクセスできます。SQL サーバーの Azure AD 管理者を設定するためのコマンドは次のとおりです:
|
||||
これらの権限を使用すると、Azure SQL Server 環境で SQL データベースにアクセスし、重要な情報を取得することができます。以下のコマンドを使用することで、攻撃者または認可されたユーザーは、自分自身または別のアカウントを Azure AD 管理者として設定できます。「Microsoft Entra Authentication Only」が有効になっている場合、サーバーとそのインスタンスにアクセスできます。SQL サーバーの Azure AD 管理者を設定するためのコマンドは次のとおりです:
|
||||
```bash
|
||||
az sql server ad-admin create \
|
||||
--server <server_name> \
|
||||
@@ -121,4 +126,20 @@ az sql server azure-ad-only-auth disable \
|
||||
--server <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
```
|
||||
### Microsoft.Sql/servers/databases/dataMaskingPolicies/write
|
||||
SQLデータベースのデータマスキングポリシーを変更(または無効化)します。
|
||||
```bash
|
||||
az rest --method put \
|
||||
--uri "https://management.azure.com/subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group>/providers/Microsoft.Sql/servers/<your-server>/databases/<your-database>/dataMaskingPolicies/Default?api-version=2021-11-01" \
|
||||
--body '{
|
||||
"properties": {
|
||||
"dataMaskingState": "Disable"
|
||||
}
|
||||
}'
|
||||
```
|
||||
### Row Level Securityの削除
|
||||
adminとしてログインしている場合、admin自身および他のユーザーのポリシーを削除できます。
|
||||
```sql
|
||||
DROP SECURITY POLICY [Name_of_policy];
|
||||
```
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -4,13 +4,15 @@
|
||||
|
||||
## 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 アカウント** は、データベースへの入り口として機能します。このアカウントは、グローバル配信、一貫性レベル、および使用する特定の API(NoSQL など)などの主要な設定を決定します。アカウントを通じて、データが複数のリージョンで低遅延アクセスのために利用可能であることを保証するグローバルレプリケーションを構成できます。さらに、パフォーマンスとデータの正確性のバランスを取る一貫性レベルを選択でき、強い一貫性から最終的な一貫性までのオプションがあります。
|
||||
CosmosDB の重要な側面の一つは Azure Cosmos アカウントです。**Azure Cosmos アカウント** は、データベースへの入り口として機能します。このアカウントは、グローバル配信、一貫性レベル、使用する特定の API(NoSQL など)などの主要な設定を決定します。アカウントを通じて、データが複数のリージョンで低遅延アクセスのために利用可能であることを保証するグローバルレプリケーションを構成できます。さらに、パフォーマンスとデータの正確性のバランスを取る一貫性レベルを選択でき、強い一貫性から最終的な一貫性までのオプションがあります。
|
||||
|
||||
### NoSQL (sql)
|
||||
Azure Cosmos DB は、**ユーザー割り当てのアイデンティティ** と **システム割り当ての管理アイデンティティ** をサポートしており、これらは自動的に作成され、リソースのライフサイクルに結び付けられています。これにより、適切な役割の割り当てがあるサービスに接続する際に、安全なトークンベースの認証が可能になります。ただし、Cosmos DB には Azure Blob Storage のような外部データソースを直接クエリするための組み込みメカニズムはありません。SQL Server の外部テーブル機能とは異なり、Cosmos DB では、データをそのネイティブクエリ機能でクエリできるようにする前に、Azure Data Factory、データ移行ツール、またはカスタムスクリプトなどの外部ツールを使用してそのコンテナに取り込む必要があります。
|
||||
|
||||
### NoSQL
|
||||
Azure Cosmos DB NoSQL API は、JSON をデータ形式として使用するドキュメントベースの API です。これは、JSON オブジェクトをクエリするための SQL に似たクエリ構文を提供し、構造化データおよび半構造化データの操作に適しています。サービスのエンドポイントは次のとおりです:
|
||||
```bash
|
||||
https://<Account-Name>.documents.azure.com:443/
|
||||
@@ -19,7 +21,13 @@ https://<Account-Name>.documents.azure.com:443/
|
||||
アカウント内で、1つ以上のデータベースを作成できます。これらはコンテナの論理的なグループとして機能します。データベースは、リソース管理とユーザー権限の境界として機能します。データベースは、コンテナ間でプロビジョニングされたスループットを共有するか、個々のコンテナに専用のスループットを割り当てることができます。
|
||||
|
||||
#### コンテナ
|
||||
データストレージのコアユニットはコンテナであり、JSONドキュメントを保持し、効率的なクエリのために自動的にインデックスが付けられます。コンテナは弾力的にスケーラブルで、ユーザー定義のパーティションキーによって決定されるパーティションに分散されます。パーティションキーは、最適なパフォーマンスと均等なデータ分配を確保するために重要です。たとえば、コンテナは顧客データを保存し、「customerId」をパーティションキーとして使用することがあります。
|
||||
データストレージのコアユニットはコンテナであり、JSONドキュメントを保持し、効率的なクエリのために自動的にインデックスされます。コンテナは弾力的にスケーラブルで、ユーザー定義のパーティションキーによって決定されるパーティションに分散されます。パーティションキーは、最適なパフォーマンスと均等なデータ分配を確保するために重要です。たとえば、コンテナは顧客データを保存し、「customerId」をパーティションキーとして使用することがあります。
|
||||
|
||||
#### 主な機能
|
||||
**グローバル分散**: 地域間レプリケーションのためのGeo-Redundancyを有効または無効にし、可用性を向上させるためのMulti-region Writesを使用します。
|
||||
**ネットワーキングとセキュリティ**: 公開(すべて/選択されたネットワーク)またはプライベートエンドポイント間の接続。TLS 1.2暗号化による安全な接続。リソースへの制御されたアクセスのためにCORS(Cross-Origin Resource Sharing)をサポートします。
|
||||
**バックアップと復元**: 定期的、継続的(7日間)、または継続的(30日間)のバックアップポリシーから、構成可能な間隔と保持期間で選択できます。
|
||||
**データ暗号化**: デフォルトのサービス管理キーまたは顧客管理キー(CMK)による暗号化(CMKの選択は元に戻せません)。
|
||||
|
||||
#### 列挙
|
||||
|
||||
@@ -42,21 +50,21 @@ az cosmosdb identity show --resource-group <ResourceGroupName> --name <AccountNa
|
||||
|
||||
|
||||
# CosmoDB (NoSQL)
|
||||
## List the SQL databases under an Azure Cosmos DB account.
|
||||
## List the NoSQL databases under an Azure Cosmos DB account.
|
||||
az cosmosdb sql database list --resource-group <ResourceGroupName> --account-name <AccountName>
|
||||
## List the SQL containers under an Azure Cosmos DB SQL database.
|
||||
## List the NoSQL containers under an Azure Cosmos DB NoSQL database.
|
||||
az cosmosdb sql container list --account-name <AccountName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
|
||||
## List all SQL role assignments under an Azure Cosmos DB
|
||||
## List all NoSQL role assignments under an Azure Cosmos DB
|
||||
az cosmosdb sql role assignment list --resource-group <ResourceGroupName> --account-name <AccountName>
|
||||
## List all SQL role definitions under an Azure Cosmos DB
|
||||
## List all NoSQL role definitions under an Azure Cosmos DB
|
||||
az cosmosdb sql role definition list --resource-group <ResourceGroupName> --account-name <AccountName>
|
||||
|
||||
## List the SQL stored procedures under an Azure Cosmos DB
|
||||
## List the NoSQL stored procedures under an Azure Cosmos DB
|
||||
az cosmosdb sql stored-procedure list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
## List the SQL triggers under an Azure Cosmos DB SQL container.
|
||||
## List the NoSQL triggers under an Azure Cosmos DB NoSQL container.
|
||||
az cosmosdb sql trigger list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
## List the SQL user defined functions under an Azure Cosmos DB SQL container
|
||||
## List the NoSQL user defined functions under an Azure Cosmos DB NoSQL container
|
||||
az cosmosdb sql user-defined-function list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
|
||||
```
|
||||
@@ -110,7 +118,7 @@ Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "<ResourceGroupName>" -A
|
||||
|
||||
#### 接続
|
||||
|
||||
azure-cosmosDBに接続するには (pip install azure-cosmos) ライブラリが必要です。さらに、エンドポイントとキーは接続を確立するための重要な要素です。
|
||||
azure-cosmosDB(pip install azure-cosmos)ライブラリが必要です。さらに、エンドポイントとキーは接続を確立するための重要な要素です。
|
||||
```python
|
||||
from azure.cosmos import CosmosClient, PartitionKey
|
||||
|
||||
@@ -149,7 +157,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
|
||||
@@ -183,7 +191,18 @@ mongodb://<hostname>:<port>/<database>
|
||||
MongoDBでは、インスタンス内に1つ以上のデータベースを作成できます。各データベースはコレクションの論理的なグループとして機能し、リソースの組織と管理の境界を提供します。データベースは、異なるアプリケーションやプロジェクトのためにデータを論理的に分離し、管理するのに役立ちます。
|
||||
|
||||
#### コレクション
|
||||
MongoDBにおけるデータストレージのコアユニットはコレクションであり、ドキュメントを保持し、効率的なクエリと柔軟なスキーマ設計のために設計されています。コレクションは弾力的にスケーラブルで、分散セットアップ内の複数のノードにわたって高スループットの操作をサポートできます。
|
||||
MongoDBにおけるデータストレージのコアユニットはコレクションであり、ドキュメントを保持し、効率的なクエリと柔軟なスキーマ設計のために設計されています。コレクションは弾力的にスケーラブルで、分散セットアップ内の複数のノードで高スループットの操作をサポートできます。
|
||||
|
||||
#### リクエストユニット(RU)タイプの主な機能
|
||||
**グローバル分散**: 地域間レプリケーションのためのGeo-Redundancyを有効または無効にし、可用性を向上させるためのマルチリージョン書き込みを行います。
|
||||
**ネットワーキングとセキュリティ**: 公開(すべて/選択されたネットワーク)またはプライベートエンドポイント間の接続。TLS 1.2暗号化による安全な接続。リソースへの制御されたアクセスのためにCORS(Cross-Origin Resource Sharing)をサポートします。
|
||||
**バックアップと復元**: 定期的、継続的(7日間、無料)、または継続的(30日間、有料)バックアップポリシーから、設定可能な間隔と保持期間でバックアップを行います。
|
||||
**データ暗号化**: デフォルトのサービス管理キーまたは顧客管理キー(CMK)による暗号化(CMKの選択は不可逆です)。
|
||||
|
||||
#### vCoreクラスタータイプの主な機能
|
||||
**グローバル分散**: 高可用性とフェイルオーバーサポートのために、別のAzureリージョンに読み取りレプリカを有効にします。レプリカ名、リージョン、およびシャードごとのストレージを構成します。
|
||||
**ネットワーキングとセキュリティ**: 割り当てられたパブリックIPとプライベートアクセスを持つパブリックアクセスをサポートします。ファイアウォールルールを使用して接続を制限します—デフォルトでは、パブリックIPは許可されていません。
|
||||
**暗号化された接続**: 安全なデータ送信のためにTLS暗号化を強制します。
|
||||
|
||||
#### 列挙
|
||||
|
||||
|
||||
@@ -4,18 +4,23 @@
|
||||
|
||||
## 基本情報
|
||||
|
||||
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 Appsは、Azure Data Factoryと組み合わせて**データ転送および変換プロセスを自動化**できます。これは、Azure SQL DatabaseやAzure Blob Storageなどのさまざまなデータストア間でデータを移動および変換するスケーラブルで信頼性の高いデータパイプラインを作成するのに役立ち、分析およびビジネスインテリジェンス操作を支援します。
|
||||
- **Azure Functionsとの統合**: Logic Appsは、Azure Functionsと連携して**必要に応じてスケールする洗練されたイベント駆動型アプリケーションを開発**し、他のAzureサービスとシームレスに統合できます。使用例としては、Logic Appを使用して、Azure Storageアカウントの変更などの特定のイベントに応じてAzure Functionをトリガーすることが挙げられ、動的なデータ処理を可能にします。
|
||||
- **データパイプラインの自動化**: Logic Appsは、Azure Data Factoryと組み合わせて**データ転送および変換プロセス**を自動化できます。これは、Azure SQL DatabaseやAzure Blob Storageなどのさまざまなデータストア間でデータを移動および変換するスケーラブルで信頼性の高いデータパイプラインを作成するのに役立ち、分析およびビジネスインテリジェンス操作を支援します。
|
||||
- **Azure Functionsとの統合**: Logic Appsは、Azure Functionsと連携して、**必要に応じてスケールする洗練されたイベント駆動型アプリケーションを開発**し、他のAzureサービスとシームレスに統合できます。使用例としては、Logic Appを使用して、Azure Storageアカウントの変更などの特定のイベントに応じてAzure Functionをトリガーし、動的なデータ処理を可能にすることが挙げられます。
|
||||
|
||||
### LogicAPPの可視化
|
||||
|
||||
グラフィックでLogicAppを表示することができます:
|
||||
グラフィックスでLogicAppを表示することができます:
|
||||
|
||||
<figure><img src="../../../images/image (197).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -23,7 +28,7 @@ Logic Appsは、**幅広い事前構築されたコネクタ**を使用してワ
|
||||
|
||||
### SSRF保護
|
||||
|
||||
たとえ**Logic AppがSSRFに対して脆弱であっても**、Logic Appsはそれを許可しないため、メタデータから資格情報にアクセスすることはできません。
|
||||
たとえ**Logic AppがSSRFに対して脆弱である**ことがわかっても、Logic Appsはそれを許可しないため、メタデータから資格情報にアクセスすることはできません。
|
||||
|
||||
たとえば、次のようなものはトークンを返しません:
|
||||
```bash
|
||||
@@ -34,12 +39,16 @@ curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e9741
|
||||
|
||||
いくつかのホスティングオプションがあります:
|
||||
|
||||
* **消費**
|
||||
- **マルチテナント**: 共有コンピューティングリソースを提供し、パブリッククラウドで運営され、操作ごとの料金モデルに従います。これは軽量でコスト効果の高いワークロードに最適です。
|
||||
* **消費型**
|
||||
- **マルチテナント**:共有コンピューティングリソースを提供し、パブリッククラウドで運用され、操作ごとの料金モデルに従います。これは軽量でコスト効果の高いワークロードに最適です。
|
||||
* **標準**
|
||||
- **ワークフローサービスプラン**: ネットワーキングのためのVNET統合を持つ専用コンピューティングリソースで、ワークフローサービスプランインスタンスごとに料金が発生します。これは、より高い制御を必要とする要求の厳しいワークロードに適しています。
|
||||
- **アプリサービス環境 V3**: 完全な隔離とスケーラビリティを持つ専用コンピューティングリソースです。また、ネットワーキングのためにVNETと統合され、環境内のアプリサービスインスタンスに基づく料金モデルを使用します。これは、高い隔離を必要とするエンタープライズ規模のアプリケーションに最適です。
|
||||
- **ハイブリッド**: ローカル処理とマルチクラウドサポートのために設計されています。顧客管理のコンピューティングリソースをローカルネットワークアクセスと共に提供し、Kubernetes Event-Driven Autoscaling (KEDA)を利用します。
|
||||
- **ワークフローサービスプラン**:ネットワーキングのためのVNET統合を持つ専用コンピューティングリソースで、ワークフローサービスプランインスタンスごとに料金が発生します。これは、より高い制御を必要とする要求の厳しいワークロードに適しています。
|
||||
- **App Service Environment V3**:完全な隔離とスケーラビリティを持つ専用コンピューティングリソースです。また、ネットワーキングのためにVNETと統合され、環境内のApp Serviceインスタンスに基づく料金モデルを使用します。これは、高い隔離を必要とするエンタープライズ規模のアプリケーションに最適です。
|
||||
- **ハイブリッド**:ローカル処理とマルチクラウドサポートのために設計されています。顧客管理のコンピューティングリソースをローカルネットワークアクセスと共に提供し、Kubernetes Event-Driven Autoscaling (KEDA)を利用します。
|
||||
|
||||
### ワークフロー
|
||||
|
||||
Azure Logic Appsのワークフローは、さまざまなサービス間でアクションを調整するコア自動化プロセスです。ワークフローはトリガー(イベントまたはスケジュール)から始まり、その後、APIの呼び出し、データの処理、または他のAzureサービスとの対話など、一連のアクションを実行します。ワークフローは、デザイナーを使用して視覚的に定義するか、コード(JSON定義)を介して定義され、az logic workflow create、az logic workflow show、az logic workflow updateなどのコマンドを通じて管理されます。また、外部リソースとの統合や権限を安全に管理するために、アイデンティティ管理(アイデンティティサブグループを介して)をサポートしています。
|
||||
|
||||
### 列挙
|
||||
|
||||
@@ -137,17 +146,17 @@ 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ベースの変換を構成します。
|
||||
* アセンブリ:ロジックとデータ処理を効率化するためにインテグレーションアカウントのアセンブリを管理します。
|
||||
* 証明書:メッセージの暗号化と署名のための証明書を扱い、安全な通信を確保します。
|
||||
* パートナー:B2B取引のための取引先情報を管理し、シームレスな統合を可能にします。
|
||||
* 合意:取引先とのデータ交換のためのルールと設定を構成します(例:EDI、AS2)。
|
||||
* バッチ構成:メッセージを効率的にグループ化して処理するためのバッチ処理構成を管理します。
|
||||
* RosettaNet PIP:B2B通信を標準化するためのRosettaNetパートナーインターフェースプロセス(PIP)を構成します。
|
||||
* スキーマ: インテグレーション アカウント内のメッセージを検証および処理するためのXMLスキーマを管理します。
|
||||
* マップ: インテグレーション ワークフロー内でデータ形式を変換するためのXSLTベースの変換を構成します。
|
||||
* アセンブリ: ロジックとデータ処理を効率化するためにインテグレーション アカウントのアセンブリを管理します。
|
||||
* 証明書: メッセージの暗号化と署名のための証明書を扱い、安全な通信を確保します。
|
||||
* パートナー: B2B取引のための取引先情報を管理し、シームレスな統合を可能にします。
|
||||
* 合意: 取引先とのデータ交換のためのルールと設定を構成します(例: EDI、AS2)。
|
||||
* バッチ構成: メッセージを効率的にグループ化および処理するためのバッチ処理構成を管理します。
|
||||
* RosettaNet PIP: B2B通信を標準化するためのRosettaNetパートナーインターフェースプロセス(PIP)を構成します。
|
||||
|
||||
#### 列挙
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Azure MySQL
|
||||
Azure Database for MySQL は、MySQL Community Edition に基づいた完全管理型リレーショナルデータベースサービスであり、さまざまなアプリケーションニーズに対してスケーラビリティ、セキュリティ、および柔軟性を提供するように設計されています。2つの異なるデプロイメントモデルがあります:
|
||||
Azure Database for MySQL は、MySQL Community Edition に基づいた完全管理型リレーショナルデータベースサービスで、さまざまなアプリケーションニーズに対してスケーラビリティ、セキュリティ、柔軟性を提供するように設計されています。2つの異なるデプロイメントモデルがあります:
|
||||
|
||||
* **Single Server** (引退の道を歩んでいます):
|
||||
- コスト効率が高く、管理が容易な MySQL デプロイメントに最適化されています。
|
||||
@@ -11,15 +11,15 @@ Azure Database for MySQL は、MySQL Community Edition に基づいた完全管
|
||||
- 予測可能なワークロードを持つアプリケーションに最適です。
|
||||
* **Flexible Server**:
|
||||
- データベース管理と構成に対するより多くの制御を提供します。
|
||||
- 高可用性(同ゾーンおよびゾーン冗長)をサポートします。
|
||||
- 高可用性をサポートします(同ゾーンおよびゾーン冗長)。
|
||||
- 弾力的なスケーリング、パッチ管理、ワークロード最適化の機能があります。
|
||||
- コスト削減のための停止/開始機能を提供します。
|
||||
|
||||
### 主な機能
|
||||
* **サーバー管理**: **ad-admin** 機能により、MySQL サーバーの Azure Active Directory (AAD) 管理者を管理でき、AAD 認証情報を介して管理アクセスを制御します。一方、**identity** 機能は、Azure Managed Identities の割り当てと管理を可能にし、Azure リソースへの安全な認証なしのアクセスを提供します。
|
||||
* **サーバー管理**: **ad-admin** 機能により、MySQL サーバーの Azure Entra ID 管理者を管理でき、Entra ID 認証情報を介して管理アクセスを制御できます。Mysql は、認証情報なしで認証を行うために使用されるユーザー管理アイデンティティをサポートしており、他のサービスによって使用されることがあります。
|
||||
* **ライフサイクル管理**: サーバーの開始または停止、フレキシブルサーバーインスタンスの削除、構成変更を迅速に適用するためのサーバーの再起動、オートメーションスクリプトを進める前に特定の条件を満たすことを確認するための待機オプションがあります。
|
||||
* **セキュリティとネットワーキング**: セキュアなデータベースアクセスのためのサーバーファイアウォールルールを管理し、必要に応じて仮想ネットワーク構成を切り離すことができます。
|
||||
* **データ保護とバックアップ**: データ回復のためのフレキシブルサーバーのバックアップを管理するオプション、異なるリージョンでサーバーを回復するためのジオリストア、外部使用のためのサーバーバックアップのエクスポート(プレビュー中)、特定の時点にバックアップからサーバーを復元するオプションが含まれています。
|
||||
* **セキュリティとネットワーキング**: 特定のパブリック IP アドレスのみを許可するファイアウォールルールを通じて接続を制限することでサーバーを保護するか、サーバーを仮想ネットワークに統合するプライベートエンドポイントを使用します。すべての接続は TLS 1.2 暗号化で保護されています。データベース、バックアップ、およびログは、デフォルトでサービス管理キーまたはカスタムキーを使用して静止状態で暗号化されています。
|
||||
* **データ保護とバックアップ**: データ回復のためのフレキシブルサーバーのバックアップを管理するオプション、異なるリージョンでサーバーを回復するためのジオリストア、外部使用のためのサーバーバックアップのエクスポート(プレビュー中)、および特定の時点にバックアップからサーバーを復元するオプションが含まれています。
|
||||
|
||||
### 列挙
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# Az - PostgreSQL データベース
|
||||
# Az - PostgreSQL Databases
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Azure PostgreSQL
|
||||
**Azure Database for PostgreSQL** は、**PostgreSQL** Community Edition に基づいた完全管理型の **リレーショナルデータベースサービス** です。スケーラビリティ、セキュリティ、柔軟性を提供し、多様なアプリケーションニーズに対応するよう設計されています。Azure MySQL と同様に、PostgreSQL には二つのデプロイメントモデルがあります:
|
||||
**Azure Database for PostgreSQL** は、**PostgreSQL** Community Edition に基づいた完全管理型の **リレーショナルデータベースサービス** です。さまざまなアプリケーションニーズに対してスケーラビリティ、セキュリティ、柔軟性を提供するように設計されています。Azure MySQL と同様に、PostgreSQL には 2 つのデプロイメントモデルがあります。
|
||||
|
||||
* **Single Server** (退役パス上):
|
||||
* **Single Server** (引退パス上):
|
||||
- シンプルでコスト効果の高い PostgreSQL デプロイメントに最適化されています。
|
||||
- 自動バックアップ、基本的な監視、高可用性を特徴としています。
|
||||
- 予測可能なワークロードを持つアプリケーションに最適です。
|
||||
@@ -15,16 +15,17 @@
|
||||
- 弾力的なスケーリング、自動メンテナンス、コスト削減機能を特徴としています。
|
||||
- コストを最適化するためにサーバーの開始と停止が可能です。
|
||||
|
||||
### 主な機能
|
||||
### Key Features
|
||||
|
||||
* **カスタムメンテナンスウィンドウ**: 中断を最小限に抑えるために更新をスケジュールします。
|
||||
* **アクティブモニタリング**: データベースのパフォーマンスを追跡し改善するための詳細なメトリクスとログにアクセスします。
|
||||
* **サーバーの停止/開始**: ユーザーはサーバーを停止および開始できます。
|
||||
* **自動バックアップ**: 最大35日間の保持期間を設定可能な組み込みの毎日のバックアップ。
|
||||
* **ロールベースのアクセス**: Azure Active Directory を通じてユーザー権限と管理アクセスを制御します。
|
||||
* **セキュリティとネットワーキング**: セキュアなデータベースアクセスのためにサーバーファイアウォールルールを管理し、必要に応じて仮想ネットワーク構成を切り離すことができます。
|
||||
* **Custom Maintenance Windows**: 中断を最小限に抑えるために更新をスケジュールします。
|
||||
* **Active Monitoring**: データベースのパフォーマンスを追跡し改善するための詳細なメトリクスとログにアクセスします。
|
||||
* **Stop/Start Server**: ユーザーはサーバーを停止および開始できます。
|
||||
* **Automatic Backups**: 最大 35 日間の保持期間を設定可能な組み込みの毎日のバックアップ。
|
||||
* **Role-Based Access**: Azure Active Directory を通じてユーザー権限と管理アクセスを制御します。
|
||||
* **Security and Networking**: セキュアなデータベースアクセスのためにサーバーファイアウォールルールを管理し、必要に応じて仮想ネットワーク構成を切り離すことができます。
|
||||
* **Managed Identities**: サーバーが資格情報を保存せずに他の Azure サービスと安全に認証できるようにします。これは、システム割り当ての管理された ID にアクセスできる他のサービスによってアクセスされるユーザー割り当ての管理された ID です。
|
||||
|
||||
### 列挙
|
||||
### Enumeration
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -122,7 +123,7 @@ psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser
|
||||
../az-privilege-escalation/az-postgresql-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## ポストエクスプロイテーション
|
||||
## ポストエクスプロイト
|
||||
|
||||
{{#ref}}
|
||||
../az-post-exploitation/az-postgresql-post-exploitation.md
|
||||
|
||||
@@ -4,150 +4,98 @@
|
||||
|
||||
## Azure SQL
|
||||
|
||||
Azure SQLは、**Azureクラウド内のSQL Serverデータベースエンジン**を使用する、管理された、安全で、インテリジェントな製品のファミリーです。これにより、サーバーの物理的な管理を心配する必要がなく、データの管理に集中できます。
|
||||
Azure SQLは、**Azureクラウド内のSQL Serverデータベースエンジン**を使用する管理された、安全で、インテリジェントな製品のファミリーです。これにより、サーバーの物理的な管理を心配する必要がなく、データの管理に集中できます。
|
||||
|
||||
Azure SQLは、4つの主要な提供物で構成されています:
|
||||
|
||||
1. **Azure SQL Server**: Azure SQL Serverは、SQL Serverデータベースの展開と管理を簡素化する管理されたリレーショナルデータベースサービスで、組み込みのセキュリティとパフォーマンス機能を備えています。
|
||||
2. **Azure SQL Database**: これは**完全に管理されたデータベースサービス**で、Azureクラウド内に個別のデータベースをホストできます。独自のデータベースパターンを学習し、カスタマイズされた推奨事項と自動調整を提供する組み込みのインテリジェンスを提供します。
|
||||
3. **Azure SQL Managed Instance**: これは、より大規模な、全体のSQL Serverインスタンススコープの展開向けです。最新のSQL Serverオンプレミス(Enterprise Edition)データベースエンジンとのほぼ100%の互換性を提供し、一般的なセキュリティの懸念に対処するネイティブの仮想ネットワーク(VNet)実装を提供し、オンプレミスのSQL Server顧客に有利なビジネスモデルを提供します。
|
||||
4. **Azure SQL Server on Azure VMs**: これはInfrastructure as a Service(IaaS)で、オンプレミスで実行されているサーバーのように、**オペレーティングシステムとSQL Serverインスタンスを制御したい**マイグレーションに最適です。
|
||||
1. **Azure SQL Server**: SQL Serverデータベースの**展開と管理**に必要なサーバーです。
|
||||
2. **Azure SQL Database**: これは**完全管理されたデータベースサービス**で、Azureクラウド内に個別のデータベースをホストできます。
|
||||
3. **Azure SQL Managed Instance**: これは、より大規模な、全体のSQL Serverインスタンススコープの展開用です。
|
||||
4. **Azure SQL Server on Azure VMs**: これは、**オペレーティングシステム**とSQL Serverインスタンスを**制御したい**アーキテクチャに最適です。
|
||||
|
||||
### Azure SQL Server
|
||||
### SQL Server Security Features
|
||||
|
||||
Azure SQL Serverは、データ操作にTransact-SQLを使用し、エンタープライズレベルのシステムを処理するために構築されたリレーショナルデータベース管理システム(RDBMS)です。パフォーマンス、セキュリティ、スケーラビリティ、さまざまなMicrosoftアプリケーションとの統合のための堅牢な機能を提供します。Azure SQLデータベースはこのサーバーに依存しており、これらはこのサーバー上に構築されており、ユーザーがデータベースにアクセスするためのエントリポイントです。
|
||||
**ネットワークアクセス:**
|
||||
|
||||
#### ネットワーク
|
||||
- 公開エンドポイント(特定のネットワークへのアクセスを制限できます)。
|
||||
- プライベートエンドポイント。
|
||||
- ドメイン名に基づいて接続を制限することも可能です。
|
||||
- Azureサービスがアクセスできるようにすることも可能です(ポータル内のクエリエディタを使用するためや、Azure VMが接続できるようにするため)。
|
||||
|
||||
**ネットワーク接続**: 公開エンドポイントまたはプライベートエンドポイントを介してアクセスを有効にするかどうかを選択します。「アクセスなし」を選択した場合、手動で構成されるまでエンドポイントは作成されません:
|
||||
- アクセスなし: エンドポイントは構成されず、手動で設定されるまで受信接続がブロックされます。
|
||||
- 公開エンドポイント: 公共のインターネットを介して直接接続を許可し、ファイアウォールルールやその他のセキュリティ構成の対象となります。
|
||||
- プライベートエンドポイント: プライベートネットワークへの接続を制限します。
|
||||
**認証方法:**
|
||||
|
||||
**接続ポリシー**: クライアントがSQLデータベースサーバーと通信する方法を定義します:
|
||||
- デフォルト: Azure内からのすべてのクライアント接続にリダイレクトポリシーを使用し(プライベートエンドポイントを使用しているものを除く)、Azure外からの接続にはプロキシポリシーを使用します。
|
||||
- プロキシ: すべてのクライアント接続をAzure SQL Databaseゲートウェイを介してルーティングします。
|
||||
- リダイレクト: クライアントはデータベースをホストしているノードに直接接続します。
|
||||
- Microsoft **Entra-only**認証: サービスにアクセスするEntraプリンシパルを指定する必要があります。
|
||||
- **SQLとMicrosoft Entra**の両方の認証: ユーザー名とパスワードによる従来のSQL認証とMicrosoft Entraの併用。
|
||||
- **SQLのみ**の認証: データベースユーザーを介してのみアクセスを許可します。
|
||||
|
||||
#### 認証方法
|
||||
Azure SQLは、データベースアクセスを保護するためのさまざまな認証方法をサポートしています:
|
||||
SQL認証が許可されている場合、管理者ユーザー(ユーザー名 + パスワード)を指定する必要があり、Entra ID認証が選択されている場合は、管理アクセスを持つ少なくとも1つのプリンシパルを指定する必要があります。
|
||||
|
||||
- **Microsoft Entra専用認証**: 中央集権的なアイデンティティ管理とシングルサインオンのためにMicrosoft Entra(旧Azure AD)を使用します。
|
||||
- **SQLとMicrosoft Entraの両方の認証**: 従来のSQL認証をMicrosoft Entraと併用できます。
|
||||
- **SQL認証**: SQL Serverのユーザー名とパスワードのみに依存します。
|
||||
**暗号化:**
|
||||
|
||||
#### セキュリティ機能
|
||||
- 「透過的データ暗号化」と呼ばれ、データベース、バックアップ、およびログを静止状態で暗号化します。
|
||||
- 常に、Azure管理キーがデフォルトで使用されますが、顧客管理の暗号化キー(CMEK)も使用できます。
|
||||
**管理されたアイデンティティ:**
|
||||
|
||||
SQLサーバーには**Managed Identities**があります。Managed Identitiesを使用すると、資格情報を保存することなく、他のAzureサービスと安全に認証できます。これは、システム割り当てのマネージドアイデンティティによって他のサービスにアクセスでき、ユーザー割り当てのマネージドアイデンティティによって他のアイデンティティを持つ他のサービスによってアクセスされます。SQLがアクセスできるサービスには、Azure Storage Account(V2)、Azure Data Lake Storage Gen2、SQL Server、Oracle、Teradata、MongoDBまたはMongoDB用のCosmos DB API、Generic ODBC、Bulk Operations、S3互換のオブジェクトストレージがあります。
|
||||
- システムおよびユーザー管理のMIを割り当てることが可能です。
|
||||
- 暗号化キー(CMEKが使用されている場合)やデータベースからの他のサービスにアクセスするために使用されます。
|
||||
- 1つ以上のUMIが割り当てられている場合、使用するデフォルトのUMIを指定することが可能です。
|
||||
- クロステナントアクセスのために、フェデレーテッドクライアントアイデンティティを構成することが可能です。
|
||||
|
||||
SQLサーバーが持つ他のセキュリティ機能は次のとおりです:
|
||||
**Microsoft Defender:**
|
||||
|
||||
- **ファイアウォールルール**: ファイアウォールルールは、トラフィックを制限または許可することによってサーバーへのアクセスを制御します。これはデータベース自体の機能でもあります。
|
||||
- **透過的データ暗号化(TDE)**: TDEは、データベース、バックアップ、およびログを静止状態で暗号化し、ストレージが侵害されてもデータを保護します。サービス管理キーまたは顧客管理キーで実行できます。
|
||||
- **Microsoft Defender for SQL**: Microsoft Defender for SQLを有効にすると、サーバーの脆弱性評価と高度な脅威保護を提供します。
|
||||
- 「潜在的なデータベースの脆弱性を軽減し、異常な活動を検出する」ために役立ちます。
|
||||
- Defenderについては独自のレッスンで説明します(他のいくつかのAzureサービスで有効にできます)。
|
||||
|
||||
#### 展開モデル
|
||||
**バックアップ:**
|
||||
- バックアップの頻度は、保持ポリシーで管理されます。
|
||||
|
||||
Azure SQL Databaseは、さまざまなニーズに応じた柔軟な展開オプションをサポートしています:
|
||||
**削除されたデータベース:**
|
||||
- 既存のバックアップから削除されたDBを復元することが可能です。
|
||||
|
||||
- **シングルデータベース**:
|
||||
- 専用リソースを持つ完全に孤立したデータベース。
|
||||
- マイクロサービスや単一のデータソースを必要とするアプリケーションに最適です。
|
||||
- **エラスティックプール**:
|
||||
- 複数のデータベースがプール内でリソースを共有できます。
|
||||
- 複数のデータベースにわたる使用パターンが変動するアプリケーションに対してコスト効率が良いです。
|
||||
## Azure SQL Database
|
||||
|
||||
### Azure SQL Database
|
||||
**Azure SQL Database**は、スケーラブルで安全なリレーショナルデータベースソリューションを提供する**完全管理されたデータベースプラットフォームとしてのサービス(PaaS)**です。最新のSQL Server技術に基づいており、インフラ管理の必要がなく、クラウドベースのアプリケーションに人気の選択肢となっています。
|
||||
|
||||
**Azure SQL Database**は、スケーラブルで安全なリレーショナルデータベースソリューションを提供する**完全に管理されたデータベースプラットフォームとしてのサービス(PaaS)**です。最新のSQL Server技術に基づいており、インフラストラクチャ管理の必要がなく、クラウドベースのアプリケーションに人気の選択肢となっています。
|
||||
SQLデータベースを作成するには、ホストされるSQLサーバーを指定する必要があります。
|
||||
|
||||
#### 主な機能
|
||||
### SQL Database Security Features
|
||||
|
||||
- **常に最新**: 最新の安定版SQL Serverで実行され、新機能やパッチを自動的に受け取ります。
|
||||
- **PaaS機能**: 組み込みの高可用性、バックアップ、および更新。
|
||||
- **データの柔軟性**: リレーショナルデータと非リレーショナルデータ(例:グラフ、JSON、空間、XML)をサポートします。
|
||||
- **常に最新**: SQL Serverの最新の安定版で実行され、新機能やパッチを自動的に受け取ります。
|
||||
- **継承されたSQL Serverのセキュリティ機能:**
|
||||
- 認証(SQLおよび/またはEntra ID)
|
||||
- 割り当てられた管理アイデンティティ
|
||||
- ネットワーク制限
|
||||
- 暗号化
|
||||
- バックアップ
|
||||
- …
|
||||
- **データ冗長性:** オプションはローカル、ゾーン、地理的または地理的ゾーン冗長です。
|
||||
- **台帳:** データの整合性を暗号的に検証し、改ざんが検出されることを保証します。金融、医療、機密データを管理する組織に役立ちます。
|
||||
|
||||
#### ネットワーク
|
||||
SQLデータベースは**エラスティックプール**の一部である可能性があります。エラスティックプールは、複数のデータベースを管理するためのコスト効果の高いソリューションで、構成可能なコンピュート(eDTUs)とストレージリソースを共有し、価格はデータベースの数ではなく、割り当てられたリソースに基づいています。
|
||||
|
||||
**ネットワーク接続**: 公開エンドポイントまたはプライベートエンドポイントを介してアクセスを有効にするかどうかを選択します。「アクセスなし」を選択した場合、手動で構成されるまでエンドポイントは作成されません:
|
||||
- アクセスなし: エンドポイントは構成されず、手動で設定されるまで受信接続がブロックされます。
|
||||
- 公開エンドポイント: 公共のインターネットを介して直接接続を許可し、ファイアウォールルールやその他のセキュリティ構成の対象となります。
|
||||
- プライベートエンドポイント: プライベートネットワークへの接続を制限します。
|
||||
#### Azure SQL Column Level Security (Masking) & Row Level Security
|
||||
|
||||
**接続ポリシー**: クライアントがSQLデータベースサーバーと通信する方法を定義します:
|
||||
- デフォルト: Azure内からのすべてのクライアント接続にリダイレクトポリシーを使用し(プライベートエンドポイントを使用しているものを除く)、Azure外からの接続にはプロキシポリシーを使用します。
|
||||
- プロキシ: すべてのクライアント接続をAzure SQL Databaseゲートウェイを介してルーティングします。
|
||||
- リダイレクト: クライアントはデータベースをホストしているノードに直接接続します。
|
||||
**Azure SQLの動的**データマスキングは、**機密情報を不正なユーザーから隠す**のに役立つ機能です。実際のデータを変更するのではなく、表示されるデータを動的にマスクし、クレジットカード番号などの機密情報が隠されるようにします。
|
||||
|
||||
#### セキュリティ機能
|
||||
**動的データマスキング**は、マスクされていないユーザー(これらのユーザーは指定する必要があります)と管理者を除くすべてのユーザーに影響します。動的データマスキングから免除されるSQLユーザーを指定する構成オプションがあり、**管理者は常に除外されます**。
|
||||
|
||||
- **Microsoft Defender for SQL**: 脆弱性評価と高度な脅威保護を提供するために有効にできます。
|
||||
- **台帳**: データの整合性を暗号的に検証し、改ざんが検出されることを保証します。
|
||||
- **サーバーアイデンティティ**: 中央集権的なアクセスを可能にするために、システム割り当ておよびユーザー割り当てのマネージドアイデンティティを使用します。
|
||||
- **透過的データ暗号化キー管理**: アプリケーションに変更を加えることなく、静止状態でデータベース、バックアップ、およびログを暗号化します。暗号化は各データベースで有効にでき、データベースレベルで構成されている場合、これらの設定はサーバーレベルの構成を上書きします。
|
||||
- **常に暗号化**: データの所有権と管理を分離する高度なデータ保護機能のスイートです。これにより、高い権限を持つ管理者やオペレーターが機密データにアクセスできないことが保証されます。
|
||||
|
||||
#### 購入モデル / サービスタイア
|
||||
|
||||
- **vCoreベース**: コンピュート、メモリ、およびストレージを独立して選択します。一般的な目的、高い耐障害性とOLTPアプリ向けのビジネスクリティカル(高パフォーマンス)で、最大128TBのストレージにスケールアップします。
|
||||
- **DTUベース**: コンピュート、メモリ、およびI/Oを固定のティアにバンドルします。一般的なタスクに対してバランスの取れたリソースです。
|
||||
- スタンダード: 一般的なタスクに対してバランスの取れたリソースです。
|
||||
- プレミアム: 要求の厳しいワークロード向けの高パフォーマンスです。
|
||||
|
||||
#### スケーラブルなパフォーマンスとプール
|
||||
|
||||
- **シングルデータベース**: 各データベースは孤立しており、専用のコンピュート、メモリ、およびストレージリソースを持っています。リソースはダウンタイムなしで動的にスケールアップまたはスケールダウンできます(1〜128 vCores、32 GB〜4 TBストレージ、最大128 TB)。
|
||||
- **エラスティックプール**: 複数のデータベース間でリソースを共有し、効率を最大化し、コストを節約します。リソースはプール全体に対しても動的にスケールできます。
|
||||
- **サービスティアの柔軟性**: 一般的な目的のティアでシングルデータベースから小さく始めます。ニーズが増えるにつれてビジネスクリティカルまたはハイパースケールティアにアップグレードします。
|
||||
- **スケーリングオプション**: 動的スケーリングまたはオートスケーリングの代替。
|
||||
|
||||
#### 組み込みの監視と最適化
|
||||
|
||||
- **クエリストア**: パフォーマンスの問題を追跡し、リソース消費の上位を特定し、実行可能な推奨事項を提供します。
|
||||
- **自動調整**: 自動インデックス作成やクエリプランの修正などの機能を使用して、パフォーマンスを積極的に最適化します。
|
||||
- **テレメトリー統合**: Azure Monitor、Event Hubs、またはAzure Storageを介して監視をサポートし、カスタマイズされたインサイトを提供します。
|
||||
|
||||
#### 災害復旧と可用性
|
||||
|
||||
- **自動バックアップ**: SQL Databaseは、データベースのフル、差分、およびトランザクションログのバックアップを自動的に実行します。
|
||||
- **ポイントインタイムリストア**: バックアップ保持期間内の任意の過去の状態にデータベースを復元します。
|
||||
- **地理的冗長性**
|
||||
- **フェイルオーバーグループ**: データベースをグループ化して自動的に地域間でフェイルオーバーすることで、災害復旧を簡素化します。
|
||||
**Azure SQL Row Level Security (RLS)**は、**ユーザーが表示または変更できる行を制御する**機能で、各ユーザーが自分に関連するデータのみを表示できるようにします。フィルターまたはブロック述語を使用してセキュリティポリシーを作成することで、組織はデータベースレベルでの細かいアクセス制御を強制できます。
|
||||
|
||||
### Azure SQL Managed Instance
|
||||
|
||||
**Azure SQL Managed Instance**は、SQL Serverとのほぼ100%の互換性を提供し、ほとんどの管理タスク(例:アップグレード、パッチ適用、バックアップ、監視)を自動的に処理するプラットフォームとしてのサービス(PaaS)データベースエンジンです。最小限の変更でオンプレミスのSQL Serverデータベースを移行するためのクラウドソリューションを提供します。
|
||||
|
||||
#### サービスタイア
|
||||
|
||||
- **一般的な目的**: 標準的なI/Oおよびレイテンシ要件を持つアプリケーション向けのコスト効率の良いオプションです。
|
||||
- **ビジネスクリティカル**: 重要なワークロード向けの低I/Oレイテンシを持つ高パフォーマンスオプションです。
|
||||
|
||||
#### 高度なセキュリティ機能
|
||||
|
||||
* **脅威保護**: 疑わしい活動やSQLインジェクション攻撃に対する高度な脅威保護アラート。コンプライアンスのためのデータベースイベントを追跡およびログする監査。
|
||||
* **アクセス制御**: 中央集権的なアイデンティティ管理のためのMicrosoft Entra認証。行レベルセキュリティと動的データマスキングによる詳細なアクセス制御。
|
||||
* **バックアップ**: ポイントインタイムリストア機能を持つ自動および手動のバックアップ。
|
||||
**Azure SQL Managed Instances**は、より大規模な、全体のSQL Serverインスタンススコープの展開用です。最新のSQL Serverオンプレミス(Enterprise Edition)データベースエンジンとのほぼ100%の互換性を提供し、一般的なセキュリティの懸念に対処するネイティブの仮想ネットワーク(VNet)実装を提供し、オンプレミスのSQL Server顧客にとって有利なビジネスモデルを提供します。
|
||||
|
||||
### Azure SQL Virtual Machines
|
||||
|
||||
**Azure SQL Virtual Machines**は、オンプレミスで実行されているサーバーのように、**オペレーティングシステムとSQL Serverインスタンスを制御したい**マイグレーションに最適です。さまざまなマシンサイズと幅広いSQL Serverバージョンおよびエディションを持つことができます。
|
||||
**Azure SQL Virtual Machines**は、**オペレーティングシステム**とSQL Serverインスタンスを**制御する**ことを可能にし、SQLサーバーを実行するVMサービス内にVMが生成されます。
|
||||
|
||||
#### 主な機能
|
||||
SQL仮想マシンが作成されると、SQLサーバーをホストするVMの**すべての設定を選択することが可能です**(VMレッスンに示されているように)。
|
||||
- これは、VMがいくつかのVNetにアクセスし、**管理アイデンティティが添付されている**可能性があり、ファイル共有がマウントされる可能性があることを意味します… SQLからVMへの**ピボッティングが非常に興味深い**です。
|
||||
- さらに、特定のキーコンテナにアクセスを許可するために、アプリIDとシークレットを構成することが可能で、そこには機密情報が含まれている可能性があります。
|
||||
|
||||
**自動バックアップ**: SQLデータベースのバックアップをスケジュールします。
|
||||
**自動パッチ適用**: メンテナンスウィンドウ中にWindowsおよびSQL Serverの更新を自動的にインストールします。
|
||||
**Azure Key Vault統合**: SQL Server VMのためにKey Vaultを自動的に構成します。
|
||||
**Defender for Cloud統合**: ポータルでDefender for SQLの推奨事項を表示します。
|
||||
**バージョン/エディションの柔軟性**: VMを再展開することなくSQL Serverのバージョンまたはエディションのメタデータを変更します。
|
||||
自動SQL更新、自動バックアップ、Entra ID認証、他のSQLサービスのほとんどの機能などを構成することも可能です。
|
||||
|
||||
#### セキュリティ機能
|
||||
|
||||
**Microsoft Defender for SQL**: セキュリティインサイトとアラート。
|
||||
**Azure Key Vault統合**: 資格情報と暗号化キーの安全な保管。
|
||||
**Microsoft Entra(Azure AD)**: 認証とアクセス制御。
|
||||
|
||||
## 列挙
|
||||
## Enumeration
|
||||
|
||||
{{#tabs}}
|
||||
{{#tab name="az cli"}}
|
||||
@@ -216,6 +164,30 @@ az sql midb show --resource-group <res-grp> --name <name>
|
||||
# Lis all sql VM
|
||||
az sql vm list
|
||||
az sql vm show --resource-group <res-grp> --name <name>
|
||||
|
||||
# List schema by the database
|
||||
az rest --method get \
|
||||
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas?api-version=2021-11-01"
|
||||
|
||||
# Get tables of a database with the schema
|
||||
az rest --method get \
|
||||
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas/<schemaName>/tables?api-version=2021-11-01"
|
||||
|
||||
# Get columns of a database
|
||||
az rest --method get \
|
||||
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/columns?api-version=2021-11-01"
|
||||
|
||||
# Get columns of a table
|
||||
az rest --method get \
|
||||
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas/<schemaName>/tables/<tableName>/columns?api-version=2021-11-01"
|
||||
|
||||
# Get DataMaskingPolicies of a database
|
||||
az rest --method get \
|
||||
--uri "https://management.azure.com/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.Sql/servers/getstorageserver/databases/masktest/dataMaskingPolicies/Default?api-version=2021-11-01"
|
||||
|
||||
az rest --method get \
|
||||
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/dataMaskingPolicies/Default/rules?api-version=2021-11-01"
|
||||
|
||||
```
|
||||
{{#endtab}}
|
||||
|
||||
@@ -260,9 +232,34 @@ Get-AzSqlVM
|
||||
{{#endtab}}
|
||||
{{#endtabs}}
|
||||
|
||||
さらに、データベース内のダイナミックデータマスキングと行レベルポリシーを列挙したい場合は、次のクエリを実行できます:
|
||||
```sql
|
||||
--Enumerates the masked columns
|
||||
SELECT
|
||||
OBJECT_NAME(mc.object_id) AS TableName,
|
||||
c.name AS ColumnName,
|
||||
mc.masking_function AS MaskingFunction
|
||||
FROM sys.masked_columns AS mc
|
||||
JOIN sys.columns AS c
|
||||
ON mc.object_id = c.object_id
|
||||
AND mc.column_id = c.column_id
|
||||
|
||||
--Enumerates Row level policies
|
||||
SELECT
|
||||
sp.name AS PolicyName,
|
||||
sp.is_enabled,
|
||||
sp.create_date,
|
||||
sp.modify_date,
|
||||
OBJECT_NAME(sp.object_id) AS TableName,
|
||||
sp2.predicate_definition AS PredicateDefinition
|
||||
FROM sys.security_policies AS sp
|
||||
JOIN sys.security_predicates AS sp2
|
||||
ON sp.object_id = sp2.object_id;
|
||||
|
||||
```
|
||||
### 接続してSQLクエリを実行する
|
||||
|
||||
例として[Az WebAppの列挙](az-app-services.md)から接続文字列(資格情報を含む)を見つけることができます:
|
||||
例として[Az WebAppの列挙](az-app-services.md)から接続文字列(資格情報を含む)を見つけることができます:
|
||||
```bash
|
||||
function invoke-sql{
|
||||
param($query)
|
||||
@@ -298,7 +295,7 @@ sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passwork
|
||||
../az-privilege-escalation/az-sql-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## ポストエクスプロイテーション
|
||||
## ポストエクスプロイト
|
||||
|
||||
{{#ref}}
|
||||
../az-post-exploitation/az-sql-post-exploitation.md
|
||||
|
||||
Reference in New Issue
Block a user