Esta página aplica-se ao Apigee e ao Apigee Hybrid.
Veja a documentação do
Apigee Edge.
Como obter uma chave da API
O exemplo seguinte explica como obter uma chave da API que pode usar para validar chamadas da API para um serviço de destino encaminhado através do Apigee Adapter for Envoy.
1. Inicie sessão no Apigee
- Abra a IU do Apigee num navegador.
- Depois de aceder à IU, selecione a mesma organização que usou para configurar o Apigee Adapter for Envoy.
2. Crie um programador
Pode usar um programador existente para testes ou criar um novo da seguinte forma:
- Selecione Publicar > Programadores no menu de navegação lateral.
- Clique em + Programador.
- Preencha a caixa de diálogo para criar um novo programador. Pode usar qualquer nome/email de programador que quiser.
3. Crie um produto de API
Siga o exemplo de criação de produtos fornecido abaixo. Consulte também Acerca da configuração do produto da API.
- Selecione Publicar > Produtos de API no menu de navegação lateral.
- Clique em +Criar.
- Preencha a página de detalhes do produto da seguinte forma. Não clique em Guardar até receber essa instrução.
Campo Valor Nome httpbin-product
Nome a apresentar httpbin product
Ambiente your_environment Defina esta opção para o ambiente que usou quando aprovisionou o Apigee Adapter for Envoy com o
apigee-remote-service-cli
.Acesso Private
Quota 5 pedidos a cada 1 minuto Consulte também o artigo Acerca dos produtos de API.
- Na secção Atributos personalizados, clique em +ADICIONAR ATRIBUTO PERSONALIZADO.
- Introduza este par nome/valor:
- Nome: introduza este nome de atributo:
apigee-remote-service-targets
- Valor: introduza o nome do serviço de destino. Por exemplo:
httpbin.org
- Nome: introduza este nome de atributo:
- Clique em OK.
- Clique em Guardar.
4. Crie uma app de programador
- Selecione Publicar > Apps no menu de navegação lateral.
- Clique em + App.
- Preencha a página da app do programador da seguinte forma. Não clique em Guardar até receber essa instrução.
- Na secção Credenciais, clique em + Adicionar produto e selecione o produto que acabou de configurar: httpbin-product.
- Clique em Criar.
- Em Credenciais, clique em Mostrar junto à Chave.
- Copie o valor da chave do consumidor. Este valor é a chave da API
que vai usar para fazer chamadas API para o serviço
httpbin
.
Nome | httpbin-app
|
Nome a apresentar | httpbin app
|
Programador | Selecione o programador que criou anteriormente ou escolha qualquer programador que pretender na lista. |
Acerca dos produtos de API
Os produtos de API são o ponto de controlo principal do serviço remoto do Apigee. Quando cria um produto API e o associa a um serviço de destino, está a criar uma política que será aplicada a todos os pedidos que configurar o seu adaptador do Apigee para o Envoy para processar.
Definição do API Product
Quando define um produto de API no Apigee, pode definir vários parâmetros que serão usados para avaliar pedidos:
- Destino
- Caminho do pedido
- Quota
- âmbitos do OAuth
Destinos de serviços remotos
A definição do produto API aplica-se a um pedido se o pedido corresponder à associação de destino (por exemplo, httpbin.org
) e ao caminho do pedido (por exemplo, /httpbin
).
Uma lista de potenciais destinos é armazenada como um atributo no produto API.
Por predefinição, o serviço remoto do Apigee verifica o cabeçalho especial :authority (host)
do Envoy em relação à respetiva lista de destinos. No entanto, pode ser configurado para usar outros cabeçalhos.
Caminho do recurso da API
O caminho introduzido corresponde de acordo com as seguintes regras:
- Uma única barra (
/
) corresponde a qualquer caminho. *
é válido em qualquer lugar e corresponde a um segmento (entre barras).**
é válido no final e corresponde a qualquer coisa até ao final da linha.
Quota
Uma quota especifica o número de mensagens de pedido que uma app pode enviar para uma API ao longo de uma hora, um dia, uma semana ou um mês. Quando uma app atinge o limite da quota, as chamadas de API subsequentes são rejeitadas.
Exemplos de utilização de quotasAs quotas permitem-lhe aplicar o número de pedidos que um cliente pode fazer a um serviço num determinado período. As quotas são frequentemente usadas para aplicar contratos comerciais ou SLAs com programadores e parceiros, em vez de para a gestão operacional do tráfego. Por exemplo, uma quota pode ser usada para limitar o tráfego de um serviço gratuito, ao mesmo tempo que permite o acesso total aos clientes pagantes.
A quota é definida num produto da APIOs parâmetros de quota são configurados nos produtos de API. Por exemplo, quando cria um produto de API, pode definir opcionalmente o limite de quota permitido, a unidade de tempo e o intervalo.
>
Uma vez que as chaves da API são mapeadas novamente para os produtos da API, sempre que uma chave da API é validada, o contador de quota adequado pode ser decrementado (se for definida uma quota no produto associado).
Ao contrário do tempo de execução do Apigee, as quotas introduzidas na definição do produto são aplicadas automaticamente pelo serviço remoto do Apigee. Se o pedido for autorizado, o pedido é contabilizado em relação à quota permitida.
Onde são mantidas as quotasAs quotas são mantidas e verificadas localmente pelo processo de serviço remoto e mantidas de forma assíncrona com o Apigee Runtime. Isto significa que as quotas não são precisas e é provável que haja algum excesso se tiver mais do que um serviço remoto a manter a quota. Se a ligação ao Apigee Runtime for interrompida, a quota local continua como uma quota autónoma até poder voltar a estabelecer ligação ao Apigee Runtime.
Âmbitos do OAuth
Se estiver a usar tokens JWT, pode restringir os tokens a subconjuntos dos âmbitos OAuth permitidos. Os âmbitos atribuídos ao seu token JWT emitido são verificados em relação aos âmbitos do produto API.
Acerca das apps de programadores
Depois de configurar os seus produtos da API, cria uma app associada a um programador. A app permite que um cliente aceda aos produtos de API associados com uma chave de API ou um token JWT.
Usar a autenticação baseada em JWT
Pode usar um token JWT para fazer chamadas de proxy de API autenticadas em vez de usar uma chave da API. Esta
secção explica como usar o comando apigee-remote-service-cli token
para
criar, inspecionar e rodar tokens JWT. Para o ambiente híbrido do Apigee, pode usar este comando para criar um segredo do Kubernetes para armazenar os JWTs.
Vista geral
A validação e a autenticação JWT são processadas pelo Envoy através do respetivo filtro de autenticação JWT.
Após a autenticação, o filtro ext-authz
do Envoy envia os cabeçalhos de pedidos e o JWT para apigee-remote-service-envoy
. Faz corresponder as reivindicações api_product_list
e scope
do JWT
aos produtos da API Apigee para o autorizar em relação ao destino do pedido.
Criar tokens JWT do Apigee
Os tokens JWT do Apigee podem ser criados através da CLI:
apigee-remote-service-cli token create -c config.yaml --id $KEY --secret $SECRET
Em alternativa, através do ponto final do token OAuth padrão. Exemplo de curl:
curl https://org-env.apigee.net/remote-service/token -d '{"client_id":"myclientid","client_secret":"myclientsecret","grant_type":"client_credentials"}' -H "Content-type: application/json"
Usar o token JWT
Assim que tiver o token, basta transmiti-lo ao Envoy no cabeçalho de autorização. Exemplo:
curl localhost:8080/httpbin/headers -i -H "Authorization:Bearer $TOKEN"
Falha do token JWT
Rejeição do Envoy
Se o Envoy rejeitar o token, pode ver uma mensagem como:
Jwks remote fetch is failed
Se for o caso, certifique-se de que a configuração do Envoy contém um URI válido na secção remote_jwks
, que o Envoy consegue aceder ao mesmo e que definiu corretamente os certificados quando instalou o proxy do Apigee. Deve conseguir
chamar o URI diretamente com uma chamada GET e receber uma resposta JSON válida.
Exemplo:
curl https://myorg-eval-test.apigee.net/remote-service/certs
Outras mensagens da Envoy podem ter o seguinte aspeto:
- "Audiences in Jwt are not allowed" (Os públicos-alvo em JWT não são permitidos)
- "Jwt issuer is not configured" (O emissor de JWT não está configurado)
Estes são requisitos na sua configuração do Envoy que pode ter de modificar.
Inspecione um token
Pode usar a CLI para inspecionar o seu token. Exemplo
apigee-remote-service-cli -c config.yaml token inspect -f path/to/file
ou
apigee-remote-service-cli -c config.yaml token inspect <<< $TOKEN
Depuração
Consulte o artigo A chave da API válida falha.Registo
Pode ajustar o nível de registo no serviço $REMOTE_SERVICE_HOME/apigee-remote-service-envoy. Todo o registo é enviado para stderr.
Elemento | Obrigatória | Descrição |
---|---|---|
-l, --log-level | Níveis válidos: debug, info, warn, error. | Ajusta o nível de registo. Predefinição: info |
-j, --json-log | Emite a saída do registo como registos JSON. |
O Envoy fornece registo. Para mais informações, consulte os seguintes links da documentação do Envoy:
Alterar o nome do segredo da política
Um segredo do Kubernetes implementado no cluster contém credenciais de que o adaptador precisa para autenticar a comunicação com o proxy do serviço remoto. Este segredo requer um ponto de montagem de volume, que é configurável. Por predefinição, o ponto de montagem é /policy-secret
.
Para alterar o ponto de montagem, siga estes passos:
- Execute este comando:
$REMOTE_SERVICE_HOME/apigee-remote-service-envoy --policy-secret '/new-mount_point_name
Por exemplo:
$REMOTE_SERVICE_HOME/apigee-remote-service-envoy --policy-secret '/my-mount-point
- Abra
$CLI_HOME/samples/apigee-envoy-adapter.yaml
num editor. - Altere o nome do ponto de montagem para o novo nome:
volumeMounts: - mountPath: /config name: apigee-remote-service-envoy readOnly: true - mountPath: /opt/apigee/tls name: tls-volume readOnly: true - mountPath: /my-mount-point name: policy-secret readOnly: true
- Guarde o ficheiro e aplique-o à malha de serviços:
kubectl apply -f $REMOTE_SERVICE_HOME/samples/apigee-envoy-adapter.yaml
Usar um proxy de rede
Pode inserir um proxy HTTP através das variáveis de ambiente HTTP_PROXY e HTTPS_PROXY no ambiente do ficheiro binário apigee-remote-service-envoy. Quando as usa, também pode usar a variável de ambiente NO_PROXY para excluir anfitriões específicos do envio através do proxy.
HTTP_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port] HTTPS_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port] NO_PROXY=127.0.0.1,localhost
Lembre-se de que o proxy tem de estar acessível a partir de apigee-remote-service-envoy.
Acerca das métricas e das estatísticas
Um ponto final de métricas do Prometheus está disponível em :5001/metrics
. Pode configurar este número de porta. Consulte o ficheiro de configuração.
Estatísticas do Envoy
Os links seguintes fornecem informações sobre como obter dados de estatísticas do proxy Envoy:
Estatísticas do Istio
Os links seguintes fornecem informações sobre como obter dados de estatísticas do proxy Envoy:
Estatísticas do Apigee
O serviço remoto do Apigee para o Envoy envia estatísticas de pedidos para o Apigee para processamento de estatísticas. O Apigee comunica estes pedidos sob o nome do produto API associado.
Para ver informações sobre as estatísticas do Apigee, consulte o artigo Vista geral dos serviços de estatísticas.