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:
- Se familiarizó con los flujos de trabajo de aprovisionamiento de ExpressRoute Direct.
- Ha creado un recurso de puerto de ExpressRoute Direct conforme a las instrucciones.
- Ha instalado la versión más reciente de Azure PowerShell en el equipo si tiene previsto ejecutar PowerShell localmente.
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:
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
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.
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
niGet-AzUserAssignedIdentity
como cmdlets válidos. Luego, ejecute el comando anterior nuevamente.Install-Module -Name Az.ManagedServiceIdentity
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.
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.
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.
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
(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.
(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.