gRPC-Services konfigurieren
Konfigurieren Sie den gRPC-Server so, dass ein Client gRPC-Dienste auf dem Netzwerkgerät verwenden kann, einschließlich: gRPC-gNOI-Dienste (Network Operations Interface), gRPC-gNMI-Dienste (Network Management Interface) und gRPC-Routing-Informationsbasis-Schnittstellendienste (gRIBI).
In diesem Thema wird erläutert, wie gRPC-Dienste auf Junos-Geräten konfiguriert werden, einschließlich der Optionen für die Authentifizierung und der Konfiguration der einzelnen Optionen. Bevor der Server und der Client eine gRPC-Sitzung einrichten können, müssen Sie die in den folgenden Abschnitten erläuterten Anforderungen erfüllen:
- Authentifizierung und Autorisierung für gRPC-basierte Services verstehen
- Abrufen von X.509-Zertifikaten
- Laden des lokalen Zertifikats des gRPC-Servers in die Junos PKI
- gRPC-Services aktivieren
- Konfiguration der gegenseitigen (bidirektionalen) Authentifizierung für gRPC-Services (optional)
- Konfigurieren des Benutzerkontos für gRPC-Dienste
- Konfiguration der gRPC-RPC-Autorisierung (optional)
Authentifizierung und Autorisierung für gRPC-basierte Services verstehen
Die Schnittstellen gNMI, gNOI und gRIBI verwenden das gRPC Remote Procedure Call-Framework für den Transport. Der gRPC-Server wird auf dem Netzwerkgerät ausgeführt und wartet auf Verbindungsanforderungen an einem angegebenen Port. Die gRPC-Clientanwendung wird auf einem Remotenetzwerkmanagementsystem (NMS) ausgeführt und richtet einen gRPC-Kanal mit dem Server auf dem angegebenen Host und Port ein. Der Client führt RPCs über die SSL-verschlüsselte gRPC-Sitzung aus, um Netzwerkservicevorgänge durchzuführen. Abbildung 1 zeigt eine einfache Verbindung zwischen einem gRPC-Client und einem Server.
zwischen gRPC-Server und Client
gRPC-Kanäle verwenden Kanalanmeldeinformationen, um die Authentifizierung zwischen dem Server und dem Client zu verarbeiten. Standardkanalanmeldeinformationen verwenden digitale X.509-Zertifikate zur Authentifizierung des Servers und des Clients. Ein digitales Zertifikat bietet eine Möglichkeit, Benutzer über einen vertrauenswürdigen Drittanbieter zu authentifizieren, der als Zertifizierungsstelle oder Zertifizierungsstelle (CA) bezeichnet wird. Die CA überprüft die Identität eines Zertifikatsinhabers und "signiert" das Zertifikat, um zu bestätigen, dass es nicht gefälscht oder verändert wurde. Der X.509-Standard definiert das Format für das Zertifikat. Digitale Zertifikate können verwendet werden, um durch Zertifikatsvalidierung eine sichere Verbindung zwischen zwei Endgeräten herzustellen. Um einen gRPC-Kanal einzurichten, muss jedes Endgerät (Gerät oder Anwendung), für das eine Authentifizierung erforderlich ist, ein X.509-Zertifikat im Exchange bereitstellen.
Junos-Geräte unterstützen sowohl die reine Server-Authentifizierung als auch die gegenseitige Authentifizierung für SSL- und TLS-basierte gRPC-Sitzungen. Wenn die reine Server-Authentifizierung konfiguriert ist, stellt der Server sein Zertifikat mit öffentlichem Schlüssel bereit, wenn der Kanal eingerichtet wird. Der Client verwendet das Root-CA-Zertifikat des Servers, um den Server zu authentifizieren. Wenn die gegenseitige Authentifizierung konfiguriert ist, stellt der Client auch sein Zertifikat bereit, wenn er eine Verbindung mit dem Server herstellt, und der Server validiert das Zertifikat. Wenn die Zertifikatsüberprüfung erfolgreich ist, kann der Client Aufrufe tätigen. Es wird empfohlen, die gegenseitige Authentifizierung zu konfigurieren und von einer CA signierte Zertifikate für die höchste Sicherheit zu verwenden, obwohl selbstsignierte Zertifikate akzeptiert werden.
Eine Public-Key-Infrastructure (PKI) unterstützt die Verteilung und Identifizierung von öffentlichen Verschlüsselungsschlüsseln, sodass Benutzer sowohl Daten über Netzwerke wie das Internet sicher austauschen als auch die Identität der anderen Partei überprüfen können. Für gRPC-basierte Services muss die Junos PKI das Zertifikat für das lokale Gerät enthalten, das als gRPC-Server fungiert. Wenn Sie die gegenseitige Authentifizierung verwenden, muss die Junos-PKI auch die Root-CA-Zertifikate enthalten, die für die Validierung der Zertifikate aller gRPC-Clients erforderlich sind, die eine Verbindung mit dem Gerät herstellen.
Tabelle 1 beschreibt die allgemeinen Anforderungen für die reine Server-Authentifizierung und die gegenseitige Authentifizierung, wenn ein gRPC-Client eine Verbindung mit dem Gerät herstellt, um gRPC-basierte Services auszuführen. Das Zertifikat des gRPC-Servers muss entweder den Hostnamen des Servers im Feld Allgemeiner Name (CN) oder die IP-Adresse des Servers im Feld Alternativer Antragstellername (subjectAltName oder SAN) IP-Adresse definieren. Die Clientanwendung muss denselben Wert verwenden, um die Verbindung mit dem Server herzustellen. Wenn das Zertifikat das Feld "SubjectAltName"-IP-Adresse definiert, wird das Feld "Allgemeiner Name" während der Authentifizierung ignoriert.
| Anforderungen | Nur Server-Authentifizierung | Gegenseitige Authentifizierung |
|---|---|---|
| Zertifikate | Der Server muss über ein X.509-Zertifikat mit öffentlichem Schlüssel verfügen. Wenn der Client eine Verbindung mit der IP-Adresse des Servers anstelle des Hostnamens herstellt, muss das Zertifikat des Servers das SAN-IP-Adresserweiterungsfeld subjectAltName (SAN) mit der IP-Adresse des Servers enthalten. |
Der Server und der Client müssen jeweils über ein X.509-Zertifikat mit öffentlichem Schlüssel verfügen. Wenn der Client eine Verbindung mit der IP-Adresse des Servers anstelle des Hostnamens herstellt, muss das Zertifikat des Servers das SAN-IP-Adresserweiterungsfeld subjectAltName (SAN) mit der IP-Adresse des Servers enthalten. |
| Junos PKI | Das lokale Zertifikat des Servers muss in die Junos PKI geladen werden. |
Das lokale Zertifikat des Servers und das Root-CA-Zertifikat jedes Clients müssen in die Junos-PKI geladen werden. |
| Channel-Anmeldeinformationen | Der Client muss das Root-CA-Zertifikat des Servers übergeben, wenn der gRPC-Kanal eingerichtet wird. |
Der Client muss sein Zertifikat und seinen Schlüssel sowie das Root-CA-Zertifikat des Servers übergeben, wenn der gRPC-Kanal eingerichtet ist. |
Kanalanmeldeinformationen werden an den gRPC-Kanal angefügt und ermöglichen der Clientanwendung den Zugriff auf den Dienst. Aufrufanmeldeinformationen hingegen sind an einen bestimmten Dienstvorgang (RPC-Anforderung) angefügt und liefern Informationen über die Person, die die Clientanwendung verwendet. Die Anmeldeinformationen für Anrufe werden pro Anforderung gesendet, d. h. für jeden RPC-Aufruf. Um gRPC-basierte Vorgänge auf Junos-Geräten auszuführen, müssen Sie in der Anforderung Anmeldeinformationen für den Aufruf angeben. Der Benutzer muss entweder über ein lokal auf dem Gerät definiertes Benutzerkonto verfügen, oder der Benutzer muss von einem TACACS+-Server authentifiziert werden, der den Benutzer dann einem Benutzervorlagenkonto zuordnet, das lokal auf dem Gerät definiert ist. Sie können die Anmeldeinformationen für den Anruf (Benutzername und Kennwort) im Argument des metadata RPC angeben. Wenn die Authentifizierung erfolgreich ist, führt das Junos-Gerät die RPC-Anforderung mit den Kontoberechtigungen des angegebenen Benutzers aus.
Alternativ zur Übergabe von Anmeldeinformationen für jeden auf einem Junos-Gerät ausgeführten RPC können Sie die Juniper Extension Toolkit jnx_authentication_service API verwenden, um sich zu Beginn der gRPC-Sitzung einmal bei dem Gerät anzumelden, und alle nachfolgenden RPCs, die im Kanal ausgeführt werden, werden authentifiziert. Sie können die IDL-Bibliothek des JET-Clients von der Download-Site von Juniper Networks herunterladen.
Standardmäßig autorisieren Junos-Geräte einen authentifizierten gRPC-Client, alle gRPC-RPCs auszuführen. Sie können optional die Anmeldeklasse eines gRPC-Benutzers so konfigurieren, dass bestimmte gRPC-RPCs explizit zugelassen oder verweigert werden. Um die RPCs anzugeben, konfigurieren Sie die allow-grpc-rpc-regexps and-Anweisungen deny-grpc-rpc-regexps und definieren reguläre Ausdrücke, die den RPCs entsprechen. Weitere Informationen finden Sie unter Konfigurieren der gRPC-RPC-Autorisierung .
Abrufen von X.509-Zertifikaten
Eine gRPC-Sitzung verwendet X.509-Zertifikate mit öffentlichem Schlüssel, um den gRPC-Server und -Client zu authentifizieren. Für die reine Server-Authentifizierung muss der gRPC-Server über ein Zertifikat verfügen. Für die gegenseitige Authentifizierung müssen sowohl der gRPC-Server als auch der Client über Zertifikate verfügen. Die Voraussetzungen für die Zertifikate sind:
-
Das Zertifikat kann von einer CA signiert oder selbstsigniert werden.
-
Das Zertifikat muss PEM-codiert sein.
-
Das Zertifikat des gRPC-Servers muss entweder den Hostnamen des gRPC-Servers im Feld Allgemeiner Name (CN) oder die IP-Adresse des gRPC-Servers im Feld SubjectAltName (SAN) IP-Adresse definieren. Der gRPC-Client muss denselben Wert verwenden, um die Verbindung zum Server herzustellen. Wenn das Zertifikat die IP-Adresse "SubjectAltName" definiert, wird das Feld "Allgemeiner Name" während der Authentifizierung ignoriert.
So verwenden Sie OpenSSL, um das Zertifikat des gRPC-Servers abzurufen:
Wiederholen Sie für die gegenseitige Authentifizierung die vorherigen Schritte mit den Informationen für den gRPC-Client, um den Schlüssel und das Zertifikat des Clients zu generieren. Für das Clientzertifikat ist das Feld SAN-IP-Erweiterung nicht erforderlich.
Laden des lokalen Zertifikats des gRPC-Servers in die Junos PKI
Das Netzwerkgerät, auf dem der gRPC-Server ausgeführt wird, muss über ein X.509-Zertifikat verfügen, das das Gerät für gRPC-Clients identifiziert. Um gRPC-basierte Services auf dem Junos-Gerät auszuführen, müssen Sie das Zertifikat mit dem öffentlichen Schlüssel und den Schlüssel für das lokale Netzwerkgerät in die Junos PKI laden. Nachdem Sie das Zertifikat geladen und die Erstkonfiguration durchgeführt haben, können gRPC-Clients einen beliebigen Microservice verwenden, um das Zertifikat zu aktualisieren. Beispielsweise kann ein gRPC-Client den gNOI-Dienst CertificateManagement verwenden, um ein neues Zertifikat zu installieren oder ein vorhandenes Zertifikat zu ersetzen.
So laden Sie das Zertifikat und den Schlüssel des lokalen Geräts in die PKI:
gRPC-Services aktivieren
gRPC-basierte Services verwenden eine API-Verbindungseinstellung, die auf der Secure Socket Layer (SSL)- oder Transportschicht Sicherheit (TLS)-Technologie basiert. Für diese Verbindungen müssen Sie ein lokales Zertifikat angeben, das den gRPC-Server identifiziert.
Nachdem Sie gRPC-Dienste aktiviert und ein lokales Zertifikat angegeben haben, verwendet das Netzwerkgerät die reine Server-Authentifizierung. Anschließend können Sie optional die gegenseitige Authentifizierung konfigurieren, indem Sie die unter Konfigurieren der gegenseitigen (bidirektionalen) Authentifizierung für gRPC-Dienste beschriebenen Schritte ausführen.
Sie können Ihr Netzwerkgerät für gRPC-Dienste konfigurieren und das lokale Zertifikat, das für die Server-Authentifizierung verwendet wird, auf einer der folgenden Hierarchieebenen angeben:
-
[edit system services http servers]– Verwenden Sie diese Anweisungshierarchie, um einen oder mehrere gRPC-Server zu konfigurieren, die verschiedene Gruppen von Services auf eindeutigen Ports hosten. Darüber hinaus kann jeder Server unterschiedliche Überwachungsadressen, Zertifikate und Routinginstanzen unterstützen. -
[edit system services extension-service request-response grpc ssl]– Verwenden Sie diese Anweisungshierarchie, wenn Sie nur einen einzigen gRPC-Server benötigen, der alle gRPC-Services auf derselben Überwachungsadresse und demselben Port unterstützt.
Um das Gerät für gRPC-Dienste zu konfigurieren, befolgen Sie die Anweisungen für die Hierarchieebene, die den Anforderungen Ihrer Umgebung entspricht.
[edit system services http servers][edit system services extension-service request-response grpc ssl]
[edit system services http servers]
So konfigurieren Sie einen oder mehrere gRPC-Server auf Hierarchieebene [edit system services http servers] :
Navigieren Sie zur Hierarchieebene des gRPC-Servers, und geben Sie einen Bezeichner für den Server an.
[edit] user@host# edit system services http servers server name
Zum Beispiel:
[edit] user@host# edit system services http servers server grpc-server1
Konfigurieren Sie den Port, der für die gRPC-Dienste verwendet werden soll. Der Port muss für jeden gRPC-Server eindeutig sein.
[edit system services http servers server name] user@host# set port port-number
Zum Beispiel:
[edit system services http servers server grpc-server1] user@host# set port 32767
Konfigurieren Sie die gRPC-Dienste, die von diesem Server gehostet werden.
[edit system services http servers server name] user@host# set grpc [service1 service2 ...]
In diesem Beispiel hostet der Server gNMI-Services und gNOI-Services.
[edit system services http servers server grpc-server1] user@host# set grpc [gnmi gnoi]
Geben Sie das lokale Zertifikat an, das den Server für einen Client identifiziert.
Geben Sie die Kennung für das lokale Zertifikat ein, das Sie zuvor mit dem
request security pki local-certificate loadBefehl Betriebsmodus in die Junos PKI geladen haben.[edit system services http servers server name] user@host# set tls local-certificate certificate-id
Im folgenden Beispiel wird das lokale Zertifikat
gnoi-serverkonfiguriert:[edit system services http servers server grpc-server1] user@host# set tls local-certificate gnoi-server
(Optional) Geben Sie die IPv4- oder IPv6-Adresse an, an der der Server auf eingehende Verbindungen wartet.
[edit system services http servers server name] user@host# set listen-address address
Zum Beispiel:
[edit system services http servers server grpc-server1] user@host# set ip-address 192.168.2.1
Hinweis:Wenn Sie keine IP-Adresse angeben, wird die Standardadresse :: verwendet, um eingehende Verbindungen zu überwachen.
(Optional) Konfigurieren Sie die für diesen gRPC-Server zu verwendende Routinginstanz, falls sie sich von der Standardroutinginstanz unterscheidet.
[edit system services http servers server name] user@host# set routing-instance routing-instance
Im folgenden Beispiel wird die mgmt-junos Routing-Instanz verwendet.
[edit system services http servers server grpc-server1] user@host# set routing-instance mgmt-junos
(Optional) Konfigurieren Sie die maximale Anzahl von Verbindungen, die dieser gRPC-Server unterstützt.
[edit system services http servers server name] user@host# set max-connections connections
Im folgenden Beispiel werden maximal 10 Verbindungen konfiguriert. Der Standardwert ist 5.
[edit system services http servers server grpc-server1] user@host# set max-connections 10
Bestätigen Sie die Konfiguration.
user@host# commit
Um die gegenseitige Authentifizierung anstelle der reinen Server-Authentifizierung zu konfigurieren, müssen Sie auch die Schritte unter Konfigurieren der gegenseitigen (bidirektionalen) Authentifizierung für gRPC-Dienste ausführen.
[edit system services extension-service request-response grpc ssl]
So konfigurieren Sie einen einzelnen gRPC-Server auf Hierarchieebene [edit system services extension-service request-response grpc ssl] :
Navigieren Sie zu den SSL-basierten API-Verbindungseinstellungen für gRPC-Dienste.
[edit] user@host# edit system services extension-service request-response grpc ssl
Konfigurieren Sie den Port, der für gRPC-Dienste verwendet werden soll.
[edit system services extension-service request-response grpc ssl] user@host# set port port-number
Zum Beispiel:
[edit system services extension-service request-response grpc ssl] user@host# set port 32767
Geben Sie das lokale Zertifikat an, das den Server für einen Client identifiziert.
Geben Sie die Kennung für das lokale Zertifikat ein, das Sie zuvor mit dem
request security pki local-certificate loadBefehl Betriebsmodus in die Junos PKI geladen haben.[edit system services extension-service request-response grpc ssl] user@host# set local-certificate certificate-id
Im folgenden Beispiel wird das lokale Zertifikat
gnoi-serverkonfiguriert:[edit system services extension-service request-response grpc ssl] user@host# set local-certificate gnoi-server
Konfigurieren Sie das Gerät für die Verwendung der PKI-Datenbank für Zertifikate.
[edit system services extension-service request-response grpc ssl] user@host# set use-pki
Aktivieren Sie das Gerät zum erneuten Laden von Zertifikaten, ohne die gRPC-Sitzung zu beenden.
[edit system services extension-service request-response grpc ssl] user@host# set hot-reloading
(Optional) Geben Sie eine IP-Adresse an, auf die eingehende Verbindungen überwacht werden sollen.
[edit system services extension-service request-response grpc ssl] user@host# set ip-address address
Zum Beispiel:
[edit system services extension-service request-response grpc ssl] user@host# set ip-address 192.168.2.1
Hinweis:Wenn Sie keine IP-Adresse angeben, wird die Standardadresse :: verwendet, um eingehende Verbindungen zu überwachen.
(Optional) Konfigurieren Sie die Ablaufverfolgung für Erweiterungsdienste, um eventuell auftretende Probleme zu debuggen.
[edit] user@host# top user@host# set system services extension-service traceoptions file jsd user@host# set system services extension-service traceoptions flag all
Hinweis:Um Ablaufverfolgungsdateien von Junos OS Evolved für Erweiterungsdienste anzuzeigen, verwenden Sie die
show trace application jsdBefehle undshow trace application jsd liveBetriebsmodus.Bestätigen Sie die Konfiguration.
user@host# commit
Um die gegenseitige Authentifizierung anstelle der reinen Server-Authentifizierung zu konfigurieren, müssen Sie auch die Schritte unter Konfigurieren der gegenseitigen (bidirektionalen) Authentifizierung für gRPC-Dienste ausführen.
Konfiguration der gegenseitigen (bidirektionalen) Authentifizierung für gRPC-Services
Sie können die gegenseitige (bidirektionale) Authentifizierung für gRPC-Sitzungen konfigurieren, bei der sowohl das Netzwerkgerät als gRPC-Server als auch das NMS als gRPC-Client mithilfe von Zertifikaten authentifiziert werden. Das Junos-Gerät verwendet die vom externen Client bereitgestellten Anmeldeinformationen, um den Client zu authentifizieren und eine Verbindung zu autorisieren.
Sie können die gegenseitige Authentifizierung auf Junos-Geräten mit einer der folgenden Optionen konfigurieren:
-
Konfigurieren Sie die Einstellungen für die gegenseitige Authentifizierung direkt in der Konfiguration.
-
Richten Sie zunächst die reine Server-Authentifizierung ein und verwenden Sie dann den gNOI-Dienst
CertificateManagement, um die erforderlichen CA-Zertifikate auf das Gerät zu laden.
Wenn Sie die gegenseitige Authentifizierung direkt in der Gerätekonfiguration konfigurieren, hat die Gerätekonfiguration Vorrang vor allen Setups, die mit den gNOI-Services durchgeführt werden.
Bevor Sie beginnen:
-
Laden Sie das Zertifikat und den Schlüssel für das Netzwerkgerät, das als gRPC-Server fungiert, in die PKI des Geräts, wie unter Laden des lokalen Zertifikats des gRPC-Servers in der Junos PKI beschrieben.
-
Aktivieren Sie gRPC-Dienste, und konfigurieren Sie die lokale Server-Authentifizierung, wie unter Aktivieren von gRPC-Diensten beschrieben.
In den folgenden Abschnitten werden die verschiedenen Methoden zum Konfigurieren der gegenseitigen Authentifizierung erläutert. Sie können die Methode verwenden, die für Ihre Umgebung am besten geeignet ist.
- Konfigurieren der gegenseitigen Authentifizierung in der Gerätekonfiguration
- Konfiguration der gegenseitigen Authentifizierung mit dem gNOI CertificateManagement Service
Konfigurieren der gegenseitigen Authentifizierung in der Gerätekonfiguration
So konfigurieren Sie die Authentifizierung für den gRPC-Client direkt in der Netzwerkgerätekonfiguration:
Laden Sie das Root-CA-Zertifikat, das zur Überprüfung des Client-Zertifikats verwendet wird, auf das lokale Gerät herunter, das als gRPC-Server fungiert.
Konfigurieren Sie ein CA-Profil für die Root-CA des Clientzertifikats in der
[edit security pki]Hierarchie.[edit security pki] user@host# set ca-profile ca-profile-name ca-identity ca-identifier
Zum Beispiel:
[edit security pki] user@host# set ca-profile gnoi-client ca-identity clientRootCA
Bestätigen Sie die Konfiguration.
[edit] user@host# commit and-quit
Laden Sie im Betriebsmodus das Root-CA-Zertifikat, das zur Überprüfung des Client-Zertifikats verwendet wird, in die Junos PKI. Geben Sie den Bezeichner an, den
ca-profileSie in den vorherigen Schritten konfiguriert haben.user@host> request security pki ca-certificate load ca-profile ca-profile filename cert-path
Zum Beispiel:
user@host> request security pki ca-certificate load ca-profile gnoi-client filename /var/tmp/clientRootCA.crt Fingerprint: 00:2a:30:e9:59:94:db:f1:a1:5c:d1:c9:d4:5f:db:8f:f1:f0:8d:c4 (sha1) 02:3b:a0:b8:95:0c:a2:fa:15:18:57:3d:a3:10:e9:ac (md5) 69:97:90:39:de:75:a0:1d:94:1e:06:a8:be:8c:66:e5:41:95:fd:dc:14:8a:e7:3a:e0:42:9e:f9:f7:dd:c8:c2 (sha256) Do you want to load this CA certificate ? [yes,no] (no) yes CA certificate for profile gnoi-client loaded successfully
Tipp:Um ein CA-Zertifikatspaket zu laden, geben Sie den
request security pki ca-certificate ca-profile-group load ca-group-name ca-group-name filename bundle-pathBefehl ein.Wechseln Sie nach dem Laden des Zertifikats in den Konfigurationsmodus, und fahren Sie mit der Konfiguration der gegenseitigen Authentifizierung fort. Sie müssen die gegenseitige Authentifizierung auf derselben Hierarchieebene konfigurieren, auf der Sie Ihren Server konfiguriert haben. Führen Sie die im Abschnitt für Ihre Hierarchieebene beschriebenen Schritte aus.
- [HTTP-Server der Systemdienste bearbeiten]
- [System Services extension-service request-response grpc ssl bearbeiten]
[HTTP-Server der Systemdienste bearbeiten]
So konfigurieren Sie die gegenseitige Authentifizierung für einen auf Hierarchieebene [edit system services http servers] konfigurierten Server:
Navigieren Sie zu der
tlsAnweisung unter Ihrer Serverkonfiguration.[edit] user@host# edit system services http servers server name tls
Zum Beispiel:
[edit] user@host# edit system services http servers server grpc-server1 tls
Aktivieren Sie die gegenseitige Authentifizierung, und geben Sie die Anforderungen für Clientzertifikate an.
[edit system services http servers server name tls] user@host# set mutual-authentication authentication-type requirement
Um beispielsweise die stärkste Authentifizierung anzugeben, die ein Zertifikat und dessen Validierung erfordert, verwenden Sie
request-and-require-cert-and-verify, was auch die Standardeinstellung ist.[edit system services http servers server grpc-server1 tls] user@host# set mutual-authentication authentication-type request-and-require-cert-and-verify
Geben Sie das CA-Profil an, das zum Überprüfen des Clientzertifikats verwendet wird.
Das CA-Profil wurde in Schritt 2 der Konfiguration des CA-Profils konfiguriert.
[edit system services http servers server name tls] user@host# set mutual-authentication certificate-authority certificate-authority
So geben Sie beispielsweise das CA-Profil mit dem Namen
gnoi-clientan:[edit system services http servers server grpc-server1 tls] user@host# set mutual-authentication certificate-authority gnoi-client
Bestätigen Sie die Konfiguration.
[edit system services http servers server name tls] user@host# commit and-quit
[System Services extension-service request-response grpc ssl bearbeiten]
So konfigurieren Sie die gegenseitige Authentifizierung für einen auf Hierarchieebene [edit system services extension-service request-response grpc ssl] konfigurierten Server:
Aktivieren Sie die gegenseitige Authentifizierung, und geben Sie die Anforderungen für Clientzertifikate an.
[edit system services extension-service request-response grpc ssl] user@host# set mutual-authentication client-certificate-request requirement
Um beispielsweise die stärkste Authentifizierung anzugeben, für die ein Zertifikat und dessen Validierung erforderlich sind, verwenden Sie
require-certificate-and-verify.[edit system services extension-service request-response grpc ssl] user@host# set mutual-authentication client-certificate-request require-certificate-and-verify
Hinweis:Der Standardwert ist
no-certificate. Die anderen Optionen sind:request-certificate,request-certificate-and-verify,require-certificate, .require-certificate-and-verifyEs wird empfohlen, die
no-certificateOption nur in einer Testumgebung zu verwenden.Geben Sie das CA-Profil an, das zum Überprüfen des Clientzertifikats verwendet wird.
Das CA-Profil wurde in Schritt 2 der Konfiguration des CA-Profils konfiguriert.
[edit system services extension-service request-response grpc ssl] user@host# set mutual-authentication certificate-authority certificate-authority
So geben Sie beispielsweise das CA-Profil mit dem Namen
gnoi-clientan:[edit system services extension-service request-response grpc ssl] user@host# set mutual-authentication certificate-authority gnoi-client
Bestätigen Sie die Konfiguration.
[edit system services extension-service request-response grpc ssl] user@host# commit and-quit
Konfiguration der gegenseitigen Authentifizierung mit dem gNOI CertificateManagement Service
Sie können den gNOI-Dienst CertificateManagement verwenden, um die gegenseitige Authentifizierung zwischen dem gRPC-Client und dem gRPC-Server einzurichten, anstatt die Einstellungen direkt in der Gerätekonfiguration zu konfigurieren. Sie richten zunächst die reine Server-Authentifizierung ein und verwenden dann die gNOI-Dienst-RPCs CertificateManagement , um die Client-CA-Zertifikate zu laden. Unter Kein Linktitel finden Sie Informationen zum Laden der Zertifikate mit dem gNOI-Dienst CertificateManagement .
Der gRPC-Server unterstützt nur ein globales CA-Zertifikatspaket für gNOI-Dienste. Wenn Sie den gNOI-Dienst CertificateManagement zum Laden des CA-Zertifikatpakets verwenden, verwendet das Gerät implizit die gegenseitige Authentifizierung. Beachten Sie jedoch Folgendes:
-
Der
CertificateManagementDienst lädt das CA-Zertifikatspaket immer mit demca-profile-groupreservierten Bezeichnergnoi-ca-bundle. -
Wenn Sie den
CertificateManagementDienst zum Laden des CA-Zertifikatpakets verwenden, verwendet das Gerät implizit die gegenseitige Authentifizierung. -
Wenn der
CertificateManagementDienst eine Anforderung zum Laden eines neuen CA-Zertifikatpakets sendet, löscht der Server die Zertifikate für das vorherige CA-Bundle vom Gerät und lädt die neuen. -
Wenn Sie den
CertificateManagementDienst zum Laden eines CA-Zertifikatpakets verwenden und auch die gegenseitige Authentifizierung explizit in der Gerätekonfiguration konfigurieren, haben die konfigurierten Anweisungen Vorrang.
Konfigurieren des Benutzerkontos für gRPC-Dienste
Kanalanmeldeinformationen werden an den gRPC-Kanal angefügt und ermöglichen der Clientanwendung den Zugriff auf den Dienst. Aufrufanmeldeinformationen werden an eine bestimmte RPC-Anforderung angefügt und enthalten Informationen über den Benutzer, der die Clientanwendung verwendet. Sie müssen in jeder RPC-Anforderung Anmeldeinformationen für Anrufe angeben, wofür ein Benutzerkonto für das Netzwerkgerät erforderlich ist. Der Benutzer muss über ein lokal auf dem Netzwerkgerät definiertes Benutzerkonto verfügen, oder der Benutzer muss von einem TACACS+-Server authentifiziert werden, der den Benutzer dann einem Benutzervorlagenkonto zuordnet, das lokal auf dem Gerät definiert ist.
So erstellen Sie ein Benutzerkonto:
Konfigurieren der gRPC-RPC-Autorisierung
Standardmäßig autorisieren Junos-Geräte einen authentifizierten gRPC-Client, alle gRPC-RPCs auszuführen. Sie können eine Junos-Anmeldeklasse so konfigurieren, dass gRPC-RPCs explizit zugelassen oder verweigert werden. Um die RPCs anzugeben, konfigurieren Sie die allow-grpc-rpc-regexps and-Anweisungen deny-grpc-rpc-regexps und definieren reguläre Ausdrücke, die den RPCs entsprechen. Wenn in den Zulassungs- und Verweigerungslisten widersprüchliche Ausdrücke vorhanden sind, hat die Verweigerungsliste Vorrang. Wenn ein RPC mit keiner der Listen übereinstimmt, ist der RPC standardmäßig zulässig.
Junos-Geräte verwenden die folgende Syntax zum Angeben von gRPC-RPCs:
/package.service/rpc
Dabei packagesind , , und rpc die Namen, servicedie in der entsprechenden Anweisung in der Proto-Definitionsdatei dieses Dienstes definiert sind. Zum Beispiel:
/gnmi.gNMI/Get /gnoi.certificate.CertificateManagement/Rotate /gnoi.system.System/Reboot /gnoi.system.System/RebootStatus /gribi.gRIBI/.*
Sie können mehrere allow-grpc-rpc-regexps und-Anweisungen deny-grpc-rpc-regexps mit einem oder mehreren Ausdrücken konfigurieren. Schließen Sie jeden Ausdruck in Anführungszeichen (" ") ein. Schließen Sie mehrere Ausdrücke in eckige Klammern [ ] ein und trennen Sie die Ausdrücke durch ein Leerzeichen.
allow-grpc-rpc-regexps ["regex1" "regex2" ... ] allow-grpc-rpc-regexps "regex3"
So erstellen Sie eine Anmeldeklasse, die die Autorisierung für gRPC-RPCs definiert:
Tabellarischer Änderungsverlauf
Die Unterstützung der Funktion hängt von der Plattform und der Version ab, die Sie benutzen. Verwenden Sie den Feature-Explorer , um festzustellen, ob eine Funktion auf Ihrer Plattform unterstützt wird.