Configurer les services gRPC
Configurez le serveur gRPC pour permettre à un client d’utiliser les services gRPC sur l’équipement réseau, notamment les services gNOI (gRPC Network Operations Interface), les services gNMI (gRPC Network Management Interface) et les services gRIBI (gRPC Routing Information Base Interface).
Cette rubrique explique comment configurer les services gRPC sur les équipements Junos, y compris les options d’authentification et comment configurer chaque option. Avant que le serveur et le client puissent établir une session gRPC, vous devez satisfaire aux exigences décrites dans les sections suivantes :
- Présentation de l’authentification et de l’autorisation pour les services basés sur gRPC
- Obtenir des certificats X.509
- Charger le certificat local du serveur gRPC dans la PKI Junos
- Activer les services gRPC
- Configurer l’authentification mutuelle (bidirectionnelle) pour les services gRPC (facultatif)
- Configurer le compte d’utilisateur pour les services gRPC
- Configurer l’autorisation RPC gRPC (facultatif)
Présentation de l’authentification et de l’autorisation pour les services basés sur gRPC
Les interfaces gNOI, gNMI et gRIBI utilisent le framework d’appel de procédure à distance gRPC pour le transport. Le serveur gRPC s’exécute sur le périphérique réseau et écoute les demandes de connexion sur un port spécifié. L’application cliente gRPC s’exécute sur un système NMS (Network Management System) distant et établit un canal gRPC avec le serveur sur l’hôte et le port spécifiés. Le client exécute des RPC par le biais de la session gRPC chiffrée SSL pour effectuer des opérations de service réseau. La figure 1 illustre une connexion simple entre un client gRPC et un serveur.

Les canaux gRPC utilisent les informations d’identification des canaux pour gérer l’authentification entre le serveur et le client. Les informations d’identification de canal standard utilisent des certificats numériques X.509 pour authentifier le serveur et le client. Un certificat numérique permet d’authentifier les utilisateurs par l’intermédiaire d’un tiers de confiance appelé autorité de certification ou autorité de certification (CA). L’autorité de certification vérifie l’identité d’un titulaire de certificat et « signe » le certificat pour attester qu’il n’a pas été falsifié ou altéré. La norme X.509 définit le format du certificat. Les certificats numériques peuvent être utilisés pour établir une connexion sécurisée entre deux points de terminaison grâce à la validation du certificat. Pour établir un canal gRPC, chaque point de terminaison (appareil ou application) qui nécessite une authentification doit fournir un certificat X.509 dans l’échange.
Les équipements Junos prennent en charge à la fois l’authentification serveur uniquement et l’authentification mutuelle pour les sessions gRPC basées sur SSL. Lorsque l’authentification serveur uniquement est configurée, le serveur fournit son certificat de clé publique lors de l’établissement du canal. Le client utilise le certificat de l'autorité de certification racine du serveur pour authentifier le serveur. Lorsque l’authentification mutuelle est configurée, le client fournit également son certificat lorsqu’il se connecte au serveur, et le serveur valide le certificat. Si la validation du certificat réussit, le client est autorisé à passer des appels. Nous vous recommandons de configurer l’authentification mutuelle et d’utiliser des certificats signés par une autorité de certification pour une sécurité renforcée, bien que les certificats autosignés soient acceptés.
Une infrastructure à clé publique (PKI) prend en charge la distribution et l’identification des clés de chiffrement publiques, ce qui permet aux utilisateurs d’échanger des données en toute sécurité sur des réseaux tels qu’Internet et de vérifier l’identité de l’autre partie. Pour les services basés sur gRPC, la PKI Junos doit contenir le certificat de l’équipement local faisant office de serveur gRPC. Si vous utilisez l’authentification mutuelle, la PKI Junos doit également contenir les certificats de l’autorité de certification racine nécessaires pour valider les certificats de tous les clients gRPC qui se connectent à l’appareil.
Le Tableau 1 présente les exigences générales relatives à l’authentification serveur uniquement et à l’authentification mutuelle lorsqu’un client gRPC se connecte à l’appareil pour exécuter des services basés sur gRPC. Le certificat du serveur gRPC doit définir soit le nom d'hôte du serveur dans le champ Nom commun (CN), soit l'adresse IP du serveur dans le champ Adresse IP du nom alternatif du sujet (subjectAltName ou SAN). L’application cliente doit utiliser la même valeur pour établir la connexion au serveur. Si le certificat définit le champ Adresse IP SubjectAltName, le champ Nom commun est ignoré lors de l’authentification.
Conditions requises | Authentification serveur uniquement | Authentification mutuelle |
---|---|---|
Certificats | Le serveur doit disposer d’un certificat de clé publique X.509. Si le client se connecte à l'adresse IP du serveur au lieu du nom d'hôte, le certificat du serveur doit inclure le champ d'extension d'adresse IP subjectAltName (SAN) avec l'adresse IP du serveur. |
Le serveur et le client doivent chacun disposer d’un certificat de clé publique X.509. Si le client se connecte à l'adresse IP du serveur au lieu du nom d'hôte, le certificat du serveur doit inclure le champ d'extension d'adresse IP subjectAltName (SAN) avec l'adresse IP du serveur. |
Junos PKI | Le certificat local du serveur doit être chargé dans la PKI Junos. |
Le certificat local du serveur et le certificat de l'autorité de certification racine de chaque client doivent être chargés dans la PKI Junos. |
Informations d’identification du canal | Le client doit transmettre le certificat de l'autorité de certification racine du serveur lorsque le canal gRPC est établi. |
Le client doit transmettre son certificat et sa clé ainsi que le certificat de l'autorité de certification racine du serveur lorsque le canal gRPC est établi. |
Les informations d’identification du canal sont attachées au canal gRPC et permettent à l’application cliente d’accéder au service. Les informations d’identification d’appel, quant à elles, sont attachées à une opération de service spécifique (requête RPC) et fournissent des informations sur la personne qui utilise l’application cliente. Les identifiants d’appel sont envoyés par demande, c’est-à-dire pour chaque appel RPC. Pour exécuter des opérations basées sur gRPC sur des équipements Junos, vous devez fournir des informations d’identification d’appel dans la demande. L’utilisateur doit disposer d’un compte d’utilisateur défini localement sur l’appareil ou être authentifié par un serveur TACACS+, qui mappe ensuite l’utilisateur à un compte d’utilisateur modèle défini localement sur l’appareil. Vous pouvez fournir les informations d'identification de l'appel (nom d'utilisateur et mot de passe) dans l'argument RPC metadata
. Si l’authentification réussit, l’équipement Junos exécute la requête RPC en utilisant les privilèges de compte de l’utilisateur spécifié.
Au lieu de transmettre les identifiants d’appel pour chaque RPC exécuté sur un équipement Junos, vous pouvez utiliser l’API Juniper Extension Toolkit jnx_authentication_service
pour vous connecter au périphérique une fois au début de la session gRPC, et tous les RPC suivants exécutés dans le canal sont authentifiés. Vous pouvez télécharger la bibliothèque IDL du client JET à partir du site de téléchargement de Juniper Networks.
Par défaut, les équipements Junos autorisent un client gRPC authentifié à exécuter tous les RPC gRPC. Vous pouvez éventuellement configurer la classe de connexion d'un utilisateur gRPC pour autoriser ou refuser explicitement des RPC gRPC spécifiques. Pour spécifier les RPC, vous devez configurer les allow-grpc-rpc-regexps
instructions and deny-grpc-rpc-regexps
et définir des expressions régulières qui correspondent aux RPC. Pour plus d’informations, reportez-vous à la section Configurer l’autorisation RPC RPC .
Obtenir des certificats X.509
La session gRPC chiffrée SSL utilise des certificats de clé publique X.509 pour authentifier le serveur et le client gRPC. Pour l’authentification serveur uniquement, le serveur gRPC doit disposer d’un certificat. Pour l’authentification mutuelle, le serveur et le client gRPC doivent tous deux posséder des certificats. Les exigences pour les certificats sont les suivantes :
-
Le certificat peut être signé par une autorité de certification (CA) ou auto-signé.
-
Le certificat doit être codé en PEM.
-
Le certificat du serveur gRPC doit définir soit le nom d'hôte du serveur gRPC dans le champ Nom commun (CN), soit l'adresse IP du serveur gRPC dans le champ Adresse IP SubjectAltName (SAN). Le client gRPC doit utiliser la même valeur pour établir la connexion au serveur. Si le certificat définit l’adresse IP SubjectAltName, le champ Nom commun est ignoré lors de l’authentification.
Pour utiliser OpenSSL afin d'obtenir le certificat du serveur gRPC :
Pour l'authentification mutuelle, répétez les étapes précédentes avec les informations permettant au client gRPC de générer la clé et le certificat du client. Le certificat client ne nécessite pas le champ d’extension IP SAN.
Charger le certificat local du serveur gRPC dans la PKI Junos
Le périphérique réseau exécutant le serveur gRPC doit disposer d’un certificat X.509 qui identifie le périphérique auprès des clients gRPC. Pour exécuter des services basés sur gRPC sur le périphérique Junos, vous devez charger le certificat de clé publique et la clé du périphérique réseau local dans la PKI Junos. Une fois que vous avez chargé le certificat et effectué la configuration initiale, les clients gRPC peuvent utiliser n’importe quel microservice pour mettre à jour le certificat. Par exemple, un client gRPC peut utiliser le service gNOI CertificateManagement
pour installer un nouveau certificat ou remplacer un certificat existant.
Pour charger le certificat et la clé de l'appareil local dans la PKI :
Activer les services gRPC
Les services basés sur gRPC utilisent un paramètre de connexion API basé sur la technologie SSL (Secure Socket Layer). Pour une connexion SSL, vous devez spécifier un certificat local qui identifie le serveur gRPC.
Une fois que vous avez activé les services gRPC et spécifié un certificat local, le périphérique réseau utilise l’authentification serveur uniquement. Vous pouvez ensuite configurer l’authentification mutuelle en suivant les étapes décrites dans Configurer l’authentification mutuelle (bidirectionnelle) pour les services gRPC.
Pour configurer votre périphérique réseau pour les services gRPC et spécifier le certificat local utilisé pour l’authentification du serveur :
Pour configurer l’authentification mutuelle au lieu de l’authentification serveur uniquement, vous devez également suivre la procédure décrite dans Configurer l’authentification mutuelle (bidirectionnelle) pour les services gRPC.
Configurer l’authentification mutuelle (bidirectionnelle) pour les services gRPC
Vous pouvez configurer l’authentification mutuelle (bidirectionnelle) pour les sessions gRPC, qui authentifie à la fois le périphérique réseau en tant que serveur gRPC et le système de gestion réseau en tant que client gRPC à l’aide de certificats SSL. L’équipement Junos utilise les informations d’identification fournies par le client externe pour authentifier le client et autoriser une connexion.
Vous pouvez configurer l’authentification mutuelle sur les équipements Junos à l’aide de l’une des options suivantes :
-
Configurez les paramètres d’authentification mutuelle directement sous le niveau hiérarchique
[edit system services extension-service request-response grpc ssl mutual-authentication]
. -
Configurez d’abord l’authentification serveur uniquement, puis utilisez le service gNOI
CertificateManagement
pour charger les certificats d’autorité de certification nécessaires sur l’appareil.
Si vous configurez l’authentification mutuelle directement dans la configuration de l’appareil, la configuration de l’appareil est prioritaire sur toute configuration effectuée à l’aide des services gNOI.
Avant de commencer :
-
Chargez le certificat et la clé de l'équipement réseau faisant office de serveur gRPC dans l'infrastructure PKI de l'appareil, comme décrit dans Charger le certificat local du serveur gRPC dans l'infrastructure clé publique Junos.
-
Activez les services gRPC et configurez l’authentification du serveur local comme décrit dans Activer les services gRPC.
Les sections suivantes présentent les différentes méthodes de configuration de l’authentification mutuelle. Vous pouvez utiliser la méthode qui convient le mieux à votre environnement.
- Configurer l’authentification mutuelle dans la configuration de l’appareil
- Configurer l’authentification mutuelle à l’aide du service gNOI CertificateManagement
Configurer l’authentification mutuelle dans la configuration de l’appareil
Pour configurer l’authentification du client gRPC directement dans la configuration de l’équipement réseau :
Téléchargez le certificat de l'autorité de certification racine qui sera utilisé pour valider le certificat du client sur l'équipement local agissant en tant que serveur gRPC.
Configurez le profil d'autorité de certification pour l'autorité de certification racine du certificat client au niveau de la
[edit security pki]
hiérarchie.[edit security pki] user@host# set ca-profile ca-profile-name ca-identity ca-identifier
Par exemple:
[edit security pki] user@host# set ca-profile gnoi-client ca-identity clientRootCA
Validez la configuration.
[edit] user@host# commit and-quit
En mode opérationnel, chargez le certificat de l'autorité de certification racine qui sera utilisé pour vérifier le certificat du client dans la PKI Junos. Spécifiez l’identificateur
ca-profile
que vous avez configuré au cours des étapes précédentes.user@host> request security pki ca-certificate load ca-profile ca-profile filename cert-path
Par exemple:
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
Pourboire:Pour charger un bundle de certificats CA, exécutez la
request security pki ca-certificate ca-profile-group load ca-group-name ca-group-name filename bundle-path
commande.Après avoir chargé le certificat, passez en mode de configuration et continuez à configurer l’authentification mutuelle.
Activez l’authentification mutuelle et spécifiez les exigences relatives aux certificats clients.
[edit system services extension-service request-response grpc ssl] user@host# set mutual-authentication client-certificate-request requirement
Par exemple, pour spécifier l’authentification la plus forte, qui nécessite un certificat et sa validation, utilisez
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
Note:La valeur par défaut est
no-certificate
. Les autres options sont :request-certificate
,request-certificate-and-verify
,require-certificate
,require-certificate-and-verify
.Nous vous recommandons d’utiliser cette
no-certificate
option uniquement dans un environnement de test.Spécifiez le profil d’autorité de certification qui sera utilisé pour vérifier le certificat client.
Le profil de l’autorité de certification a été configuré à l’étape 2.
[edit system services extension-service request-response grpc ssl] user@host# set mutual-authentication certificate-authority certificate-authority
Par exemple, pour spécifier le profil de l’autorité de certification nommé
gnoi-client
:[edit system services extension-service request-response grpc ssl] user@host# set mutual-authentication certificate-authority gnoi-client
Validez la configuration.
[edit] user@host# commit and-quit
Configurer l’authentification mutuelle à l’aide du service gNOI CertificateManagement
Vous pouvez utiliser le service gNOI CertificateManagement
pour configurer l’authentification mutuelle entre le client gRPC et le serveur gRPC au lieu de configurer les paramètres directement dans la configuration de l’appareil. Vous configurez d’abord l’authentification serveur uniquement, puis utilisez les RPC du service gNOI CertificateManagement
pour charger les certificats de l’autorité de certification cliente. Voir Service de gestion des certificats gNOI pour plus d’informations sur le chargement des certificats à l’aide du service gNOI CertificateManagement
.
Le serveur gRPC ne prend en charge qu’un seul ensemble de certificats d’autorité de certification global pour les services gNOI. Lorsque vous utilisez le service gNOI CertificateManagement
pour charger le bundle de certificats d’autorité de certification, l’appareil utilise implicitement l’authentification mutuelle. Cependant, vous devez prendre note de ce qui suit :
-
Le
CertificateManagement
service charge toujours le bundle de certificats d’autorité de certification à l’aide de l’identificateurca-profile-group
gnoi-ca-bundle
réservé. -
Si vous utilisez le
CertificateManagement
service pour charger le bundle de certificats d’autorité de certification, l’appareil utilise implicitement l’authentification mutuelle et assume la configuration suivante, même si elle n’est pas explicitement configurée sur l’appareil.[edit system services extension-service request-response grpc ssl] mutual-authentication { certificate-authority gnoi-ca-bundle; client-certificate-request require-certificate-and-verify; }
-
Si le
CertificateManagement
service envoie une demande de chargement d’un nouveau lot de certificats d’autorité de certification, le serveur efface les certificats du lot d’autorités de certification précédent de l’appareil et charge les nouveaux. -
Si vous utilisez le
CertificateManagement
service pour charger un bundle de certificats d’autorité de certification et que vous configurez également la[edit system services extension-service request-response grpc ssl mutual-authentication]
hiérarchie des instructions, les instructions configurées sont prioritaires.
Configurer le compte d’utilisateur pour les services gRPC
Les informations d’identification du canal sont attachées au canal gRPC et permettent à l’application cliente d’accéder au service. Les informations d’identification d’appel sont jointes à une requête RPC spécifique et fournissent des informations sur l’utilisateur qui utilise l’application cliente. Vous devez fournir des informations d’identification d’appel dans chaque requête RPC, ce qui nécessite un compte d’utilisateur pour le périphérique réseau. L’utilisateur doit disposer d’un compte d’utilisateur défini localement sur l’équipement réseau ou être authentifié par un serveur TACACS+, qui mappe ensuite l’utilisateur à un compte d’utilisateur modèle défini localement sur l’appareil.
Pour créer un compte d’utilisateur :
Configurer l’autorisation RPC gRPC
Par défaut, les équipements Junos autorisent un client gRPC authentifié à exécuter tous les RPC gRPC. Vous pouvez configurer une classe de connexion Junos pour autoriser ou refuser explicitement les RPC gRPC. Pour spécifier les RPC, vous devez configurer les allow-grpc-rpc-regexps
instructions and deny-grpc-rpc-regexps
et définir des expressions régulières qui correspondent aux RPC. S’il existe des expressions contradictoires dans les listes d’autorisation et de refus, la liste de refus est prioritaire. Si un RPC ne correspond à aucune des listes, il est autorisé par défaut.
Les équipements Junos utilisent la syntaxe suivante pour spécifier les RPC gRPC :
/package.service/rpc
où package
, service
, et rpc
sont les noms définis dans l'instruction correspondante dans le fichier de proto-définition de ce service. Par exemple:
/gnmi.gNMI/Get /gnoi.certificate.CertificateManagement/Rotate /gnoi.system.System/Reboot /gnoi.system.System/RebootStatus /gribi.gRIBI/.*
Vous pouvez configurer plusieurs allow-grpc-rpc-regexps
instructions and deny-grpc-rpc-regexps
avec une ou plusieurs expressions. Placez chaque expression entre guillemets ( » « ). Placez plusieurs expressions entre crochets [ ] et séparez-les par un espace.
allow-grpc-rpc-regexps ["regex1" "regex2" ... ] allow-grpc-rpc-regexps "regex3"
Pour créer une classe de connexion qui définit l’autorisation pour les RPC gRPC :