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 :
- Vous vous êtes familiarisé avec les workflows d’approvisionnement ExpressRoute Direct.
- Vous avez créé une ressource de port ExpressRoute Direct conformément aux instructions.
- Vous avez installé la dernière version d’Azure PowerShell sur votre ordinateur si vous envisagez d’exécuter PowerShell localement.
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 :
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
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.
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
ouGet-AzUserAssignedIdentity
comme des cmdlets valides. Ensuite, exécutez à nouveau la commande ci-dessus.Install-Module -Name Az.ManagedServiceIdentity
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.
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.
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.
É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
(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.
(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.