mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-30 06:30:35 -08:00
Translated ['src/pentesting-cloud/azure-security/az-services/az-sql.md']
This commit is contained in:
@@ -4,14 +4,14 @@
|
||||
|
||||
## Azure SQL
|
||||
|
||||
Azure SQLは、**Azureクラウド内のSQL Serverデータベースエンジン**を使用する、管理された、安全で、インテリジェントな製品のファミリーです。これにより、サーバーの物理的な管理を心配する必要がなく、データの管理に集中できます。
|
||||
Azure SQLは、**Azureクラウド内のSQL Serverデータベースエンジン**を使用する管理された、安全で、インテリジェントな製品のファミリーです。これにより、サーバーの物理的な管理を心配する必要がなく、データの管理に集中できます。
|
||||
|
||||
Azure SQLは、4つの主要な提供物で構成されています:
|
||||
|
||||
1. **Azure SQL Server**: 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インスタンスに対する**制御**を望むアーキテクチャに最適です。
|
||||
3. **Azure SQL Managed Instance**: これは、より大規模な、全体のSQL Serverインスタンススコープのデプロイメント用です。
|
||||
4. **Azure SQL Server on Azure VMs**: これは、**オペレーティングシステム**とSQL Serverインスタンスを**制御したい**アーキテクチャに最適です。
|
||||
|
||||
### SQL Server Security Features
|
||||
|
||||
@@ -26,7 +26,7 @@ Azure SQLは、4つの主要な提供物で構成されています:
|
||||
|
||||
- Microsoft **Entra-only** 認証: サービスにアクセスするEntraプリンシパルを指定する必要があります。
|
||||
- **SQLとMicrosoft Entra**の両方の認証: ユーザー名とパスワードを使用した従来のSQL認証とMicrosoft Entraの併用。
|
||||
- **Only SQL** 認証: データベースユーザーを介してのみアクセスを許可します。
|
||||
- **SQLのみ**の認証: データベースユーザーを介してのみアクセスを許可します。
|
||||
|
||||
SQL認証が許可されている場合、管理者ユーザー(ユーザー名 + パスワード)を指定する必要があり、Entra ID認証が選択されている場合は、管理アクセスを持つ少なくとも1つのプリンシパルを指定する必要があります。
|
||||
|
||||
@@ -70,7 +70,7 @@ GO
|
||||
**Microsoft Defender:**
|
||||
|
||||
- データベースの潜在的な脆弱性を軽減し、異常な活動を検出するのに役立ちます。
|
||||
- Defenderについては独自のレッスンで説明します(他のいくつかのAzureサービスで有効にできます)。
|
||||
- Defenderについては別のレッスンで説明します(他のいくつかのAzureサービスで有効にできます)。
|
||||
|
||||
**バックアップ:**
|
||||
- バックアップの頻度は保持ポリシーで管理されます。
|
||||
@@ -94,32 +94,32 @@ SQLデータベースを作成するには、ホストされるSQLサーバー
|
||||
- 暗号化
|
||||
- バックアップ
|
||||
- …
|
||||
- **データ冗長性:** オプションはローカル、ゾーン、GeoまたはGeo-Zone冗長です。
|
||||
- **データ冗長性:** オプションはローカル、ゾーン、地理的または地理的ゾーン冗長です。
|
||||
- **台帳:** データの整合性を暗号的に検証し、改ざんが検出されることを保証します。金融、医療、機密データを管理する組織にとって有用です。
|
||||
|
||||
SQLデータベースは**エラスティックプール**の一部である可能性があります。エラスティックプールは、複数のデータベースを管理するためのコスト効果の高いソリューションで、構成可能なコンピュート (eDTUs) とストレージリソースを共有し、価格はデータベースの数ではなく、割り当てられたリソースに基づいています。
|
||||
|
||||
#### Azure SQL Column Level Security (Masking) & Row Level Security
|
||||
|
||||
**Azure SQLの動的**データマスキングは、**機密情報を保護するための機能であり、**不正なユーザーから隠します。実際のデータを変更するのではなく、表示されるデータを動的にマスクし、クレジットカード番号などの機密情報が隠されることを保証します。
|
||||
**Azure SQLの動的**データマスキングは、**機密情報を保護する**ための機能で、無許可のユーザーからそれを隠します。実際のデータを変更するのではなく、表示されるデータを動的にマスクし、クレジットカード番号などの機密情報が隠されることを保証します。
|
||||
|
||||
**動的データマスキング**は、マスクされていないユーザー(これらのユーザーは指定する必要があります)と管理者を除くすべてのユーザーに影響します。動的データマスキングから免除されるSQLユーザーを指定する構成オプションがあり、**管理者は常に除外されます**。
|
||||
|
||||
**Azure SQL Row Level Security (RLS)**は、**ユーザーが表示または変更できる行を制御する機能であり、**各ユーザーが自分に関連するデータのみを表示できるようにします。フィルターまたはブロックの述語を使用してセキュリティポリシーを作成することで、組織はデータベースレベルでの細かいアクセス制御を強制できます。
|
||||
**Azure SQL Row Level Security (RLS)**は、**ユーザーが表示または変更できる行を制御する**機能で、各ユーザーが自分に関連するデータのみを表示できるようにします。フィルターまたはブロック述語を使用してセキュリティポリシーを作成することで、組織はデータベースレベルでの細かいアクセス制御を強制できます。
|
||||
|
||||
### Azure SQL Managed Instance
|
||||
|
||||
**Azure SQL Managed Instances**は、大規模なSQL Serverインスタンススコープの展開向けです。最新のSQL Serverオンプレミス(Enterprise Edition)データベースエンジンとのほぼ100%の互換性を提供し、一般的なセキュリティの懸念に対処するネイティブの仮想ネットワーク(VNet)実装を提供し、オンプレミスのSQL Server顧客にとって有利なビジネスモデルを提供します。
|
||||
**Azure SQL Managed Instances**は、大規模なSQL Serverインスタンススコープの展開向けです。最新のSQL Serverオンプレミス(Enterprise Edition)データベースエンジンとの互換性がほぼ100%で、一般的なセキュリティの懸念に対処するネイティブの仮想ネットワーク(VNet)実装を提供し、オンプレミスのSQL Server顧客にとって有利なビジネスモデルを提供します。
|
||||
|
||||
### Azure SQL Virtual Machines
|
||||
|
||||
**Azure SQL Virtual Machines**は、**オペレーティングシステム**とSQL Serverインスタンスを制御できるようにします。VMサービスでSQLサーバーを実行するVMが生成されます。
|
||||
|
||||
SQL仮想マシンが作成されると、SQLサーバーをホストするVMの**すべての設定を選択することが可能です**(VMレッスンに示されているように)。
|
||||
- これは、VMがいくつかのVNetにアクセスし、**マネージドIDが添付される可能性があり、ファイル共有がマウントされる可能性があることを意味します… SQLからVMへの**ピボットが非常に興味深いものになります。
|
||||
- さらに、特定のキーコンテナにアクセスするためにSQLが**アプリIDとシークレットを構成することも可能です**。これには機密情報が含まれている可能性があります。
|
||||
- これは、VMがいくつかのVNetにアクセスし、**マネージドIDが添付されている可能性があり、ファイル共有がマウントされる可能性があることを意味します… SQLからVMへの**ピボットが非常に興味深いものになります。
|
||||
- さらに、特定のキーコンテナにアクセスするために**アプリIDとシークレットを構成することが可能で、そこには機密情報が含まれている可能性があります**。
|
||||
|
||||
自動SQL更新、自動バックアップ、Entra ID認証、その他のSQLサービスのほとんどの機能などを構成することも可能です。
|
||||
**自動SQL更新**、**自動バックアップ**、**Entra ID認証**、および他のSQLサービスのほとんどの機能を構成することも可能です。
|
||||
|
||||
## Enumeration
|
||||
|
||||
@@ -209,7 +209,7 @@ az rest --method get \
|
||||
|
||||
# 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"
|
||||
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/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"
|
||||
@@ -258,7 +258,7 @@ Get-AzSqlVM
|
||||
{{#endtab}}
|
||||
{{#endtabs}}
|
||||
|
||||
さらに、データベース内のダイナミックデータマスキングおよび行レベルポリシーを列挙したい場合は、次のクエリを実行できます:
|
||||
データベース内でダイナミックデータマスキングおよび行レベルポリシーを列挙したい場合は、次のクエリを実行できます:
|
||||
```sql
|
||||
--Enumerates the masked columns
|
||||
SELECT
|
||||
@@ -304,7 +304,7 @@ $Connection.Close()
|
||||
|
||||
invoke-sql 'Select Distinct TABLE_NAME From information_schema.TABLES;'
|
||||
```
|
||||
データベースにアクセスするためにsqlcmdを使用することもできます。サーバーがパブリック接続を許可しているかどうかを確認することが重要です `az sql server show --name <server-name> --resource-group <resource-group>`、また、ファイアウォールルールが私たちのIPのアクセスを許可しているかどうかも確認する必要があります:
|
||||
データベースにアクセスするためにsqlcmdを使用することもできます。サーバーがパブリック接続を許可しているかどうかを確認することが重要です `az sql server show --name <server-name> --resource-group <resource-group>`、また、ファイアウォールルールが私たちのIPのアクセスを許可しているかどうかも確認する必要があります。
|
||||
```bash
|
||||
sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passworkd> -d <database>
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user