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ą Ctrl+Shift+V w systemach Windows i Linux lub Cmd+Shift+V w systemie macOS. Wklejony tekst nie jest automatycznie wykonywany, naciśnij 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. | |
Otwórz usługę Cloud Shell w swojej przeglądarce. | |
Kliknij przycisk Cloud Shell w menu w prawym górnym rogu witryny Azure 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
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.
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 administratora, jeśli program PowerShell nie rozpoznaje
New-AzUserAssignedIdentity
lubGet-AzUserAssignedIdentity
jako prawidłowe polecenia cmdlet. Następnie ponownie wykonaj powyższe polecenie.Install-Module -Name Az.ManagedServiceIdentity
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.
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.
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.
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
(Opcjonalnie) Jeśli porty znajdują się w stanie Administracja w dół, 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.
(Opcjonalnie) Aby aktywować porty, które znajdują się w stanie Administracja w dół, 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
- Tworzenie obwodu usługi ExpressRoute w usłudze ExpressRoute Direct
- Link a virtual network to an ExpressRoute circuit (Łączenie sieci wirtualnej z obwodem usługi ExpressRoute)
- Weryfikowanie połączenia usługi ExpressRoute