Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Configurar serviços gRPC

Configure o servidor gRPC para permitir que um cliente use serviços gRPC no dispositivo de rede, incluindo: serviços gRPC Network Operations Interface (gNOI), serviços gRPC Network Management Interface (gNMI) e serviços gRPC Routing Information Base Interface (gRIBI).

Este tópico discute como configurar serviços gRPC em dispositivos Junos, incluindo as opções de autenticação e como configurar cada opção. Antes que o servidor e o cliente possam estabelecer uma sessão gRPC, você deve atender aos requisitos discutidos nas seções a seguir:

Entender a autenticação e a autorização para serviços baseados em gRPC

As interfaces gNMI, gNOI e gRIBI usam a estrutura de chamada de procedimento remoto gRPC para transporte. O servidor gRPC é executado no dispositivo de rede e escuta solicitações de conexão em uma porta especificada. O aplicativo cliente gRPC é executado em um sistema de gerenciamento de rede remoto (NMS) e estabelece um canal gRPC com o servidor no host e na porta especificados. O cliente executa RPCs por meio da sessão gRPC criptografada por SSL para realizar operações de serviço de rede. A Figura 1 ilustra uma conexão simples entre um cliente e um servidor gRPC.

Figura 1: Interação do servidor e do cliente gRPC gRPC Server and Client Interaction

Os canais gRPC usam credenciais de canal para lidar com a autenticação entre o servidor e o cliente. As credenciais de canal padrão usam certificados digitais X.509 para autenticar o servidor e o cliente. Um certificado digital fornece uma maneira de autenticar usuários por meio de um terceiro confiável chamado autoridade de certificação ou autoridade de certificação (CA). A CA verifica a identidade de um titular de certificado e "assina" o certificado para atestar que ele não foi falsificado ou alterado. O padrão X.509 define o formato do certificado. Os certificados digitais podem ser usados para estabelecer uma conexão segura entre dois endpoints por meio da validação de certificados. Para estabelecer um canal gRPC, cada endpoint (dispositivo ou aplicativo) que requer autenticação deve fornecer um certificado X.509 na troca.

Os dispositivos Junos oferecem suporte à autenticação somente do servidor, bem como à autenticação mútua para sessões gRPC baseadas em SSL e TLS. Quando a autenticação somente do servidor é configurada, o servidor fornece seu certificado de chave pública quando o canal é estabelecido. O cliente usa o certificado de CA raiz do servidor para autenticar o servidor. Quando a autenticação mútua é configurada, o cliente também fornece seu certificado quando se conecta ao servidor, e o servidor valida o certificado. Se a validação do certificado for bem-sucedida, o cliente poderá fazer chamadas. Recomendamos que você configure a autenticação mútua e use certificados assinados pela CA para obter a segurança mais forte, embora certificados autoassinados sejam aceitos.

Uma infraestrutura de chave pública (PKI) oferece suporte à distribuição e identificação de chaves de criptografia públicas, permitindo que os usuários troquem dados com segurança em redes como a Internet e verifiquem a identidade da outra parte. Para serviços baseados em gRPC, a PKI do Junos deve conter o certificado para o dispositivo local que atua como o servidor gRPC. Se você usar a autenticação mútua, a PKI do Junos também deverá conter os certificados de CA raiz necessários para validar os certificados de qualquer cliente gRPC que se conecte ao dispositivo.

A Tabela 1 descreve os requisitos gerais para autenticação somente de servidor e autenticação mútua quando um cliente gRPC se conecta ao dispositivo para executar serviços baseados em gRPC. O certificado do servidor gRPC deve definir o nome do host do servidor no campo Nome Comum (CN) ou deve definir o endereço IP do servidor no campo Endereço IP Nome Alternativo da Entidade (subjectAltName ou SAN). O aplicativo cliente deve usar o mesmo valor para estabelecer a conexão com o servidor. Se o certificado definir o campo Endereço IP SubjectAltName, o campo Nome Comum será ignorado durante a autenticação.

Tabela 1: Requisitos para autenticação somente servidor e mútua para sessões gRPC
Requerimentos Autenticação somente de servidor Autenticação mútua
Certificados

O servidor deve ter um certificado de chave pública X.509.

Se o cliente se conectar ao endereço IP do servidor em vez do nome do host, o certificado do servidor deverá incluir o campo de extensão de endereço IP subjectAltName (SAN) com o endereço IP do servidor.

O servidor e o cliente devem ter um certificado de chave pública X.509.

Se o cliente se conectar ao endereço IP do servidor em vez do nome do host, o certificado do servidor deverá incluir o campo de extensão de endereço IP subjectAltName (SAN) com o endereço IP do servidor.

Junos PKI

O certificado local do servidor deve ser carregado na PKI do Junos.

O certificado local do servidor e o certificado de CA raiz de cada cliente devem ser carregados no Junos PKI.

Credenciais de canal

O cliente deve passar o certificado de CA raiz do servidor quando o canal gRPC for estabelecido.

O cliente deve passar seu certificado e chave e o certificado de CA raiz do servidor quando o canal gRPC for estabelecido.

As credenciais do canal são anexadas ao canal gRPC e permitem que o aplicativo cliente acesse o serviço. As credenciais de chamada, por outro lado, são anexadas a uma operação de serviço específica (solicitação RPC) e fornecem informações sobre a pessoa que está usando o aplicativo cliente. As credenciais de chamada são enviadas por solicitação, ou seja, para cada chamada RPC. Para executar operações baseadas em gRPC em dispositivos Junos, você deve fornecer credenciais de chamada na solicitação. O usuário deve ter uma conta de usuário definida localmente no dispositivo ou o usuário deve ser autenticado por um servidor TACACS+, que mapeia o usuário para uma conta de modelo de usuário definida localmente no dispositivo. Você pode fornecer as credenciais de chamada (nome de usuário e senha) no argumento do metadata RPC. Se a autenticação for bem-sucedida, o dispositivo Junos executa a solicitação RPC usando os privilégios de conta do usuário especificado.

Observação:

Como alternativa à passagem de credenciais de chamada para cada RPC executado em um dispositivo Junos, você pode usar a API Juniper Extension Toolkit jnx_authentication_service para fazer login no dispositivo uma vez no início da sessão gRPC, e todos os RPCs subsequentes executados no canal serão autenticados. Você pode baixar a biblioteca IDL do cliente JET no site de download da Juniper Networks.

Por padrão, os dispositivos Junos autorizam um cliente gRPC autenticado a executar todos os RPCs gRPC. Opcionalmente, você pode configurar a classe de login de um usuário gRPC para permitir ou negar explicitamente RPCs gRPC específicos. Para especificar os RPCs, configure as allow-grpc-rpc-regexps instruções and deny-grpc-rpc-regexps e defina expressões regulares que correspondam aos RPCs. Consulte Configurar a autorização RPC do gRPC para obter mais informações.

Obter certificados X.509

Uma sessão gRPC usa certificados de chave pública X.509 para autenticar o servidor e o cliente gRPC. Para autenticação somente de servidor, o servidor gRPC deve ter um certificado. Para autenticação mútua, o servidor e o cliente gRPC devem ter certificados. Os requisitos para os certificados são:

  • O certificado pode ser assinado por uma CA ou autoassinado.

  • O certificado deve ser codificado por PEM.

  • O certificado do servidor gRPC deve definir o nome do host do servidor gRPC no campo Nome Comum (CN) ou deve definir o endereço IP do servidor gRPC no campo Endereço IP SubjectAltName (SAN). O cliente gRPC deve usar o mesmo valor para estabelecer a conexão com o servidor. Se o certificado definir o endereço IP SubjectAltName, o campo Nome comum será ignorado durante a autenticação.

Para usar o OpenSSL para obter o certificado do servidor gRPC:

  1. Gere uma chave privada e especifique o comprimento da chave em bits.
  2. Se o cliente gRPC se conectar ao endereço IP do servidor gRPC, atualize seu openssl.cnf ou arquivo de configuração equivalente para definir a subjectAltName=IP extensão com o endereço IP do servidor gRPC.
  3. Gere uma solicitação de assinatura de certificado (CSR), que contém a chave pública da entidade e informações sobre sua identidade.

    Como alternativa, você pode fornecer as informações de CSR em um único comando, por exemplo:

  4. Gere o certificado seguindo um destes procedimentos:
    • Envie o CSR para uma CA para solicitar um certificado X.509 e forneça o arquivo de configuração para incluir quaisquer extensões adicionais.

    • Assine o CSR com uma CA para gerar o certificado e inclua a -extfile opção se precisar fazer referência ao arquivo de configuração e às extensões.

    • Assine o CSR com a chave do servidor para gerar um certificado autoassinado e inclua a -extfile opção se precisar fazer referência ao arquivo de configuração e às extensões.

  5. Verifique se o campo Nome Comum (CN) do certificado e as extensões, se fornecidas, estão corretas.

Para autenticação mútua, repita as etapas anteriores com as informações do cliente gRPC para gerar a chave e o certificado do cliente. O certificado do cliente não requer o campo de extensão SAN IP.

Carregar o certificado local do servidor gRPC no Junos PKI

O dispositivo de rede que executa o servidor gRPC deve ter um certificado X.509 que identifique o dispositivo para clientes gRPC. Para realizar serviços baseados em gRPC no dispositivo Junos, você deve carregar o certificado de chave pública e a chave para o dispositivo de rede local no Junos PKI. Depois de carregar o certificado e executar a configuração inicial, os clientes gRPC podem usar qualquer microsserviço para atualizar o certificado. Por exemplo, um cliente gRPC pode usar o serviço gNOI CertificateManagement para instalar um novo certificado ou substituir um certificado existente.

Para carregar o certificado e a chave do dispositivo local na PKI:

  1. Baixe o certificado e a chave do dispositivo que está atuando como o servidor gRPC para esse dispositivo.
  2. No modo operacional, defina um identificador e carregue o certificado e a chave do dispositivo local na PKI.

    Por exemplo:

  3. (Opcional) Verifique se o certificado está presente no banco de dados PKI.

Habilitar serviços gRPC

Os serviços baseados em gRPC usam uma configuração de conexão de API baseada na tecnologia Secure Socket Layer (SSL) ou Camada de Transporte de Segurança (TLS). Para essas conexões, você deve especificar um certificado local que identifique o servidor gRPC.

Depois de habilitar os serviços gRPC e especificar um certificado local, o dispositivo de rede usará a autenticação somente do servidor. Opcionalmente, você pode configurar a autenticação mútua concluindo as etapas descritas em Configurar autenticação mútua (bidirecional) para serviços gRPC.

Você pode configurar seu dispositivo de rede para serviços gRPC e especificar o certificado local usado para autenticação de servidor em um dos seguintes níveis de hierarquia:

  • [edit system services http servers]— Use esta hierarquia de declaração para configurar um ou mais servidores gRPC que hospedam diferentes conjuntos de serviços em portas exclusivas. Além disso, cada servidor pode oferecer suporte a diferentes endereços de escuta, certificados e instâncias de roteamento.

  • [edit system services extension-service request-response grpc ssl]— Use essa hierarquia de declaração quando precisar apenas de um único servidor gRPC que ofereça suporte a todos os serviços gRPC no mesmo endereço e porta de escuta.

Para configurar o dispositivo para serviços gRPC, siga as instruções para o nível de hierarquia que atende aos requisitos do seu ambiente.

[edit system services http servers]

Para configurar um ou mais servidores gRPC no nível da [edit system services http servers] hierarquia:

  1. Navegue até o nível de hierarquia dos servidores gRPC e especifique um identificador para o servidor.

    Por exemplo:

  2. Configure a porta a ser usada para os serviços gRPC. A porta deve ser exclusiva para cada servidor gRPC.

    Por exemplo:

  3. Configure os serviços gRPC hospedados por esse servidor.

    Neste exemplo, o servidor hospeda serviços gNMI e serviços gNOI.

  4. Especifique o certificado local que identifica o servidor para um cliente.

    Insira o identificador do certificado local que você carregou anteriormente no Junos PKI com o request security pki local-certificate load comando operational mode.

    O exemplo a seguir configura o certificado gnoi-serverlocal:

  5. (Opcional) Especifique o endereço IPv4 ou IPv6 no qual o servidor escuta as conexões de entrada.

    Por exemplo:

    Observação:

    Se você não especificar um endereço IP, o endereço padrão :: será usado para escutar conexões de entrada.

  6. (Opcional) Configure a instância de roteamento a ser usada para esse servidor gRPC, se diferente da instância de roteamento padrão.

    O exemplo a seguir usa a instância de roteamento mgmt-junos.

  7. (Opcional) Configure o número máximo de conexões compatíveis com esse servidor gRPC.

    O exemplo a seguir configura um máximo de 10 conexões. O padrão é 5.

  8. Comprometa a configuração.

Para configurar a autenticação mútua em vez da autenticação somente do servidor, você também deve concluir as etapas em Configurar autenticação mútua (bidirecional) para serviços gRPC.

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

Para configurar um único servidor gRPC no nível de [edit system services extension-service request-response grpc ssl] hierarquia:

  1. Navegue até as configurações de conexão da API baseada em SSL para serviços gRPC.

  2. Configure a porta a ser usada para serviços gRPC.

    Por exemplo:

  3. Especifique o certificado local que identifica o servidor para um cliente.

    Insira o identificador do certificado local que você carregou anteriormente no Junos PKI com o request security pki local-certificate load comando operational mode.

    O exemplo a seguir configura o certificado gnoi-serverlocal:

  4. Configure o dispositivo para usar o banco de dados PKI para certificados.

  5. Permita que o dispositivo recarregue certificados sem encerrar a sessão gRPC.

  6. (Opcional) Especifique um endereço IP para escutar as conexões de entrada.

    Por exemplo:

    Observação:

    Se você não especificar um endereço IP, o endereço padrão :: será usado para escutar conexões de entrada.

  7. (Opcional) Configure o rastreamento para serviços de extensão para depurar quaisquer problemas que possam surgir.

    Observação:

    Para visualizar os arquivos de rastreamento do Junos OS Evolved para serviços de extensões, use os comandos e show trace application jsd live modo show trace application jsd operacional.

  8. Comprometa a configuração.

Para configurar a autenticação mútua em vez da autenticação somente do servidor, você também deve concluir as etapas em Configurar autenticação mútua (bidirecional) para serviços gRPC.

Configurar autenticação mútua (bidirecional) para serviços gRPC

Você pode configurar a autenticação mútua (bidirecional) para sessões gRPC, que autentica o dispositivo de rede como o servidor gRPC e o NMS como o cliente gRPC usando certificados. O dispositivo Junos usa as credenciais fornecidas pelo cliente externo para autenticar o cliente e autorizar uma conexão.

Você pode configurar a autenticação mútua em dispositivos Junos usando uma das seguintes opções:

  • Defina as configurações de autenticação mútua diretamente na configuração.

  • Configure a autenticação somente do servidor inicialmente e, em seguida, use o serviço gNOI CertificateManagement para carregar os certificados de CA necessários no dispositivo.

Se você configurar a autenticação mútua diretamente na configuração do dispositivo, a configuração do dispositivo terá precedência sobre qualquer configuração feita usando os serviços gNOI.

Antes de começar:

As seções a seguir discutem os diferentes métodos para configurar a autenticação mútua. Você pode usar o método que funcionar melhor para o seu ambiente.

Configurar autenticação mútua na configuração do dispositivo

Para configurar a autenticação para o cliente gRPC diretamente na configuração do dispositivo de rede:

  1. Baixe o certificado de CA raiz que será usado para validar o certificado do cliente para o dispositivo local que atua como o servidor gRPC.

  2. Configure um perfil de CA para a CA raiz do certificado do cliente na [edit security pki] hierarquia.

    Por exemplo:

  3. Comprometa a configuração.

  4. No modo operacional, carregue o certificado de CA raiz que será usado para verificar o certificado do cliente no Junos PKI. Especifique o ca-profile identificador que você configurou nas etapas anteriores.

    Por exemplo:

    Dica:

    Para carregar um pacote de certificados de CA, emita o request security pki ca-certificate ca-profile-group load ca-group-name ca-group-name filename bundle-path comando.

    Depois de carregar o certificado, entre no modo de configuração e continue configurando a autenticação mútua. Você deve configurar a autenticação mútua no mesmo nível de hierarquia em que configurou o servidor. Execute as etapas descritas na seção para seu nível de hierarquia.

[editar servidores http de serviços do sistema]

Para configurar a autenticação mútua para um servidor configurado no nível da [edit system services http servers] hierarquia:

  1. Navegue até a instrução na configuração do tls servidor.

    Por exemplo:

  2. Habilite a autenticação mútua e especifique os requisitos para certificados de cliente.

    Por exemplo, para especificar a autenticação mais forte, que requer um certificado e sua validação, use request-and-require-cert-and-verify, que também é o padrão.

  3. Especifique o perfil de CA que será usado para verificar o certificado do cliente.

    O perfil de CA foi configurado na etapa 2 da configuração do perfil de CA.

    Por exemplo, para especificar o perfil de CA chamado gnoi-client:

  4. Comprometa a configuração.

[editar extensão de serviços do sistema-serviço solicitação-resposta grpc ssl]

Para configurar a autenticação mútua para um servidor configurado no nível da [edit system services extension-service request-response grpc ssl] hierarquia:

  1. Habilite a autenticação mútua e especifique os requisitos para certificados de cliente.

    Por exemplo, para especificar a autenticação mais forte, que requer um certificado e sua validação, use require-certificate-and-verify.

    Observação:

    O padrão é no-certificate. As outras opções são: request-certificate, request-certificate-and-verify, require-certificate, require-certificate-and-verify.

    Recomendamos que você use a no-certificate opção somente em um ambiente de teste.

  2. Especifique o perfil de CA que será usado para verificar o certificado do cliente.

    O perfil de CA foi configurado na etapa 2 da configuração do perfil de CA.

    Por exemplo, para especificar o perfil de CA chamado gnoi-client:

  3. Comprometa a configuração.

Configurar a autenticação mútua usando o serviço gNOI CertificateManagement

Você pode usar o serviço gNOI CertificateManagement para configurar a autenticação mútua entre o cliente gRPC e o servidor gRPC em vez de definir as configurações diretamente na configuração do dispositivo. Inicialmente, você configura a autenticação somente do servidor e, em seguida, usa os RPCs do serviço gNOI CertificateManagement para carregar os certificados de CA do cliente. Consulte Serviço de Gerenciamento de Certificados gNOI para obter informações sobre como carregar os certificados usando o serviço gNOI CertificateManagement .

O servidor gRPC oferece suporte a apenas um pacote de certificado de CA global para serviços gNOI. Quando você usa o serviço gNOI CertificateManagement para carregar o pacote de certificados de CA, o dispositivo usa implicitamente a autenticação mútua. No entanto, você deve observar o seguinte:

  • O CertificateManagement serviço sempre carrega o pacote de certificados de CA usando o identificador gnoi-ca-bundlereservadoca-profile-group.

  • Se você usar o CertificateManagement serviço para carregar o pacote de certificados de CA, o dispositivo usará implicitamente a autenticação mútua.

  • Se o CertificateManagement serviço enviar uma solicitação para carregar um novo pacote de certificados de CA, o servidor limpará os certificados do pacote de CA anterior do dispositivo e carregará os novos.

  • Se você usar o CertificateManagement serviço para carregar um pacote de certificados de CA e também configurar explicitamente a autenticação mútua na configuração do dispositivo, as instruções configuradas terão precedência.

Configurar a conta de usuário para serviços gRPC

As credenciais do canal são anexadas ao canal gRPC e permitem que o aplicativo cliente acesse o serviço. As credenciais de chamada são anexadas a uma solicitação RPC específica e fornecem informações sobre o usuário que está usando o aplicativo cliente. Você deve fornecer credenciais de chamada em cada solicitação RPC, o que requer uma conta de usuário para o dispositivo de rede. O usuário deve ter uma conta de usuário definida localmente no dispositivo de rede ou o usuário deve ser autenticado por um servidor TACACS+, que mapeia o usuário para uma conta de modelo de usuário definida localmente no dispositivo.

Para criar uma conta de usuário:

  1. Configure a user instrução com um nome de usuário exclusivo e inclua a class instrução para especificar uma classe de login que tenha as permissões necessárias para que todas as ações sejam executadas pelo usuário. Por exemplo:
  2. Para contas de usuário locais, configure a senha do usuário.

    Você pode omitir a senha para contas de modelo de usuário local porque o usuário é autenticado por meio de um servidor de autenticação remoto.

  3. (Opcional) Configure a full-name instrução para especificar o nome do usuário.
  4. Confirme a configuração para ativar a conta de usuário no dispositivo.
  5. Repita as etapas anteriores em cada dispositivo de rede em que o cliente gRPC executará RPCs em uma sessão gRPC.

Configurar a autorização RPC do gRPC

Por padrão, os dispositivos Junos autorizam um cliente gRPC autenticado a executar todos os RPCs gRPC. Você pode configurar uma classe de login do Junos para permitir ou negar explicitamente RPCs gRPC. Para especificar os RPCs, configure as allow-grpc-rpc-regexps instruções and deny-grpc-rpc-regexps e defina expressões regulares que correspondam aos RPCs. Se houver expressões conflitantes nas listas de permissões e negações, a lista de negações terá precedência. Se um RPC não corresponder a nenhuma das listas, o RPC será permitido por padrão.

Os dispositivos Junos usam a seguinte sintaxe para especificar RPCs gRPC:

Onde package, service, e rpc são os nomes definidos na respectiva instrução no arquivo de proto definição desse serviço. Por exemplo:

Você pode configurar várias allow-grpc-rpc-regexps instruções and deny-grpc-rpc-regexps com uma ou mais expressões. Coloque cada expressão entre aspas (" "). Coloque várias expressões entre colchetes [ ] e separe as expressões com um espaço.

Para criar uma classe de login que define a autorização para RPCs gRPC:

  1. Configure o nome e as permissões da classe de login.

    Por exemplo:

  2. Dentro da classe, configure expressões regulares para os RPCs que a classe permite.

    Por exemplo, a instrução a seguir permite o RPC gNMI Get() e todos os RPCs de serviço gNOI System .

  3. Configure expressões regulares para os RPCs que a classe nega.

    Por exemplo, as instruções a seguir negam o RPC gNMI Set() e também negam todos os RPCs para o gRIBI serviço, bem como o serviço gNOI CertificateManagement .

  4. Atribua a classe de login aos usuários gRPC apropriados.

    Por exemplo, a instrução a seguir atribui a grpc-operator classe ao grpc-user usuário.

Depois de habilitar os serviços gRPC no dispositivo de rede, configure o NMS remoto como um cliente gRPC. Para permitir que o cliente execute operações gNOI, configure-o conforme descrito em Configurar serviços gNOI.

Tabela de histórico de alterações

A compatibilidade com recursos é determinada pela plataforma e versão utilizada. Use o Explorador de recursos para determinar se um recurso é compatível com sua plataforma.

Lançamento
Descrição
25.2R1 & 25.2R1-EVO
A partir do Junos OS Release 25.2R1 e do Junos OS Evolved Release 25.2R1, você pode configurar vários servidores gRPC que hospedam diferentes conjuntos de serviços em portas exclusivas.