Configurar o MACsec em portas do ExpressRoute Direct

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

Antes de começar

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

  • Você se familiarizou com os fluxos de trabalho de provisionamento do ExpressRoute Direct.
  • Você criou um recurso de porta do ExpressRoute Direct de acordo com as instruções.
  • Você instalou a versão mais recente do Azure PowerShell em seu computador se pretende executar o PowerShell localmente.

Trabalhando com o Azure PowerShell

As etapas e exemplos neste artigo usam módulos Az do Azure PowerShell. Para instalar os módulos Az localmente no seu computador, consulte Instalar o Azure PowerShell. Para saber mais sobre o novo módulo Az, consulte 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 podem falhar. Para localizar as versões instaladas do PowerShell em seu sistema, use o Get-Module -ListAvailable Az cmdlet.

Você pode usar o Azure Cloud Shell para executar a maioria dos cmdlets do PowerShell e 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 está configurado para ser usado com sua 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ódigo para copiar o código e cole-o na sessão do Cloud Shell com Ctrl+Shift+V no Windows e Linux ou Cmd+Shift+V no macOS. O texto colado não é executado automaticamente, pressione Enter para executar o código.

Existem algumas formas de iniciar o Cloud Shell:

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

Inicie sessão e selecione a subscrição certa

Siga estas etapas para iniciar a configuração:

  • Entre na sua conta do Azure usando suas credenciais.

  • Escolha a subscrição que pretende utilizar para esta configuração.

    Se estiver a utilizar o Azure Cloud Shell, inicie sessão na sua conta do Azure automaticamente depois de 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 tiver mais do que uma subscrição, obtenha uma lista das suas subscrições do Azure.

    Get-AzSubscription
    

    Especifique a subscrição que pretende utilizar.

    Select-AzSubscription -SubscriptionName "Name of subscription"
    

Criar o Cofre da Chave do Azure, segredos MACsec e identidade do usuário

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

    Você pode reutilizar um Cofre da Chave ou grupo de recursos existente para essa configuração. No entanto, você deve garantir que o [recurso de exclusão suave] esteja ativado no Cofre da Chave. Esse recurso permite que você recupere chaves, segredos e certificados excluídos dentro de um período de retenção. Se o Cofre da Chave não tiver o soft-delete ativado, execute os seguintes comandos para habilitá-lo:

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

    • O ExpressRoute é um serviço confiável dentro do Azure que dá suporte a políticas de Segurança de Rede no Cofre da Chave do Azure. Para obter mais informações, consulte Configurar o Firewall e as Redes Virtuais do Azure Key Vault.
    • Você não deve colocar o Cofre da Chave do Azure atrás de um ponto de extremidade privado, pois isso impedirá a comunicação com o plano de gerenciamento da Rota Expressa. O plano de gerenciamento de Rota Expressa é responsável por gerenciar as chaves e parâmetros MACsec para sua conexão.
  2. Para criar uma nova identidade de usuário, você precisa usar o New-AzUserAssignedIdentity cmdlet. Esse cmdlet cria uma identidade gerenciada atribuída pelo usuário na ID do Microsoft Entra e a registra com a assinatura especificada e o grupo de recursos. 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 ofereça suporte a identidades gerenciadas. Você pode usar essa identidade para autenticar e autorizar o acesso aos recursos do Azure sem armazenar credenciais em seu código ou arquivos de configuração. Para obter mais informações, consulte 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 novamente.

    Install-Module -Name Az.ManagedServiceIdentity
    
  3. Crie uma chave de associação de conectividade (CAK) e um nome de chave de associação de conectividade (CKN) e armazene-os no Cofre de Chaves.

    $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 ser uma cadeia de comprimento par até 64 dígitos hexadecimais (0-9, A-F).
    • O comprimento do CAK depende do conjunto de codificação especificado:
      • Para GcmAes128 e GcmAesXpn128, o CAK deve ser uma cadeia de caracteres de comprimento par com 32 dígitos hexadecimais (0-9, A-F).
      • Para GcmAes256 e GcmAesXpn256, o CAK deve ser uma cadeia de caracteres de comprimento par com 64 dígitos hexadecimais (0-9, A-F).
    • Para CAK, o comprimento total da chave deve ser usado. Se a chave for menor do que o comprimento necessário, será 0's adicionada 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 cifra.
  4. Conceda à identidade do usuário a autorização para executar a GET operação.

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

    A identidade do usuário adquiriu o acesso para recuperar os segredos, como CAK e CKN, do Cofre da Chave.

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

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

Configurar o MACsec em portas do ExpressRoute Direct

Como ativar 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 individualmente. A última opção permite desviar o tráfego para uma porta em funcionamento enquanto mantém a outra porta, o que pode reduzir a interrupção se o ExpressRoute Direct estiver operacional.

Nota

Você pode configurar cifras XPN e não-XPN:

  • GcmAes128
  • GcmAes256
  • GcmAesXpn128
  • GcmAesXpn256

A prática recomendada sugerida é configurar a criptografia com cifras xpn para evitar falhas esporádicas de sessão que ocorrem com cifras não-xpn em links de alta velocidade.

  1. Estabeleça os segredos e a cifra MACsec e vincule a identidade do usuário à porta para permitir que o código de gerenciamento da Rota Expressa 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 Administrativo Inativo, você poderá executar os seguintes comandos 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
    

    O MACsec agora está habilitado nas portas ExpressRoute Direct no lado da Microsoft. Se você não o configurou em seus dispositivos de borda, você pode continuar a configurá-los com os mesmos segredos MACsec e cifra.

  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
    

    A SCI agora está habilitada nas portas ExpressRoute Direct.

Como desativar o MACsec

Para desativar o MACsec em sua 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

MACsec agora está desativado nas portas ExpressRoute Direct no lado da Microsoft.

Testar conectividade

Depois de configurar o MACsec (incluindo a atualização da chave MACsec) nas portas do ExpressRoute Direct, verifique o status das sessões BGP dos circuitos. Se você ainda não criou um circuito nas portas, faça-o primeiro e estabeleça o Emparelhamento Privado do Azure ou o Emparelhamento da Microsoft do circuito. Configuração incorreta do MACsec, como uma incompatibilidade de chave 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 o estabelecimento de BGP na camada 3. Se tudo estiver configurado corretamente, você verá as rotas BGP anunciadas corretamente em ambas as direções e o fluxo de dados do aplicativo de acordo com a Rota Expressa.

Próximos passos