Przewodnik po korzystaniu

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

Jak uzyskać klucz interfejsu API

Z przykładu poniżej dowiesz się, jak uzyskać klucz interfejsu API, którego możesz użyć do weryfikacji wywołań interfejsu API do usługi docelowej przekazywanej przez Apigee Adapter for Envoy.

1. Logowanie w Apigee

  1. Otwórz interfejs Apigee w przeglądarce.
  2. W interfejsie wybierz tę samą organizację, której użyto do skonfigurowania Apigee Adapter for Envoy.

2. Tworzenie programisty

Możesz użyć istniejącego konta dewelopera na potrzeby testowania lub utworzyć nowe w ten sposób:

  1. W menu nawigacyjnym po lewej stronie kliknij Opublikuj > Deweloperzy.
  2. Kliknij + Programista.
  3. Wypełnij okno, aby utworzyć nowego dewelopera. Możesz użyć dowolnej nazwy dewelopera lub adresu e-mail.

3. Tworzenie usługi API

Postępuj zgodnie z przykładem tworzenia produktu podanym poniżej. Zobacz też Informacje o konfiguracji produktu interfejsu API.

  1. W menu nawigacyjnym po lewej stronie wybierz Opublikuj > Produkty interfejsu API.
  2. Kliknij + Usługa API.
  3. Wypełnij stronę Szczegóły produktu w ten sposób:
  4. Pole Wartość
    Nazwa httpbin-product
    Wyświetlana nazwa httpbin product
    Środowisko your_environment

    Ustaw to pole na środowisko, którego użyto podczas udostępniania Apigee Adapter for Envoy.

    Dostęp Private
    Quota 5 żądań na minutę

    Zobacz też Quota.

  5. W sekcji Cele zdalnych usług Apigee kliknij Dodaj cel zdalnej usługi Apigee.
  6. W oknie docelowym usługi zdalnej Apigee dodaj te wartości:
    Atrybut Wartość Opis
    Nazwa miejsca docelowego Wpisz nazwę usługi docelowej. Na przykład: httpbin.org Docelowy punkt końcowy, przed którym znajduje się serwer proxy Envoy.
    Ścieżka Wpisz ścieżkę zasobu w usłudze, do której chcesz dopasować dane. Na przykład: /headers. Ścieżka żądania, która ma być dopasowana w punkcie końcowym. Wywołania proxy interfejsu API do tej ścieżki będą pasować do tej usługi API.
  7. Kliknij Zapisz.

4. Tworzenie aplikacji związanej z programistą

  1. W menu nawigacyjnym po lewej stronie kliknij Opublikuj > Aplikacje.
  2. Kliknij + Aplikacja.
  3. Wypełnij stronę aplikacji dewelopera w ten sposób: Nie zapisuj zmian, dopóki nie otrzymasz takiej instrukcji.
  4. Nazwa httpbin-app
    Wyświetlana nazwa httpbin app
    Deweloper Wybierz utworzonego wcześniej dewelopera lub dowolnego dewelopera z listy.
  5. Następnie dodaj produkt API do aplikacji:
    1. W sekcji Dane logowania kliknij + Dodaj usługę i wybierz skonfigurowaną przed chwilą usługę: httpbin-product.
    2. Kliknij Utwórz.
    3. W sekcji Dane logowania kliknij Pokaż obok Klucz.
    4. Skopiuj wartość klucza klienta. Jest to klucz interfejsu API, którego będziesz używać do wywoływania interfejsu API usługi httpbin.

    Informacje o usługach API

    Produkty API to główny punkt kontrolny usługi zdalnej Apigee. Gdy tworzysz produkt API i łączysz go z usługą docelową, tworzysz zasadę, która będzie stosowana do wszystkich żądań, które skonfigurujesz w Apigee Adapter for Envoy.

    Definicja usługi API

    Podczas definiowania produktu interfejsu API w Apigee możesz ustawić szereg parametrów, które będą używane do oceny żądań:

    • Cel
    • Ścieżka żądania
    • Limit
    • Zakresy protokołu OAuth

    Cele usługi zdalnej

    Definicja usługi API będzie stosowana do żądania, jeśli pasuje ono zarówno do powiązania docelowego (np. httpbin.org), jak i do ścieżki żądania (np. /httpbin). Lista potencjalnych miejsc docelowych jest przechowywana jako atrybut usługi API.

    Domyślnie usługa zdalna Apigee sprawdza specjalny nagłówek :authority (host) Envoy pod kątem listy celów, ale można ją skonfigurować tak, aby używała innych nagłówków.

    Ścieżka zasobu interfejsu API

    Wpisana ścieżka jest dopasowywana zgodnie z tymi regułami:

    • Pojedynczy ukośnik (/) pasuje do każdej ścieżki.
    • Symbol * jest prawidłowy w dowolnym miejscu i pasuje do segmentu (między ukośnikami).
    • Znak ** jest prawidłowy na końcu i pasuje do wszystkiego do końca wiersza.

    Limit

    Limit określa liczbę wiadomości z żądaniami, które aplikacja może przesyłać do interfejsu API w ciągu godziny, dnia, tygodnia lub miesiąca. Gdy aplikacja osiągnie limit, kolejne wywołania interfejsu API zostaną odrzucone.

    Przypadki użycia limitu

    Limity umożliwiają egzekwowanie liczby żądań, które klient może wysyłać do usługi w określonym czasie. Limity są często używane do egzekwowania umów handlowych lub umów SLA z deweloperami i partnerami, a nie do zarządzania ruchem operacyjnym. Na przykład limit może być używany do ograniczania ruchu w przypadku bezpłatnej usługi, a jednocześnie umożliwiać pełny dostęp klientom, którzy za nią płacą.

    Limit jest zdefiniowany w usłudze API

    Parametry limitu są konfigurowane w usługach API. Na przykład podczas tworzenia produktu API możesz opcjonalnie ustawić dozwolony limit wykorzystania, jednostkę czasu i interwał.

    Klucze API są powiązane z usługami API, więc za każdym razem, gdy klucz API zostanie zweryfikowany, odpowiedni licznik limitu może zostać zmniejszony (jeśli w powiązanej usłudze zdefiniowano limit).

    W przeciwieństwie do środowiska wykonawczego Apigee limity wpisane w definicji produktu są automatycznie egzekwowane przez usługę zdalną Apigee. Jeśli prośba zostanie autoryzowana, zostanie uwzględniona w dozwolonym limicie.

    Gdzie są utrzymywane limity

    Limity są utrzymywane i sprawdzane lokalnie przez proces usługi zdalnej oraz asynchronicznie utrzymywane w środowisku wykonawczym Apigee. Oznacza to, że limity nie są precyzyjne i prawdopodobnie zostaną przekroczone, jeśli masz więcej niż jedną usługę zdalną, która utrzymuje limit. Jeśli połączenie ze środowiskiem wykonawczym Apigee zostanie przerwane, lokalny limit będzie nadal działać jako samodzielny limit do momentu ponownego połączenia ze środowiskiem wykonawczym Apigee.

    Zakresy OAuth

    Jeśli używasz tokenów JWT, możesz ograniczyć je do podzbiorów dozwolonych zakresów OAuth. Zakresy przypisane do wydanego tokena JWT zostaną sprawdzone pod kątem zgodności z zakresami usługi API.

    Informacje o aplikacjach dla deweloperów

    Po skonfigurowaniu produktów interfejsu API utworzysz aplikację powiązaną z deweloperem. Aplikacja umożliwia klientowi dostęp do powiązanych usług API za pomocą klucza API lub tokena JWT.

    Uwierzytelnianie oparte na JWT

    Zamiast klucza interfejsu API możesz używać tokena JWT do wykonywania uwierzytelnionych wywołań proxy interfejsu API. W tej sekcji dowiesz się, jak używać polecenia apigee-remote-service-cli token do tworzenia, sprawdzania i rotowania tokenów JWT.

    Przegląd

    Weryfikacja i uwierzytelnianie tokenów JWT jest obsługiwane przez Envoy za pomocą filtra uwierzytelniania JWT.

    Po uwierzytelnieniu filtr ext-authz Envoy wysyła nagłówki żądań i JWT do apigee-remote-service-envoy. Porównuje roszczenia api_product_list i scope w JWT z usługami API Apigee, aby autoryzować je względem miejsca docelowego żądania.

    Tworzenie tokenów JWT Apigee

    Tokeny JWT Apigee można tworzyć za pomocą interfejsu wiersza poleceń:

    $CLI_HOME/apigee-remote-service-cli token create -c config.yaml --id $KEY --secret $SECRET

    Możesz też użyć standardowego punktu końcowego tokena OAuth. Przykład polecenia curl:

    curl https://org-env.apigee.net/remote-token/token -d '{"client_id":"myclientid","client_secret":"myclientsecret","grant_type":"client_credentials"}' -H "Content-type: application/json"

    Używanie tokena JWT

    Gdy uzyskasz token, po prostu przekaż go do Envoy w nagłówku Authorization. Przykład:

    curl localhost:8080/httpbin/headers -i -H "Authorization:Bearer $TOKEN"

    Błąd tokena JWT

    Odrzucenie przez Envoy

    Jeśli Envoy odrzuci token, może się pojawić komunikat podobny do tego:

    Jwks remote fetch is failed

    Jeśli tak jest, upewnij się, że konfiguracja Envoy zawiera prawidłowy identyfikator URI w sekcji remote_jwks, że jest on dostępny dla Envoy i że podczas instalowania serwera proxy Apigee certyfikaty zostały prawidłowo ustawione. Powinna być możliwość bezpośredniego wywołania identyfikatora URI za pomocą wywołania GET i otrzymania prawidłowej odpowiedzi JSON.

    Przykład:

    curl https://myorg-eval-test.apigee.net/remote-service/certs

    Inne wiadomości od Envoy mogą wyglądać tak:

    • „Audiences in Jwt are not allowed”
    • „Wystawca JWT nie jest skonfigurowany”

    Wynikają one z wymagań w konfiguracji Envoy, które być może trzeba będzie zmodyfikować.

    Sprawdzanie tokena

    Za pomocą interfejsu wiersza poleceń możesz sprawdzić swój token. Przykład

    $CLI_HOME/apigee-remote-service-cli -c config.yaml token inspect -f path/to/file

    lub

    $CLI_HOME/apigee-remote-service-cli -c config.yaml token inspect <<< $TOKEN

    Debugowanie

    Zobacz Prawidłowy klucz interfejsu API nie działa.

    Logowanie

    Poziom rejestrowania możesz dostosować w usłudze $REMOTE_SERVICE_HOME/apigee-remote-service-envoy. Wszystkie logi są wysyłane do stdout i stderr.

    Element Wymagane Opis
    -l, --log-level Prawidłowe poziomy: debug, info, warn, error. Dostosowuje poziom rejestrowania. Domyślnie: info
    -j, --json-log Emituje dane wyjściowe logu jako rekordy JSON.

    Envoy zapewnia logowanie. Więcej informacji znajdziesz w dokumentacji Envoy:

    Korzystanie z serwera proxy sieci

    Serwer proxy HTTP można wstawić za pomocą zmiennych środowiskowych HTTP_PROXY i HTTPS_PROXY w środowisku pliku binarnego apigee-remote-service-envoy. W takim przypadku możesz też użyć zmiennej środowiskowej NO_PROXY, aby wykluczyć określonych hostów z przesyłania przez serwer 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

    Pamiętaj, że serwer proxy musi być dostępny z apigee-remote-service-envoy.

    Informacje o danych i statystykach

    Punkt końcowy danych Prometheusa jest dostępny pod adresem :5001/metrics. Możesz skonfigurować ten numer portu. Zobacz Plik konfiguracji.

    Statystyki Envoy

    Poniższe linki zawierają informacje o uzyskiwaniu danych analitycznych serwera proxy Envoy:

    Statystyki Istio

    Poniższe linki zawierają informacje o uzyskiwaniu danych analitycznych serwera proxy Envoy:

    Analityka Apigee

    Usługa zdalna Apigee dla Envoy wysyła statystyki żądań do Apigee w celu przetworzenia ich na potrzeby analiz. Apigee raportuje te żądania pod nazwą powiązanego produktu API.

    Więcej informacji o analityce Apigee znajdziesz w omówieniu usług analitycznych.

    Obsługa środowiska z wieloma najemcami

    Możesz teraz włączyć adapter do obsługi wielu środowisk w organizacji Apigee. Ta funkcja umożliwia używanie jednego adaptera Apigee dla Envoy powiązanego z jedną organizacją Apigee do obsługi wielu środowisk. Przed tą zmianą jeden adapter był zawsze powiązany z jednym środowiskiem Apigee.

    Aby skonfigurować obsługę wielu środowisk, zmień wartość tenant:env_name na * w pliku config.yaml. Na przykład:

    1. Otwórz plik config.yaml w edytorze.
    2. Zmień wartość tenant.env_name na *. Na przykład:
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: apigee-remote-service-envoy
        namespace: apigee
      data:
        config.yaml: |
          tenant:
            remote_service_api: https://myorg-myenv.apigee.net/remote-service
            org_name: apigee-docs-hybrid-a
            env_name: *
            allow_unverified_ssl_cert: true
          analytics:
            collection_interval: 10s
          auth:
            jwt_provider_key: https://myorg-myenv.apigee.net.net/remote-token/token
    3. Zapisz plik.
    4. Zastosuj plik:
      kubectl apply -f $CLI_HOME/config.yaml

    Podczas konfigurowania trybu wielu środowisk musisz też skonfigurować Envoy, aby wysyłał do adaptera odpowiednią wartość środowiska. W tym celu dodaj te metadane w sekcji virtual_hosts:routes pliku envoy-config.yaml. Na przykład:

    1. Wygeneruj plik envoy-config.yaml za pomocą interfejsu wiersza poleceń. Na przykład:
      $CLI_HOME/apigee-remote-service-cli samples create \
        -t envoy-1.16 -c ./config.yaml --out myconfigs
    2. Otwórz wygenerowany plik (o nazwie envoy-config.yaml).
    3. Dodaj te metadane w sekcji virtual_host lub routes pliku:
      typed_per_filter_config:
        envoy.filters.http.ext_authz:
          "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
          check_settings:
            context_extensions:
              apigee_environment: test

      W przykładzie poniżej pokazujemy konfigurację virtual_host z kilkoma zdefiniowanymi trasami, z których każda wysyła ruch do określonego środowiska:

      filter_chains:
          - filters:
            - name: envoy.filters.network.http_connection_manager
              typed_config:
                "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
                stat_prefix: ingress_http
                route_config:
                  virtual_hosts:
                  - name: default
                    domains: "*"
                    routes:
                    - match: { prefix: /test }
                      route:
                        cluster: httpbin
                      typed_per_filter_config:
                        envoy.filters.http.ext_authz:
                          "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
                          check_settings:
                            context_extensions:
                               apigee_environment: test
                    - match: { prefix: /prod }
                      route:
                        cluster: httpbin
                      typed_per_filter_config:
                        envoy.filters.http.ext_authz:
                          "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
                          check_settings:
                            context_extensions:
                               apigee_environment: prod
    4. W razie potrzeby powtórz ostatni krok, aby dodać kolejne środowiska.
    5. Zapisz plik i zastosuj go.

    Konfigurowanie mTLS między adapterem a środowiskiem wykonawczym Apigee

    W sekcji tenant pliku config.yaml adaptera możesz podać certyfikaty TLS po stronie klienta, aby używać mTLS między adapterem a środowiskiem wykonawczym Apigee. Ta zmiana dotyczy wszystkich obsługiwanych platform Apigee. Umożliwia też mTLS w przypadku statystyk na platformie Apigee Edge dla chmury prywatnej. Na przykład:

    tenant:
      tls:
        ca_file: path/ca.pem
        cert_file: path/cert.pem
        key_file: path/key.pem
        allow_unverified_ssl_cert: false