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:
- 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 última versão do Azure PowerShell no computador se pretende executar o PowerShell localmente.
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:
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
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.
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
ouGet-AzUserAssignedIdentity
como cmdlets válidos. Em seguida, execute o comando acima mais uma vez.Install-Module -Name Az.ManagedServiceIdentity
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.
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.
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.
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
(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.
(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.