Настройка MACsec для портов ExpressRoute Direct

В этой статье содержатся инструкции по настройке MACsec, протокола безопасности, который защищает обмен данными между пограничными маршрутизаторами и пограничными маршрутизаторами Майкрософт с помощью команд PowerShell.

Подготовка к работе

Прежде чем приступить к настройке MACsec, убедитесь, что выполнены следующие предварительные требования:

  • Вы ознакомились с рабочими процессами подготовки ExpressRoute Direct.
  • Вы создали ресурс порта ExpressRoute Direct в рамках инструкций.
  • Вы установили последнюю версию Azure PowerShell на компьютере, если планируется локально запустить PowerShell.

Работа с Azure PowerShell

В шагах и примерах в этой статье используются модули Az для Azure PowerShell. Чтобы установить модули Az локально, см. статью Установка Azure PowerShell. Чтобы узнать о модуле Az, см. статью Знакомство с новым модулем Az для Azure PowerShell. Командлеты PowerShell часто обновляются. Если вы не используете последнюю версию, применение значений, указанных в инструкциях, может привести к сбою. Чтобы найти установленные в системе версии PowerShell, используйте командлет Get-Module -ListAvailable Az.

Azure Cloud Shell можно использовать для выполнения большинства командлетов PowerShell и команд CLI. Это позволяет избежать локальной установки Azure PowerShell или CLI. Azure Cloud Shell — это бесплатная интерактивная оболочка, в которой предустановлены и настроены для использования с вашей учетной записью стандартные средства Azure. Для выполнения кода из этой статьи в Azure Cloud Shell откройте сеанс Cloud Shell, скопируйте блок кода с помощью кнопки Копировать и вставьте его в сеанс Cloud Shell, нажав клавиши CTRL+SHIFT+V в Windows и Linux или CMD+SHIFT+V в macOS. Вставленный текст не выполняется автоматически, поэтому нажмите клавишу ВВОД для выполнения кода.

Cloud Shell можно запустить разными способами:

Параметр Установить связь
Нажмите кнопку Попробовать в правом верхнем углу блока с кодом. Cloud Shell in this article
Откройте Cloud Shell в браузере. https://shell.azure.com/powershell
Нажмите кнопку меню Cloud Shell в правом верхнем углу окна портала Azure. Cloud Shell in the portal

Войдите в систему и выберите подписку

Выполните следующие действия, чтобы начать настройку:

  • Войдите в учетную запись Azure с помощью учетных данных.

  • Выберите подписку, которую вы хотите использовать для этой конфигурации.

    Если вы используете Azure Cloud Shell, вы автоматически войдете в учетную запись Azure после нажатия кнопки "Попробовать". Чтобы войти локально, откройте консоль PowerShell с повышенными привилегиями и выполните командлет для подключения.

    Connect-AzAccount
    

    Если у вас есть несколько подписок Azure, запросите их список.

    Get-AzSubscription
    

    укажите подписку, которую нужно использовать;

    Select-AzSubscription -SubscriptionName "Name of subscription"
    

Создание Azure Key Vault, секретов MACsec и удостоверения пользователя

  1. Чтобы безопасно хранить секреты MACsec, необходимо создать экземпляр Key Vault в новой группе ресурсов. Key Vault — это служба, которая позволяет управлять криптографическими ключами, сертификатами и секретами в Azure. Дополнительные сведения см. в статье Что такое хранилище ключей 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
    

    Для этой конфигурации можно повторно использовать существующее хранилище ключей или группу ресурсов. Однако необходимо убедиться, что функция [обратимого удаления ] включена в Key Vault. Эта функция позволяет восстановить удаленные ключи, секреты и сертификаты в течение периода хранения. Если в Key Vault нет обратимого удаления, выполните следующие команды, чтобы включить его:

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

    Примечание.

    • ExpressRoute — это надежная служба в Azure, которая поддерживает политики безопасности сети в Azure Key Vault. Дополнительные сведения см. в статье "Настройка брандмауэра Azure Key Vault" и виртуальная сеть.
    • Не следует размещать Azure Key Vault за частной конечной точкой, так как это приведет к предотвращению взаимодействия с плоскости управления ExpressRoute. Плоскость управления ExpressRoute отвечает за управление ключами и параметрами MACsec для подключения.
  2. Чтобы создать новое удостоверение пользователя, необходимо использовать New-AzUserAssignedIdentity командлет. Этот командлет создает управляемое удостоверение, назначаемое пользователем, в идентификаторе Microsoft Entra и регистрирует его в указанной подписке и группе ресурсов. Управляемое удостоверение, назначаемое пользователем, — это автономный ресурс Azure, который может быть назначен любой службе Azure, поддерживающей управляемые удостоверения. Это удостоверение можно использовать для проверки подлинности и авторизации доступа к ресурсам Azure без хранения учетных данных в файлах кода или конфигурации. Дополнительные сведения см. в статье Что такое управляемые удостоверения для ресурсов Azure.

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

    Чтобы использовать существующее удостоверение пользователя, выполните следующую команду:

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

    Установите следующий модуль в режиме Администратор istrator, если PowerShell не распознает New-AzUserAssignedIdentity или Get-AzUserAssignedIdentity как допустимые командлеты. Затем повторите приведенную выше команду.

    Install-Module -Name Az.ManagedServiceIdentity
    
  3. Создайте ключ связи подключения (CAK) и имя ключа связи подключения (CKN) и сохраните их в 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
    

    Примечание.

    • Имя CKN должно быть строкой, состоящей не более чем из 64 шестнадцатеричных цифр (0–9, A–F), длина которой представлена четным числом.
    • Длина CAK зависит от указанного набора шифров:
      • Для GcmAes128 и GcmAesXpn128 CAK должен быть строкой четной длины с 32 шестнадцатеричными цифрами (0-9, A-F).
      • Для GcmAes256 и GcmAesXpn256 CAK должен быть строкой четной длины с 64 шестнадцатеричными цифрами (0-9, A-F).
    • Для CAK необходимо использовать полную длину ключа. Если ключ короче требуемой длины, 0's он будет добавлен в конец ключа для удовлетворения требования длины. Например, CAK из 1234 будет 123400000... для 128-разрядных и 256-разрядных на основе шифра.
  4. Предоставьте удостоверению пользователя авторизацию для выполнения GET операции.

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

    Удостоверение пользователя получило доступ к получению секретов, таких как CAK и CKN, из Key Vault.

  5. Настройте удостоверение пользователя в качестве указанного субъекта-службы для ExpressRoute.

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

Настройка MACsec для портов ExpressRoute Direct

Включение MACsec

Каждый экземпляр ExpressRoute Direct состоит из двух физических портов. Вы можете активировать MACsec одновременно или на одном порту по отдельности. Последний вариант позволяет перенаправить трафик на функционирующие порты при сохранении другого порта, что может снизить нарушения, если ExpressRoute Direct работает.

Примечание.

Можно настроить шифры XPN и Non-XPN:

  • GcmAes128
  • GcmAes256
  • GcmAesXpn128
  • GcmAesXpn256

Рекомендуемая рекомендация заключается в настройке шифрования с помощью шифров XPN, чтобы предотвратить сбои сеанса, возникающие при использовании шифров, отличных от xpn, на высокоскоростных каналах.

  1. Установите секреты и шифр MACsec и свяжите удостоверение пользователя с портом, чтобы включить код управления ExpressRoute для получения секретов MACsec при необходимости.

    $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. (Необязательно.) Если порты находятся в состоянии "Отключено администратором", можно выполнить следующие команды, чтобы отобразить порты.

    $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 теперь включен на портах ExpressRoute Direct на стороне Майкрософт. Если вы не настроили его на пограничных устройствах, их можно настроить с теми же секретами и шифрами MACsec.

  3. (Необязательно) Чтобы активировать порты, которые находятся в состоянии Администратор istrative Down, выполните следующие команды:

    $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 включен в портах ExpressRoute Direct.

Отключение MACsec

Чтобы отключить MACsec в экземпляре ExpressRoute Direct, выполните следующие команды:

$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 теперь отключен на портах ExpressRoute Direct на стороне Майкрософт.

Проверка подключения

После настройки MACsec (включая обновление ключа MACsec) на портах ExpressRoute Direct проверьте состояние сеансов BGP каналов. Если вы еще не создали канал на портах, сделайте это сначала и установите частный пиринг Azure или пиринг Майкрософт канала. Неправильная конфигурация MACsec, например несоответствие ключа MACsec между сетевыми устройствами и сетевыми устройствами Майкрософт, не позволяет наблюдать разрешение ARP на уровне 2 или BGP на уровне 3. Если все настроено правильно, вы увидите маршруты BGP, объявленные правильно в обоих направлениях и потоке данных приложения по ExpressRoute.

Следующие шаги