Konfigurowanie zabezpieczeń MACsec na portach usługi ExpressRoute Direct

Ten artykuł zawiera wskazówki dotyczące konfigurowania protokołu MACsec, protokołu zabezpieczeń, który chroni komunikację między routerami brzegowymi i routerami brzegowymi firmy Microsoft przy użyciu poleceń programu PowerShell.

Zanim rozpoczniesz

Przed rozpoczęciem konfigurowania protokołu MACsec upewnij się, że spełnione są następujące wymagania wstępne:

  • Zapoznaj się z przepływami pracy aprowizacji usługi ExpressRoute Direct.
  • Utworzono zasób portu usługi ExpressRoute Direct zgodnie z instrukcjami.
  • Zainstalowano najnowszą wersję programu Azure PowerShell na komputerze, jeśli zamierzasz uruchomić program PowerShell lokalnie.

Praca z programem Azure PowerShell

Kroki i przykłady w tym artykule korzystają z modułów Az programu Azure PowerShell. Aby zainstalować moduły Az lokalnie na komputerze, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się więcej na temat nowego modułu Az, zobacz Wprowadzenie do nowego modułu Az programu Azure PowerShell. Polecenia cmdlet programu PowerShell są często aktualizowane. Jeśli nie używasz najnowszej wersji, wartości określone w instrukcjach mogą zakończyć się niepowodzeniem. Aby znaleźć zainstalowane wersje programu PowerShell w systemie, użyj Get-Module -ListAvailable Az polecenia cmdlet .

Za pomocą usługi Azure Cloud Shell można uruchamiać większość poleceń cmdlet programu PowerShell i poleceń interfejsu wiersza polecenia zamiast instalować program Azure PowerShell lub interfejs wiersza polecenia lokalnie. Usługa Azure Cloud Shell to bezpłatna interaktywna powłoka, która ma wstępnie zainstalowane typowe narzędzia platformy Azure i jest skonfigurowana do używania z kontem. Aby uruchomić dowolny kod zawarty w tym artykule w usłudze Azure Cloud Shell, otwórz sesję usługi Cloud Shell, użyj przycisku Kopiuj w bloku kodu, aby skopiować kod i wklej go do sesji usługi Cloud Shell za pomocą klawiszy Ctrl+Shift+V w systemach Windows i Linux lub Cmd+Shift+V w systemie macOS. Wklejony tekst nie jest automatycznie wykonywany, naciśnij klawisz Enter , aby uruchomić kod.

Istnieje kilka sposobów uruchomienia usługi Cloud Shell:

Opcja Link
Kliknij przycisk Wypróbuj w prawym górnym rogu bloku kodu. Cloud Shell in this article
Otwórz usługę Cloud Shell w swojej przeglądarce. https://shell.azure.com/powershell
Kliknij przycisk Cloud Shell w menu w prawym górnym rogu witryny Azure Portal. Cloud Shell in the portal

Zaloguj się i wybierz odpowiednią subskrypcję

Wykonaj następujące kroki, aby rozpocząć konfigurację:

  • Zaloguj się do konta platformy Azure przy użyciu poświadczeń.

  • Wybierz subskrypcję, której chcesz użyć dla tej konfiguracji.

    Jeśli używasz usługi Azure Cloud Shell, zaloguj się automatycznie do konta platformy Azure po kliknięciu pozycji "Wypróbuj". Aby zalogować się lokalnie, otwórz konsolę programu PowerShell z podwyższonym poziomem uprawnień i uruchom polecenie cmdlet, aby nawiązać połączenie.

    Connect-AzAccount
    

    Jeśli masz więcej niż jedną subskrypcję, pobierz listę subskrypcji platformy Azure.

    Get-AzSubscription
    

    Określ subskrypcję, której chcesz użyć.

    Select-AzSubscription -SubscriptionName "Name of subscription"
    

Tworzenie usługi Azure Key Vault, wpisów tajnych MACsec i tożsamości użytkownika

  1. Aby bezpiecznie przechowywać wpisy tajne usługi MACsec, należy utworzyć wystąpienie usługi Key Vault w nowej grupie zasobów. Key Vault to usługa, która umożliwia zarządzanie i ochronę kluczy kryptograficznych, certyfikatów i wpisów tajnych na platformie Azure. Aby uzyskać więcej informacji, zobacz Co to jest usługa 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
    

    Możesz ponownie użyć istniejącej usługi Key Vault lub grupy zasobów dla tej konfiguracji. Należy jednak upewnić się, że funkcja [usuwanie nietrwałe] jest włączona w usłudze Key Vault. Ta funkcja umożliwia odzyskanie usuniętych kluczy, wpisów tajnych i certyfikatów w okresie przechowywania. Jeśli usługa Key Vault nie ma włączonego usuwania nietrwałego, uruchom następujące polecenia, aby je włączyć:

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

    Uwaga

    • ExpressRoute to zaufana usługa na platformie Azure, która obsługuje zasady zabezpieczeń sieci w usłudze Azure Key Vault. Aby uzyskać więcej informacji, zobacz Konfigurowanie zapory i sieci wirtualnych usługi Azure Key Vault.
    • Nie należy umieszczać usługi Azure Key Vault za prywatnym punktem końcowym, ponieważ uniemożliwi to komunikację z płaszczyzną zarządzania usługi ExpressRoute. Płaszczyzna zarządzania usługi ExpressRoute jest odpowiedzialna za zarządzanie kluczami i parametrami protokołu MACsec dla połączenia.
  2. Aby utworzyć nową tożsamość użytkownika, należy użyć New-AzUserAssignedIdentity polecenia cmdlet . To polecenie cmdlet tworzy tożsamość zarządzaną przypisaną przez użytkownika w usłudze Microsoft Entra ID i rejestruje ją w określonej subskrypcji i grupie zasobów. Tożsamość zarządzana przypisana przez użytkownika to autonomiczny zasób platformy Azure, który można przypisać do dowolnej usługi platformy Azure obsługującej tożsamości zarządzane. Ta tożsamość umożliwia uwierzytelnianie i autoryzację dostępu do zasobów platformy Azure bez przechowywania poświadczeń w kodzie lub plikach konfiguracji. Aby uzyskać więcej informacji, zobacz Czym są tożsamości zarządzane dla zasobów platformy Azure?.

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

    Aby użyć istniejącej tożsamości użytkownika, uruchom następujące polecenie:

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

    Zainstaluj następujący moduł w trybie Administracja istratora, jeśli program PowerShell nie rozpoznaje New-AzUserAssignedIdentity lub Get-AzUserAssignedIdentity nie jest prawidłowymi poleceniami cmdlet. Następnie ponownie wykonaj powyższe polecenie.

    Install-Module -Name Az.ManagedServiceIdentity
    
  3. Utwórz klucz skojarzenia łączności (CAK) i nazwę klucza skojarzenia łączności (CKN) i zapisz je w usłudze 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
    

    Uwaga

    • CKN musi być ciągiem o parzystej długości do 64 cyfr szesnastkowych (0–9, A-F).
    • Długość klucza CAK zależy od określonego zestawu szyfrowania:
      • W przypadku GcmAes128 i GcmAesXpn128 CAK musi być ciągiem o parzystej długości z 32 cyframi szesnastkowymi (0-9, A-F).
      • W przypadku GcmAes256 i GcmAesXpn256 CAK musi być ciągiem o parzystej długości z 64 cyframi szesnastkowymi (0-9, A-F).
    • W przypadku funkcji CAK należy użyć pełnej długości klucza. Jeśli klucz jest krótszy niż wymagana długość, 0's zostanie dodany na końcu klucza, aby spełnić wymagania dotyczące długości. Na przykład CAK 1234 będzie mieć wartość 12340000... dla 128-bitowych i 256-bitowych na podstawie szyfrowania.
  4. Udziel tożsamości użytkownika autoryzacji w celu wykonania GET operacji.

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

    Tożsamość użytkownika uzyskała dostęp do pobierania wpisów tajnych, takich jak CAK i CKN, z usługi Key Vault.

  5. Skonfiguruj tożsamość użytkownika jako wyznaczoną jednostkę usługi dla usługi ExpressRoute.

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

Konfigurowanie zabezpieczeń MACsec na portach usługi ExpressRoute Direct

Jak włączyć protokół MACsec

Każde wystąpienie usługi ExpressRoute Direct składa się z dwóch portów fizycznych. Protokół MACsec można aktywować na obu portach jednocześnie lub na jednym porcie osobno. Ta ostatnia opcja umożliwia przekierowanie ruchu do działającego portu przy zachowaniu innego portu, co może zmniejszyć zakłócenia, jeśli usługa ExpressRoute Direct działa.

Uwaga

Można skonfigurować zarówno szyfry XPN, jak i inne niż XPN:

  • GcmAes128
  • GcmAes256
  • GcmAesXpn128
  • GcmAesXpn256

Sugerowanym najlepszym rozwiązaniem jest skonfigurowanie szyfrowania za pomocą szyfrowania xpn, aby zapobiec sporadycznych awariom sesji, które występują z szyframi innych niż xpn na szybkich łączach.

  1. Ustanów wpisy tajne i szyfr MACsec oraz połącz tożsamość użytkownika z portem, aby umożliwić usłudze ExpressRoute kod zarządzania w celu pobrania wpisów tajnych protokołu MACsec, jeśli jest to wymagane.

    $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. (Opcjonalnie) Jeśli porty są w stanie Administracja istrative Down, możesz uruchomić następujące polecenia, aby wyświetlić porty.

    $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
    

    Protokół MACsec jest teraz włączony na portach usługi ExpressRoute Direct po stronie firmy Microsoft. Jeśli nie skonfigurowaliśmy go na urządzeniach brzegowych, możesz skonfigurować je przy użyciu tych samych wpisów tajnych i szyfrowania MACsec.

  3. (Opcjonalnie) Aby aktywować porty, które są w stanie Administracja istrative Down, uruchom następujące polecenia:

    $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
    

    Interfejs SCI jest teraz włączony na portach usługi ExpressRoute Direct.

Jak wyłączyć protokół MACsec

Aby dezaktywować protokół MACsec w wystąpieniu usługi ExpressRoute Direct, uruchom następujące polecenia:

$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

Protokół MACsec jest teraz wyłączony na portach usługi ExpressRoute Direct po stronie firmy Microsoft.

Testowanie łączności

Po skonfigurowaniu protokołu MACsec (w tym aktualizacji klucza MACsec) na portach usługi ExpressRoute Direct sprawdź stan sesji protokołu BGP obwodów. Jeśli jeszcze nie utworzono obwodu na portach, najpierw należy ustanowić prywatną komunikację równorzędną platformy Azure lub komunikację równorzędną firmy Microsoft dla obwodu. Nieprawidłowa konfiguracja protokołu MACsec, taka jak niezgodność klucza MACsec między urządzeniami sieciowymi i urządzeniami sieciowymi firmy Microsoft, uniemożliwia obserwowanie rozpoznawania protokołu ARP w warstwie 2 lub ustanowienia protokołu BGP w warstwie 3. Jeśli wszystko jest poprawnie skonfigurowane, trasy protokołu BGP są prawidłowo anonsowane w obu kierunkach i przepływ danych aplikacji odpowiednio za pośrednictwem usługi ExpressRoute.

Następne kroki