Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In dieser Schnellstartanleitung verwenden Sie Bicep zum Erstellen einer Azure Firewall-Instanz und einer Firewallrichtlinie. Die Firewallrichtlinie enthält eine Anwendungsregel, die Verbindungen mit www.microsoft.com zulässt, sowie eine Regel, die Verbindungen mit Windows Update (unter Verwendung des FQDN-Tags WindowsUpdate) zulässt. Eine Netzwerkregel lässt UDP-Verbindungen mit einem Zeitserver unter 13.86.101.172 zu.
Außerdem werden in den Regeln IP-Adressgruppen verwendet, um die IP-Adressen für die Quelle zu definieren.
Bicep ist eine domänenspezifische Sprache (Domain-Specific Language, DSL), die eine deklarative Syntax zur Bereitstellung von Azure-Ressourcen verwendet. Sie bietet eine präzise Syntax, zuverlässige Typsicherheit und Unterstützung für die Wiederverwendung von Code. Bicep bietet die beste Form der Erstellung für Ihre Infrastructure-as-Code-Lösungen in Azure.
Informationen zu Azure Firewall Manager finden Sie unter Was ist Azure Firewall Manager?.
Informationen zu Azure Firewall finden Sie unter Was ist Azure Firewall?.
Informationen zu IP-Adressgruppen finden Sie unter IP-Adressgruppen in Azure Firewall.
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
Überprüfen der Bicep-Datei
Mithilfe dieser Bicep-Datei erstellen Sie ein virtuelles Hubnetzwerk sowie die erforderlichen Ressourcen zur Unterstützung des Szenarios.
Die in dieser Schnellstartanleitung verwendete Bicep-Datei stammt aus den Azure-Schnellstartvorlagen.
@description('Virtual network name')
param virtualNetworkName string = 'vnet${uniqueString(resourceGroup().id)}'
@description('Azure Firewall name')
param firewallName string = 'fw${uniqueString(resourceGroup().id)}'
@description('Number of public IP addresses for the Azure Firewall')
@minValue(1)
@maxValue(100)
param numberOfPublicIPAddresses int = 2
@description('Zone numbers e.g. 1,2,3.')
param availabilityZones array = []
@description('Location for all resources.')
param ___location string = resourceGroup().___location
param infraIpGroupName string = '${___location}-infra-ipgroup-${uniqueString(resourceGroup().id)}'
param workloadIpGroupName string = '${___location}-workload-ipgroup-${uniqueString(resourceGroup().id)}'
param firewallPolicyName string = '${firewallName}-firewallPolicy'
var vnetAddressPrefix = '10.10.0.0/24'
var azureFirewallSubnetPrefix = '10.10.0.0/25'
var publicIPNamePrefix = 'publicIP'
var azurepublicIpname = publicIPNamePrefix
var azureFirewallSubnetName = 'AzureFirewallSubnet'
var azureFirewallSubnetId = resourceId('Microsoft.Network/virtualNetworks/subnets', virtualNetworkName, azureFirewallSubnetName)
var azureFirewallPublicIpId = resourceId('Microsoft.Network/publicIPAddresses', publicIPNamePrefix)
var azureFirewallIpConfigurations = [for i in range(0, numberOfPublicIPAddresses): {
name: 'IpConf${i}'
properties: {
subnet: ((i == 0) ? json('{"id": "${azureFirewallSubnetId}"}') : json('null'))
publicIPAddress: {
id: '${azureFirewallPublicIpId}${i + 1}'
}
}
}]
resource workloadIpGroup 'Microsoft.Network/ipGroups@2022-01-01' = {
name: workloadIpGroupName
___location: ___location
properties: {
ipAddresses: [
'10.20.0.0/24'
'10.30.0.0/24'
]
}
}
resource infraIpGroup 'Microsoft.Network/ipGroups@2022-01-01' = {
name: infraIpGroupName
___location: ___location
properties: {
ipAddresses: [
'10.40.0.0/24'
'10.50.0.0/24'
]
}
}
resource vnet 'Microsoft.Network/virtualNetworks@2022-01-01' = {
name: virtualNetworkName
___location: ___location
tags: {
displayName: virtualNetworkName
}
properties: {
addressSpace: {
addressPrefixes: [
vnetAddressPrefix
]
}
subnets: [
{
name: azureFirewallSubnetName
properties: {
addressPrefix: azureFirewallSubnetPrefix
}
}
]
enableDdosProtection: false
}
}
resource publicIpAddress 'Microsoft.Network/publicIPAddresses@2022-01-01' = [for i in range(0, numberOfPublicIPAddresses): {
name: '${azurepublicIpname}${i + 1}'
___location: ___location
sku: {
name: 'Standard'
}
properties: {
publicIPAllocationMethod: 'Static'
publicIPAddressVersion: 'IPv4'
}
}]
resource firewallPolicy 'Microsoft.Network/firewallPolicies@2022-01-01'= {
name: firewallPolicyName
___location: ___location
properties: {
threatIntelMode: 'Alert'
}
}
resource networkRuleCollectionGroup 'Microsoft.Network/firewallPolicies/ruleCollectionGroups@2022-01-01' = {
parent: firewallPolicy
name: 'DefaultNetworkRuleCollectionGroup'
properties: {
priority: 200
ruleCollections: [
{
ruleCollectionType: 'FirewallPolicyFilterRuleCollection'
action: {
type: 'Allow'
}
name: 'azure-global-services-nrc'
priority: 1250
rules: [
{
ruleType: 'NetworkRule'
name: 'time-windows'
ipProtocols: [
'UDP'
]
destinationAddresses: [
'13.86.101.172'
]
sourceIpGroups: [
workloadIpGroup.id
infraIpGroup.id
]
destinationPorts: [
'123'
]
}
]
}
]
}
}
resource applicationRuleCollectionGroup 'Microsoft.Network/firewallPolicies/ruleCollectionGroups@2022-01-01' = {
parent: firewallPolicy
name: 'DefaultApplicationRuleCollectionGroup'
dependsOn: [
networkRuleCollectionGroup
]
properties: {
priority: 300
ruleCollections: [
{
ruleCollectionType: 'FirewallPolicyFilterRuleCollection'
name: 'global-rule-url-arc'
priority: 1000
action: {
type: 'Allow'
}
rules: [
{
ruleType: 'ApplicationRule'
name: 'winupdate-rule-01'
protocols: [
{
protocolType: 'Https'
port: 443
}
{
protocolType: 'Http'
port: 80
}
]
fqdnTags: [
'WindowsUpdate'
]
terminateTLS: false
sourceIpGroups: [
workloadIpGroup.id
infraIpGroup.id
]
}
]
}
{
ruleCollectionType: 'FirewallPolicyFilterRuleCollection'
action: {
type: 'Allow'
}
name: 'Global-rules-arc'
priority: 1202
rules: [
{
ruleType: 'ApplicationRule'
name: 'global-rule-01'
protocols: [
{
protocolType: 'Https'
port: 443
}
]
targetFqdns: [
'www.microsoft.com'
]
terminateTLS: false
sourceIpGroups: [
workloadIpGroup.id
infraIpGroup.id
]
}
]
}
]
}
}
resource firewall 'Microsoft.Network/azureFirewalls@2021-03-01' = {
name: firewallName
___location: ___location
zones: ((length(availabilityZones) == 0) ? null : availabilityZones)
dependsOn: [
vnet
publicIpAddress
workloadIpGroup
infraIpGroup
networkRuleCollectionGroup
applicationRuleCollectionGroup
]
properties: {
ipConfigurations: azureFirewallIpConfigurations
firewallPolicy: {
id: firewallPolicy.id
}
}
}
In der Bicep-Datei sind mehrere Azure-Ressourcen definiert:
- Microsoft.Network/ipGroups
- Microsoft.Network/firewallPolicies
- Microsoft.Network/firewallPolicies/ruleCollectionGroups
- Microsoft.Network/azureFirewalls
- Microsoft.Network/virtualNetworks
- Microsoft.Network/publicIPAddresses
Bereitstellen der Bicep-Datei
Speichern Sie die Bicep-Datei als
main.bicepauf Ihrem lokalen Computer.Stellen Sie die Bicep-Datei entweder mit Azure CLI oder mit Azure PowerShell bereit.
az group create --name exampleRG --___location eastus az deployment group create --resource-group exampleRG --template-file main.bicep --parameters firewallName=<firewall-name>Hinweis
Ersetzen Sie <firewall-name> durch den Namen der Azure Firewall-Instanz.
Nach Abschluss der Bereitstellung sollte eine Meldung mit dem Hinweis angezeigt werden, dass die Bereitstellung erfolgreich war.
Überprüfen der bereitgestellten Ressourcen
Verwenden Sie die Azure CLI oder Azure PowerShell, um die bereitgestellten Ressourcen zu überprüfen.
az resource list --resource-group exampleRG
Bereinigen von Ressourcen
Wenn Sie die mit der Firewall erstellten Ressourcen nicht mehr benötigen, löschen Sie die Ressourcengruppe. Dadurch werden die Firewall und alle zugehörigen Ressourcen gelöscht.
az group delete --name exampleRG