Partager via


Meilleures pratiques finOps pour la mise en réseau

Cet article décrit les pratiques finOps éprouvées pour les services de mise en réseau. Ils se concentrent sur l’optimisation des coûts, les améliorations de l’efficacité et les insights sur les ressources.


Pare-feu Azure

Les sections suivantes fournissent des requêtes Azure Resource Graph (ARG) pour Pare-feu Azure. Ces requêtes vous aident à obtenir des insights sur vos ressources de pare-feu Azure et à vous assurer qu’elles sont configurées avec les paramètres appropriés. En analysant les modèles d’utilisation et en exposant des recommandations d’Azure Advisor, vous pouvez optimiser vos configurations de pare-feu Azure pour optimiser l’efficacité des coûts.

Requête : Analyse des stratégies de pare-feu et de pare-feu Azure

Cette requête ARG analyse les pare-feu Azure et leurs stratégies de pare-feu associées dans votre environnement Azure. Il cible spécifiquement les pare-feu avec un niveau de référence SKU Premium et vérifie que les configurations dans leurs stratégies de pare-feu associées utilisent les fonctionnalités Premium.

Catégorie

Optimisation

Requête

resources 
| where type =~ 'Microsoft.Network/azureFirewalls' and properties.sku.tier=="Premium"
| project FWID=id, firewallName=name, SkuTier=tostring(properties.sku.tier), resourceGroup, location
| join kind=inner (
    resources
    | where type =~ 'microsoft.network/firewallpolicies'
    | mv-expand properties.firewalls
    | extend intrusionDetection = tostring(properties.intrusionDetection contains "Alert"
        or properties.intrusionDetection contains "Deny")
    | extend transportSecurity = tostring(properties.transportSecurity contains "keyVaultSecretId")
    | extend FWID = tostring(properties_firewalls.id)
    | where intrusionDetection == "False"
        and transportSecurity == "False"
    | project
        PolicyName = name,
        PolicySKU = tostring(properties.sku.tier),
        intrusionDetection,
        transportSecurity,
        FWID
) on FWID

Requête : analyse des sous-réseaux Pare-feu Azure et des sous-réseaux associés

Cette requête ARG analyse les pare-feu Azure et leurs sous-réseaux associés dans votre environnement Azure. Il fournit des informations sur les sous-réseaux associés à chaque instance de pare-feu Azure. Optimisez l’utilisation du pare-feu Azure en ayant une instance centrale du pare-feu Azure dans le réseau virtuel hub ou un hub sécurisé Virtual WAN. Ensuite, partagez le même pare-feu sur de nombreux réseaux virtuels spoke connectés au même hub à partir de la même région.

Catégorie

Optimisation

Requête

resources
| where type =~ 'Microsoft.Network/azureFirewalls' and properties.sku.tier=="Premium"
| project
    FWID=id,
    firewallName=name,
    SkuTier=tostring(properties.sku.tier),
    resourceGroup,
    location
| join kind=inner (
    resources
    | where type =~ 'microsoft.network/firewallpolicies'
    | mv-expand properties.firewalls
    | extend intrusionDetection = tostring(properties.intrusionDetection contains "Alert"
        or properties.intrusionDetection contains "Deny")
    | extend transportSecurity = tostring(properties.transportSecurity contains "keyVaultSecretId")
    | extend FWID=tostring(properties_firewalls.id)
    | where intrusionDetection == "False"
        and transportSecurity == "False"
    | project
        PolicyName = name,
        PolicySKU = tostring(properties.sku.tier),
        intrusionDetection,
        transportSecurity,
        FWID
) on FWID

Application Gateway

La section suivante fournit des requêtes ARG pour Azure Application Gateway. Il vous permet d’obtenir des insights sur vos ressources Azure Application Gateway et de s’assurer qu’elles sont configurées avec les paramètres appropriés.

Requête : passerelles d’application inactives

Cette requête ARG analyse les passerelles d’application et leurs pools principaux associés dans votre environnement Azure. Il fournit des informations sur les passerelles d’application qui ont des pools back-ends vides, ce qui indique qu’elles peuvent être inactives et potentiellement inutiles.

Catégorie

Optimisation

Requête

resources
| where type =~ 'Microsoft.Network/applicationGateways'
| extend
    backendPoolsCount = array_length(properties.backendAddressPools),
    SKUName = tostring(properties.sku.name),
    SKUTier = tostring(properties.sku.tier),
    SKUCapacity = properties.sku.capacity,
    backendPools = properties.backendAddressPools,
    resourceGroup = strcat('/subscriptions/',subscriptionId,'/resourceGroups/',resourceGroup)
| project id, name, SKUName, SKUTier, SKUCapacity, resourceGroup, subscriptionId
| join (
    resources
    | where type =~ 'Microsoft.Network/applicationGateways'
    | mvexpand backendPools = properties.backendAddressPools
    | extend backendIPCount = array_length(backendPools.properties.backendIPConfigurations)
    | extend backendAddressesCount = array_length(backendPools.properties.backendAddresses)
    | extend backendPoolName = backendPools.properties.backendAddressPools.name
    | summarize
        backendIPCount = sum(backendIPCount),
        backendAddressesCount = sum(backendAddressesCount)
        by id
) on id
| project-away id1
| where (backendIPCount == 0 or isempty(backendIPCount))
    and (backendAddressesCount==0 or isempty(backendAddressesCount))
| order by id asc

ExpressRoute

La section suivante fournit une requête ARG pour ExpressRoute. Il vous permet d’obtenir des insights sur vos circuits ExpressRoute et de s’assurer qu’ils sont configurés avec les paramètres appropriés.

Requête : Circuits ExpressRoute inactifs

Cette requête ARG analyse les circuits ExpressRoute au sein de votre environnement Azure pour identifier les circuits sans circuit terminé.

Catégorie

Optimisation

Requête

resources
| where type =~ 'Microsoft.Network/expressRouteCircuits'
    and properties.serviceProviderProvisioningState == "NotProvisioned"
| extend
    ServiceLocation = tostring(properties.serviceProviderProperties.peeringLocation),
    ServiceProvider = tostring(properties.serviceProviderProperties.serviceProviderName),
    BandwidthInMbps = tostring(properties.serviceProviderProperties.bandwidthInMbps)
| project
    ERId = id,
    ERName = name,
    ERRG = resourceGroup,
    SKUName = tostring(sku.name),
    SKUTier = tostring(sku.tier),
    SKUFamily = tostring(sku.family),
    ERLocation = location,
    ServiceLocation,
    ServiceProvider,
    BandwidthInMbps

Équilibreur de charge

La section suivante fournit une requête ARG pour Azure Load Balancer. Il vous permet d’obtenir des insights sur vos ressources d’équilibreur de charge Azure et de s’assurer qu’elles sont configurées avec les paramètres appropriés.

Requête : équilibreurs de charge inactifs

Cette requête ARG analyse les équilibreurs de charge Azure et leurs pools principaux associés au sein de votre environnement Azure. Il fournit des informations sur les équilibreurs de charge qui ont des pools back-ends vides, indiquant qu’ils peuvent être inactifs et potentiellement inutiles.

Catégorie

Optimisation

Requête

resources
| extend resourceGroup = strcat('/subscriptions/', subscriptionId, '/resourceGroups/', resourceGroup)
| extend SKUName = tostring(sku.name)
| extend SKUTier = tostring(sku.tier)
| extend location,backendAddressPools = properties.backendAddressPools
| where type =~ 'microsoft.network/loadbalancers'
    and array_length(backendAddressPools) == 0
    and sku.name!='Basic'
| order by id asc
| project
    id,
    name,
    SKUName,
    SKUTier,
    backendAddressPools,
    location,
    resourceGroup,
    subscriptionId

DNS privé

La section suivante fournit une requête ARG pour DNS privé. Il vous permet d’obtenir des insights sur vos ressources DNS privé et de s’assurer qu’elles sont configurées avec les paramètres appropriés.

Requête : DNS privé

Cette requête ARG analyse DNS privé zones au sein de votre environnement Azure pour identifier les éléments sans Réseau virtuel Liens.

Catégorie

Optimisation

Requête

resources
| where type == "microsoft.network/privatednszones"
    and properties.numberOfVirtualNetworkLinks == 0
| project id, PrivateDNSName=name,
    NumberOfRecordSets = tostring(properties.numberOfRecordSets),
    resourceGroup = tostring(strcat('/subscriptions/', subscriptionId, '/resourceGroups/', resourceGroup)),
    vNets = tostring(properties.properties.numberOfVirtualNetworkLinks),
    subscriptionId

Adresse IP publique

Les sections suivantes fournissent des requêtes ARG pour les adresses IP publiques. Ils vous aident à obtenir des informations sur vos ressources d’adresse IP publique et à vérifier qu’elles sont configurées avec les paramètres appropriés.

Requête : Adresses IP publiques inactives

Cette requête ARG analyse les adresses IP publiques Azure. Il fournit des informations sur les adresses IP publiques inactives et potentiellement inutiles.

Catégorie

Optimisation

Requête

resources
| where type =~ 'Microsoft.Network/publicIPAddresses'
    and isempty(properties.ipConfiguration)
    and isempty(properties.natGateway)
    and properties.publicIPAllocationMethod =~ 'Static'
| extend
    PublicIpId = id,
    IPName = name,
    AllocationMethod = tostring(properties.publicIPAllocationMethod),
    SKUName = sku.name,
    Location = location,
    resourceGroup = strcat('/subscriptions/', subscriptionId, '/resourceGroups/', resourceGroup)
| project PublicIpId, IPName, SKUName, resourceGroup, Location, AllocationMethod, subscriptionId
| union (
    Resources
    | where type =~ 'microsoft.network/networkinterfaces'
        and isempty(properties.virtualMachine)
        and isnull(properties.privateEndpoint)
        and isnotempty(properties.ipConfigurations)
    | extend IPconfig = properties.ipConfigurations
    | mv-expand IPconfig
    | extend PublicIpId= tostring(IPconfig.properties.publicIPAddress.id)
    | project PublicIpId
    | join (
        resource
        | where type =~ 'Microsoft.Network/publicIPAddresses'
        | extend
            PublicIpId = id,
            IPName = name,
            AllocationMethod = tostring(properties.publicIPAllocationMethod),
            SKUName = sku.name,
            resourceGroup,
            Location = location
    ) on PublicIpId
    | project
        PublicIpId,
        IPName,
        SKUName,
        resourceGroup,
        Location,
        AllocationMethod,
        subscriptionId
)

Requête : identifier la méthode de routage des adresses IP publiques

Cette requête ARG analyse les adresses IP publiques et identifie la méthode de routage, la méthode d’allocation et la référence SKU. Il analyse également d’autres détails des adresses IP publiques associées à une configuration IP.

Catégorie

Optimisation

Requête

resources
| where type =~ 'Microsoft.Network/publicIPAddresses'
    and isnotempty(properties.ipConfiguration)
| where tostring(properties.ipTags) == "[]"
| extend
    PublicIpId = id,
    RoutingMethod = id,
    IPName = name,
    AllocationMethod = tostring(properties.publicIPAllocationMethod),
    SKUName = sku.name,
    Location = location,
    resourceGroup = strcat('/subscriptions/', subscriptionId, '/resourceGroups/', resourceGroup)
| project
    PublicIpId,
    IPName,
    RoutingMethod,SKUName,
    resourceGroup,
    Location,
    AllocationMethod,
    subscriptionId

Requête : Vérifier la stratégie de protection DDoS des adresses IP publiques

Si vous devez protéger moins de 15 ressources IP publiques, le niveau de protection IP est l’option la plus rentable. Toutefois, si vous avez plus de 15 ressources IP publiques à protéger, le niveau de protection réseau devient plus économique.

Catégorie

Optimisation

Requête

resources
| where type == "microsoft.network/publicipaddresses"
| project ddosProtection = tostring(properties.ddosSettings), name
| where ddosProtection has "Enabled"
| count
| project TotalIpsProtected = Count
| extend CheckIpsProtected = iff(TotalIpsProtected >= 15, "Enable Network Protection tier", "Enable PIP DDoS Protection")

Passerelle de réseau virtuel

Les sections suivantes fournissent des requêtes ARG pour les passerelles Réseau virtuel. Ils vous aident à obtenir des informations sur vos ressources de passerelle Réseau virtuel et à vous assurer qu’elles sont configurées avec les paramètres appropriés.

Requête : rechercher une passerelle d’inactivité Réseau virtuel

Cette requête ARG analyse Réseau virtuel passerelles au sein de votre environnement Azure pour identifier les éléments inactifs.

Catégorie

Optimisation

Requête

resources
| where type == "microsoft.network/virtualnetworkgateways"
| extend resourceGroup = strcat('/subscriptions/', subscriptionId, '/resourceGroups/', resourceGroup)
| project id, GWName=name, resourceGroup, location, subscriptionId
| join kind = leftouter(
    resources
    | where type == "microsoft.network/connections"
    | extend id = tostring(properties.virtualNetworkGateway1.id)
    | project id
) on id
| where isempty(id1)
| project
    id,
    GWName,
    resourceGroup,
    location,
    subscriptionId,
    status=id

Requête : Rechercher la passerelle NAT inactive

Cette requête ARG analyse les passerelles NAT au sein de votre environnement Azure pour identifier les éléments inactifs.

Catégorie

Optimisation

Requête

resources
| where type == "microsoft.network/natgateways" and isnull(properties.subnets)
| project
    id,
    GWName = name,
    SKUName = tostring(sku.name),
    SKUTier = tostring(sku.tier),
    Location = location,
    resourceGroup = tostring(strcat('/subscriptions/', subscriptionId, '/resourceGroups/', resourceGroup)),
    subnet = tostring(properties.subnet),
    subscriptionId

Vous cherchez plus ?

Avons-nous manqué quoi que ce soit ? Voulez-vous voir quelque chose ajouté ? Nous aimerions en savoir plus sur toutes les questions, problèmes ou solutions que vous souhaitez voir ici. Créez un problème avec les détails que vous souhaitez voir ici.


Ressources connexes :

Solutions connexes :