Configurare MACsec nelle porte di ExpressRoute Direct

Questo articolo fornisce indicazioni su come configurare MACsec, un protocollo di sicurezza che protegge la comunicazione tra i router perimetrali e i router perimetrali di Microsoft, usando i comandi di PowerShell.

Operazioni preliminari

Prima di iniziare a configurare MACsec, assicurarsi di soddisfare i prerequisiti seguenti:

  • Si è familiarità con i flussi di lavoro di provisioning di ExpressRoute Direct.
  • È stata creata una risorsa porta ExpressRoute Direct in base alle istruzioni.
  • Se si intende eseguire PowerShell in locale, è stata installata la versione più recente di Azure PowerShell nel computer.

Uso di Azure PowerShell

I passaggi e gli esempi in questo articolo usano i moduli Az di Azure PowerShell. Per installare il modulo Az nel computer locale, vedere Installare Azure PowerShell. Per altre informazioni, vedere Introduzione al nuovo modulo Az di Azure PowerShell. I cmdlet di PowerShell vengono aggiornati di frequente. Se non si esegue la versione più recente, i valori specificati nelle istruzioni potrebbero generare errori. Per trovare la versione installata di PowerShell nel sistema, usare il cmdlet Get-Module -ListAvailable Az.

È 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. Azure Cloud Shell è una shell interattiva gratuita, configurata per l'uso con il proprio account, in cui sono preinstallati gli strumenti comuni di Azure. 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. Il testo incollato non viene eseguito automaticamente. Premere INVIO per eseguire il codice.

Esistono alcuni modi per avviare Cloud Shell:

Opzione Collega
Fare clic su Prova nell'angolo superiore destro di un blocco di codice. Cloud Shell in this article
Aprire Cloud Shell nel browser. https://shell.azure.com/powershell
Fare clic sul pulsante Cloud Shell nel menu in alto a destra nel portale di Azure. Cloud Shell in the portal

Accedere e selezionare la sottoscrizione corretta

Per iniziare la configurazione, seguire questa procedura:

  • Accedere all'account Azure usando le credenziali.

  • Scegliere la sottoscrizione da usare per questa configurazione.

    Se si usa Azure Cloud Shell, l'accesso all'account di Azure viene eseguito automaticamente quando si fa clic su 'Prova'. Per accedere in locale, aprire la console di PowerShell con privilegi elevati ed eseguire il cmdlet per connettersi.

    Connect-AzAccount
    

    Se si dispone di più sottoscrizioni, ottenere un elenco delle sottoscrizioni di Azure.

    Get-AzSubscription
    

    Specificare la sottoscrizione da usare.

    Select-AzSubscription -SubscriptionName "Name of subscription"
    

Creare Azure Key Vault, segreti MACsec e identità utente

  1. Per archiviare i segreti MACsec in modo sicuro, è necessario creare un'istanza di Key Vault in un nuovo gruppo di risorse. Key Vault è un servizio che consente di gestire e proteggere chiavi crittografiche, certificati e segreti in Azure. Per altre informazioni, vedere Informazioni sull’insieme di credenziali chiave di Azure

    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
    

    È possibile riutilizzare un insieme di credenziali delle chiavi o un gruppo di risorse esistente per questa configurazione. Tuttavia, è necessario assicurarsi che la [funzionalità di eliminazione temporanea] sia abilitata nell'insieme di credenziali delle chiavi. Questa funzionalità consente di recuperare chiavi, segreti e certificati eliminati entro un periodo di conservazione. Se l'insieme di credenziali delle chiavi non ha l'eliminazione temporanea abilitata, eseguire i comandi seguenti per abilitarlo:

    ($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
    

    Nota

    • ExpressRoute è un servizio attendibile in Azure che supporta i criteri di sicurezza di rete all'interno di Azure Key Vault. Per altre informazioni, vedere Configurare firewall e Rete virtuale di Azure Key Vault.
    • Non è consigliabile posizionare Azure Key Vault dietro un endpoint privato, in quanto ciò impedirà la comunicazione con il piano di gestione di ExpressRoute. Il piano di gestione di ExpressRoute è responsabile della gestione delle chiavi e dei parametri MACsec per la connessione.
  2. Per creare una nuova identità utente, è necessario usare il New-AzUserAssignedIdentity cmdlet . Questo cmdlet crea un'identità gestita assegnata dall'utente in Microsoft Entra ID e la registra con la sottoscrizione e il gruppo di risorse specificati. Un'identità gestita assegnata dall'utente è una risorsa di Azure autonoma che può essere assegnata a qualsiasi servizio di Azure che supporta le identità gestite. È possibile usare questa identità per autenticare e autorizzare l'accesso alle risorse di Azure senza archiviare credenziali nel codice o nei file di configurazione. Per altre informazioni, vedere Informazioni sulle identità gestite per le risorse di Azure.

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

    Per usare un'identità utente esistente, eseguire il comando seguente:

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

    Installare il modulo seguente in modalità Amministrazione istrator se PowerShell non riconosce New-AzUserAssignedIdentity o Get-AzUserAssignedIdentity come cmdlet validi. Eseguire quindi di nuovo il comando precedente.

    Install-Module -Name Az.ManagedServiceIdentity
    
  3. Creare una chiave di associazione di connettività (CAK) e un nome di chiave di associazione di connettività (CKN) e archiviarli nell'insieme di credenziali delle chiavi.

    $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
    

    Nota

    • CKN deve essere una stringa di lunghezza pari fino a 64 cifre esadecimali (0-9, A-F).
    • La lunghezza CAK dipende dalla suite di crittografia specificata:
      • Per GcmAes128 e GcmAesXpn128, il CAK deve essere una stringa di lunghezza pari con 32 cifre esadecimali (0-9, A-F).
      • Per GcmAes256 e GcmAesXpn256, il CAK deve essere una stringa di lunghezza pari con 64 cifre esadecimali (0-9, A-F).
    • Per CAK, è necessario usare la lunghezza intera della chiave. Se la chiave è più breve della lunghezza richiesta, 0's verrà aggiunta alla fine della chiave per soddisfare il requisito di lunghezza. Ad esempio, CAK di 1234 sarà 12340000... sia a 128 bit che a 256 bit in base alla crittografia.
  4. Concedere all'utente l'identità dell'autorizzazione per eseguire l'operazione GET .

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

    L'identità utente ha acquisito l'accesso per recuperare i segreti, ad esempio CAK e CKN, dall'insieme di credenziali delle chiavi.

  5. Configurare l'identità utente come entità servizio designata per ExpressRoute.

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

Configurare MACsec nelle porte di ExpressRoute Direct

Come abilitare MACsec

Ogni istanza di ExpressRoute Direct è costituita da due porte fisiche. È possibile attivare MACsec su entrambe le porte contemporaneamente o su una porta singolarmente. Quest'ultima opzione consente di deviare il traffico verso una porta funzionante mantenendo l'altra porta, riducendo così l'interruzione se ExpressRoute Direct è operativo.

Nota

È possibile configurare crittografie XPN e non XPN:

  • GcmAes128
  • GcmAes256
  • GcmAesXpn128
  • GcmAesXpn256

La procedura consigliata consigliata consiste nel configurare la crittografia con crittografie xpn per evitare errori sporadici di sessione che si verificano con crittografie non xpn su collegamenti ad alta velocità.

  1. Stabilire i segreti MACsec e la crittografia e collegare l'identità utente alla porta per consentire al codice di gestione di ExpressRoute di recuperare i segreti MACsec quando necessario.

    $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. (Facoltativo) Se le porte si trovano nello stato down Amministrazione istrative, è possibile eseguire i comandi seguenti per visualizzare le porte.

    $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 è ora abilitato sulle porte ExpressRoute Direct sul lato Microsoft. Se non è stato configurato nei dispositivi perimetrali, è possibile procedere alla configurazione con gli stessi segreti MACsec e crittografia.

  3. (Facoltativo) Per attivare le porte in stato down Amministrazione istrative, eseguire i comandi seguenti:

    $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 è ora abilitato sulle porte ExpressRoute Direct.

Come disabilitare MACsec

Per disattivare MACsec nell'istanza di ExpressRoute Direct, eseguire i comandi seguenti:

$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 è ora disabilitato sulle porte ExpressRoute Direct sul lato Microsoft.

Testare la connettività

Dopo aver configurato MACsec (incluso l'aggiornamento della chiave MACsec) nelle porte ExpressRoute Direct, verificare lo stato delle sessioni BGP dei circuiti. Se non è ancora stato creato un circuito sulle porte, eseguire questa operazione prima e stabilire il peering privato di Azure o il peering Microsoft del circuito. Configurazione MACsec errata, ad esempio una mancata corrispondenza della chiave MACsec tra i dispositivi di rete e i dispositivi di rete Microsoft, impedisce di osservare la risoluzione ARP al livello 2 o alla definizione BGP al livello 3. Se tutto è configurato correttamente, le route BGP vengono annunciate correttamente in entrambe le direzioni e il flusso di dati dell'applicazione di conseguenza tramite ExpressRoute.

Passaggi successivi