Configurar los servicios gRPC
Configure el servidor gRPC para permitir que un cliente use los servicios gRPC en el dispositivo de red, incluidos: servicios de interfaz de operaciones de red (gNOI) gRPC, servicios de interfaz de administración de red gRPC (gNMI) y servicios de interfaz 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 gRPC, debe cumplir los requisitos descritos en las secciones siguientes:
- Descripción de la autenticación y autorización para servicios basados en gRPC
- Obtener certificados X.509
- Cargar el certificado local del servidor gRPC en la PKI de Junos
- Habilitar los servicios gRPC
- Configurar la autenticación mutua (bidireccional) para los servicios gRPC (opcional)
- Configurar la cuenta de usuario para los servicios gRPC
- Configurar la autorización RPC de gRPC (opcional)
Descripción de la autenticación y autorización para servicios basados en gRPC
Las interfaces gNOI, gNMI y gRIBI utilizan el marco de llamadas 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 realizar operaciones de servicio de red. La figura 1 ilustra una conexión simple entre un cliente gRPC y un servidor.
Los canales gRPC utilizan credenciales de canal para controlar 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 forma de autenticar a los usuarios a través de un tercero de confianza denominado entidad emisora de certificados o entidad de certificación (CA). La CA verifica la identidad del titular del certificado y lo "firma" para certificar 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 extremo (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 gRPC basadas en SSL. Cuando se configura la autenticación de solo servidor, el servidor proporciona su certificado de clave pública cuando se establece el canal. El cliente utiliza el certificado de CA raíz 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. Se recomienda configurar la autenticación mutua y usar certificados firmados por una CA 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 gRPC. Si utiliza la autenticación mutua, la PKI de Junos también debe contener los certificados de CA 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 solo de servidor y la autenticación mutua cuando un cliente 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 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 SubjectAltName, el campo Nombre común se omite durante la autenticación.
Requisitos | Autenticación solo servidor | Autenticació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 la 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 la 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 de CA raíz de cada cliente deben cargarse en la PKI de Junos. |
Credenciales de canal | El cliente debe pasar el certificado de CA raíz del servidor cuando se establece el canal gRPC. |
El cliente debe pasar su certificado y clave y el certificado de CA 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 tenga acceso al servicio. Por otro lado, las credenciales de llamada se adjuntan a una operación de servicio específica (solicitud RPC) y proporcionan información sobre la persona que usa 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 debe autenticarse mediante un servidor TACACS+ que, a continuación, asigna al usuario a una cuenta de plantilla de usuario definida localmente en el dispositivo. Puede proporcionar las credenciales de llamada (nombre de metadata
usuario y contraseña) en el argumento del RPC. Si la autenticación se realiza correctamente, el dispositivo Junos ejecuta la solicitud RPC utilizando los privilegios de cuenta del usuario especificado.
Como alternativa a la transferencia de credenciales de llamada para cada RPC ejecutado en un dispositivo Junos, puede usar la API del kit de herramientas jnx_authentication_service
de extensión de Juniper para iniciar sesión en el dispositivo una vez al inicio de la sesión gRPC y se autenticarán todos los RPC posteriores ejecutados 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 gRPC. Opcionalmente, puede configurar la clase de inicio de sesión de un usuario gRPC para permitir o denegar explícitamente RPC gRPC específicas. Para especificar las RPC, configure las allow-grpc-rpc-regexps
instrucciones and deny-grpc-rpc-regexps
y defina expresiones regulares que coincidan con las RPC. Consulte Configurar la autorización RPC de gRPC para obtener más información.
Obtener certificados X.509
La sesión gRPC cifrada SSL utiliza certificados de clave pública X.509 para autenticar el servidor y el cliente gRPC. Para la autenticación solo de servidor, el servidor gRPC debe tener un certificado. Para la autenticación mutua, tanto el servidor gRPC como el cliente deben tener certificados. Los requisitos para los certificados son:
-
El certificado puede estar firmado por una autoridad de certificación (CA) 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 SubjectAltName (SAN). El cliente gRPC debe utilizar 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 utilizar OpenSSL para obtener el certificado del servidor gRPC:
Para la autenticación mutua, repita los pasos anteriores con la información para que el cliente gRPC genere la clave y el certificado del cliente. El certificado de cliente no requiere el campo de extensión IP de SAN.
Cargar 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 Junos, debe cargar el certificado de clave pública y la clave para el dispositivo de red local en la PKI de Junos. Después de cargar el certificado y realizar la configuración inicial, los clientes gRPC pueden usar cualquier microservicio para actualizar el certificado. Por ejemplo, un cliente gRPC puede usar el servicio gNOI CertificateManagement
para instalar un nuevo certificado o reemplazar un certificado existente.
Para cargar el certificado y la clave del dispositivo local en la PKI:
Habilitar los servicios gRPC
Los servicios basados en gRPC utilizan una configuración de conexión API basada en la tecnología Secure Socket Layer (SSL). Para una conexión basada en SSL, 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 de solo servidor. A continuación, puede configurar opcionalmente la autenticación mutua completando los pasos descritos en Configurar la autenticación mutua (bidireccional) para servicios gRPC.
Para configurar el dispositivo de red para los servicios gRPC y especificar el certificado local utilizado para la autenticación del servidor:
Para configurar la autenticación mutua en lugar de la autenticación solo de servidor, también debe completar los pasos descritos en Configurar autenticación mutua (bidireccional) para servicios gRPC.
Configurar la autenticación mutua (bidireccional) para los servicios gRPC
Puede configurar la autenticación mutua (bidireccional) para las sesiones gRPC, que autentican tanto el dispositivo de red como el servidor gRPC y el sistema de administración de red como el cliente gRPC mediante certificados SSL. 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 el nivel de
[edit system services extension-service request-response grpc ssl mutual-authentication]
jerarquía. -
Configure inicialmente la autenticación solo de servidor y, a continuación, utilice el servicio gNOI
CertificateManagement
para cargar los certificados de CA necesarios en el dispositivo.
Si configura la autenticación mutua directamente en la configuración del dispositivo, la configuración del dispositivo tiene prioridad sobre cualquier configuración realizada utilizando los servicios gNOI.
Antes de empezar:
-
Cargue el certificado y la clave del dispositivo de red que actúa como servidor gRPC en la PKI del dispositivo, tal como se describe en Cargar el certificado local del servidor gRPC en la PKI de Junos.
-
Habilite los servicios gRPC y configure la autenticación del servidor local como se describe en Habilitar servicios gRPC.
En las secciones siguientes se describen los distintos métodos para configurar la autenticación mutua. Puede usar el método que mejor se adapte a su entorno.
- Configurar la autenticación mutua en la configuración del dispositivo
- Configurar la autenticación mutua mediante el servicio de administración de certificados gNOI
Configurar 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:
Descargue el certificado de CA raíz que se utilizará para validar el certificado del cliente en el dispositivo local que actúa como servidor gRPC.
Configure el perfil de entidad de certificación para la CA raíz del certificado de cliente en la
[edit security pki]
jerarquía.[edit security pki] user@host# set ca-profile ca-profile-name ca-identity ca-identifier
Por ejemplo:
[edit security pki] user@host# set ca-profile gnoi-client ca-identity clientRootCA
Confirme la configuración.
[edit] user@host# commit and-quit
En el modo operativo, cargue el certificado de CA 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.user@host> request security pki ca-certificate load ca-profile ca-profile filename cert-path
Por ejemplo:
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
Propina:Para cargar un paquete de certificados de CA, 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 configurando la autenticación mutua.
Habilite la autenticación mutua y especifique los requisitos para los certificados de cliente.
[edit system services extension-service request-response grpc ssl] user@host# set mutual-authentication client-certificate-request requirement
Por ejemplo, para especificar la autenticación más segura, que requiere un certificado y su validación, utilice
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
Nota:El valor predeterminado es
no-certificate
. Las otras opciones son:request-certificate
,request-certificate-and-verify
,require-certificate
,require-certificate-and-verify
.Se recomienda usar la
no-certificate
opción solo en un entorno de prueba.Especifique el perfil de entidad emisora de certificados que se usará para comprobar el certificado de cliente.
El perfil de entidad emisora de certificados se configuró en el paso 2.
[edit system services extension-service request-response grpc ssl] user@host# set mutual-authentication certificate-authority certificate-authority
Por ejemplo, para especificar el perfil de la entidad emisora de certificados denominado
gnoi-client
:[edit system services extension-service request-response grpc ssl] user@host# set mutual-authentication certificate-authority gnoi-client
Confirme la configuración.
[edit] user@host# commit and-quit
Configurar la autenticación mutua mediante el servicio de administración de certificados gNOI
Puede utilizar 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 configure la autenticación solo de servidor y, a continuación, utilice las RPC de servicio gNOI CertificateManagement
para cargar los certificados de CA del cliente. Consulte Servicio de Administración de Certificados gNOI para obtener información sobre cómo cargar los certificados utilizando el servicio gNOI CertificateManagement
.
El servidor gRPC solo admite un paquete de certificados de CA global para los servicios gNOI. Cuando utiliza el servicio gNOI CertificateManagement
para cargar el paquete de certificados de CA, el dispositivo utiliza implícitamente la autenticación mutua. Sin embargo, debe tener en cuenta lo siguiente:
-
El
CertificateManagement
servicio siempre carga el paquete de certificados de CA utilizando elca-profile-group
identificadorgnoi-ca-bundle
reservado. -
Si usa el
CertificateManagement
servicio para cargar el paquete de certificados de CA, el dispositivo utiliza implícitamente la autenticación mutua y asume la siguiente configuración, aunque no esté configurada explícitamente en el dispositivo.[edit system services extension-service request-response grpc ssl] mutual-authentication { certificate-authority gnoi-ca-bundle; client-certificate-request require-certificate-and-verify; }
-
Si el
CertificateManagement
servicio envía una solicitud para cargar un nuevo paquete de certificados de CA, el servidor borra del dispositivo los certificados del paquete de CA anterior y carga los nuevos. -
Si utiliza el
CertificateManagement
servicio para cargar un paquete de certificados de CA y también configura la jerarquía de instrucciones[edit system services extension-service request-response grpc ssl mutual-authentication]
, las instrucciones configuradas tienen prioridad.
Configurar la cuenta de usuario para los servicios gRPC
Las credenciales de canal se adjuntan al canal gRPC y permiten que la aplicación cliente tenga acceso 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 debe autenticarse mediante un servidor TACACS+ que, a continuación, asigna al usuario a una cuenta de plantilla de usuario definida localmente en el dispositivo.
Para crear una cuenta de usuario:
Configurar la autorización RPC de gRPC
De forma predeterminada, los dispositivos Junos autorizan a un cliente gRPC autenticado a ejecutar todas las RPC gRPC. Puede configurar una clase de inicio de sesión de Junos para permitir o denegar explícitamente las RPC gRPC. Para especificar las RPC, configure las allow-grpc-rpc-regexps
instrucciones and deny-grpc-rpc-regexps
y defina expresiones regulares que coincidan con las RPC. Si hay expresiones conflictivas en las listas de permitir y denegar, la lista de denegación tiene prioridad. Si un RPC no coincide con ninguna de las listas, el RPC está permitido de forma predeterminada.
Los dispositivos Junos usan la siguiente sintaxis para especificar RPC gRPC:
/package.service/rpc
donde package
, service
y rpc
son los nombres definidos en la instrucción respectiva del archivo de definición de proto. Por ejemplo:
/gnmi.gNMI/Get /gnoi.certificate.CertificateManagement/Rotate /gnoi.system.System/Reboot /gnoi.system.System/RebootStatus /gribi.gRIBI/.*
Puede configurar varias allow-grpc-rpc-regexps
instrucciones y deny-grpc-rpc-regexps
con una o más expresiones. Escriba cada expresión entre comillas (" "). Incluya varias expresiones entre corchetes [ ] y separe las expresiones con un espacio.
allow-grpc-rpc-regexps ["regex1" "regex2" ... ] allow-grpc-rpc-regexps "regex3"
Para crear una clase de inicio de sesión que defina la autorización para RPC gRPC: