Azure Bastion の使用時にネットワーク セキュリティ グループ (NSG) を使用できます。 詳細については、「セキュリティ グループ」を参照してください。
この図の内容は次のとおりです。
- Bastion ホストは仮想ネットワークにデプロイされています。
- ユーザーは任意の HTML5 ブラウザーを使用して Azure portal に接続します。
- ユーザーは RDP/SSH で接続するために Azure 仮想マシンに移動します。
- 接続統合 - ブラウザー内でのシングルクリックによる RDP/SSH セッション
- Azure VM ではパブリック IP が必要ありません。
ネットワーク セキュリティ グループ
このセクションでは、ユーザーと Azure Bastion との間のネットワーク トラフィックと、仮想ネットワーク内のターゲット VM へのネットワークトラフィックについて説明します。
重要
Azure Bastion リソースで NSG を使用することを選択した場合は、次のイングレスとエグレスのトラフィック規則をすべて作成する必要があります。 NSG で次の規則のいずれかを省略すると、将来的に Azure Bastion リソースで必要な更新プログラムが受信できなくなり、その結果、今後リソースでセキュリティの脆弱性が発生します。
AzureBastionSubnet
Azure Bastion は、AzureBastionSubnet に対して明示的にデプロイされます。
イグレス トラフィック:
- パブリック インターネットからのイグレス トラフィック: Azure Bastion によってパブリック IP が作成されます。このパブリック IP では、イグレス トラフィック用にポート 443 が有効になっている必要があります。 AzureBastionSubnet でポート 3389/22 が開かれている必要はありません。 ソースは、インターネット、または指定したパブリック IP アドレスのセットのいずれかであることに注意してください。
- Azure Bastion からのイグレス トラフィックのコントロール プレーン: コントロール プレーン接続の場合は、GatewayManager サービス タグからのポート 443 受信を有効にします。 これにより、コントロール プレーン、つまりゲートウェイ マネージャーから Azure Bastion への通信が可能になります。
- Azure Bastion データ プレーンからのイングレス トラフィック: Azure Bastion の基盤コンポーネント間でのデータ プレーン通信については、ポート 8080, 5701 で、VirtualNetwork サービス タグから VirtualNetwork サービス タグへの受信を有効にします。 これにより、Azure Bastion のコンポーネントが相互に通信できるようになります。
- Azure Load Balancer からのイングレス トラフィック: 正常性プローブの場合は、AzureLoadBalancer サービス タグからのポート 443 受信を有効にします。 これにより、Azure Load Balancer は接続を検出できます
エグレス トラフィック:
- ターゲット VM へのエグレス トラフィック: Azure Bastion は、プライベート IP 経由でターゲット VM にリーチします。 NSG では、他のターゲット VM サブネットへのエグレス トラフィックをポート 3389 と 22 に許可する必要があります。 Standard SKU 内のカスタム ポート機能を使用している場合は、宛先がサービス タグ VirtualNetwork である送信トラフィックが NSG で許可されていることを確認します。
- Azure Bastion データ プレーンへのエグレス トラフィック: Azure Bastion の基盤コンポーネント間でのデータ プレーン通信については、ポート 8080, 5701 で、VirtualNetwork サービス タグから VirtualNetwork サービス タグへの送信を有効にします。 これにより、Azure Bastion のコンポーネントが相互に通信できるようになります。
- Azure の他のパブリックエンド ポイントへのエグレス トラフィック: Azure Bastion から Azure 内のさまざまなパブリック エンドポイントに接続できる必要があります (たとえば、診断ログや測定ログを格納するため)。 このため、Azure Bastion には AzureCloud サービス タグに対する 443 への送信が必要です。
- インターネットへのエグレス トラフィック: Azure Bastion は、セッション、Bastion 共有可能リンク、証明書の検証のためにインターネットと通信できる必要があります。 そのため、ポート 80 でインターネットへの送信を有効にすることをお勧めします。
上記のイングレストラフィックルールとエグレストラフィックルールを作成するための Powershell スクリプト
# Connect to Azure Account
Connect-AzAccount
# Get the Network Security Group details
$resourceGroupName = Read-Host ("Enter the name of the Resource Group")
$nsgName = Read-Host ("Enter the name of the Network Security Group")
# Ingress and Egress rules
$rules = @(
@{
Name = "AllowHttpsInbound"
Priority = 120
Direction = "Inbound"
Access = "Allow"
SourceAddressPrefix = "Internet"
SourcePortRange = "*"
DestinationAddressPrefix = "*"
DestinationPortRange = "443"
Protocol = "TCP"
},
@{
Name = "AllowGatewayManagerInbound"
Priority = 130
Direction = "Inbound"
Access = "Allow"
SourceAddressPrefix = "GatewayManager"
SourcePortRange = "*"
DestinationAddressPrefix = "*"
DestinationPortRange = "443"
Protocol = "TCP"
},
@{
Name = "AllowAzureLoadBalancerInbound"
Priority = 140
Direction = "Inbound"
Access = "Allow"
SourceAddressPrefix = "AzureLoadBalancer"
SourcePortRange = "*"
DestinationAddressPrefix = "*"
DestinationPortRange = "443"
Protocol = "TCP"
},
@{
Name = "AllowBastionHostCommunication"
Priority = 150
Direction = "Inbound"
Access = "Allow"
SourceAddressPrefix = "VirtualNetwork"
SourcePortRange = "*"
DestinationAddressPrefix = "VirtualNetwork"
DestinationPortRange = 8080,5701
Protocol = "Ah"
}
@{
Name = "AllowSshRdpOutbound"
Priority = 100
Direction = "Outbound"
Access = "Allow"
SourceAddressPrefix = "*"
SourcePortRange = "*"
DestinationAddressPrefix = "VirtualNetwork"
DestinationPortRange = 22,3389
Protocol = "Ah"
},
@{
Name = "AllowAzureCloudOutbound"
Priority = 110
Direction = "Outbound"
Access = "Allow"
SourceAddressPrefix = "*"
SourcePortRange = "*"
DestinationAddressPrefix = "AzureCloud"
DestinationPortRange = "443"
Protocol = "TCP"
},
@{
Name = "AllowBastionCommunication"
Priority = 120
Direction = "Outbound"
Access = "Allow"
SourceAddressPrefix = "VirtualNetwork"
SourcePortRange = "*"
DestinationAddressPrefix = "VirtualNetwork"
DestinationPortRange = 8080,5701
Protocol = "Ah"
},
@{
Name = "AllowHttpOutbound"
Priority = 130
Direction = "Outbound"
Access = "Allow"
SourceAddressPrefix = "*"
SourcePortRange = "*"
DestinationAddressPrefix = "Internet"
DestinationPortRange = "80"
Protocol = "Ah"
}
)
foreach ($rule in $rules) {
$nsgRule = New-AzNetworkSecurityRuleConfig -Name $rule.Name `
-Priority $rule.Priority `
-Direction $rule.Direction `
-Access $rule.Access `
-SourceAddressPrefix $rule.SourceAddressPrefix `
-SourcePortRange $rule.SourcePortRange `
-DestinationAddressPrefix $rule.DestinationAddressPrefix `
-DestinationPortRange $rule.DestinationPortRange `
-Protocol $rule.Protocol
# Get the details of the Network Security Group and Add rules to the group
$nsg = Get-AzNetworkSecurityGroup -ResourceGroupName $resourceGroupName -Name $nsgName
$nsg.SecurityRules.Add($nsgRule)
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg
}
ターゲット VM サブネット
これは、RDP/SSH で接続するターゲット仮想マシンを含むサブネットです。
- Azure Bastion からのイグレス トラフィック: Azure Bastion は、プライベート IP 経由でターゲット VM にリーチします。 RDP または SSH のポート (それぞれポート 3389 と 22。Standard または Premium の SKU の一部としてカスタム ポート機能を使用している場合は、カスタム ポート値) を、ターゲット VM 側でプライベート IP 経由で開く必要があります。 ベスト プラクティスとして、この規則に Azure Bastion サブネットの IP アドレス範囲を追加して、ターゲット VM サブネット内のターゲット VM で Bastion によってのみこれらのポートが開かれるようにすることができます。
次のステップ
Azure Bastion の詳細については、FAQ をご覧ください。