Virtual Networks


The presented resiliency recommendations in this guidance include Virtual Networks and associated Virtual Networks settings.

Summary of Recommendations

The below table shows the list of resiliency recommendations for Virtual Networks and associated resources.

Recommendations Details

VNET-1 - すべてのサブネットにネットワーク セキュリティ グループが関連付けられている必要があります

Category: Access & Security

Impact: High

Guidance

ネットワーク・セキュリティ・グループ: ネットワーク・セキュリティ・グループおよびアプリケーション・セキュリティ・グループには、ソースおよび宛先のIPアドレス、ポートおよびプロトコルによってリソースとの間のトラフィックをフィルタリングできる複数の受信および送信セキュリティ規則を含めることができます。NSG は、サブネット レベルのセキュリティ層を提供します。GatewaySubnet、AzureFirewallSubnet、AzureFirewallManagementSubnet、RouteServerSubnet への NSG の適用はサポートされていないため、これらのサブネットは除外 (無視) されることに注意してください。

Resources

Resource Graph Query

// Azure Resource Graph Query
// Find Subnets without NSG associated
resources
| where type =~ 'Microsoft.Network/virtualnetworks'
| mv-expand subnets = properties.subnets
| extend sn = string_size(subnets.properties.networkSecurityGroup)
| where sn == 0 and subnets.name !in ("GatewaySubnet", "AzureFirewallSubnet", "AzureFirewallManagementSubnet", "RouteServerSubnet")
| project recommendationId = "vnet-1", name, id, tags, param1 = strcat("SubnetName: ", subnets.name), param2 = "NSG: False"



VNET-2 - Azure DDoS Standard Protection プランを使用して、お客様の仮想ネットワーク内でホストされているすべてのパブリック エンドポイントを保護します

Category: Access & Security

Impact: High

Guidance

Azure DDoS Protection は、アプリケーション設計のベスト プラクティスと組み合わせることで、DDoS 攻撃から保護するための強化された DDoS 軽減機能を提供します。これは、仮想ネットワーク内の特定の Azure リソースを保護するのに役立つように自動的に調整されます。

Resources

Resource Graph Query

// Azure Resource Graph Query
// Find virtual networks without DDoS Protection
resources
| where type =~ 'Microsoft.Network/virtualNetworks'
| where isnull(properties.enableDdosProtection) or properties.enableDdosProtection contains "false"
| project recommendationId = "vnet-2", name, id, tags, param1 = strcat("EnableDdosProtection: ", properties.enableDdosProtection)



VNET-3 - 使用可能な場合は、PaaS サービスにサービス エンドポイントではなくプライベート エンドポイントを使用します

Category: Access & Security

Impact: Medium

Guidance

仮想ネットワーク サービス エンドポイントは、Private Link が使用できず、データの不正な移動の懸念がない場合にのみ使用します。VNet サービス エンドポイント機能 (ネットワーク側で VNet サービス エンドポイントを有効にし、Azure サービス側で適切な VNet ACL を設定する) により、許可された VNet とサブネットへの Azure サービス アクセスが制限されるため、ネットワーク レベルのセキュリティと Azure サービス トラフィックの分離が提供されます。VNet サービス エンドポイントを使用するすべてのトラフィックは Microsoft のバックボーンを経由するため、パブリック インターネットから分離する別のレイヤーが提供されます

Resources

Resource Graph Query

// Azure Resource Graph Query
// Find Subnets with Service Endpoint enabled for services that offer Private Link
resources
| where type =~ 'Microsoft.Network/virtualnetworks'
| mv-expand subnets = properties.subnets
| extend se = array_length(subnets.properties.serviceEndpoints)
| where se >= 1
| project name, id, tags, subnets, serviceEndpoints=todynamic(subnets.properties.serviceEndpoints)
| mv-expand serviceEndpoints
| project name, id, tags, subnetName=subnets.name, serviceName=tostring(serviceEndpoints.service)
| where serviceName in (parse_json('["Microsoft.CognitiveServices","Microsoft.AzureCosmosDB","Microsoft.DBforMariaDB","Microsoft.DBforMySQL","Microsoft.DBforPostgreSQL","Microsoft.EventHub","Microsoft.KeyVault","Microsoft.ServiceBus","Microsoft.Sql", "Microsoft.Storage","Microsoft.StorageSync","Microsoft.Synapse","Microsoft.Web"]'))
| project recommendationId = "vnet-3", name, id, tags, param1 = strcat("subnet=", subnetName), param2=strcat("serviceName=",serviceName), param3="ServiceEndpoints=true"