LoginSignup
4
2

Azure API Management stv2 用の NetworkSecurityGroup を作成する

Last updated at Posted at 2024-01-04

この記事について

Azure API Management (APIM) を VNet でホストする場合、特定の通信を許可するようにNetwork Security Group (NSG) を設定する必要がある。

今回、Azure Portal 上から APIM stv2 用の NSG を作成しようとしたらつまずいたので、備忘録として残しておく。

APIM 用の NSG で許可すべきルールについて

公式ページに具体的な設定項目が示されている。

仮想ネットワークの構成のリファレンス: API Management

Screenshot 2023-12-28 13.52.47.jpg

Screenshot 2023-12-28 13.53.06.jpg

ソース/ターゲットはサービスタグで統一されている。

つまずきポイント

Azure Portal から NSG の 受信/送信セキュリティ規則 を作成しようとすると、ほとんどのサービスタグが選べない。

Screenshot 2023-12-28 13.39.17.jpg
↑ Internet, VirtualNetwork, AzureLoadBalancer しか選択肢に出てこない

直接入力もできないため、「ApiManagement」などのサービスタグが使えない。

解決策

Azure CLI を使ってルールを作成することはできた

MyNetworkSecurityGroup=oecms-aoai-api-nsg

az network nsg rule create -g $MyResourceGroup --nsg-name $MyNetworkSecurityGroup -n ClientToVnet --protocol Tcp --priority 100 --source-address-prefixes Internet --destination-address-prefixes VirtualNetwork --destination-port-ranges 443 --direction Inbound --access Allow --description "API Management へのクライアント通信"

az network nsg rule create -g $MyResourceGroup --nsg-name $MyNetworkSecurityGroup -n ApiManagementToEndpoint --priority 200 --source-address-prefixes ApiManagement --destination-address-prefixes VirtualNetwork --destination-port-ranges 3443 --direction Inbound --access Allow --protocol Tcp --description "Azure Portal と PowerShell 用の管理エンドポイント"

az network nsg rule create -g $MyResourceGroup --nsg-name $MyNetworkSecurityGroup -n VNetToStorage --protocol Tcp --priority 300 --source-address-prefixes VirtualNetwork --destination-address-prefixes Storage --destination-port-ranges 443 --direction Outbound --access Allow --description "Azure Storage への依存関係"

az network nsg rule create -g $MyResourceGroup --nsg-name $MyNetworkSecurityGroup -n VNetToActiveDirectory --protocol Tcp --priority 400 --source-address-prefixes VirtualNetwork --destination-address-prefixes AzureActiveDirectory --destination-port-ranges 443 --direction Outbound --access Allow --description "Microsoft Entra ID、Microsoft Graph、 Azure Key Vault の依存関係"

az network nsg rule create -g $MyResourceGroup --nsg-name $MyNetworkSecurityGroup -n VNetToAzureConnectors --protocol Tcp --priority 500 --source-address-prefixes VirtualNetwork --destination-address-prefixes AzureConnectors --destination-port-ranges 443 --direction Outbound --access Allow --description "マネージド接続 の依存関係"

az network nsg rule create -g $MyResourceGroup --nsg-name $MyNetworkSecurityGroup -n VNetToSql --protocol Tcp --priority 600 --source-address-prefixes VirtualNetwork --destination-address-prefixes Sql --destination-port-ranges 1443 --direction Outbound --access Allow --description "Azure SQL エンドポイントへのアクセス"

az network nsg rule create -g $MyResourceGroup --nsg-name $MyNetworkSecurityGroup -n VNetToKeyVault --protocol Tcp --priority 700 --source-address-prefixes VirtualNetwork --destination-address-prefixes AzureKeyVault --destination-port-ranges 443 --direction Outbound --access Allow --description "Azure Key Vault へのアクセス"

az network nsg rule create -g $MyResourceGroup --nsg-name $MyNetworkSecurityGroup -n VNetToEventHub --protocol Tcp --priority 800 --source-address-prefixes VirtualNetwork --destination-address-prefixes EventHub --destination-port-ranges 5671 5672 443 --direction Outbound --access Allow --description "Azure Event Hubs へのログ ポリシーおよび Azure Monitor の依存関係"

az network nsg rule create -g $MyResourceGroup --nsg-name $MyNetworkSecurityGroup -n VNetToStorageForGit --protocol Tcp --priority 900 --source-address-prefixes VirtualNetwork --destination-address-prefixes Storage --destination-port-ranges 445 --direction Outbound --access Allow --description "Git のための Azure ファイル共有への依存関係"

az network nsg rule create -g $MyResourceGroup --nsg-name $MyNetworkSecurityGroup -n VNetToMonitor --protocol Tcp --priority 1000 --source-address-prefixes VirtualNetwork --destination-address-prefixes AzureMonitor --destination-port-ranges 1886 443 --direction Outbound --access Allow --description "診断ログとメトリック、リソース正常性、アプリケーション インサイトの発行"

az network nsg rule create -g $MyResourceGroup --nsg-name $MyNetworkSecurityGroup -n VNetToExternalRedisInbound --protocol Tcp --priority 1100 --source-address-prefixes VirtualNetwork --destination-address-prefixes VirtualNetwork --destination-port-ranges 6380 --direction Inbound --access Allow --description "マシン間のキャッシュ ポリシーのために外部の Azure Cache for Redis サービスにアクセスする"

az network nsg rule create -g $MyResourceGroup --nsg-name $MyNetworkSecurityGroup -n VNetToExternalRedisOutbound --protocol Tcp --priority 1100 --source-address-prefixes VirtualNetwork --destination-address-prefixes VirtualNetwork --destination-port-ranges 6380 --direction Outbound --access Allow --description "マシン間のキャッシュ ポリシーのために外部の Azure Cache for Redis サービスにアクセスする"

az network nsg rule create -g $MyResourceGroup --nsg-name $MyNetworkSecurityGroup -n VNetToInternalRedisInbound --protocol Tcp --priority 1200 --source-address-prefixes VirtualNetwork --destination-address-prefixes VirtualNetwork --destination-port-ranges 6381-6383 --direction Inbound --access Allow --description "マシン間のキャッシュ ポリシーのために内部の Azure Cache for Redis サービスにアクセスする"

az network nsg rule create -g $MyResourceGroup --nsg-name $MyNetworkSecurityGroup -n VNetToInternalRedisOutbound --protocol Tcp --priority 1200 --source-address-prefixes VirtualNetwork --destination-address-prefixes VirtualNetwork --destination-port-ranges 6381-6383 --direction Outbound --access Allow --description "マシン間のキャッシュ ポリシーのために内部の Azure Cache for Redis サービスにアクセスする"

az network nsg rule create -g $MyResourceGroup --nsg-name $MyNetworkSecurityGroup -n VNetToRateLimitInbound --protocol Tcp --priority 1300 --source-address-prefixes VirtualNetwork --destination-address-prefixes VirtualNetwork --destination-port-ranges 4290 --direction Inbound --access Allow --description "マシン間のレート制限ポリシーのために同期カウンターにアクセスする"

az network nsg rule create -g $MyResourceGroup --nsg-name $MyNetworkSecurityGroup -n VNetToRateLimitOutbound --protocol Tcp --priority 1300 --source-address-prefixes VirtualNetwork --destination-address-prefixes VirtualNetwork --destination-port-ranges 4290 --direction Outbound --access Allow --description "マシン間のレート制限ポリシーのために同期カウンターにアクセスする"

az network nsg rule create -g $MyResourceGroup --nsg-name $MyNetworkSecurityGroup -n LoadBalancerToVnet --protocol Tcp --priority 1400 --source-address-prefixes AzureLoadBalancer --destination-address-prefixes VirtualNetwork --destination-port-ranges 6390 --direction Inbound --access Allow --description "Azure インフラストラクチャの Load Balancer"

az network nsg rule create -g $MyResourceGroup --nsg-name $MyNetworkSecurityGroup -n TrafficManagerToVnet --protocol Tcp --priority 1500 --source-address-prefixes AzureTrafficManager --destination-address-prefixes VirtualNetwork --destination-port-ranges 443 --direction Inbound --access Allow --description "複数リージョンへのデプロイ用の Azure Traffic Manager ルーティング"

オマケ

仮想ネットワーク サービス タグ のページにあった以下記載で迷うことになった。

Screenshot 2023-12-28 13.44.39.jpg

ちょうど Azure Portal 上で確認できるサービスタグと一致していたし、意図せずクラシックデプロイモデルを使っていたのか?という方向で調査して時間を使ってしまった。

雑感

Azure は不慣れなのでとりあえず Portalから〜と安易に考えていたが、しっかり Terraform で管理しようと思った

4
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2