Configurare MACsec nelle porte di ExpressRoute DirectConfigure MACsec on ExpressRoute Direct ports

Questo articolo illustra come configurare MACsec per proteggere le connessioni tra i router perimetrali e i router perimetrali Microsoft usando PowerShell.This article helps you configure MACsec to secure the connections between your edge routers and Microsoft's edge routers using PowerShell.

Prima di iniziareBefore you begin

Prima di iniziare la configurazione, verificare quanto segue:Before you start configuration, confirm the following:

Uso di Azure PowerShellWorking with Azure PowerShell

I passaggi e gli esempi in questo articolo usano i moduli Az di Azure PowerShell.The steps and examples in this article use Azure PowerShell Az modules. Per installare il modulo Az nel computer locale, vedere Installare Azure PowerShell.To install the Az modules locally on your computer, see Install Azure PowerShell. Per altre informazioni, vedere Introduzione al nuovo modulo Az di Azure PowerShell.To learn more about the new Az module, see Introducing the new Azure PowerShell Az module. I cmdlet di PowerShell vengono aggiornati di frequente.PowerShell cmdlets are updated frequently. Se non si esegue la versione più recente, i valori specificati nelle istruzioni potrebbero generare errori.If you are not running the latest version, the values specified in the instructions may fail. Per trovare la versione installata di PowerShell nel sistema, usare il cmdlet Get-Module -ListAvailable Az.To find the installed versions of PowerShell on your system, use the Get-Module -ListAvailable Az cmdlet.

È possibile usare Azure Cloud Shell per eseguire la maggior parte dei cmdlet di PowerShell e dei comandi dell'interfaccia della riga di comando, invece di installare Azure PowerShell o l'interfaccia della riga di comando localmente.You can use Azure Cloud Shell to run most PowerShell cmdlets and CLI commands, instead of installing Azure PowerShell or CLI locally. Azure Cloud Shell è una shell interattiva gratuita, configurata per l'uso con il proprio account, in cui sono preinstallati gli strumenti comuni di Azure.Azure Cloud Shell is a free interactive shell that has common Azure tools preinstalled and is configured to use with your account. Per eseguire il codice contenuto in questo articolo in Azure Cloud Shell, aprire una sessione di Cloud Shell, usare il pulsante Copia in un blocco di codice per copiare il codice e incollarlo nella sessione di Cloud Shell con CTRL+MAIUSC+V in Windows e Linux o CMD+MAIUSC+V in macOS.To run any code contained in this article on Azure Cloud Shell, open a Cloud Shell session, use the Copy button on a code block to copy the code, and paste it into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS. Il testo incollato non viene eseguito automaticamente. Premere INVIO per eseguire il codice.Pasted text is not automatically executed, press Enter to run code.

Esistono alcuni modi per avviare Cloud Shell:There are a few ways to launch the Cloud Shell:

OpzioneOption CollegamentoLink
Fare clic su Prova nell'angolo superiore destro di un blocco di codice.Click Try It in the upper right corner of a code block. Cloud Shell in questo articolo
Aprire Cloud Shell nel browser.Open Cloud Shell in your browser. https://shell.azure.com/powershell
Fare clic sul pulsante Cloud Shell nel menu in alto a destra nel portale di Azure.Click the Cloud Shell button on the menu in the upper right of the Azure portal. Cloud Shell nel portaleCloud Shell in the portal

Accedi e seleziona la sottoscrizione correttaSign in and select the right subscription

Per avviare la configurazione, accedere al proprio account Azure e selezionare la sottoscrizione che si vuole usare.To start the configuration, sign in to your Azure account and select the subscription that you want to use.

Se si usa Azure Cloud Shell, l'accesso all'account di Azure viene eseguito automaticamente quando si fa clic su 'Prova'.If you are using the Azure Cloud Shell, you sign in to your Azure account automatically after clicking 'Try it'. Per accedere in locale, aprire la console di PowerShell con privilegi elevati ed eseguire il cmdlet per connettersi.To sign in locally, open your PowerShell console with elevated privileges and run the cmdlet to connect.

Connect-AzAccount

Se si dispone di più sottoscrizioni, ottenere un elenco delle sottoscrizioni di Azure.If you have more than one subscription, get a list of your Azure subscriptions.

Get-AzSubscription

Specificare la sottoscrizione da usare.Specify the subscription that you want to use.

Select-AzSubscription -SubscriptionName "Name of subscription"

1. creare Azure Key Vault, segreti MACsec e identità utente1. Create Azure Key Vault, MACsec secrets, and user identity

  1. Creare un'istanza di Key Vault per archiviare i segreti MACsec in un nuovo gruppo di risorse.Create a Key Vault instance to store MACsec secrets in a new resource group.

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

    Se è già presente un insieme di credenziali delle chiavi o un gruppo di risorse, è possibile riutilizzarli.If you already have a key vault or a resource group, you can reuse them. È tuttavia fondamentale abilitare la funzionalità di eliminazione temporanea nell'insieme di credenziali delle chiavi esistente.However, it is critical that you enable the soft-delete feature on your existing key vault. Se soft-delete non è abilitato, è possibile usare i comandi seguenti per abilitarlo:If soft-delete is not enabled, you can use the following commands to enable it:

    ($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
    
  2. Creare un'identità utente.Create a user identity.

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

    Se New-AzUserAssignedIdentity non è riconosciuto come un cmdlet di PowerShell valido, installare il modulo seguente (in modalità amministratore) ed eseguire di nuovo il comando precedente.If New-AzUserAssignedIdentity is not recognized as a valid PowerShell cmdlet, install the following module (in Administrator mode) and rerun the above command.

    Install-Module -Name Az.ManagedServiceIdentity
    
  3. Creare una chiave di associazione di connettività (CAK) e un nome di chiave dell'associazione di connettività (CKN) e archiviarli nell'insieme di credenziali delle chiavi.Create a connectivity association key (CAK) and a connectivity association key name (CKN) and store them in the key vault.

    $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
    
  4. Assegnare l'autorizzazione GET all'identità utente.Assign the GET permission to the user identity.

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

    Ora questa identità può ottenere i segreti, ad esempio CAK e CKN, dall'insieme di credenziali delle chiavi.Now this identity can get the secrets, for example CAK and CKN, from the key vault.

  5. Impostare questa identità utente per l'uso da ExpressRoute.Set this user identity to be used by ExpressRoute.

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

2. configurare MACsec in porte ExpressRoute dirette2. Configure MACsec on ExpressRoute Direct ports

Per abilitare MACsecTo enable MACsec

Ogni istanza diretta di ExpressRoute dispone di due porte fisiche.Each ExpressRoute Direct instance has two physical ports. È possibile scegliere di abilitare MACsec su entrambe le porte contemporaneamente oppure abilitare MACsec su una porta alla volta.You can choose to enable MACsec on both ports at the same time or enable MACsec on one port at a time. Per ridurre al minimo l'interruzione, se il ExpressRoute Direct è già presente nel servizio, è possibile eseguire questa operazione una porta al momento, spostando il traffico verso una porta attiva mentre si serve l'altra porta.Doing it one port at time (by switching traffic to an active port while servicing the other port) can help minimize the interruption if your ExpressRoute Direct is already in service.

  1. Impostare i segreti MACsec e crittografare e associare l'identità utente alla porta in modo che il codice di gestione di ExpressRoute possa accedere ai segreti MACsec, se necessario.Set MACsec secrets and cipher and associate the user identity with the port so that the ExpressRoute management code can access the MACsec secrets if needed.

    $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. Opzionale Se le porte sono in stato di inattività amministrativo, è possibile eseguire i comandi seguenti per visualizzare le porte.(Optional) If the ports are in Administrative Down state you can run the following commands to bring up the 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
    

    A questo punto, MACsec è abilitato sul lato ExpressRoute Direct Ports on Microsoft.At this point, MACsec is enabled on the ExpressRoute Direct ports on Microsoft side. Se non è stata configurata nei dispositivi perimetrali, è possibile procedere con la configurazione con gli stessi segreti e crittografia MACsec.If you haven't configured it on your edge devices, you can proceed to configure them with the same MACsec secrets and cipher.

Per disabilitare MACsecTo disable MACsec

Se MACsec non è più necessario nell'istanza diretta di ExpressRoute, è possibile eseguire i comandi seguenti per disabilitarlo.If MACsec is no longer desired on your ExpressRoute Direct instance, you can run the following commands to disable it.

$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

A questo punto, MACsec è disabilitato sulle porte ExpressRoute dirette sul lato Microsoft.At this point, MACsec is disabled on the ExpressRoute Direct ports on the Microsoft side.

Testare la connettivitàTest connectivity

Dopo aver configurato MACsec (incluso l'aggiornamento della chiave MACsec) sulle porte dirette ExpressRoute, verificare che le sessioni BGP dei circuiti siano attive e in esecuzione.After you configure MACsec (including MACsec key update) on your ExpressRoute Direct ports, check if the BGP sessions of the circuits are up and running. Se non è ancora presente alcun circuito sulle porte, crearne uno per primo e configurare il peering privato di Azure o il peering Microsoft del circuito.If you don't have any circuit on the ports yet, please create one first and set up Azure Private Peering or Microsoft Peering of the circuit. Se MACsec non è configurato correttamente, inclusa la mancata corrispondenza della chiave MACsec, tra i dispositivi di rete e i dispositivi di rete Microsoft, non verrà visualizzata la risoluzione ARP al livello 2 e allo stabilimento BGP al livello 3.If MACsec is misconfigured, including MACsec key mismatch, between your network devices and Microsoft's network devices, you won't see ARP resolution at layer 2 and BGP establishment at layer 3. Se tutti gli elementi sono configurati correttamente, si noterà che le route BGP sono state annunciate correttamente in entrambe le direzioni e il flusso di dati dell'applicazione di conseguenza rispetto a ExpressRoute.If everything is configured properly, you should see the BGP routes advertised correctly in both directions and your application data flow accordingly over ExpressRoute.

Passaggi successiviNext steps

  1. Creare un circuito ExpressRoute in ExpressRoute DirectCreate an ExpressRoute circuit on ExpressRoute Direct
  2. Collegare un circuito ExpressRoute a una rete virtuale di AzureLink an ExpressRoute circuit to an Azure virtual network
  3. Verifica della connettività di ExpressRouteVerify ExpressRoute connectivity