Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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

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.

Figure 1 : Interaction entre le serveur et le client gRPC gRPC Server and Client Interaction

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.

Tableau 1 : Conditions requises pour l’authentification serveur uniquement et l’authentification mutuelle pour les sessions gRPC
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é.

Note:

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 :

  1. Générez une clé privée et spécifiez la longueur de la clé en bits.
  2. Si le client gRPC se connecte à l’adresse IP du serveur gRPC, mettez à jour votre fichier de configuration openssl.cnf ou équivalent pour définir l’extension subjectAltName=IP avec l’adresse IP du serveur gRPC.
  3. Générez une demande de signature de certificat (CSR), qui contient la clé publique de l'entité et des informations sur son identité.

    Vous pouvez également fournir les informations CSR dans une seule commande, par exemple :

  4. Générez le certificat en procédant de l’une des manières suivantes :
    • Envoyez la CSR à une autorité de certification pour demander un certificat X.509 et fournissez le fichier de configuration pour inclure les extensions supplémentaires.

    • Signez la CSR avec une autorité de certification pour générer le certificat et incluez l’option -extfile si vous avez besoin de référencer votre fichier de configuration et vos extensions.

    • Signez la CSR avec la clé du serveur pour générer un certificat auto-signé et incluez l’option -extfile si vous avez besoin de référencer votre fichier de configuration et vos extensions.

  5. Vérifiez que le champ Nom commun (CN) et les extensions du certificat, s'ils sont fournis, sont corrects.

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 :

  1. Téléchargez le certificat et la clé de l’appareil qui fait office de serveur gRPC sur cet appareil.
  2. En mode opérationnel, définissez un identifiant et chargez le certificat et la clé de l'appareil local dans la PKI.
  3. (Facultatif) Vérifiez que le certificat est présent dans la base de données 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 :

  1. Accédez aux paramètres de connexion API SSL pour les services gRPC.
  2. Configurez le port à utiliser pour les services gRPC.

    Par exemple:

  3. Spécifiez un certificat local.

    Entrez l’identificateur du certificat local que vous avez précédemment chargé dans la PKI Junos à l’aide de la request security pki local-certificate load commande mode opérationnel.

    L’exemple suivant configure le certificat gnoi-serverlocal :

  4. Configurez l’appareil pour qu’il utilise la base de données PKI pour les certificats.
  5. Permet à l’appareil de recharger les certificats sans mettre fin à la session gRPC.
  6. (Facultatif) Spécifiez une adresse IP à écouter pour les connexions entrantes.

    Par exemple:

    Note:

    Si vous ne spécifiez pas d’adresse IP, l’adresse par défaut :: est utilisée pour écouter les connexions entrantes.

  7. (Facultatif) Configurez le suivi pour les services d’extension afin de déboguer les problèmes qui pourraient survenir.
    Note:

    Pour afficher les fichiers de trace de Junos OS Evolved pour les services d’extension, utilisez les show trace application jsd commandes et show trace application jsd live en mode opérationnel.

  8. Validez la configuration.

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 :

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

Pour configurer l’authentification du client gRPC directement dans la configuration de l’équipement réseau :

  1. 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.

  2. 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.

    Par exemple:

  3. Validez la configuration.

  4. 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.

    Par exemple:

    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.

  5. Activez l’authentification mutuelle et spécifiez les exigences relatives aux certificats clients.

    Par exemple, pour spécifier l’authentification la plus forte, qui nécessite un certificat et sa validation, utilisez 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.

  6. 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.

    Par exemple, pour spécifier le profil de l’autorité de certification nommé gnoi-client:

  7. Validez la configuration.

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’identificateur ca-profile-group gnoi-ca-bundleré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.

  • 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 :

  1. Configurez l’instruction user avec un nom d’utilisateur unique et incluez-la class pour spécifier une classe de connexion disposant des autorisations requises pour toutes les actions à effectuer par l’utilisateur. Par exemple:
  2. Pour les comptes d'utilisateurs locaux, configurez le mot de passe de l'utilisateur.

    Vous pouvez omettre le mot de passe pour les comptes de modèle d’utilisateur locaux, car l’utilisateur est authentifié via un serveur d’authentification distant.

  3. (Facultatif) Configurez l’instruction full-name pour spécifier le nom de l’utilisateur.
  4. Validez la configuration pour activer le compte d’utilisateur sur l’appareil.
  5. Répétez les étapes précédentes sur chaque périphérique réseau sur lequel le client gRPC exécutera des RPC dans une session gRPC.

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, et rpc sont les noms définis dans l'instruction correspondante dans le fichier de proto-définition de ce service. Par exemple:

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.

Pour créer une classe de connexion qui définit l’autorisation pour les RPC gRPC :

  1. Configurez le nom et les autorisations de la classe de connexion.

    Par exemple:

  2. Dans la classe, configurez des expressions régulières pour les RPC autorisés par la classe.

    Par exemple, l’instruction suivante autorise le RPC gNMI Get() et tous les RPC de service gNOI System .

  3. Configurez des expressions régulières pour les RPC refusés par la classe.

    Par exemple, les instructions suivantes nient le RPC gNMI Set() et refusent également tous les RPC pour le gRIBI service ainsi que le service gNOI CertificateManagement .

  4. Attribuez la classe de connexion aux utilisateurs gRPC appropriés.

    Par exemple, l’instruction suivante attribue la grpc-operator classe à l’utilisateur grpc-user .

Après avoir activé les services gRPC sur l’équipement réseau, configurez le système de gestion du réseau distant en tant que client gRPC. Pour permettre au client d’exécuter des opérations gNOI, configurez-le comme indiqué dans Configurer les services gNOI.