mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-03-12 21:22:57 -07:00
Translated ['', 'src/pentesting-cloud/azure-security/az-services/vms/az-
This commit is contained in:
@@ -1,28 +1,28 @@
|
||||
# Az - Azure Network
|
||||
# Az - Azure ネットワーク
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
## 基本情報
|
||||
|
||||
Azureは、ユーザーがAzureクラウド内に**孤立した****ネットワーク**を作成できる**仮想ネットワーク(VNet)**を提供します。これらのVNet内では、仮想マシン、アプリケーション、データベースなどのリソースを安全にホストおよび管理できます。Azureのネットワーキングは、クラウド内の通信(Azureサービス間)と外部ネットワークおよびインターネットへの接続の両方をサポートしています。\
|
||||
さらに、VNetを他のVNetやオンプレミスネットワークと**接続**することも可能です。
|
||||
Azure は **仮想ネットワーク (VNet)** を提供しており、ユーザは Azure クラウド内に **隔離された** **ネットワーク** を作成できます。これらの VNet 内では、仮想マシン、アプリケーション、データベースなどのリソースを安全にホストおよび管理できます。Azure のネットワーキングはクラウド内(Azure サービス間)の通信と外部ネットワークやインターネットへの接続の両方をサポートします。\
|
||||
さらに、VNet を他の VNet やオンプレミス ネットワークと **接続** することも可能です。
|
||||
|
||||
## 仮想ネットワーク(VNET)とサブネット
|
||||
## Virtual Network (VNet) & サブネット
|
||||
|
||||
Azure仮想ネットワーク(VNet)は、クラウド内の自分のネットワークの表現であり、サブスクリプションに専用のAzure環境内での**論理的隔離**を提供します。VNetは、Azureで仮想プライベートネットワーク(VPN)をプロビジョニングおよび管理できるようにし、仮想マシン(VM)、データベース、アプリケーションサービスなどのリソースをホストします。これにより、IPアドレス範囲、サブネットの作成、ルートテーブル、ネットワークゲートウェイなどの**ネットワーク設定に対する完全な制御**が提供されます。
|
||||
Azure Virtual Network (VNet) はクラウド上の自分のネットワークを表現するもので、サブスクリプションに紐付いた Azure 環境内で **論理的な分離** を提供します。VNet を使うことで、Azure 上に仮想プライベートネットワーク (VPN) をプロビジョニング・管理し、Virtual Machines (VMs)、データベース、アプリケーションサービスなどのリソースをホストできます。IP アドレス範囲、サブネット作成、ルートテーブル、ネットワークゲートウェイなどを含む **ネットワーク設定の完全な制御** を提供します。
|
||||
|
||||
**サブネット**は、特定の**IPアドレス範囲**によって定義されたVNet内の細分化です。VNetを複数のサブネットに分割することで、ネットワークアーキテクチャに応じてリソースを整理し、保護できます。\
|
||||
デフォルトでは、同じAzure仮想ネットワーク(VNet)内のすべてのサブネットは、制限なしに**相互に通信**できます。
|
||||
**サブネット** は VNet 内の細分化で、特定の **IP アドレス範囲** によって定義されます。VNet を複数のサブネットに分割することで、ネットワークアーキテクチャに応じてリソースを整理・保護できます。\
|
||||
デフォルトでは、同一の Azure Virtual Network (VNet) 内のすべてのサブネットは制限なく **相互に通信可能** です。
|
||||
|
||||
**例:**
|
||||
**Example:**
|
||||
|
||||
- `MyVNet`のIPアドレス範囲は10.0.0.0/16。
|
||||
- **サブネット-1:** ウェブサーバー用の10.0.0.0/24。
|
||||
- **サブネット-2:** データベースサーバー用の10.0.1.0/24。
|
||||
- `MyVNet` with an IP address range of 10.0.0.0/16.
|
||||
- **Subnet-1:** 10.0.0.0/24 for Web サーバー.
|
||||
- **Subnet-2:** 10.0.1.0/24 for データベースサーバー.
|
||||
|
||||
### 列挙
|
||||
|
||||
Azureアカウント内のすべてのVNetとサブネットをリストするには、Azureコマンドラインインターフェース(CLI)を使用できます。手順は以下の通りです。
|
||||
Azure アカウント内のすべての VNet とサブネットを一覧表示するには、Azure Command-Line Interface (CLI) を使用できます。手順は以下の通り:
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -49,14 +49,14 @@ Select-Object Name, AddressPrefix
|
||||
|
||||
## ネットワーク セキュリティ グループ (NSG)
|
||||
|
||||
**ネットワーク セキュリティ グループ (NSG)** は、Azure 仮想ネットワーク (VNet) 内の Azure リソースへのネットワークトラフィックをフィルタリングします。これは、**受信および送信トラフィックのために開くポート**をソースポート、ソースIP、ポートの宛先によって示すことができる一連の **セキュリティルール** を含んでおり、優先度を割り当てることも可能です(優先度番号が低いほど優先度が高くなります)。
|
||||
A **Network Security Group (NSG)** は、Azure Virtual Network (VNet) 内の Azure リソースへのおよびからのネットワークトラフィックをフィルタリングします。これは一連の **セキュリティルール** を保持しており、ソースポート、ソース IP、宛先ポートごとに **インバウンドおよびアウトバウンドのどのポートを開くか** を指定でき、優先度(数値が小さいほど優先度が高い)を割り当てることも可能です。
|
||||
|
||||
NSG は **サブネットおよび NIC** に関連付けることができます。
|
||||
NSGs can be associated to **サブネットおよび NICs.**
|
||||
|
||||
**ルールの例:**
|
||||
**ルール例:**
|
||||
|
||||
- 任意のソースからあなたのウェブサーバーへの HTTP トラフィック (ポート 80) を許可する受信ルール。
|
||||
- 特定の宛先 IP アドレス範囲への SQL トラフィック (ポート 1433) のみを許可する送信ルール。
|
||||
- 任意の送信元から Web サーバーへの HTTP トラフィック(port 80)を許可するインバウンドルール。
|
||||
- 特定の宛先 IP アドレス範囲への SQL トラフィック(port 1433)のみを許可するアウトバウンドルール。
|
||||
|
||||
### 列挙
|
||||
|
||||
@@ -71,7 +71,7 @@ az network nsg show --name <nsg-name>
|
||||
az network nsg rule list --nsg-name <NSGName> --resource-group <ResourceGroupName> --query "[].{name:name, priority:priority, direction:direction, access:access, protocol:protocol, sourceAddressPrefix:sourceAddressPrefix, destinationAddressPrefix:destinationAddressPrefix, sourcePortRange:sourcePortRange, destinationPortRange:destinationPortRange}" -o table
|
||||
|
||||
# Get NICs and subnets using this NSG
|
||||
az network nsg show --name MyLowCostVM-nsg --resource-group Resource_Group_1 --query "{subnets: subnets, networkInterfaces: networkInterfaces}"
|
||||
az network nsg show --name <NSGName> --resource-group <ResourceGroupName> --query "{subnets: subnets, networkInterfaces: networkInterfaces}"
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#tab name="PowerShell" }}
|
||||
@@ -81,30 +81,33 @@ Get-AzNetworkSecurityGroup | Select-Object Name, Location
|
||||
Get-AzNetworkSecurityGroup -Name <NSGName> -ResourceGroupName <ResourceGroupName>
|
||||
|
||||
# Get NSG rules
|
||||
(Get-AzNetworkSecurityGroup -ResourceGroupName <NSGName> -Name <ResourceGroupName>).SecurityRules
|
||||
Get-AzNetworkSecurityGroup -Name <NSGName> -ResourceGroupName <ResourceGroupName> |
|
||||
Select-Object -ExpandProperty SecurityRules |
|
||||
Select-Object Name, Priority, Direction, Access, Protocol, SourceAddressPrefix, DestinationAddressPrefix, SourcePortRange, DestinationPortRange
|
||||
|
||||
# Get NICs and subnets using this NSG
|
||||
(Get-AzNetworkSecurityGroup -Name <NSGName> -ResourceGroupName <ResourceGroupName>).Subnets
|
||||
(Get-AzNetworkSecurityGroup -Name <NSGName> -ResourceGroupName <ResourceGroupName>).NetworkInterfaces
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
## Azure Firewall
|
||||
|
||||
Azure Firewallは、クラウドリソースを保護するためにトラフィックを検査および制御する**管理されたネットワークセキュリティサービス**です。これは**ステートフルファイアウォール**であり、レイヤー3から7のルールに基づいてトラフィックをフィルタリングし、**Azure内**(東西トラフィック)および**外部ネットワークとの間**(南北トラフィック)の通信をサポートします。**仮想ネットワーク(VNet)レベル**で展開され、VNet内のすべてのサブネットに対して集中保護を提供します。Azure Firewallは、トラフィックの需要に応じて自動的にスケールし、手動設定を必要とせずに高可用性を確保します。
|
||||
Azure Firewall は **マネージドでステートフルなファイアウォール** で、east-west および north-south フローのトラフィック(L3–L7)をフィルタリングします。**VNet レベル**にデプロイされ、すべてのサブネットの検査を集中化し、可用性のために自動スケールします。
|
||||
|
||||
これは、特定の顧客ニーズに合わせた3つのSKU—**Basic**、**Standard**、および**Premium**で利用可能です:
|
||||
Available SKUs: **Basic**, **Standard**, and **Premium**:
|
||||
|
||||
| Criteria/Feature | Option 1 | Option 2 | Option 3 |
|
||||
| ------------------------------ | ------------------------------------------------- | ------------------------------------------- | --------------------------------------------------------- |
|
||||
| **推奨使用ケース** | 限定的なニーズを持つ中小企業(SMB) | 一般的な企業利用、レイヤー3–7フィルタリング | 高度に機密性の高い環境(例:支払い処理) |
|
||||
| **パフォーマンス** | 最大250 Mbpsのスループット | 最大30 Gbpsのスループット | 最大100 Gbpsのスループット |
|
||||
| **脅威インテリジェンス** | アラートのみ | アラートとブロック(悪意のあるIP/ドメイン) | アラートとブロック(高度な脅威インテリジェンス) |
|
||||
| **L3–L7フィルタリング** | 基本的なフィルタリング | プロトコル全体にわたるステートフルフィルタリング | 高度な検査を伴うステートフルフィルタリング |
|
||||
| **高度な脅威保護** | 利用不可 | 脅威インテリジェンスに基づくフィルタリング | 侵入検知および防止システム(IDPS)を含む |
|
||||
| **TLS検査** | 利用不可 | 利用不可 | インバウンド/アウトバウンドTLS終端をサポート |
|
||||
| **可用性** | 固定バックエンド(2つのVM) | オートスケーリング | オートスケーリング |
|
||||
| **管理の容易さ** | 基本的なコントロール | ファイアウォールマネージャー経由で管理 | ファイアウォールマネージャー経由で管理 |
|
||||
| **Recommended Use Case** | ニーズが限定的な中小企業 (SMBs) | 一般的なエンタープライズ向け、Layer 3–7 フィルタリング | 高度に機密性の高い環境(例:決済処理) |
|
||||
| **Performance** | 最大 250 Mbps スループット | 最大 30 Gbps スループット | 最大 100 Gbps スループット |
|
||||
| **Threat Intelligence** | アラートのみ | アラートとブロック(悪意ある IP/ドメイン) | アラートとブロック(高度な脅威インテリジェンス) |
|
||||
| **L3–L7 Filtering** | 基本的なフィルタリング | プロトコル横断のステートフルフィルタリング | 高度な検査を伴うステートフルフィルタリング |
|
||||
| **Advanced Threat Protection** | 利用不可 | 脅威インテリジェンスベースのフィルタリング | 侵入検知および防止システム (IDPS) を含む |
|
||||
| **TLS Inspection** | 利用不可 | 利用不可 | インバウンド/アウトバウンドの TLS 終端をサポート |
|
||||
| **Availability** | 固定バックエンド(2 VMs) | オートスケーリング | オートスケーリング |
|
||||
| **Ease of Management** | 基本的なコントロール | Firewall Manager による管理 | Firewall Manager による管理 |
|
||||
|
||||
### Enumeration
|
||||
|
||||
@@ -141,13 +144,18 @@ Get-AzFirewall
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
## Azure ルートテーブル
|
||||
## Azure **ルートテーブル (UDR)**
|
||||
|
||||
Azure **ルートテーブル** は、サブネット内のネットワークトラフィックのルーティングを制御するために使用されます。これらは、パケットがどのように転送されるべきかを指定するルールを定義します。転送先は、Azure リソース、インターネット、または仮想アプライアンスや Azure ファイアウォールのような特定の次ホップです。ルートテーブルを **サブネット** に関連付けることができ、そのサブネット内のすべてのリソースはテーブル内のルートに従います。
|
||||
Azure **Route Tables (UDR)** は、宛先プレフィックス(例: `10.0.0.0/16` や `0.0.0.0/0`)とネクストホップ(Virtual Network, Internet, Virtual Network Gateway, または Virtual Appliance)を定義して、デフォルトのルーティングを上書きできます。
|
||||
|
||||
**例:** サブネットが、検査のためにネットワーク仮想アプライアンス (NVA) を介して外向きトラフィックをルーティングする必要があるリソースをホストしている場合、ルートテーブルに **ルート** を作成して、すべてのトラフィック (例: `0.0.0.0/0`) を NVA のプライベート IP アドレスに次ホップとしてリダイレクトできます。
|
||||
> ルートはサブネット単位で適用されます。該当サブネット内のすべての VMs がそのテーブルに従います。
|
||||
|
||||
### **列挙**
|
||||
**例:**
|
||||
|
||||
- インターネット方向のトラフィックには、デフォルトの `0.0.0.0/0` を使用し、ネクストホップを **Internet** にします。
|
||||
- アウトバウンドトラフィックを検査するには、`0.0.0.0/0` を Network Virtual Appliance (NVA) の IP にルートします。
|
||||
|
||||
### **Enumeration**
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -155,8 +163,11 @@ Azure **ルートテーブル** は、サブネット内のネットワークト
|
||||
# List Route Tables
|
||||
az network route-table list --query "[].{name:name, resourceGroup:resourceGroup, location:location}" -o table
|
||||
|
||||
# List routes for a table
|
||||
az network route-table route list --route-table-name <RouteTableName> --resource-group <ResourceGroupName> --query "[].{name:name, addressPrefix:addressPrefix, nextHopType:nextHopType, nextHopIpAddress:nextHopIpAddress}" -o table
|
||||
# List routes for a table (summary)
|
||||
az network route-table route list --resource-group <ResourceGroupName> --route-table-name <RouteTableName> --query "[].{name:name, addressPrefix:addressPrefix, nextHopType:nextHopType, nextHopIpAddress:nextHopIpAddress}" -o table
|
||||
|
||||
# List routes for a table (full)
|
||||
az network route-table route list --resource-group <ResourceGroupName> --route-table-name <RouteTableName>
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#tab name="PowerShell" }}
|
||||
@@ -172,18 +183,18 @@ Get-AzRouteTable
|
||||
|
||||
## Azure Private Link
|
||||
|
||||
Azure Private Linkは、**Azureサービスへのプライベートアクセスを可能にするAzureのサービス**です。これは、**Azure仮想ネットワーク(VNet)とサービス間のトラフィックが完全にMicrosoftのAzureバックボーンネットワーク内を移動することを保証します**。これにより、サービスがVNetに取り込まれます。この設定は、データを公共のインターネットにさらさないことでセキュリティを強化します。
|
||||
Azure Private Link は、Azure のサービスで、**Azure services へのプライベートアクセスを可能に**し、**あなたの Azure virtual network (VNet) とサービス間のトラフィックが Microsoft の Azure バックボーンネットワーク内だけを通るようにする**サービスです。実質的にサービスをあなたの VNet 内に取り込む形になります。この構成により、データがパブリックインターネットにさらされないためセキュリティが向上します。
|
||||
|
||||
Private Linkは、Azure Storage、Azure SQL Database、Private Linkを介して共有されるカスタムサービスなど、さまざまなAzureサービスで使用できます。これは、自分のVNet内または異なるAzureサブスクリプションからサービスを消費するための安全な方法を提供します。
|
||||
Private Link は、Azure Storage、Azure SQL Database、Private Link を介して共有されるカスタムサービスなど、さまざまな Azure サービスで利用できます。自身の VNet 内から、あるいは別の Azure サブスクリプションからでもサービスを安全に利用する方法を提供します。
|
||||
|
||||
> [!CAUTION]
|
||||
> NSGはプライベートエンドポイントには適用されないため、Private Linkを含むサブネットにNSGを関連付けても効果はありません。
|
||||
> NSGs は private endpoints には適用されません。つまり、Private Link を含むサブネットに NSG を関連付けても効果はありません。
|
||||
|
||||
**例:**
|
||||
|
||||
あなたが**VNetから安全にアクセスしたいAzure SQL Databaseを持っているシナリオを考えてみてください**。通常、これは公共のインターネットを経由することを含むかもしれません。Private Linkを使用すると、**VNet内にプライベートエンドポイントを作成**し、Azure SQL Databaseサービスに直接接続できます。このエンドポイントにより、データベースは自分のVNetの一部であるかのように見え、プライベートIPアドレスを介してアクセスできるため、安全でプライベートなアクセスが保証されます。
|
||||
自分の VNet から安全にアクセスしたい **Azure SQL Database** があるシナリオを考えてみてください。通常はパブリックインターネットを経由する可能性があります。Private Link を使うと、Azure SQL Database サービスに直接接続する **VNet 内の private endpoint** を作成できます。このエンドポイントにより、データベースはあたかも自分の VNet の一部であるかのように振る舞い、private IP アドレスでアクセスできるため、安全かつプライベートに利用できます。
|
||||
|
||||
### **Enumeration**
|
||||
### **列挙**
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -206,13 +217,60 @@ Get-AzPrivateEndpoint | Select-Object Name, Location, ResourceGroupName, Private
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
### DNS OverDoS via service Private DNS zone links
|
||||
|
||||
When a VNet has a **Virtual Network Link** to a **service Private DNS zone** (e.g., `privatelink.blob.core.windows.net`), Azure **forces hostname resolution** for Private Link registered resources of that service type through the zone. If the zone **lacks the required `A` record** for a resource that workloads still access via its public endpoint, DNS resolution returns **NXDOMAIN** and clients never reach the public IP, causing an **availability DoS** without touching the resource itself.
|
||||
|
||||
**悪用フロー(control-plane DoS):**
|
||||
|
||||
1. Private Endpoints を作成したり **Private DNS zone links** を変更したりできる RBAC を獲得する。
|
||||
2. 別の VNet に同じサービス種別の Private Endpoint を作成する(Azure が自動的に service Private DNS zone を作成し、それをその VNet にリンクする)。
|
||||
3. その **service Private DNS zone** を被害者の VNet にリンクする。
|
||||
4. 被害者の VNet は現在 **forces resolution via the Private DNS zone** になっており、そのゾーンに対象リソースの `A` レコードが存在しないため、名前解決が失敗し、ワークロードは(依然として公開されている)エンドポイントに到達できなくなる。これは Private Link–supported な任意のサービス(storage, Key Vault, ACR, Cosmos DB, Function Apps, OpenAI, など)に適用される。
|
||||
|
||||
**大規模発見(Azure Resource Graph):**
|
||||
|
||||
- blob Private DNS zone にリンクされた VNETs(PL-registered blob endpoints に対する強制解決):
|
||||
```kusto
|
||||
resources
|
||||
| where type == "microsoft.network/privatednszones/virtualnetworklinks"
|
||||
| extend
|
||||
zone = tostring(split(id, "/virtualNetworkLinks")[0]),
|
||||
vnetId = tostring(properties.virtualNetwork.id)
|
||||
| join kind=inner (
|
||||
resources
|
||||
| where type == "microsoft.network/privatednszones"
|
||||
| where name == "privatelink.blob.core.windows.net"
|
||||
| project zoneId = id
|
||||
) on $left.zone == $right.zoneId
|
||||
| project vnetId
|
||||
```
|
||||
- Storage accounts が public endpoint 経由で到達可能だが、**Private Endpoint 接続がない**(上のリンクを追加すると壊れる可能性があります):
|
||||
```kusto
|
||||
Resources
|
||||
| where type == "microsoft.storage/storageaccounts"
|
||||
| extend publicNetworkAccess = properties.publicNetworkAccess
|
||||
| extend defaultAction = properties.networkAcls.defaultAction
|
||||
| extend vnetRules = properties.networkAcls.virtualNetworkRules
|
||||
| extend ipRules = properties.networkAcls.ipRules
|
||||
| extend privateEndpoints = properties.privateEndpointConnections
|
||||
| where publicNetworkAccess == "Enabled"
|
||||
| where defaultAction == "Deny"
|
||||
| where (isnull(privateEndpoints) or array_length(privateEndpoints) == 0)
|
||||
| extend allowedVnets = iif(isnull(vnetRules), 0, array_length(vnetRules))
|
||||
| extend allowedIps = iif(isnull(ipRules), 0, array_length(ipRules))
|
||||
| where allowedVnets > 0 or allowedIps > 0
|
||||
| project id, name, vnetRules, ipRules
|
||||
```
|
||||
## Azure Service Endpoints
|
||||
|
||||
Azure Service Endpointsは、仮想ネットワークのプライベートアドレス空間とVNetのアイデンティティを、直接接続を介してAzureサービスに拡張します。サービスエンドポイントを有効にすることで、**VNet内のリソースがAzureのバックボーンネットワークを使用してAzureサービスに安全に接続できるようになります**。これにより、**VNetからAzureサービスへのトラフィックがAzureネットワーク内に留まることが保証され**、より安全で信頼性の高い経路が提供されます。
|
||||
Azure Service Endpoints は、仮想ネットワークのプライベートアドレス空間と VNet の識別情報を Azure サービスへ直接接続で拡張します。Service Endpoints を有効にすることで、**VNet 内のリソースは Azure バックボーン ネットワークを介して Azure Storage や Azure SQL Database のような Azure サービスに安全に接続できます**。これは、Network Security Groups (NSGs) と組み合わせて細かなトラフィック制御を行う場合に特に有用です。
|
||||
|
||||
**例:**
|
||||
|
||||
たとえば、**Azure Storage**アカウントはデフォルトでパブリックインターネット経由でアクセス可能です。**VNet内でAzure Storageのサービスエンドポイントを有効にすることで**、VNetからのトラフィックのみがストレージアカウントにアクセスできるようにすることができます。その後、ストレージアカウントのファイアウォールを構成して、VNetからのトラフィックのみを受け入れるようにできます。
|
||||
- VNET 上で **Storage** アカウントと Service Endpoint が **有効** な場合、storage account firewall で **VNET からのみ** のインバウンドトラフィックを許可でき、ストレージサービスに対するパブリック IP アクセスを必要とせずに **安全な接続** を強制できます。
|
||||
|
||||
Service Endpoints はサービスに対して **プライベート IP アドレスを必要としません**。代わりに Azure バックボーンに依存して安全な接続を実現します。Private Links と比較して **セットアップは簡単** ですが、Private Links が提供するのと **同等の分離性と粒度は提供しません**。
|
||||
|
||||
### **Enumeration**
|
||||
|
||||
@@ -223,7 +281,10 @@ Azure Service Endpointsは、仮想ネットワークのプライベートアド
|
||||
az network vnet list --query "[].{name:name, location:location, serviceEndpoints:serviceEndpoints}" -o table
|
||||
|
||||
# List Subnets with Service Endpoints
|
||||
az network vnet subnet list --resource-group <ResourceGroupName> --vnet-name <VNetName> --query "[].{name:name, serviceEndpoints:serviceEndpoints}" -o table
|
||||
az network vnet subnet list --resource-group <ResourceGroupName> --vnet-name <VNetName> --query "[].{name:name, serviceEndpoints:serviceEndpoints}"
|
||||
|
||||
# List Service Endpoints for a Subnet
|
||||
az network vnet subnet show --resource-group <ResourceGroupName> --vnet-name <VNetName> --name <SubnetName> --query "serviceEndpoints"
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#tab name="PowerShell" }}
|
||||
@@ -237,71 +298,85 @@ Get-AzVirtualNetwork
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
### サービスエンドポイントとプライベートリンクの違い
|
||||
### Service Endpoints と Private Links の違い
|
||||
|
||||
Microsoftは、[**docs**](https://learn.microsoft.com/en-us/azure/virtual-network/vnet-integration-for-azure-services#compare-private-endpoints-and-service-endpoints)でプライベートリンクの使用を推奨しています:
|
||||
Microsoft は [**docs**](https://learn.microsoft.com/en-us/azure/virtual-network/vnet-integration-for-azure-services#compare-private-endpoints-and-service-endpoints) で Private Links の使用を推奨しています:
|
||||
|
||||
<figure><img src="../../../../images/image (25).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**サービスエンドポイント:**
|
||||
**Service Endpoints:**
|
||||
|
||||
- VNetからAzureサービスへのトラフィックは、Microsoft Azureバックボーンネットワークを経由して、公共のインターネットをバイパスします。
|
||||
- エンドポイントはAzureサービスへの直接接続であり、VNet内のサービスにプライベートIPを提供しません。
|
||||
- サービス自体は、サービスファイアウォールを設定してそのトラフィックをブロックしない限り、VNetの外部からその公共エンドポイントを介してアクセス可能です。
|
||||
- サブネットとAzureサービスの間には一対一の関係があります。
|
||||
- プライベートリンクよりもコストが低いです。
|
||||
- VNet から Azure サービスへのトラフィックは Microsoft Azure のバックボーン ネットワーク上を移動し、パブリックインターネットを経由しません。
|
||||
- エンドポイントは Azure サービスへの直接接続であり、VNet 内でサービスに対するプライベート IP を提供しません。
|
||||
- サービス自体は、サービスのファイアウォールでそのようなトラフィックをブロックするように構成しない限り、VNet の外部からそのパブリックエンドポイント経由で引き続きアクセス可能です。
|
||||
- サブネットと Azure サービスの関係は一対一です。
|
||||
- Private Links よりコストが低いです。
|
||||
|
||||
**プライベートリンク:**
|
||||
**Private Links:**
|
||||
|
||||
- プライベートリンクは、VNet内のプライベートIPアドレスを持つネットワークインターフェースであるプライベートエンドポイントを介してAzureサービスをVNetにマッピングします。
|
||||
- AzureサービスはこのプライベートIPアドレスを使用してアクセスされ、ネットワークの一部であるかのように見えます。
|
||||
- プライベートリンクを介して接続されたサービスは、VNetまたは接続されたネットワークからのみアクセス可能であり、サービスへの公共のインターネットアクセスはありません。
|
||||
- AzureサービスやAzureにホストされている自分のサービスへの安全な接続を可能にし、他者と共有されているサービスへの接続も提供します。
|
||||
- サービスエンドポイントでのサブネットレベルの広範なアクセス制御に対して、VNet内のプライベートエンドポイントを介してより詳細なアクセス制御を提供します。
|
||||
- Private Link は、VNet 内のプライベート IP を持つネットワークインターフェイスである private endpoint を介して Azure サービスを VNet にマップします。
|
||||
- Azure サービスはこのプライベート IP アドレスを使用してアクセスされるため、あたかもあなたのネットワークの一部であるかのように見えます。
|
||||
- Private Link 経由で接続されたサービスは、あなたの VNet または接続されたネットワークからのみアクセス可能であり、サービスへのパブリックインターネット経由のアクセスはありません。
|
||||
- Azure サービスや Azure 上でホストされている自分のサービスへの安全な接続、また他者と共有されたサービスへの接続を可能にします。
|
||||
- Service Endpoints のサブネットレベルでのより粗いアクセス制御と比べ、VNet 内の private endpoint を介してより細かいアクセス制御を提供します。
|
||||
|
||||
要約すると、サービスエンドポイントとプライベートリンクの両方がAzureサービスへの安全な接続を提供しますが、**プライベートリンクはサービスが公共のインターネットにさらされることなくプライベートにアクセスされることを保証することにより、より高いレベルの隔離とセキュリティを提供します**。一方、サービスエンドポイントは、VNet内にプライベートIPを必要とせず、Azureサービスへのシンプルで安全なアクセスが必要な一般的なケースに対して設定が容易です。
|
||||
まとめると、Service Endpoints と Private Links の両方が Azure サービスへのセキュアな接続を提供しますが、**Private Links はサービスをパブリックインターネットにさらすことなくプライベートにアクセスさせることで、より高い分離性とセキュリティを提供します**。一方で Service Endpoints は、VNet 内にプライベート IP が不要で、一般的なケースで Azure サービスへの簡単かつセキュアなアクセスが必要な場合に設定が容易です。
|
||||
|
||||
## Azure Front Door (AFD) & AFD WAF
|
||||
|
||||
**Azure Front Door**は、**グローバルなウェブアプリケーションの迅速な配信**のためのスケーラブルで安全なエントリーポイントです。これは、グローバルな**負荷分散、サイト加速、SSLオフロード、Webアプリケーションファイアウォール(WAF)**機能など、さまざまなサービスを単一のサービスに**統合**しています。Azure Front Doorは、**ユーザーに最も近いエッジロケーション**に基づいてインテリジェントなルーティングを提供し、最適なパフォーマンスと信頼性を確保します。さらに、URLベースのルーティング、複数サイトホスティング、セッションアフィニティ、アプリケーション層のセキュリティを提供します。
|
||||
**Azure Front Door** は、グローバルな web アプリケーションの **fast delivery** に向けた、スケーラブルでセキュアなエントリポイントです。これは **application acceleration, SSL offloading, and application layer security**(Web Application Firewall - WAF を通じて)などのさまざまなサービスを **組み合わせ** ています。世界中の edge POP (Point of Presence) ロケーションの概念に基づき、アプリケーションをユーザーにより近づけます。
|
||||
|
||||
**Azure Front Door WAF**は、**バックエンドコードを変更することなくウェブアプリケーションをウェブベースの攻撃から保護する**ように設計されています。SQLインジェクション、クロスサイトスクリプティング、その他の一般的な攻撃に対する脅威から保護するためのカスタムルールと管理されたルールセットが含まれています。
|
||||
> Azure Front Door は、グローバルに分散したエッジロケーションのネットワークを提供し、あなたの web アプリケーション(in Azure or elsewhere)への着信トラフィックを **route and accelerate** して、パフォーマンスを改善し、セキュリティを強化します。
|
||||
|
||||
**例:**
|
||||
|
||||
世界中にユーザーがいるグローバルに分散したアプリケーションがあると想像してください。Azure Front Doorを使用して、**ユーザーのリクエストをアプリケーションをホストしている最寄りの地域データセンターにルーティング**することで、レイテンシを減少させ、ユーザーエクスペリエンスを向上させ、**WAF機能でウェブ攻撃から防御します**。特定の地域でダウンタイムが発生した場合、Azure Front Doorは自動的に次の最適な場所にトラフィックを再ルーティングし、高可用性を確保します。
|
||||
- グローバルにユーザーがいる e-commerce プラットフォームの場合、**Azure Front Door はエッジロケーションで静的コンテンツをキャッシュでき**、**SSL offloading** を提供してレイテンシを低減し、より応答性の高いユーザー体験を実現します。さらに **WAF** により、SQL injection や XSS のような一般的な web 脆弱性からアプリケーションを保護します。
|
||||
|
||||
### 列挙
|
||||
Azure Front Door はまた、ヘルスプローブとレイテンシに基づいてトラフィックを最も近い利用可能なバックエンドへルーティングすることで、**smart load balancing** を提供し、一貫したパフォーマンスと可用性を確保します。**WAF** を統合することで、一般的な web 脅威からの保護にも寄与します。
|
||||
|
||||
### **列挙**
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
```bash
|
||||
# List Azure Front Door Instances
|
||||
# List Azure Front Door profiles
|
||||
az afd profile list --query "[].{name:name, location:location, resourceGroup:resourceGroup}" -o table
|
||||
|
||||
# List AFD endpoints
|
||||
az afd endpoint list --profile-name <ProfileName> --resource-group <ResourceGroupName> --query "[].{name:name, hostName:hostName, state:resourceState}" -o table
|
||||
|
||||
# Classic Azure Front Door (v1) profiles
|
||||
az network front-door list --query "[].{name:name, resourceGroup:resourceGroup, location:location}" -o table
|
||||
|
||||
# List Front Door WAF Policies
|
||||
# Classic Azure Front Door WAF policies
|
||||
az network front-door waf-policy list --query "[].{name:name, resourceGroup:resourceGroup, location:location}" -o table
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#tab name="PowerShell" }}
|
||||
```bash
|
||||
# List Azure Front Door Instances
|
||||
# List Azure Front Door profiles
|
||||
Get-AzFrontDoorCdnProfile | Select-Object Name, Location, ResourceGroupName
|
||||
|
||||
# List AFD endpoints
|
||||
Get-AzFrontDoorCdnEndpoint -ProfileName <ProfileName> -ResourceGroupName <ResourceGroupName> | Select-Object Name, HostName, ResourceState
|
||||
|
||||
# Classic Azure Front Door (v1) profiles
|
||||
Get-AzFrontDoor
|
||||
|
||||
# List Front Door WAF Policies
|
||||
# Classic Azure Front Door WAF policies
|
||||
Get-AzFrontDoorWafPolicy -Name <policyName> -ResourceGroupName <resourceGroupName>
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
## Azure Application Gateway と Azure Application Gateway WAF
|
||||
## Azure Application Gateway and Azure Application Gateway WAF
|
||||
|
||||
Azure Application Gateway は **ウェブトラフィックロードバランサー** であり、**ウェブ** アプリケーションへのトラフィックを管理することを可能にします。これは、サービスとしてのアプリケーションデリバリーコントローラー (ADC) において **レイヤー 7 ロードバランシング、SSL ターミネーション、およびウェブアプリケーションファイアウォール (WAF) 機能** を提供します。主な機能には、URL ベースのルーティング、クッキー ベースのセッションアフィニティ、およびセキュアソケットレイヤー (SSL) オフロードが含まれ、グローバルルーティングやパスベースのルーティングのような複雑なロードバランシング機能を必要とするアプリケーションにとって重要です。
|
||||
Azure Application Gateway は、Web トラフィックのロードバランサーで、Web アプリケーションへのトラフィックを管理できるサービスです。アプリケーション配信コントローラ (ADC) として、Layer 7 のロードバランシング、SSL 終端、および web application firewall (WAF) 機能をサービスとして提供します。主な機能には、URL ベースのルーティング、クッキーによるセッションアフィニティ、secure sockets layer (SSL) のオフロードなどがあり、グローバルルーティングやパスベースのルーティングのような複雑な負荷分散機能を必要とするアプリケーションにとって重要です。
|
||||
|
||||
**例:**
|
||||
**例:**
|
||||
|
||||
複数のサブドメインを持つeコマースウェブサイトがあるシナリオを考えてみてください。これには、ユーザーアカウントや支払い処理などの異なる機能が含まれます。Azure Application Gateway は **URL パスに基づいて適切なウェブサーバーにトラフィックをルーティング** できます。たとえば、`example.com/accounts` へのトラフィックはユーザーアカウントサービスに、`example.com/pay` へのトラフィックは支払い処理サービスに向けられる可能性があります。\
|
||||
そして **WAF 機能を使用してウェブサイトを攻撃から保護します。**
|
||||
例えば、ユーザーアカウントや決済処理など異なる機能ごとに複数のサブドメインを持つ e コマースサイトがあるとします。Azure Application Gateway は URL パスに基づいて適切なウェブサーバーへトラフィックをルーティングできます。例えば、`example.com/accounts` へのトラフィックはユーザーアカウントサービスへ、`example.com/pay` へのトラフィックは決済処理サービスへ振り分けることができます。\
|
||||
また、WAF 機能を使ってサイトを攻撃から保護できます。
|
||||
|
||||
### **列挙**
|
||||
|
||||
@@ -320,20 +395,20 @@ az network application-gateway waf-config list --gateway-name <AppGatewayName> -
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
## Azure Hub, Spoke & VNet Peering
|
||||
## VNet Peering & HUB and Spoke トポロジー
|
||||
|
||||
**VNet Peering**は、Azureのネットワーキング機能であり、**異なる仮想ネットワーク(VNet)を直接かつシームレスに接続することを可能にします**。VNetピアリングを通じて、1つのVNet内のリソースは、**同じネットワークにいるかのように、別のVNet内のリソースとプライベートIPアドレスを使用して通信できます**。\
|
||||
**VNetピアリングは、オンプレミスネットワークとも使用できます**。サイト間VPNまたはAzure ExpressRouteを設定することで実現します。
|
||||
### VNet Peering
|
||||
|
||||
**Azure Hub and Spoke**は、Azureでネットワークトラフィックを管理および整理するために使用されるネットワークトポロジーです。**「ハブ」は、異なる「スポーク」間のトラフィックを制御しルーティングする中央ポイントです**。ハブには通常、ネットワーク仮想アプライアンス(NVA)、Azure VPN Gateway、Azure Firewall、またはAzure Bastionなどの共有サービスが含まれます。**「スポーク」は、ワークロードをホストし、VNetピアリングを使用してハブに接続するVNetです**。これにより、ハブ内の共有サービスを活用できます。このモデルは、クリーンなネットワークレイアウトを促進し、異なるVNet間で複数のワークロードが使用できる共通サービスを集中化することで複雑さを軽減します。
|
||||
**VNet Peering** は Azure の機能で、異なる仮想ネットワーク(VNets)を直接かつシームレスに接続できるようにします。VNet peering を通じて、ある VNet のリソースは別の VNet のリソースとプライベート IP アドレスを使って通信でき、**まるで同じネットワークにあるかのように振る舞います**。\
|
||||
**VNet Peering は、site-to-site VPN や Azure ExpressRoute を設定することでオンプレミスネットワークと併用することもできます。**
|
||||
|
||||
> [!CAUTION] > **AzureではVNETピアリングは非推移的であり**、スポーク1がスポーク2に接続され、スポーク2がスポーク3に接続されている場合、スポーク1はスポーク3と直接通信できません。
|
||||
**Azure Hub and Spoke** は VNet peering を活用して中央の **Hub VNet** を作り、複数の **Spoke VNets** に接続するネットワークアーキテクチャです。Hub には通常ファイアウォール、DNS、Active Directory などの共有サービスが配置され、Spoke はアプリケーションのワークロードをホストします。この設計により管理が簡素化され、中央集権的な制御によってセキュリティが向上し、冗長性が削減されます。
|
||||
|
||||
**例:**
|
||||
|
||||
販売、HR、開発などの別々の部門を持つ会社を想像してください。**各部門には独自のVNet(スポーク)が存在します**。これらのVNetは、**中央データベース、ファイアウォール、インターネットゲートウェイなどの共有リソースへのアクセスを必要とします**。これらのリソースはすべて**別のVNet(ハブ)**にあります。ハブとスポークモデルを使用することで、各部門は**ハブVNetを介して共有リソースに安全に接続でき、これらのリソースをパブリックインターネットにさらすことなく、複雑なネットワーク構造を作成することなく接続できます**。
|
||||
複数の部門(Finance、HR、IT)を持つ大企業は、ファイアウォールや DNS サーバーのような共有サービスを備えた **Hub VNet** を作成できます。各部門はピアリングを通じて Hub に接続される **自身の Spoke VNet** を持つことができ、部門間で安全に通信し共有サービスを利用できる一方で、リソースをパブリックインターネットにさらす必要がなくなります。
|
||||
|
||||
### Enumeration
|
||||
### **列挙**
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -341,8 +416,8 @@ az network application-gateway waf-config list --gateway-name <AppGatewayName> -
|
||||
# List all VNets in your subscription
|
||||
az network vnet list --query "[].{name:name, location:location, addressSpace:addressSpace}" -o table
|
||||
|
||||
# List VNet peering connections for a given VNet
|
||||
az network vnet peering list --resource-group <ResourceGroupName> --vnet-name <VNetName> --query "[].{name:name, peeringState:peeringState, remoteVnetId:remoteVnetId}" -o table
|
||||
# List VNet Peerings
|
||||
az network vnet peering list --resource-group <ResourceGroupName> --vnet-name <VNetName> --query "[].{name:name, remoteVnetId:remoteVirtualNetwork.id, allowForwardedTraffic:allowForwardedTraffic, allowGatewayTransit:allowGatewayTransit}"
|
||||
|
||||
# List Shared Resources (e.g., Azure Firewall) in the Hub
|
||||
az network firewall list --query "[].{name:name, location:location, resourceGroup:resourceGroup}" -o table
|
||||
@@ -353,8 +428,8 @@ az network firewall list --query "[].{name:name, location:location, resourceGrou
|
||||
# List all VNets in your subscription
|
||||
Get-AzVirtualNetwork
|
||||
|
||||
# List VNet peering connections for a given VNet
|
||||
(Get-AzVirtualNetwork -ResourceGroupName <ResourceGroupName> -Name <VNetName>).VirtualNetworkPeerings
|
||||
# List VNet Peerings
|
||||
Get-AzVirtualNetworkPeering -ResourceGroupName <ResourceGroupName> -VirtualNetworkName <VNetName>
|
||||
|
||||
# List Shared Resources (e.g., Azure Firewall) in the Hub
|
||||
Get-AzFirewall
|
||||
@@ -362,15 +437,15 @@ Get-AzFirewall
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
## サイト間VPN
|
||||
## Site-to-Site VPN
|
||||
|
||||
Azureのサイト間VPNは、**オンプレミスネットワークをAzure仮想ネットワーク(VNet)に接続**することを可能にし、Azure内のVMなどのリソースがローカルネットワーク上にあるかのように見えるようにします。この接続は、**トラフィックを暗号化するVPNゲートウェイ**を介して確立されます。
|
||||
A **Site-to-Site VPN** in Azure establishes a secure and **オンプレミスのネットワークから Azure Virtual Network (VNet) への永続的な接続**, enabling resources such as VMs within Azure to appear as if they are on your local network. This connection is established through a **トラフィックを暗号化する VPN gateway** between the two networks.
|
||||
|
||||
**例:**
|
||||
|
||||
ニューヨークに本社を置く企業が、Azure内のVNetに安全に接続する必要があるオンプレミスデータセンターを持っています。このVNetは仮想化されたワークロードをホストしています。**サイト間VPNを設定することで、企業はオンプレミスサーバーとAzure VM間の暗号化された接続を確保でき、両方の環境でリソースに安全にアクセスできるようになります。**
|
||||
ニューヨークに本社を置く企業が、仮想化されたワークロードをホストする Azure の VNet に安全に接続する必要があるオンプレミスのデータセンターを持っているとします。**Site-to-Site VPN を設定することで、オンプレミスのサーバーと Azure VMs 間の通信を暗号化して接続を確保でき、両環境のリソースにまるで同一のローカルネットワーク上にあるかのように安全にアクセスできるようになります。**
|
||||
|
||||
### **列挙**
|
||||
### **Enumeration**
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -395,13 +470,13 @@ Get-AzVirtualNetworkGatewayConnection -ResourceGroupName <ResourceGroupName>
|
||||
|
||||
## Azure ExpressRoute
|
||||
|
||||
Azure ExpressRouteは、**オンプレミスのインフラストラクチャとAzureデータセンター間のプライベートで専用の高速接続を提供するサービス**です。この接続は接続プロバイダーを通じて行われ、公共のインターネットをバイパスし、通常のインターネット接続よりも信頼性が高く、速度が速く、遅延が低く、セキュリティが高いです。
|
||||
Azure ExpressRoute は、オンプレミスのインフラストラクチャと Azure のデータセンター間に対して、**プライベートで専用の高速接続**を提供するサービスです。この接続は接続プロバイダーを介して行われ、パブリックインターネットを経由しないため、通常のインターネット接続よりも信頼性が高く、速度が速く、レイテンシが低く、セキュリティが強化されます。
|
||||
|
||||
**例:**
|
||||
**例:**
|
||||
|
||||
多国籍企業は、**大量のデータと高スループットの必要性から、Azureサービスへの一貫した信頼性のある接続を必要としています**。この会社は、オンプレミスのデータセンターをAzureに直接接続するためにAzure ExpressRouteを選択し、プライバシーと速度を向上させながら、日次バックアップやリアルタイムデータ分析などの大規模なデータ転送を容易にします。
|
||||
多国籍企業は大量のデータと高いスループット要件のため、**Azure サービスへの一貫して信頼性の高い接続**を必要としています。同社はオンプレミスのデータセンターを直接 Azure に接続するために Azure ExpressRoute を選択し、日次バックアップやリアルタイムデータ分析などの大規模なデータ転送を、より高いプライバシーと速度で実現します。
|
||||
|
||||
### **Enumeration**
|
||||
### **列挙**
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -418,4 +493,10 @@ Get-AzExpressRouteCircuit
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
## 参考資料
|
||||
|
||||
- [DNS OverDoS: Are Private Endpoints Too Private?](https://unit42.paloaltonetworks.com/dos-attacks-and-azure-private-endpoint/)
|
||||
- [Azure Private Endpoint DNS configuration](https://learn.microsoft.com/en-us/azure/private-link/private-endpoint-dns)
|
||||
- [Private DNS fallback to internet](https://learn.microsoft.com/en-us/azure/dns/private-dns-fallback)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user