Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Configure os 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 de gRPC, você deve satisfazer os requisitos discutidos nas seguintes seções:

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

As interfaces gNOI, gNMI e gRIBI usam a estrutura de chamada de procedimento remoto gRPC para transporte. O servidor gRPC é executado no dispositivo de rede e ouve solicitações de conexão em uma porta específica. 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 porta especificados. O cliente executa RPCs por meio da sessão de gRPC criptografada por SSL para realizar operações de serviço de rede. A Figura 1 ilustra uma conexão simples entre um cliente gRPC e um servidor.

Figura 1: servidor gRPC e interação gRPC Server and Client Interaction com o cliente

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 certificado 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 forjado 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 do certificado. 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 tanto à autenticação somente ao servidor quanto à autenticação mútua para sessões de gRPC baseadas em SSL. Quando a autenticação somente para servidor é configurada, o servidor fornece seu certificado de chave pública quando o canal é estabelecido. O cliente usa o certificado Root CA 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 pode fazer ligações. Recomendamos que você configure a autenticação mútua e use certificados assinados por CA para obter a mais forte segurança, embora os certificados auto-assinados sejam aceitos.

Uma infraestrutura de chave pública (PKI) oferece suporte à distribuição e identificação de chaves de criptografia pública, permitindo que os usuários troquem dados com segurança por redes como a Internet e verifiquem a identidade da outra parte. Para serviços baseados em gRPC, o Junos PKI deve conter o certificado para o dispositivo local que atua como servidor gRPC. Se você usa autenticação mútua, o Junos PKI também deve conter os certificados De CA Raiz necessários para validar os certificados de quaisquer clientes gRPC que se conectem 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 de host do servidor no campo nome comum (CN), ou deve definir o endereço IP do servidor no campo de Endereço IP de nome alternativo sujeito (nome sujeitoAlt 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 mútua e somente de servidor para sessões de gRPC
Requisitos Autenticação mútua somente para servidor
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 de host, o certificado do servidor deve incluir o campo de extensão de endereço IP de Nomealt (SAN) sujeito com o endereço IP do servidor.

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

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

Junos PKI

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

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

Credenciais de canal

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

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

As credenciais de canal são anexadas ao canal gRPC e permitem que o aplicativo do 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 de RPC) e fornecem informações sobre a pessoa que está usando o aplicativo do cliente. As credenciais de chamada são enviadas por solicitação, ou seja, para cada chamada de 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 então mapeia o usuário para uma conta modelo de usuário que é 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 de RPC usando os privilégios de conta do usuário especificado.

Nota:

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

Por padrão, os dispositivos Junos autorizam um cliente gRPC autenticado a executar todos os RPCs gRPC. Você pode configurar opcionalmente a classe de login de um usuário gRPC para permitir ou negar explicitamente RPCs gRPC específicos. Para especificar os RPCs, você configura as declarações e deny-grpc-rpc-regexps as allow-grpc-rpc-regexps declarações e define expressões regulares compatíveis com os RPCs. Consulte Configure a autorização de RPC do gRPC para obter mais informações.

Obtenha certificados X.509

A sessão de gRPC criptografada por SSL 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, tanto o servidor gRPC quanto o cliente devem ter certificados. Os requisitos para os certificados são:

  • O certificado pode ser assinado por uma autoridade de certificado (CA) ou autografado.

  • O certificado deve ser codificado por PEM.

  • O certificado do servidor gRPC deve definir o nome de 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.

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 arquivo de configuração aberto.cnf ou 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 e as informações da entidade sobre sua identidade.

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

  4. Gere o certificado fazendo um dos seguintes:
    • Envie o CSR a uma autoridade de certificado para solicitar um certificado X.509 e forneça o arquivo de configuração para incluir quaisquer extensões adicionais.

    • Assine o CSR com um CA para gerar o certificado e inclua a opção -extfile se você precisar consultar seu arquivo de configuração e extensões.

    • Assine o CSR com a chave do servidor para gerar um certificado auto-assinado e inclua a opção -extfile se você precisar consultar seu arquivo de configuração e extensões.

  5. Verifique se o campo e as extensões de nome comum (CN) do certificado, se fornecidos, estão corretos.

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

Carregue 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 identifica o dispositivo aos clientes gRPC. Para executar 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 realizar a configuração inicial, os clientes gRPC podem então usar qualquer microsserviamento 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 no PKI:

  1. Baixe o certificado e a chave para o dispositivo que está atuando como servidor gRPC para esse dispositivo.
  2. No modo operacional, defina um identificador e carregue o certificado do dispositivo local e a chave para o PKI.
  3. (Opcional) Verifique se o certificado está presente no banco de dados PKI.

Habilite 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). Para uma conexão baseada em SSL, você deve especificar um certificado local que identifica o servidor gRPC.

Depois de habilitar serviços gRPC e especificar um certificado local, o dispositivo de rede usa autenticação somente para servidores. Em seguida, você pode configurar opcionalmente a autenticação mútua completando as etapas descritas na Autenticação Mútua configurada (bidirecional) para serviços gRPC.

Para configurar seu dispositivo de rede para serviços gRPC e especificar o certificado local usado para autenticação de servidor:

  1. Navegue até as configurações de conexão de API baseadas em SSL para serviços gRPC.
  2. Configure a porta para usar para serviços gRPC.

    Por exemplo:

  3. Especifique um certificado local.

    Insira o identificador para o certificado local que você carregou anteriormente no Junos PKI com o comando de request security pki local-certificate load modo operacional.

    O exemplo a seguir configura o certificado gnoi-serverlocal:

  4. Configure o dispositivo para usar o banco de dados PKI para certificados.
  5. Habilite o dispositivo para recarregar certificados sem encerrar a sessão do gRPC.
  6. (Opcional) Especifique um endereço IP para ouvir as conexões de entrada.

    Por exemplo:

    Nota:

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

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

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

  8. Confirmar a configuração.

Para configurar a autenticação mútua em vez de autenticação somente para servidores, você também deve concluir as etapas na Configuração de autenticação mútua (bidirecional) para serviços gRPC.

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

Você pode configurar a autenticação mútua (bidirecional) para sessões de gRPC, que autentica tanto o dispositivo de rede como o servidor gRPC e o sistema de gerenciamento de rede como o cliente gRPC usando certificados SSL. 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:

  • Configure as configurações de autenticação mútua diretamente sob o nível de [edit system services extension-service request-response grpc ssl mutual-authentication] hierarquia.

  • Configure inicialmente a autenticação somente do servidor e 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 tem 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 qualquer método que funcione melhor para o seu ambiente.

Configure a 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 servidor gRPC.

  2. Configure o perfil da autoridade de certificados para o CA raiz do certificado cliente na [edit security pki] hierarquia.

    Por exemplo:

  3. Confirmar 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:

    Ponta:

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

    Após o carregamento do certificado, insira o modo de configuração e continue configurando a autenticação mútua.

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

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

    Nota:

    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 opção no-certificate apenas em um ambiente de teste.

  6. Especifique o perfil da autoridade do certificado que será usado para verificar o certificado do cliente.

    O perfil de autoridade do certificado foi configurado na etapa 2.

    Por exemplo, especificar o perfil da autoridade do certificado denominado gnoi-client:

  7. Confirmar a configuração.

Configure a autenticação mútua usando o serviço de gerenciamento de certificados gNOI

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 configurar as configurações diretamente na configuração do dispositivo. Inicialmente, você configura a autenticação somente para servidor e depois usa os RPCs de serviço gNOI CertificateManagement para carregar os certificados ca do cliente. Consulte o Serviço de gerenciamento de certificados gNOI para obter informações sobre o carregamento dos certificados usando o serviço gNOI CertificateManagement .

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

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

  • Se você usar o CertificateManagement serviço para carregar o pacote de certificados ca, o dispositivo usa implicitamente a autenticação mútua e assume a configuração a seguir, embora não esteja explicitamente configurado no dispositivo.

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

  • Se você usar o CertificateManagement serviço para carregar um pacote de certificados CA e também configurar a hierarquia de [edit system services extension-service request-response grpc ssl mutual-authentication] declaração, as declarações configuradas prevalecerão.

Configure a conta do usuário para serviços gRPC

As credenciais de canal são anexadas ao canal gRPC e permitem que o aplicativo do cliente acesse o serviço. As credenciais de chamada são anexadas a uma solicitação de RPC específica e fornecem informações sobre o usuário que está usando o aplicativo do cliente. Você deve fornecer credenciais de chamada em cada solicitação de 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 então mapeia o usuário para uma conta modelo de usuário que é definida localmente no dispositivo.

Para criar uma conta de usuário:

  1. Configure a user declaração com um nome de usuário exclusivo e inclua a class declaração para especificar uma aula de login que tenha as permissões necessárias para que todas as ações sejam realizadas 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 locais porque o usuário é autenticado por meio de um servidor de autenticação remota.

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

Configure a autorização de RPC do gRPC

Por padrão, os dispositivos Junos autorizam um cliente gRPC autenticado a executar todos os RPCs gRPC. Você pode configurar uma aula de login do Junos para permitir ou negar explicitamente RPCs gRPC. Para especificar os RPCs, você configura as declarações e deny-grpc-rpc-regexps as allow-grpc-rpc-regexps declarações e define expressões regulares compatíveis com os RPCs. Se houver expressões conflituosas nas listas de permissão e negação, a lista de negação prevalece. 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, servicee rpc são os nomes definidos na respectiva declaração no arquivo proto-definição desse serviço. Por exemplo:

Você pode configurar várias allow-grpc-rpc-regexps e deny-grpc-rpc-regexps declarações com uma ou mais expressões. Inclua cada expressão dentro das cotações (" "). Coloque várias expressões em parênteses quadrados e separe as expressões com um espaço.

Para criar uma aula 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 declaraçã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 seguintes declarações 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 de gRPC apropriados.

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

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