Configuración de MACsec para los puertos de ExpressRoute Direct

En este artículo, se proporcionan instrucciones sobre cómo configurar MACsec, un protocolo de seguridad que protege la comunicación entre los enrutadores perimetrales y los enrutadores perimetrales de Microsoft, mediante comandos de PowerShell.

Antes de empezar

Antes de comenzar a configurar MACsec, asegúrese de que se cumplen los siguientes requisitos previos:

Trabajo con Azure PowerShell

En los pasos y ejemplos de este artículo se usan módulos de Az de Azure PowerShell. Para instalar módulos de Az localmente en el equipo, consulte Instalación de Azure PowerShell. Para obtener más información sobre el nuevo módulo Az, consulte Presentación del nuevo módulo Az de Azure PowerShell. Los cmdlets de PowerShell se actualizan con frecuencia. Si no está ejecutando la última versión, los valores especificados en las instrucciones pueden dar lugar a errores. Para buscar las versiones instaladas de PowerShell en el sistema, use el cmdlet Get-Module -ListAvailable Az.

Puede usar Azure Cloud Shell para ejecutar la mayoría de los cmdlets de PowerShell y comandos de la CLI, en lugar de instalar Azure PowerShell o la CLI de forma local. Azure Cloud Shell es un shell interactivo gratuito que tiene herramientas comunes de Azure preinstaladas y se configura para usar con la cuenta. Para ejecutar cualquier código contenido en este artículo en Azure Cloud Shell, abra una sesión de Cloud Shell, utilice el botón Copiar en un bloque de código para copiar el código y péguelo en la sesión de Cloud Shell con Ctrl+Mayús+V en Windows y Linux, o Cmd+Mayús+V en macOS. El texto pegado no se ejecuta automáticamente, así que presione Entrar para ejecutarlo.

Hay unas cuantas maneras de iniciar Cloud Shell:

Opción Vínculo
Haga clic en Probarlo en la esquina superior derecha de un bloque de código. Cloud Shell in this article
Abra Cloud Shell en el explorador. https://shell.azure.com/powershell
Haga clic en el botón Cloud Shell en el menú de la parte superior derecha de Azure Portal. Cloud Shell in the portal

Inicio de sesión y selección de la suscripción correcta

Siga estos pasos para comenzar la configuración:

  • Inicie sesión en su cuenta de Azure con sus credenciales.

  • Elija la suscripción que desea usar para esta configuración.

    Si está usando Azure Cloud Shell, iniciará sesión automáticamente en su cuenta de Azure después de hacer clic en "Probar". Para iniciar sesión de forma local, abra la consola de PowerShell con privilegios elevados y ejecute el cmdlet para conectarse.

    Connect-AzAccount
    

    Si tiene más de una suscripción, obtenga una lista de las suscripciones de Azure.

    Get-AzSubscription
    

    Especifique la suscripción que desea usar.

    Select-AzSubscription -SubscriptionName "Name of subscription"
    

Crear Azure Key Vault, secretos de MACsec e identidad del usuario

  1. Para almacenar secretos de MACsec de forma segura, debe crear una instancia de Key Vault en un nuevo grupo de recursos. Key Vault es un servicio que permite administrar y proteger claves criptográficas, certificados y secretos en Azure. Para obtener más información, consulte ¿Qué es 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
    

    Puede reutilizar un Key Vault o un grupo de recursos existente para esta configuración. Sin embargo, debe asegurarse de que la [característica soft-delete] esté habilitada en Key Vault. Esta característica permite recuperar claves, secretos y certificados eliminados durante un período de retención. Si Key Vault no tiene habilitada característica soft-delete, ejecute los siguientes comandos para habilitarla:

    ($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 es un servicio de confianza en Azure, que admite directivas de seguridad de red en Azure Key Vault. Para obtener más información, consulte Configuración de firewalls y redes virtuales de Azure Key Vault.
    • No debe colocar Azure Key Vault detrás de un punto de conexión privado, ya que esto impedirá la comunicación con el plano de administración de ExpressRoute. El plano de administración de ExpressRoute es responsable de administrar las claves y parámetros de MACsec para la conexión.
  2. Para crear una nueva identidad de usuario, debe usar el cmdlet New-AzUserAssignedIdentity. Este cmdlet crea una identidad administrada asignada por el usuario en Microsoft Entra ID y la registra con la suscripción y el grupo de recursos especificados. Una identidad administrada asignada por el usuario es un recurso independiente de Azure, que se puede asignar a cualquier servicio de Azure que admita identidades administradas. Puede usar esta identidad para autenticar y autorizar el acceso a los recursos de Azure sin almacenar credenciales en el código o los archivos de configuración. Para más información, consulte ¿Qué es Managed Identities for Azure Resources?

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

    Para usar una identidad de usuario existente, ejecute el siguiente comando:

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

    Instale el siguiente módulo en modo de administrador si PowerShell no reconoce New-AzUserAssignedIdentity ni Get-AzUserAssignedIdentity como cmdlets válidos. Luego, ejecute el comando anterior nuevamente.

    Install-Module -Name Az.ManagedServiceIdentity
    
  3. Cree una clave de asociación de conectividad (CAK) y un nombre de clave de asociación de conectividad (CKN), y almacénelos en la instancia de 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
    

    Nota:

    • CKN debe ser una cadena de longitud uniforme de hasta 64 dígitos hexadecimales (0-9, A-F).
    • La longitud de CAK depende del conjunto de cifrado especificado:
      • Para GcmAes128 y GcmAesXpn128, la CAK deberá ser una cadena de longitud uniforme con 32 dígitos hexadecimales (0-9, A-F).
      • Para GcmAes256 y GcmAesXpn256, la CAK deberá ser una cadena de longitud uniforme con 64 dígitos hexadecimales (0-9, A-F).
    • Para CAK, se debe usar la longitud completa de la clave. Si la clave es más corta que la longitud necesaria, 0's se agregará al final para cumplir el requisito de longitud. Por ejemplo, CAK de 1234 será 12340000... para 128 bits y 256 bits en función del cifrado.
  4. Conceda a la identidad del usuario la autorización para realizar la operación GET.

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

    La identidad de usuario ha adquirido el acceso para recuperar los secretos, como CAK y CKN, desde Key Vault.

  5. Configure la identidad del usuario como entidad de servicio designada para ExpressRoute.

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

Configuración de MACsec para los puertos de ExpressRoute Direct

Cómo habilitar MACsec

Cada instancia de ExpressRoute Direct consta de dos puertos físicos. Puede activar MACsec en ambos puertos simultáneamente o en un puerto individualmente. Esta última opción le permite desviar el tráfico a un puerto en funcionamiento a la vez que mantiene el otro puerto, lo que puede reducir la interrupción si ExpressRoute Direct está operativo.

Nota:

Puede configurar tanto cifrados XPN como no XPN:

  • GcmAes128
  • GcmAes256
  • GcmAesXpn128
  • GcmAesXpn256

El procedimiento recomendado sugerido es configurar el cifrado con cifrados xpn para evitar errores esporádicos de sesión que se producen con cifrados que no son xpn en vínculos de alta velocidad.

  1. Establezca los secretos y el cifrado de MACsec y vincule la identidad del usuario con el puerto para permitir que el código de administración de ExpressRoute recupere los secretos de MACsec cuando sea necesario.

    $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. (Opcional) Si los puertos están en estado administrativo de fuera de servicio, puede ejecutar los siguientes comandos para abrir los puertos.

    $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 ahora está habilitado en los puertos de ExpressRoute Direct, en Microsoft. Si no lo ha configurado en los dispositivos perimetrales, puede continuar con la configuración con los mismos secretos y cifrado de MACsec.

  3. (Opcional) Para activar los puertos que están en estado de baja administrativa, ejecute los siguientes comandos:

    $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 ahora está habilitado en los puertos directos de ExpressRoute Direct.

Cómo deshabilitar MACsec

Para desactivar MACsec en la instancia de ExpressRoute Direct, ejecute los siguientes comandos:

$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 ahora está deshabilitado en los puertos de ExpressRoute Direct, en Microsoft.

Comprobación de la conectividad

Una vez que ha configurado MACsec (incluida la actualización de claves de MACsec) en los puertos de ExpressRoute Direct, compruebe el estado de las sesiones de BGP de los circuitos. Si aún no ha creado un circuito en los puertos, hágalo primero y establezca el emparejamiento privado de Azure o el emparejamiento de Microsoft del circuito. La configuración incorrecta de MACsec, como un error de coincidencia de claves de MACsec entre los dispositivos de red y los dispositivos de red de Microsoft, impide observar la resolución de ARP en el nivel 2 o el establecimiento de BGP en el nivel 3. Si todo está configurado correctamente, verá las rutas BGP anunciadas correctamente en ambas direcciones y el flujo de datos de la aplicación correspondiente en ExpressRoute.

Pasos siguientes