Configurar o MACsec em portas do ExpressRoute Direct

Este artigo fornece diretrizes sobre como configurar o MACsec, um protocolo de segurança que protege a comunicação entre os roteadores de borda e os roteadores de borda da Microsoft por meio de comandos do PowerShell.

Antes de começar

Antes de começar a configurar o MACsec, verifique se você atende aos seguintes pré-requisitos:

Trabalhando com o Azure PowerShell

As etapas e os exemplos deste artigo usam os módulos AZ do Azure PowerShell. Para instalar os módulos AZ localmente no computador, confira Instalar o Azure PowerShell. Para saber mais sobre o novo módulo AZ, confira Apresentando o novo módulo AZ do Azure PowerShell. Os cmdlets do PowerShell são atualizados com frequência. Se você não estiver executando a versão mais recente, os valores especificados nas instruções poderão falhar. Para localizar as versões instaladas do PowerShell no sistema, use o cmdlet Get-Module -ListAvailable Az.

Você pode usar o Azure Cloud Shell para executar a maioria dos cmdlets do PowerShell e dos comandos da CLI, em vez de instalar o Azure PowerShell ou a CLI localmente. O Azure Cloud Shell é um shell interativo gratuito que tem ferramentas comuns do Azure pré-instaladas e configuradas para uso com a conta. Para executar qualquer código contido neste artigo no Azure Cloud Shell, abra uma sessão do Cloud Shell, use o botão Copiar em um bloco de códigos para copiar o código e colá-lo na sessão do Cloud Shell com Ctrl+Shift+V no Windows e no Linux ou Cmd+Shift+V no macOS. O texto colado não é executado automaticamente, pressione Enter para executar o código.

Há algumas maneiras de inicializar o Cloud Shell:

Opção Link
Clique em Experimente no canto superior direito de um bloco de código. Cloud Shell in this article
Abra o Cloud Shell em seu navegador. https://shell.azure.com/powershell
Clique no botão Cloud Shell no menu no canto superior direito do portal do Azure. Cloud Shell in the portal

Entrar e selecionar a assinatura correta

Siga estas etapas para iniciar a configuração:

  • Entre na sua conta do Azure usando as credenciais.

  • Escolha a assinatura que deseja usar para essa configuração.

    Se estiver usando o Azure Cloud Shell, você entrará na conta do Azure automaticamente após clicar em "Experimentar". Para entrar localmente, abra o console do PowerShell com privilégios elevados e execute o cmdlet para se conectar.

    Connect-AzAccount
    

    Se você tiver mais de uma assinatura, obtenha uma lista das assinaturas do Azure.

    Get-AzSubscription
    

    Especifique a assinatura que você deseja usar.

    Select-AzSubscription -SubscriptionName "Name of subscription"
    

Criar o Azure Key Vault, segredos do MACsec e identidade do usuário

  1. Para armazenar os segredos do MACsec com segurança, você precisa criar uma instância do Key Vault em um novo grupo de recursos. O Key Vault é um serviço que permite gerenciar e proteger chaves de criptografia, certificados e segredos no Azure. Para obter mais informações, veja O que é o Cofre da Chave do 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
    

    Você pode reutilizar um cofre de chaves ou um grupo de recursos que já existe para essa configuração. No entanto, você precisa verificar se o [recurso de exclusão temporária] está habilitado no cofre de chaves. Esse recurso permite que você recupere chaves, segredos e certificados excluídos dentro de um período de retenção. Se o cofre de chaves não tiver a exclusão temporária habilitada, execute os seguintes comandos para habilitá-la:

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

    Observação

    • O ExpressRoute é um serviço confiável do Azure que dá suporte a políticas de segurança de rede no Azure Key Vault. Para obter mais informações, confira Configurar o firewall e as redes virtuais do Azure Key Vault.
    • Você não deve proteger o Azure Key Vault com um ponto de extremidade privado, pois isso impedirá a comunicação com o plano de gerenciamento do ExpressRoute. O plano de gerenciamento do ExpressRoute é responsável pelo gerenciamento das chaves e dos parâmetros do MACsec para a conexão.
  2. Para criar uma identidade de usuário, use o cmdlet New-AzUserAssignedIdentity. Esse cmdlet cria uma identidade gerenciada atribuída pelo usuário no Microsoft Entra ID e a registra na assinatura e no grupo de recursos especificados. Uma identidade gerenciada atribuída pelo usuário é um recurso autônomo do Azure que pode ser atribuído a qualquer serviço do Azure que dê suporte a identidades gerenciadas. Você pode usar essa identidade para autenticar e autorizar o acesso aos recursos do Azure sem armazenar as credenciais no código ou nos arquivos de configuração. Para saber mais, confira O que são identidades gerenciadas para recursos do Azure?.

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

    Para usar uma identidade de usuário existente, execute o seguinte comando:

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

    Instale o módulo a seguir no modo Administrador se o PowerShell não reconhecer New-AzUserAssignedIdentity ou Get-AzUserAssignedIdentity como cmdlets válidos. Em seguida, execute o comando acima mais uma vez.

    Install-Module -Name Az.ManagedServiceIdentity
    
  3. Crie uma CAK (chave de associação de conectividade) e um CKN (nome da chave de associação de conectividade) e armazene-os no 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
    

    Observação

    • O CKN deve ser uma cadeia de caracteres de até 64 dígitos hexadecimais (0-9, A-F).
    • O tamanho da CAK depende do conjunto de criptografias especificado:
      • Para GcmAes128 e GcmAesXpn128, a CAK deve ser uma cadeia de caracteres uniforme de até 32 dígitos hexadecimais (0-9, A-F).
      • Para GcmAes256 e GcmAesXpn256, a CAK deve ser uma cadeia de caracteres uniforme de até 64 dígitos hexadecimais (0-9, A-F).
    • Para CAK, o comprimento completo da chave deve ser usado. Se a chave for menor que o comprimento necessário, 0's será adicionado ao final da chave para atender ao requisito de comprimento. Por exemplo, CAK de 1234 será 12340000... para 128 bits e 256 bits com base na criptografia.
  4. Conceda à identidade do usuário a autorização para realizar a operação GET.

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

    A identidade de usuário adquiriu o acesso para recuperar os segredos, como a CAK e o CKN, por meio do cofre de chaves.

  5. Configure a identidade de usuário como a entidade de serviço designada para o ExpressRoute.

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

Configurar o MACsec em portas do ExpressRoute Direct

Como habilitar o MACsec

Cada instância do ExpressRoute Direct consiste em duas portas físicas. Você pode ativar o MACsec em ambas as portas simultaneamente ou em uma porta de maneira individual. A última opção permite desviar o tráfego para uma porta em funcionamento, mantendo a outra porta, o que poderá reduzir a interrupção se o ExpressRoute Direct estiver em operação.

Observação

Você pode configurar codificações XPN e Não XPN:

  • GcmAes128
  • GcmAes256
  • GcmAesXpn128
  • GcmAesXpn256

A melhor prática sugerida é configurar a criptografia com as criptografias XPN para evitar falhas esporádicas de sessão que ocorrem com as criptografias não XPN em links de alta velocidade.

  1. Estabeleça a criptografia e os segredos do MACsec e vincule a identidade de usuário à porta para permitir que o código de gerenciamento do ExpressRoute recupere os segredos do MACsec quando necessário.

    $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) Se as portas estiverem no estado de administração inativo, você poderá executar os comandos a seguir para abrir as portas.

    $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
    

    Agora, o MACsec está habilitado nas portas do ExpressRoute Direct no lado da Microsoft. Se você não o configurou nos dispositivos de borda, continue para configurá-los com a mesma criptografia e segredos do MACsec.

  3. (Opcional) Para ativar as portas que estão no estado Administrativo Inativo, execute os seguintes 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
    

    Agora, o SCI está habilitado nas portas do ExpressRoute Direct.

Como desabilitar o MACsec

Para desativar o MACsec na instância do ExpressRoute Direct, execute os seguintes 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

Agora, o MACsec está desabilitado nas portas do ExpressRoute Direct no lado da Microsoft.

Testar a conectividade

Depois de configurar o MACsec (incluindo a atualização de chave do MACsec) nas portas do ExpressRoute Direct, verifique o status das sessões do BGP dos circuitos. Se você ainda não criou um circuito nas portas, faça isso primeiro e estabeleça o emparelhamento privado do Azure ou o emparelhamento da Microsoft do circuito. A configuração incorreta do MACsec, como uma incompatibilidade de chaves MACsec entre seus dispositivos de rede e os dispositivos de rede da Microsoft, impede que você observe a resolução ARP na camada 2 ou no estabelecimento do BGP na camada 3. Se tudo estiver configurado corretamente, você verá as rotas do BGP anunciadas corretamente em ambas as direções e no fluxo de dados do aplicativo de maneira adequada no ExpressRoute.

Próximas etapas