Konfigurieren von MACsec für ExpressRoute Direct-Ports
Dieser Artikel enthält Anleitungen zum Konfigurieren von MACsec, einem Sicherheitsprotokoll, das die Kommunikation zwischen Ihren Edgeroutern und den Edgeroutern von Microsoft mithilfe von PowerShell-Befehlen schützt.
Voraussetzungen
Bevor Sie mit der Konfiguration von MACsec beginnen, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:
- Sie haben sich mit den ExpressRoute Direct-Bereitstellungsworkflowsvertraut gemacht.
- Sie haben eine ExpressRoute Direct-Portressource entsprechend den Anleitungen erstellt.
- Wenn Sie PowerShell lokal ausführen möchten, haben Sie die neueste Version von Azure PowerShell auf Ihrem Computer installiert.
Arbeiten mit Azure PowerShell
Die Schritte und Beispiele in diesem Artikel verwenden Azure PowerShell Az-Module. Informationen zur lokalen Installation von Az-Modulen auf Ihrem Computer finden Sie unter Installieren von Azure PowerShell. Weitere Informationen zum neuen Az-Modul finden Sie unter Einführung in das neue Azure PowerShell Az-Modul. PowerShell-Cmdlets werden regelmäßig aktualisiert. Wenn Sie nicht die neueste Version verwenden, können die in den Anweisungen angegebenen Werte fehlschlagen. Um die installierten Versionen von PowerShell auf Ihrem System zu suchen, verwenden Sie das Get-Module -ListAvailable Az
-Cmdlet.
Sie können Azure Cloud Shell verwenden, um die meisten PowerShell-Cmdlets und CLI-Befehle auszuführen, anstatt Azure PowerShell oder die Befehlszeilenschnittstelle lokal zu installieren. Azure Cloud Shell ist eine kostenlose interaktive Shell, in der häufig verwendete Azure-Tools vorinstalliert sind und die für die Verwendung mit Ihrem Konto konfiguriert wurde. Um in Azure Cloud Shell Code aus diesem Artikel auszuführen, öffnen Sie eine Cloud Shell-Sitzung, verwenden Sie für einen Codeblock die Schaltfläche Kopieren, um Code zu kopieren, und fügen Sie ihn mit STRG+UMSCHALT+V (Windows und Linux) oder BEFEHL+UMSCHALT+V (macOS) in die Cloud Shell-Sitzung ein. Eingefügter Code wird nicht automatisch ausgeführt. Sie müssen zum Ausführen von Code die EINGABETASTE drücken.
Cloud Shell kann auf mehrere Arten gestartet werden:
Anmelden und Auswählen des richtigen Abonnements
Führen Sie die folgenden Schritte aus, um mit der Konfiguration zu beginnen:
Melden Sie sich mit Ihren Anmeldeinformation bei Ihrem Azure-Konto an.
Wählen das Abonnement, das Sie für diese Konfiguration verwenden möchten.
Wenn Sie Azure Cloud Shell verwenden, melden Sie sich nach dem Klicken auf „Ausprobieren“ automatisch bei Ihrem Azure-Konto an. Öffnen Sie zum lokalen Anmelden Ihre PowerShell-Konsole mit erhöhten Rechten, und führen Sie das Cmdlet aus, um eine Verbindung herzustellen.
Connect-AzAccount
Falls Sie über mehrere Abonnements verfügen, rufen Sie eine Liste Ihrer Azure-Abonnements ab.
Get-AzSubscription
Geben Sie das Abonnement an, das Sie verwenden möchten.
Select-AzSubscription -SubscriptionName "Name of subscription"
Erstellen von Azure Key Vault, MACsec-Geheimnissen und der Benutzeridentität
Um MACsec-Geheimnisse sicher speichern zu können, erstellen Sie eine Key Vault-Instanz in einer neuen Ressourcengruppe. Key Vault ist ein Dienst, mit dem Sie kryptografische Schlüssel, Zertifikate und Geheimnisse in Azure verwalten und schützen können. Weitere Informationen finden Sie unter Was ist der Azure-Schlüsseltresor?.
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
Sie können eine vorhandene Key Vault-Instanz oder Ressourcengruppe für diese Konfiguration wiederverwenden. Sie müssen jedoch sicherstellen, dass das Feature [soft-delete] in Ihrem Key Vault aktiviert ist. Mit diesem Feature können Sie gelöschte Schlüssel, Geheimnisse und Zertifikate innerhalb eines Aufbewahrungszeitraums wiederherstellen. Wenn in Ihrem Key Vault das Feature „soft-delete2 nicht aktiviert ist, führen Sie die folgenden Befehle aus, um es zu aktivieren:
($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
Hinweis
- ExpressRoute ist ein vertrauenswürdiger Dienst in Azure, der Netzwerksicherheitsrichtlinien innerhalb von Azure Key Vault unterstützt. Weitere Informationen finden Sie unter Konfigurieren von Azure Key Vault-Firewall und virtuellen Netzwerken.
- Sie sollten Azure Key Vault nicht hinter einem privaten Endpunkt platzieren, da dadurch die Kommunikation mit der ExpressRoute-Verwaltungsebene verhindert wird. Die ExpressRoute-Verwaltungsebene ist für die Verwaltung der MACsec-Schlüssel und -Parameter für Ihre Verbindung zuständig.
Zum Erstellen einer neuen Benutzeridentität müssen Sie das Cmdlet
New-AzUserAssignedIdentity
verwenden. Dieses Cmdlet erstellt eine benutzerseitig zugewiesene verwaltete Identität in Microsoft Entra ID und registriert sie bei der angegebenen Abonnement- und Ressourcengruppe. Eine benutzerseitig zugewiesene verwaltete Identität ist eine eigenständige Azure-Ressource, die jedem Azure-Dienst zugewiesen werden kann, der verwaltete Identitäten unterstützt. Sie können diese Identität nutzen, um den Zugriff auf Azure-Ressourcen zu authentifizieren und zu autorisieren, ohne Anmeldeinformationen in Ihren Code- oder Konfigurationsdateien zu speichern. Weitere Informationen finden Sie im unter Was sind verwaltete Identitäten für Azure-Ressourcen?.$identity = New-AzUserAssignedIdentity -Name "identity_name" -Location "resource_location" -ResourceGroupName "your_resource_group"
Um eine vorhandene Benutzeridentität zu verwenden, führen Sie den folgenden Befehl aus:
$identity = Get-AzUserAssignedIdentity -ResourceGroupName "your_resource_group" -Name "identity_name"
Installieren Sie das folgende Modul im Administratormodus, wenn
New-AzUserAssignedIdentity
oderGet-AzUserAssignedIdentity
von PowerShell nicht als gültige Cmdlets erkannt werden. Führen Sie dann den obigen Befehl erneut aus.Install-Module -Name Az.ManagedServiceIdentity
Erstellen Sie einen CAK (Connectivity Association Key) und einen CKN (Connectivity Association Key Name), und speichern Sie diese im Schlüsseltresor.
$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
Hinweis
- Der CKN muss eine Zeichenfolge mit einer geraden Anzahl von bis zu 64 Zeichen im Hexadezimalformat (0–9, A–F) sein.
- Die CAK-Länge hängt vom angegebenen Verschlüsselungsverfahren ab:
- Für GcmAes128 und GcmAesXpn128 muss der CAK eine Zeichenfolge mit einer geraden Anzahl von 32 Zeichen im Hexadezimalformat (0–9, A–F) sein.
- Für GcmAes256 und GcmAesXpn256 muss der CAK eine Zeichenfolge mit einer geraden Anzahl von 64 Zeichen im Hexadezimalformat (0–9, A–F) sein.
- Für CAK muss die volle Länge des Schlüssels verwendet werden. Wenn der Schlüssel kürzer als die erforderliche Länge ist, wird am Ende des Schlüssels
0's
angehängt, um die erforderliche Länge zu erreichen. Zum Beispiel wird CAK 1234 zu 12340000... sowohl für 128-Bit als auch für 256-Bit, je nach Chiffre.
Erteilen Sie der Benutzeridentität die Autorisierung, den
GET
-Vorgang auszuführen.Set-AzKeyVaultAccessPolicy -VaultName "your_key_vault_name" -PermissionsToSecrets get -ObjectId $identity.PrincipalId
Die Benutzeridentität hat Zugriff zum Abrufen von Geheimnissen wie CAK und CKN aus dem Key Vault erhalten.
Konfigurieren Sie die Benutzeridentität als den designierten Dienstprinzipal für ExpressRoute.
$erIdentity = New-AzExpressRoutePortIdentity -UserAssignedIdentityId $identity.Id
Konfigurieren von MACsec für ExpressRoute Direct-Ports
Aktivieren von MACsec
Jede ExpressRoute Direct-Instanz besteht aus zwei physischen Ports. Sie können MACsec auf beiden Ports gleichzeitig oder auf einem Port einzeln aktivieren. Mit dieser Option können Sie den Datenverkehr an einen funktionierenden Port umleiten und gleichzeitig den anderen Port beibehalten, wodurch die Unterbrechung reduziert werden kann, sofern Ihr ExpressRoute Direct funktioniert.
Hinweis
Sie können sowohl XPN- als auch Nicht-XPN-Verschlüsselungen konfigurieren:
- GcmAes128
- GcmAes256
- GcmAesXpn128
- GcmAesXpn256
Die vorgeschlagene bewährte Methode besteht darin, die Verschlüsselung mit xpn-Verschlüsselungsverfahren einzurichten, um sporadische Sitzungsfehler zu verhindern, die bei Verbindungen mit hoher Geschwindigkeit ohne xpn-Verschlüsselungsverfahren auftreten.
Legen Sie MACsec-Geheimnisse und -Verschlüsselungsverfahren fest, und verknüpfen Sie die Benutzeridentität mit dem Port, sodass der ExpressRoute-Verwaltungscode bei Bedarf die MACsec-Geheimnisse abrufen kann.
$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
(Optional) Wenn die Ports den Status „Administrative Down“ aufweisen, können Sie die folgenden Befehle ausführen, um die Ports wieder zu aktivieren.
$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 ist jetzt an den ExpressRoute Direct-Ports auf der Microsoft-Seite aktiviert. Wenn Sie dies auf Ihren Edgegeräten noch nicht konfiguriert haben, können Sie diese anschließend mit denselben MACsec-Geheimnissen und -Verschlüsselungsverfahren konfigurieren.
(Optional) Führen Sie die folgenden Befehle aus, um die Ports mit dem Status „Administrative Down“ zu aktivieren:
$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 ist jetzt an den ExpressRoute Direct-Ports aktiviert.
So deaktivieren Sie MACsec
Um MACsec in Ihrer ExpressRoute Direct-Instanz zu deaktivieren, führen Sie die folgenden Befehle aus:
$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 ist jetzt an den ExpressRoute Direct-Ports auf der Microsoft-Seite deaktiviert.
Testen der Konnektivität
Sobald Sie MACsec (einschließlich MACsec-Schlüsselaktualisierung) an Ihren ExpressRoute Direct-Ports konfiguriert haben, überprüfen Sie den Status der BGP-Sitzungen der Verbindungen. Wenn Sie noch keine Verbindung mit den Ports erstellt haben, müssen Sie dies zuerst tun und das private Azure-Peering bzw. das Microsoft-Peering für die Verbindung einrichten. Wenn MACsec falsch konfiguriert worden ist, z. B. wenn die MACsec-Schlüssel Ihrer Netzwerkgeräte nicht mit den Schlüsseln der Netzwerkgeräte von Microsoft übereinstimmen, werden die ARP-Auflösung auf Ebene 2 oder die BGP-Einrichtung auf Ebene 3 nicht angezeigt. Wenn alle Einstellungen ordnungsgemäß konfiguriert worden ist, sehen Sie, dass die BGP-Routen ordnungsgemäß in beiden Richtungen angekündigt werden und Ihre Daten entsprechend über ExpressRoute fließen.