Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Configurar servicios de gRPC

Configure el servidor gRPC para permitir que un cliente use servicios gRPC en el dispositivo de red, incluidos: servicios de interfaz de operaciones de red gRPC (gNOI), servicios de interfaz de administración de red gRPC (gNMI) y servicios de interfaz de base de información de enrutamiento gRPC (gRIBI).

En este tema, se explica cómo configurar los servicios gRPC en dispositivos Junos, incluidas las opciones de autenticación y cómo configurar cada opción. Antes de que el servidor y el cliente puedan establecer una sesión de gRPC, debe cumplir los requisitos descritos en las siguientes secciones:

Descripción de la autenticación y autorización para servicios basados en gRPC

Las interfaces gNMI, gNOI y gRIBI utilizan el marco de llamada a procedimiento remoto gRPC para el transporte. El servidor gRPC se ejecuta en el dispositivo de red y escucha las solicitudes de conexión en un puerto especificado. La aplicación cliente gRPC se ejecuta en un sistema de administración de red remoto (NMS) y establece un canal gRPC con el servidor en el host y el puerto especificados. El cliente ejecuta RPC a través de la sesión gRPC cifrada SSL para llevar a cabo operaciones de servicio de red. La Figura 1 ilustra una conexión simple entre un cliente y un servidor de gRPC.

Figura 1: Interacción del servidor y el cliente de gRPC gRPC Server and Client Interaction

Los canales de gRPC utilizan credenciales de canal para manejar la autenticación entre el servidor y el cliente. Las credenciales de canal estándar utilizan certificados digitales X.509 para autenticar el servidor y el cliente. Un certificado digital proporciona una manera de autenticar a los usuarios a través de un tercero de confianza llamado autoridad de certificación o autoridad de certificación (AC). La AC verifica la identidad del titular de un certificado y "firma" el certificado para dar fe de que no ha sido falsificado ni alterado. El estándar X.509 define el formato del certificado. Los certificados digitales se pueden usar para establecer una conexión segura entre dos puntos de conexión a través de la validación de certificados. Para establecer un canal gRPC, cada punto de conexión (dispositivo o aplicación) que requiera autenticación debe proporcionar un certificado X.509 en el intercambio.

Los dispositivos Junos admiten tanto la autenticación solo de servidor como la autenticación mutua para sesiones de gRPC basadas en SSL y TLS. Cuando se configura la autenticación solo de servidor, el servidor proporciona su certificado de clave pública cuando se establece el canal. El cliente utiliza el certificado de CA raíz de AC del servidor para autenticar el servidor. Cuando se configura la autenticación mutua, el cliente también proporciona su certificado cuando se conecta al servidor y el servidor valida el certificado. Si la validación del certificado se realiza correctamente, el cliente puede realizar llamadas. Le recomendamos que configure la autenticación mutua y use certificados firmados por AC para obtener la seguridad más sólida, aunque se aceptan certificados autofirmados.

Una infraestructura de clave pública (PKI) admite la distribución e identificación de claves de cifrado públicas, lo que permite a los usuarios intercambiar datos de forma segura a través de redes como Internet y verificar la identidad de la otra parte. Para los servicios basados en gRPC, la PKI de Junos debe contener el certificado del dispositivo local que actúa como servidor de gRPC. Si usa la autenticación mutua, la PKI de Junos también debe contener los certificados de AC raíz necesarios para validar los certificados de cualquier cliente gRPC que se conecte al dispositivo.

En la tabla 1 , se describen los requisitos generales para la autenticación de solo servidor y la autenticación mutua cuando un cliente de gRPC se conecta al dispositivo para realizar servicios basados en gRPC. El certificado del servidor gRPC debe definir el nombre de host del servidor en el campo Nombre común (CN) o debe definir la dirección IP del servidor en el campo Dirección IP de nombre alternativo del sujeto (subjectAltName o SAN). La aplicación cliente debe usar el mismo valor para establecer la conexión con el servidor. Si el certificado define el campo Dirección IP de SubjectAltName, el campo Nombre común se omite durante la autenticación.

Tabla 1: Requisitos para la autenticación mutua y de solo servidor para sesiones gRPC
Requisitos Autenticación solo del servidor Autentificación mutua
Certificados

El servidor debe tener un certificado de clave pública X.509.

Si el cliente se conecta a la dirección IP del servidor en lugar del nombre de host, el certificado del servidor debe incluir el campo de extensión de dirección IP subjectAltName (SAN) con la dirección IP del servidor.

El servidor y el cliente deben tener un certificado de clave pública X.509.

Si el cliente se conecta a la dirección IP del servidor en lugar del nombre de host, el certificado del servidor debe incluir el campo de extensión de dirección IP subjectAltName (SAN) con la dirección IP del servidor.

Junos PKI

El certificado local del servidor debe cargarse en la PKI de Junos.

El certificado local del servidor y el certificado AC raíz de cada cliente deben cargarse en la PKI Junos.

Credenciales del canal

El cliente debe pasar el certificado de AC raíz del servidor cuando se establece el canal gRPC.

El cliente debe pasar su certificado y clave, al igual que el certificado de AC raíz del servidor cuando se establece el canal gRPC.

Las credenciales de canal se adjuntan al canal gRPC y permiten que la aplicación cliente acceda al servicio. Las credenciales de llamada, por otro lado, se adjuntan a una operación de servicio específica (solicitud RPC) y proporcionan información sobre la persona que está usando la aplicación cliente. Las credenciales de llamada se envían por solicitud, es decir, para cada llamada RPC. Para ejecutar operaciones basadas en gRPC en dispositivos Junos, debe proporcionar credenciales de llamada en la solicitud. El usuario debe tener una cuenta de usuario definida localmente en el dispositivo o bien debe autenticarse mediante un servidor TACACS+, que luego lo asigna a una cuenta de plantilla de usuario definida localmente en el dispositivo. Puede proporcionar las credenciales de llamada (nombre de usuario y contraseña) en el argumento de metadata RPC. Si la autenticación se realiza correctamente, el dispositivo Junos ejecutará la solicitud RPC con los privilegios de cuenta del usuario especificado.

Nota:

Como alternativa a pasar credenciales de llamada para cada RPC ejecutada en un dispositivo Junos, puede usar la API del kit de herramientas de extensión de jnx_authentication_service Juniper para iniciar sesión en el dispositivo una vez al inicio de la sesión de gRPC y se autenticarán todas las RPC posteriores ejecutadas en el canal. Puede descargar la biblioteca IDL del cliente JET desde el sitio de descargas de Juniper Networks.

De forma predeterminada, los dispositivos Junos autorizan a un cliente gRPC autenticado a ejecutar todas las RPC de gRPC. Opcionalmente, puede configurar la clase de inicio de sesión de un usuario de gRPC para permitir o denegar explícitamente RPC de gRPC específicos. Para especificar las RPC, configure las allow-grpc-rpc-regexps instrucciones y deny-grpc-rpc-regexps defina expresiones regulares que coincidan con las RPC. Consulte Configurar autorización de RPC de gRPC para obtener más información.

Obtención de certificados X.509

Una sesión de gRPC usa certificados de clave pública X.509 para autenticar el servidor y el cliente de gRPC. Para la autenticación de solo servidor, el servidor gRPC debe tener un certificado. Para la autenticación mutua, tanto el servidor como el cliente de gRPC deben tener certificados. Los requisitos para los certificados son:

  • El certificado puede estar firmado por una AC o autofirmado.

  • El certificado debe estar codificado en PEM.

  • El certificado del servidor gRPC debe definir el nombre de host del servidor gRPC en el campo Nombre común (CN) o debe definir la dirección IP del servidor gRPC en el campo Dirección IP de SubjectAltName (SAN). El cliente gRPC debe usar el mismo valor para establecer la conexión con el servidor. Si el certificado define la dirección IP SubjectAltName, el campo Nombre común se omite durante la autenticación.

Para usar OpenSSL para obtener el certificado del servidor gRPC:

  1. Genere una clave privada y especifique la longitud de la clave en bits.
  2. Si el cliente gRPC se conecta a la dirección IP del servidor gRPC, actualice su archivo de configuración openssl.cnf o equivalente para definir la subjectAltName=IP extensión con la dirección IP del servidor gRPC.
  3. Genere una solicitud de firma de certificado (CSR), que contiene la clave pública de la entidad e información sobre su identidad.

    Alternativamente, puede proporcionar la información de CSR en un solo comando, por ejemplo:

  4. Genere el certificado mediante una de las siguientes acciones:
    • Envíe la CSR a una AC para solicitar un certificado X.509 y proporcione el archivo de configuración para incluir las extensiones adicionales.

    • Firme la CSR con una AC para generar el certificado e incluya la -extfile opción si necesita hacer referencia al archivo de configuración y las extensiones.

    • Firme la CSR con la clave de servidor para generar un certificado autofirmado e incluya la -extfile opción si necesita hacer referencia al archivo de configuración y las extensiones.

  5. Compruebe que el campo Nombre común (CN) y las extensiones del certificado, si se proporcionan, son correctos.

Para la autenticación mutua, repita los pasos anteriores con la información del cliente gRPC para generar la clave y el certificado del cliente. El certificado de cliente no requiere el campo de extensión IP de SAN.

Cargue el certificado local del servidor gRPC en la PKI de Junos

El dispositivo de red que ejecuta el servidor gRPC debe tener un certificado X.509 que identifique el dispositivo para los clientes gRPC. Para realizar servicios basados en gRPC en el dispositivo de Junos, debe cargar el certificado de clave pública y la clave del dispositivo de red local en la PKI de Junos. Después de cargar el certificado y realizar la configuración inicial, los clientes de gRPC pueden utilizar cualquier microservicio para actualizar el certificado. Por ejemplo, un cliente gRPC puede usar el servicio gNOI CertificateManagement para instalar un certificado nuevo o reemplazar un certificado existente.

Para cargar el certificado del dispositivo local y la clave en la PKI:

  1. Descargue el certificado y la clave del dispositivo que actúa como servidor gRPC para ese dispositivo.
  2. En el modo operativo, defina un identificador y cargue el certificado y la clave del dispositivo local en la PKI.

    Por ejemplo:

  3. (Opcional) Compruebe que el certificado está presente en la base de datos de PKI.

Habilitar servicios de gRPC

Los servicios basados en gRPC usan una configuración de conexión API basada en la tecnología de capa de socket seguro (SSL) o de seguridad de capa de transporte (TLS). Para estas conexiones, debe especificar un certificado local que identifique el servidor gRPC.

Después de habilitar los servicios gRPC y especificar un certificado local, el dispositivo de red utiliza la autenticación solo del servidor. Opcionalmente, puede configurar la autenticación mutua completando los pasos descritos en Configurar la autenticación mutua (bidireccional) para servicios gRPC.

Puede configurar el dispositivo de red para los servicios de gRPC y especificar el certificado local utilizado para la autenticación del servidor en uno de los siguientes niveles jerárquicos:

  • [edit system services http servers]: utilice esta jerarquía de instrucciones para configurar uno o varios servidores gRPC que alojen diferentes conjuntos de servicios en puertos únicos. Además, cada servidor puede admitir diferentes direcciones de escucha, certificados e instancias de enrutamiento.

  • [edit system services extension-service request-response grpc ssl]: utilice esta jerarquía de instrucciones cuando necesite un solo servidor gRPC que admita todos los servicios gRPC en la misma dirección y puerto de escucha.

Para configurar el dispositivo para los servicios gRPC, siga las instrucciones para el nivel de jerarquía que cumpla con los requisitos de su entorno.

[edit system services http servers]

Para configurar uno o varios servidores gRPC en el [edit system services http servers] nivel jerárquico:

  1. Vaya al nivel de jerarquía de servidores gRPC y especifique un identificador para el servidor.

    Por ejemplo:

  2. Configure el puerto que se utilizará para los servicios gRPC. El puerto debe ser único para cada servidor gRPC.

    Por ejemplo:

  3. Configure los servicios gRPC alojados por este servidor.

    En este ejemplo, el servidor aloja servicios gNMI y servicios gNOI.

  4. Especifique el certificado local que identifica el servidor ante un cliente.

    Ingrese el identificador del certificado local que cargó previamente en la PKI de Junos con el comando del request security pki local-certificate load modo operativo.

    En el ejemplo siguiente se configura el certificado gnoi-serverlocal:

  5. (Opcional) Especifique la dirección IPv4 o IPv6 en la que el servidor escucha las conexiones entrantes.

    Por ejemplo:

    Nota:

    Si no especifica una dirección IP, la dirección predeterminada de :: se utiliza para escuchar las conexiones entrantes.

  6. (Opcional) Configure la instancia de enrutamiento que se utilizará para este servidor gRPC, si es diferente de la instancia de enrutamiento predeterminada.

    En el siguiente ejemplo, se utiliza la instancia de enrutamiento mgmt-junos.

  7. (Opcional) Configure el número máximo de conexiones que admite este servidor gRPC.

    En el siguiente ejemplo, se configura un máximo de 10 conexiones. El valor predeterminado es 5.

  8. Confirmar la configuración.

Para configurar la autenticación mutua en lugar de la autenticación solo del servidor, también debe completar los pasos que se indican en Configurar la autenticación mutua (bidireccional) para servicios gRPC.

[edit system services extension-service request-response grpc ssl]

Para configurar un único servidor gRPC en el [edit system services extension-service request-response grpc ssl] nivel jerárquico:

  1. Vaya a la configuración de conexión de la API basada en SSL para los servicios de gRPC.

  2. Configure el puerto que se usará para los servicios gRPC.

    Por ejemplo:

  3. Especifique el certificado local que identifica el servidor ante un cliente.

    Ingrese el identificador del certificado local que cargó previamente en la PKI de Junos con el comando del request security pki local-certificate load modo operativo.

    En el ejemplo siguiente se configura el certificado gnoi-serverlocal:

  4. Configure el dispositivo para que utilice la base de datos PKI para los certificados.

  5. Habilite el dispositivo para volver a cargar certificados sin finalizar la sesión de gRPC.

  6. (Opcional) Especifique una dirección IP para escuchar las conexiones entrantes.

    Por ejemplo:

    Nota:

    Si no especifica una dirección IP, la dirección predeterminada de :: se utiliza para escuchar las conexiones entrantes.

  7. (Opcional) Configure el seguimiento de los servicios de extensión para depurar los problemas que puedan surgir.

    Nota:

    Para ver los archivos de seguimiento de Junos OS Evolved para servicios de extensiones, utilice los comandos y show trace application jsd live modo show trace application jsd operativo.

  8. Confirmar la configuración.

Para configurar la autenticación mutua en lugar de la autenticación solo del servidor, también debe completar los pasos que se indican en Configurar la autenticación mutua (bidireccional) para servicios gRPC.

Configurar autenticación mutua (bidireccional) para servicios gRPC

Puede configurar la autenticación mutua (bidireccional) para las sesiones de gRPC, que autentica tanto el dispositivo de red como el servidor gRPC y el NMS como el cliente gRPC mediante certificados. El dispositivo Junos utiliza las credenciales proporcionadas por el cliente externo para autenticar al cliente y autorizar una conexión.

Puede configurar la autenticación mutua en dispositivos Junos mediante una de las siguientes opciones:

  • Configure las opciones de autenticación mutua directamente en la configuración.

  • Configure inicialmente la autenticación de solo servidor y, luego, use el servicio gNOI CertificateManagement para cargar los certificados de AC necesarios en el dispositivo.

Si configura la autenticación mutua directamente en la configuración del dispositivo, la configuración del dispositivo tendrá prioridad sobre cualquier configuración realizada mediante los servicios de gNOI.

Antes de empezar:

En las siguientes secciones se describen los distintos métodos para configurar la autenticación mutua. Puede utilizar el método que mejor se adapte a su entorno.

Configure la autenticación mutua en la configuración del dispositivo

Para configurar la autenticación para el cliente gRPC directamente en la configuración del dispositivo de red:

  1. Descargue el certificado de AC raíz que se utilizará para validar el certificado del cliente en el dispositivo local que actúa como servidor gRPC.

  2. Configure un perfil AC para la AC raíz del certificado de cliente en la [edit security pki] jerarquía.

    Por ejemplo:

  3. Confirmar la configuración.

  4. En el modo operativo, cargue el certificado de AC raíz que se usará para comprobar el certificado del cliente en la PKI de Junos. Especifique el ca-profile identificador que configuró en los pasos anteriores.

    Por ejemplo:

    Propina:

    Para cargar un paquete de certificados de AC, ejecute el request security pki ca-certificate ca-profile-group load ca-group-name ca-group-name filename bundle-path comando.

    Después de cargar el certificado, ingrese al modo de configuración y continúe con la configuración de la autenticación mutua. Debe configurar la autenticación mutua en el mismo nivel de jerarquía en el que configuró el servidor. Realice los pasos descritos en la sección para su nivel de jerarquía.

[Editar servidores HTTP de servicios del sistema]

Para configurar la autenticación mutua para un servidor configurado en el nivel de [edit system services http servers] jerarquía:

  1. Vaya a la instrucción situada debajo de la configuración del tls servidor.

    Por ejemplo:

  2. Habilite la autenticación mutua y especifique los requisitos para los certificados de cliente.

    Por ejemplo, para especificar la autenticación más fuerte, que requiere un certificado y su validación, use request-and-require-cert-and-verify, que también es el valor predeterminado.

  3. Especifique el perfil de AC que se usará para comprobar el certificado de cliente.

    El perfil de AC se configuró en el paso 2 de la configuración del perfil de AC.

    Por ejemplo, para especificar el perfil de AC denominado gnoi-client:

  4. Confirmar la configuración.

[editar servicios del sistema extensión-servicio solicitud-respuesta grpc ssl]

Para configurar la autenticación mutua para un servidor configurado en el nivel de [edit system services extension-service request-response grpc ssl] jerarquía:

  1. Habilite la autenticación mutua y especifique los requisitos para los certificados de cliente.

    Por ejemplo, para especificar la autenticación más sólida, que requiere un certificado y su validación, utilice require-certificate-and-verify.

    Nota:

    El valor predeterminado es no-certificate. Las otras opciones son: request-certificate, request-certificate-and-verify, , require-certificate-and-verifyrequire-certificate.

    Recomendamos que utilice esta no-certificate opción solo en un entorno de prueba.

  2. Especifique el perfil de AC que se usará para comprobar el certificado de cliente.

    El perfil de AC se configuró en el paso 2 de la configuración del perfil de AC.

    Por ejemplo, para especificar el perfil de AC denominado gnoi-client:

  3. Confirmar la configuración.

Configurar la autenticación mutua mediante el servicio gNOI CertificateManagement

Puede usar el servicio gNOI CertificateManagement para configurar la autenticación mutua entre el cliente gRPC y el servidor gRPC en lugar de configurar los ajustes directamente en la configuración del dispositivo. Inicialmente, configura la autenticación solo del servidor y, luego, usa las RPC del servicio gNOI CertificateManagement para cargar los certificados de AC del cliente. Consulte Servicio de administración de certificados gNOI para obtener información sobre cómo cargar los certificados mediante el servicio gNOI CertificateManagement .

El servidor gRPC solo admite un paquete de certificados de AC global para servicios de gNOI. Cuando se usa el servicio gNOI CertificateManagement para cargar el paquete de certificados de AC, el dispositivo usa implícitamente la autenticación mutua. Sin embargo, debe tomar nota de lo siguiente:

  • El CertificateManagement servicio siempre carga el paquete de certificados de AC utilizando el ca-profile-group identificador gnoi-ca-bundlereservado.

  • Si utiliza el CertificateManagement servicio para cargar el paquete de certificados de AC, el dispositivo utiliza implícitamente la autenticación mutua.

  • Si el CertificateManagement servicio envía una solicitud para cargar un nuevo paquete de certificados de AC, el servidor borra los certificados del paquete de AC anterior del dispositivo y carga los nuevos.

  • Si usa el servicio para cargar un paquete de certificados de AC y también configura explícitamente CertificateManagement la autenticación mutua en la configuración del dispositivo, las instrucciones configuradas tienen prioridad.

Configurar la cuenta de usuario para los servicios de gRPC

Las credenciales de canal se adjuntan al canal gRPC y permiten que la aplicación cliente acceda al servicio. Las credenciales de llamada se adjuntan a una solicitud RPC específica y proporcionan información sobre el usuario que usa la aplicación cliente. Debe proporcionar credenciales de llamada en cada solicitud RPC, lo que requiere una cuenta de usuario para el dispositivo de red. El usuario debe tener una cuenta de usuario definida localmente en el dispositivo de red, o bien debe autenticarse el usuario mediante un servidor TACACS+, que luego lo asigna a una cuenta de plantilla de usuario que se define localmente en el dispositivo.

Para crear una cuenta de usuario:

  1. Configure la user instrucción con un nombre de usuario único e inclúyala para especificar una clase de class inicio de sesión que tenga los permisos necesarios para todas las acciones que vaya a realizar el usuario. Por ejemplo:
  2. En el caso de las cuentas de usuario locales, configure la contraseña del usuario.

    Puede omitir la contraseña de las cuentas de plantillas de usuario locales, ya que el usuario se autentica a través de un servidor de autenticación remoto.

  3. (Opcional) Configure la full-name instrucción para especificar el nombre del usuario.
  4. Confirme la configuración para activar la cuenta de usuario en el dispositivo.
  5. Repita los pasos anteriores en cada dispositivo de red en el que el cliente de gRPC ejecute RPC en una sesión de gRPC.

Configurar la autorización de RPC de gRPC

De forma predeterminada, los dispositivos Junos autorizan a un cliente gRPC autenticado a ejecutar todas las RPC de gRPC. Puede configurar una clase de inicio de sesión de Junos para permitir o denegar explícitamente las RPC de gRPC. Para especificar las RPC, configure las allow-grpc-rpc-regexps instrucciones y deny-grpc-rpc-regexps defina expresiones regulares que coincidan con las RPC. Si hay expresiones en conflicto en las listas de permitidos y denegados, la lista de denegación tiene prioridad. Si una RPC no coincide con ninguna de las listas, la RPC se permite de forma predeterminada.

Los dispositivos Junos utilizan la siguiente sintaxis para especificar RPC de gRPC:

Cuando package, service, y rpc son los nombres definidos en la instrucción respectiva en el archivo de definición de prototipo de ese servicio. Por ejemplo:

Puede configurar varias allow-grpc-rpc-regexps instrucciones y deny-grpc-rpc-regexps con una o más expresiones. Encierre cada expresión entre comillas (" "). Escriba varias expresiones entre corchetes [ ] y separe las expresiones con un espacio.

Para crear una clase de inicio de sesión que defina la autorización para RPC de gRPC:

  1. Configure el nombre y los permisos de la clase de inicio de sesión.

    Por ejemplo:

  2. Dentro de la clase, configure expresiones regulares para las RPC que la clase permita.

    Por ejemplo, la siguiente instrucción permite el RPC de gNMI Get() y todos los RPC de servicio de gNOI System .

  3. Configure expresiones regulares para las RPC que la clase deniega.

    Por ejemplo, las siguientes instrucciones deniegan la RPC de gNMI Set() y también deniegan todas las RPC para el gRIBI servicio, así como para el servicio gNOI CertificateManagement .

  4. Asigne la clase de inicio de sesión a los usuarios de gRPC apropiados.

    Por ejemplo, la siguiente instrucción asigna la grpc-operator clase al grpc-user usuario.

Después de habilitar los servicios gRPC en el dispositivo de red, configure el NMS remoto como un cliente gRPC. Para permitir que el cliente ejecute operaciones de gNOI, configure el cliente como se describe en Configurar servicios de gNOI.

Tabla de historial de cambios

La compatibilidad de la función depende de la plataforma y la versión que utilice. Utilice el Explorador de características para determinar si una característica es compatible con su plataforma.

Lanzamiento
Descripción
25.2R1 y 25.2R1-EVO
A partir de Junos OS versión 25.2R1 y Junos OS Evolved versión 25.2R1, puede configurar varios servidores gRPC que alojen diferentes conjuntos de servicios en puertos únicos.