Configurer MACsec sur les ports ExpressRoute Direct

Cet article fournit des conseils sur la configuration de MACsec, un protocole de sécurité qui protège la communication entre vos routeurs de périphérie et les routeurs de périphérie de Microsoft, à l’aide de commandes PowerShell.

Avant de commencer

Avant de commencer à configurer MACsec, assurez-vous de remplir les conditions préalables suivantes :

Utilisation d’Azure PowerShell

Les étapes et les exemples de cet article utilisent les modules Azure PowerShell Az. Pour installer les modules Az en local sur un ordinateur, voir Installer Azure PowerShell. Pour plus d’informations sur le module Az, voir Présentation du nouveau module Azure PowerShell Az. Les cmdlets PowerShell sont fréquemment mises à jour. Si vous n’exécutez pas leur dernière version, les valeurs spécifiées dans les instructions peuvent échouer. Pour rechercher les versions de PowerShell installées sur votre système, utilisez la cmdlet Get-Module -ListAvailable Az.

Il est possible d’utiliser Azure Cloud Shell pour exécuter la plupart des cmdlets PowerShell et des commandes CLI au lieu d’installer Azure PowerShell ou CLI en local. Azure Cloud Shell est un interpréteur de commandes interactif gratuit qui est configuré pour pouvoir être utilisé avec votre compte et dans lequel les outils Azure communs ont été préinstallés. Pour exécuter le code contenu dans cet article sur Azure Cloud Shell, ouvrez une session Cloud Shell, utilisez le bouton Copier sur un bloc de code pour copier le code, et collez-le dans la session Cloud Shell avec Ctrl+Maj+V sur Windows et Linux, ou avec Cmd+Maj+V sur macOS. Le texte collé ne s’exécute pas automatiquement ; appuyez sur Entrée pour exécuter le code.

Cloud Shell peut être lancé de plusieurs façons :

Option Lien
Cliquez sur Essayer dans le coin supérieur droit d’un bloc de code. Cloud Shell in this article
Ouvrez Cloud Shell dans votre navigateur. https://shell.azure.com/powershell
Cliquez sur le bouton Cloud Shell du menu situé dans l’angle supérieur droit de la fenêtre du portail Azure. Cloud Shell in the portal

Se connecter et sélectionner l’abonnement approprié

Pour commencer la configuration, procédez comme suit :

  • Connectez-vous à votre compte Azure à l’aide de vos informations d’identification.

  • Choisissez l’abonnement que vous souhaitez utiliser pour cette configuration.

    Si vous utilisez Azure Cloud Shell, vous vous connectez à votre compte Azure automatiquement après avoir cliqué sur « Essayer ». Pour vous connecter en local, ouvrez la console PowerShell avec des privilèges élevés et exécutez la cmdlet pour vous connecter.

    Connect-AzAccount
    

    Si vous possédez plusieurs abonnements, procurez-vous la liste de vos abonnements Azure.

    Get-AzSubscription
    

    Spécifiez l’abonnement à utiliser.

    Select-AzSubscription -SubscriptionName "Name of subscription"
    

Créer une instance Azure Key Vault, les secrets MACsec et une identité d’utilisateur

  1. Pour stocker en toute sécurité les secrets MACsec, vous devez créer une instance Key Vault dans un nouveau groupe de ressources. Key Vault est un service qui vous permet de gérer et de protéger des clés de chiffrement, des certificats et des secrets dans Azure. Pour plus d’informations, consultez la page Qu’est-ce qu’Azure Key Vault ?

    New-AzResourceGroup -Name "your_resource_group" -Location "resource_location"
    $keyVault = New-AzKeyVault -Name "your_key_vault_name" -ResourceGroupName "your_resource_group" -Location "resource_location" -SoftDeleteRetentionInDays 90
    

    Vous pouvez réutiliser un Key Vault ou un groupe de ressources existant pour cette configuration. Toutefois, vous devez vous assurer que la [fonctionnalité de suppression réversible] est activée sur votre Key Vault. Cette fonctionnalité vous permet de récupérer des clés, des secrets et des certificats supprimés pendant une période de rétention. Si la suppression réversible n’est pas activée pour votre Key Vault, exécutez les commandes suivantes pour l’activer :

    ($resource = Get-AzResource -ResourceId (Get-AzKeyVault -VaultName "your_existing_keyvault").ResourceId).Properties | Add-Member -MemberType "NoteProperty" -Name "enableSoftDelete" -Value "true"
    Set-AzResource -ResourceId $resource.ResourceId -Properties $resource.Properties
    

    Remarque

    • ExpressRoute est un service de confiance au sein d’Azure qui prend en charge les politiques de sécurité du réseau au sein d’Azure Key Vault. Pour plus d’informations, consultez Configurer les pare-feux et réseaux virtuels d’Azure Key Vault.
    • Vous ne devez pas placer l’Azure Key Vault derrière un point de terminaison privé, car cela empêche la communication avec le plan de gestion ExpressRoute. Le plan de gestion ExpressRoute est chargé de gérer les clés et paramètres MACsec pour votre connexion.
  2. Pour créer une nouvelle identité utilisateur, vous devez utiliser la cmdlet New-AzUserAssignedIdentity. Cette cmdlet crée une identité managée affectée par l’utilisateur dans Microsoft Entra ID et l’inscrit auprès de l’abonnement et du groupe de ressources spécifiés. Une identité managée affectée par l’utilisateur est une ressource Azure autonome qui peut être affectée à n’importe quel service Azure qui prend en charge les identités managées. Vous pouvez utiliser cette identité pour authentifier et autoriser l’accès aux ressources Azure sans stocker d’informations d’identification dans votre code ou vos fichiers config. Pour plus d’informations, consultez Identités managées pour les ressources Azure.

    $identity = New-AzUserAssignedIdentity  -Name "identity_name" -Location "resource_location" -ResourceGroupName "your_resource_group"
    

    Pour utiliser une identité utilisateur existante, exécutez la commande suivante :

    $identity = Get-AzUserAssignedIdentity -ResourceGroupName "your_resource_group" -Name "identity_name"
    

    Installez le module suivant en mode Administrateur si PowerShell ne reconnaît pas New-AzUserAssignedIdentity ou Get-AzUserAssignedIdentity comme des cmdlets valides. Ensuite, exécutez à nouveau la commande ci-dessus.

    Install-Module -Name Az.ManagedServiceIdentity
    
  3. Créez une clé d’association de connectivité (CAK) et un nom de clé d’association de connectivité (CKN), et stockez-les dans le coffre de clés.

    $CAK = ConvertTo-SecureString "your_key" -AsPlainText -Force
    $CKN = ConvertTo-SecureString "your_key_name" -AsPlainText -Force
    $MACsecCAKSecret = Set-AzKeyVaultSecret -VaultName "your_key_vault_name" -Name "CAK_name" -SecretValue $CAK
    $MACsecCKNSecret = Set-AzKeyVaultSecret -VaultName "your_key_vault_name" -Name "CKN_name" -SecretValue $CKN
    

    Notes

    • Le CKN doit être une chaîne de longueur égale jusqu’à 64 chiffres hexadécimaux (0-9, A-F).
    • La longueur de la CAK dépend de la suite de chiffrement spécifiée :
      • Pour GcmAes128 et GcmAesXpn128, la CAK doit être une chaîne d’une longueur maximale avec 32 chiffres hexadécimaux (0-9, A-F).
      • Pour GcmAes256 et GcmAesXpn256, la CAK doit être une chaîne d’une longueur maximale avec 64 chiffres hexadécimaux (0-9, A-F).
    • Pour la CAK, la longueur complète de la clé doit être utilisée. Si la clé est plus courte que la longueur requise,0's est ajouté à la fin de la clé pour satisfaire l’exigence de longueur. Par exemple, une CAK de 1234 sera 12340000... à la fois pour 128 bits et 256 bits sur la base du chiffrement.
  4. Octroyez à l’utilisateur l’autorisation d’effectuer l’opération GET.

    Set-AzKeyVaultAccessPolicy -VaultName "your_key_vault_name" -PermissionsToSecrets get -ObjectId $identity.PrincipalId
    

    L’identité de l’utilisateur a acquis l’accès pour récupérer les secrets, tels que CAK et CKN, dans le Key Vault.

  5. Configurez l’identité de l’utilisateur comme principal de service désigné pour ExpressRoute.

    $erIdentity = New-AzExpressRoutePortIdentity -UserAssignedIdentityId $identity.Id
    

Configurer MACsec sur les ports ExpressRoute Direct

Comment activer MACsec

Chaque instance ExpressRoute Direct se compose de deux ports physiques. Vous pouvez activer MACsec sur les deux ports simultanément ou sur un port individuellement. Cette dernière option vous permet de rediriger le trafic vers un port fonctionnel tout en gérant l’autre port, ce qui peut réduire l’interruption si votre ExpressRoute Direct est opérationnel.

Remarque

Vous pouvez configurer des chiffrements XPN et non XPN :

  • GcmAes128
  • GcmAes256
  • GcmAesXpn128
  • GcmAesXpn256

La meilleure pratique suggérée est de configurer le chiffrement avec des chiffrements xpn pour éviter les défaillances de session sporadiques qui se produisent avec des chiffrements non xpn sur des liaisons à haut débit.

  1. Établissez les secrets MACsec et le chiffrement et liez l’identité de l’utilisateur avec le port pour permettre au code de gestion ExpressRoute de récupérer les secrets MACsec si nécessaire.

    $erDirect = Get-AzExpressRoutePort -ResourceGroupName "your_resource_group" -Name "your_direct_port_name"
    $erDirect.Links[0]. MacSecConfig.CknSecretIdentifier = $MacSecCKNSecret.Id
    $erDirect.Links[0]. MacSecConfig.CakSecretIdentifier = $MacSecCAKSecret.Id
    $erDirect.Links[0]. MacSecConfig.Cipher = "GcmAes256"
    $erDirect.Links[1]. MacSecConfig.CknSecretIdentifier = $MacSecCKNSecret.Id
    $erDirect.Links[1]. MacSecConfig.CakSecretIdentifier = $MacSecCAKSecret.Id
    $erDirect.Links[1]. MacSecConfig.Cipher = "GcmAes256"
    $erDirect.identity = $erIdentity
    Set-AzExpressRoutePort -ExpressRoutePort $erDirect
    
  2. (Facultatif) Si les ports sont dans l’état d’administration Arrêté, vous pouvez exécuter les commandes suivantes pour redémarrer les ports.

    $erDirect = Get-AzExpressRoutePort -ResourceGroupName "your_resource_group" -Name "your_direct_port_name"
    $erDirect.Links[0].AdminState = "Enabled"
    $erDirect.Links[1].AdminState = "Enabled"
    Set-AzExpressRoutePort -ExpressRoutePort $erDirect
    

    MACsec est maintenant activé sur les ports ExpressRoute Direct côté Microsoft. Si vous ne l’avez pas configuré sur vos périphériques, vous pouvez le faire en utilisant les mêmes secrets et le même chiffrement MACsec.

  3. (Facultatif) Pour activer les ports qui sont dans l’état d’administration Arrêté, exécutez les commandes suivantes :

    $erDirect = Get-AzExpressRoutePort -ResourceGroupName "your_resource_group" -Name "your_direct_port_name"
    $erDirect.Links[0].MacSecConfig.SciState = "Enabled"
    $erDirect.Links[1].MacSecConfig.SciState = "Enabled"
    Set-AzExpressRoutePort -ExpressRoutePort $erDirect
    

    SCI est maintenant activé sur les ports ExpressRoute Direct.

Comment désactiver MACsec

Pour désactiver MACsec sur votre instance ExpressRoute Direct, exécutez les commandes suivantes :

$erDirect = Get-AzExpressRoutePort -ResourceGroupName "your_resource_group" -Name "your_direct_port_name"
$erDirect.Links[0]. MacSecConfig.CknSecretIdentifier = $null
$erDirect.Links[0]. MacSecConfig.CakSecretIdentifier = $null
$erDirect.Links[1]. MacSecConfig.CknSecretIdentifier = $null
$erDirect.Links[1]. MacSecConfig.CakSecretIdentifier = $null
$erDirect.identity = $null
Set-AzExpressRoutePort -ExpressRoutePort $erDirect

MACsec est maintenant désactivé sur les ports ExpressRoute Direct côté Microsoft.

Tester la connectivité

Une fois que vous avez configuré MACsec (y compris la mise à jour de la clé MACsec) sur vos ports ExpressRoute Direct, vérifiez l’état des sessions BGP des circuits. Si vous n’avez pas encore créé de circuit sur les ports, commencez par établir le Peering privé Azure ou le Peering Microsoft du circuit. Une configuration MACsec incorrecte, telle qu’une incompatibilité de clé MACsec entre vos appareils réseau et les appareils réseau de Microsoft, vous empêche d’observer la résolution ARP au niveau de la couche 2 ou de l’établissement de BGP au niveau de la couche 3. Si tout est configuré correctement, vous verrez les routes BGP publiées correctement dans les deux directions et vos données d’application circuler sur ExpressRoute.

Étapes suivantes