Руководство по эксплуатации

Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee
X.info

Как получить ключ API

В следующем примере объясняется, как получить ключ API, который можно использовать для проверки вызовов API к целевому сервису, проксируемому через Apigee Adapter for Envoy.

1. Войдите в Apigee.

  1. Откройте пользовательский интерфейс Apigee в браузере.
  2. После входа в пользовательский интерфейс выберите ту же организацию, которую вы использовали для настройки адаптера Apigee для Envoy.

2. Создайте разработчика.

Для тестирования можно использовать уже существующего разработчика или создать нового следующим образом:

  1. В боковом навигационном меню выберите «Опубликовать» > «Разработчики» .
  2. Click + Developer.
  3. Заполните диалоговое окно, чтобы создать нового разработчика. Вы можете использовать любое имя/адрес электронной почты разработчика по своему усмотрению.

3. Создайте API-продукт

Следуйте приведенному ниже примеру создания продукта. См. также раздел «О настройке продукта API» .

  1. В боковом навигационном меню выберите «Публикация» > «Продукты API» .
  2. Click + API Product .
  3. Заполните страницу с подробными сведениями о товаре следующим образом.
  4. Поле Ценить
    Имя httpbin-product
    Отображаемое имя httpbin product
    Среда your_environment

    Укажите среду, которую вы использовали при настройке адаптера Apigee для Envoy.

    Доступ Private
    Квота 5 запросов каждые 1 минуту

    См. также Квота .

  5. В разделе « Цели удаленной службы Apigee» нажмите «Добавить цель удаленной службы Apigee» .
  6. В диалоговом окне «Целевой объект удаленной службы Apigee» добавьте следующие значения:
    Атрибут Ценить Описание
    Целевое имя Введите название целевого сервиса. Например: httpbin.org Целевая конечная точка, перед которой работает прокси-сервер Envoy.
    Путь Введите путь к ресурсу в соответствующей службе. Например: /headers . Путь запроса для сопоставления с целевой конечной точкой. Вызовы API-прокси по этому пути будут соответствовать данному API-продукту.
  7. Нажмите « Сохранить ».

4. Создайте приложение для разработчиков.

  1. В боковом навигационном меню выберите «Публикация» > «Приложения» .
  2. Click + App .
  3. Заполните страницу приложения разработчика следующим образом. Не сохраняйте изменения, пока не получите соответствующее указание.
  4. Имя httpbin-app
    Отображаемое имя httpbin app
    Разработчик Выберите разработчика, которого вы создали ранее, или выберите любого разработчика из списка.
  5. Далее добавьте API-продукт в приложение:
    1. В разделе «Учетные данные» нажмите « + Добавить продукт» и выберите только что настроенный продукт: httpbin-product .
    2. Нажмите «Создать» .
    3. В разделе «Учетные данные» нажмите «Показать» рядом с пунктом «Ключ» .
    4. Copy the value of the Consumer Key. This value is the API key that you will use to make API calls to the httpbin service.

    О продуктах API

    API-продукты являются основной точкой управления для удаленной службы Apigee. При создании API-продукта и его привязке к целевой службе вы создаете политику, которая будет применяться ко всем запросам, которые вы настроите для обработки в вашем адаптере Apigee для Envoy.

    Определение продукта API

    При определении API-продукта в Apigee можно задать ряд параметров, которые будут использоваться для обработки запросов:

    • Цель
    • Путь запроса
    • Квота
    • Области действия OAuth

    Цели удаленного обслуживания

    Определение API-продукта будет применяться к запросу, если запрос соответствует как целевой привязке (например, httpbin.org ), так и пути запроса (например /httpbin ). Список потенциальных целей хранится в качестве атрибута API-продукта.

    По умолчанию служба Apigee Remote Service проверяет специальный заголовок Envoy :authority (host) на соответствие списку целевых объектов; однако ее можно настроить на использование других заголовков.

    Путь к ресурсу API

    Введенный путь соответствует следующим правилам:

    • Одиночный слэш ( / ) сам по себе соответствует любому пути.
    • * допустимо в любом месте и соответствует сегменту (между косыми чертами).
    • ** это допустимый символ в конце строки, соответствующий любому содержимому до конца строки.

    Квота

    Квота определяет количество запросов, которые приложение может отправить в API в течение часа, дня, недели или месяца. Когда приложение достигает лимита квоты, последующие вызовы API отклоняются.

    Варианты использования квот

    Квоты позволяют ограничить количество запросов, которые клиент может отправить к сервису за определенный промежуток времени. Квоты часто используются для обеспечения соблюдения бизнес-контрактов или соглашений об уровне обслуживания (SLA) с разработчиками и партнерами, а не для оперативного управления трафиком. Например, квота может использоваться для ограничения трафика для бесплатного сервиса, предоставляя при этом полный доступ платным клиентам.

    Квота определяется в API-продукте.

    Параметры квот настраиваются в API-продуктах. Например, при создании API-продукта можно дополнительно установить допустимый лимит квоты, единицу времени и интервал.

    Поскольку ключи API сопоставляются с продуктами API, при каждой проверке ключа API соответствующий счетчик квоты может быть уменьшен (если квота определена в соответствующем продукте).

    В отличие от среды выполнения Apigee, квоты, введенные в определении продукта, автоматически применяются удаленной службой Apigee. Если запрос авторизован, он будет учитываться в рамках разрешенной квоты.

    Там, где сохраняются квоты

    Квоты поддерживаются и проверяются локально процессом удаленной службы и асинхронно с Apigee Runtime. Это означает, что квоты не являются точными и могут быть превышены, если у вас более одной удаленной службы, поддерживающей квоту. Если соединение с Apigee Runtime прерывается, локальная квота будет продолжать действовать как автономная квота до тех пор, пока не будет восстановлено соединение с Apigee Runtime.

    Области действия OAuth

    Если вы используете токены JWT, вы можете ограничить их использование подмножествами разрешенных областей действия OAuth. Области действия, назначенные вашему выданному токену JWT, будут проверяться на соответствие областям действия API-продукта.

    О приложениях для разработчиков

    После настройки API-продуктов вы создадите приложение, связанное с разработчиком. Приложение позволит клиенту получить доступ к соответствующим API-продуктам с помощью API-ключа или JWT-токена.

    Использование аутентификации на основе JWT.

    Вместо ключа API можно использовать JWT-токен для выполнения аутентифицированных вызовов API-прокси. В этом разделе объясняется, как использовать команду apigee-remote-service-cli token для создания, проверки и ротации JWT-токенов.

    Обзор

    Проверка и аутентификация JWT осуществляется Envoy с помощью собственногофильтра аутентификации JWT .

    После аутентификации фильтр Envoy ext-authz отправляет заголовки запроса и JWT в apigee-remote-service-envoy . Он сопоставляет утверждения api_product_list и scope из JWT с продуктами API Apigee, чтобы авторизовать его для целевого объекта запроса.

    Создание JWT-токенов Apigee

    JWT-токены Apigee можно создавать с помощью интерфейса командной строки:

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

    Или используя стандартную конечную точку для ввода токена OAuth. Пример использования 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"

    Использование токена JWT

    Получив токен, вы просто передаете его в Envoy в заголовке Authorization. Пример:

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

    JWT token failure

    Отказ посланника

    Если Envoy отклонит токен, вы можете увидеть сообщение следующего вида:

    Jwks remote fetch is failed

    В таком случае убедитесь, что в разделе remote_jwks вашей конфигурации Envoy указан действительный URI, что он доступен для Envoy и что вы правильно настроили сертификаты при установке прокси-сервера Apigee. Вы должны иметь возможность напрямую вызвать URI с помощью GET-запроса и получить действительный JSON-ответ.

    Пример:

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

    Другие сообщения от Envoy могут выглядеть следующим образом:

    • «Присутствие зрителей в Jwt запрещено»
    • "Эмитент JWT не настроен"

    Эти параметры заданы в настройках Envoy, и вам, возможно, потребуется их изменить.

    Проверить токен

    Вы можете использовать интерфейс командной строки для проверки своего токена. Пример.

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

    или

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

    Отладка

    См. раздел "Недействительный ключ API" .

    Ведение журнала

    Вы можете настроить уровень логирования для службы $REMOTE_SERVICE_HOME/apigee-remote-service-envoy. Все сообщения в лог отправляются в стандартный вывод и стандартную ошибку.

    Элемент Необходимый Описание
    -l, --log-level Допустимые уровни: debug, info, warn, error. Регулирует уровень ведения журнала. По умолчанию: info.
    -j, --json-log Выводит лог-файлы в формате JSON.

    Envoy обеспечивает ведение журналов. Для получения дополнительной информации см. следующие ссылки на документацию Envoy:

    Использование сетевого прокси

    HTTP-прокси можно установить, используя переменные среды HTTP_PROXY и HTTPS_PROXY в окружении исполняемого файла apigee-remote-service-envoy. При их использовании также можно использовать переменную среды NO_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

    Помните, что прокси-сервер должен быть доступен из apigee-remote-service-envoy.

    О метриках и аналитике

    Доступна конечная точка для сбора метрик Prometheus по адресу :5001/metrics . Вы можете настроить этот номер порта. См. файл конфигурации .

    Аналитика Envoy

    По следующим ссылкам вы найдете информацию о получении аналитических данных прокси-сервера Envoy:

    Аналитика Istio

    По следующим ссылкам вы найдете информацию о получении аналитических данных прокси-сервера Envoy:

    Apigee analytics

    Apigee Remote Service for Envoy отправляет статистику запросов в Apigee для аналитической обработки. Apigee сообщает об этих запросах под соответствующим именем продукта API.

    Для получения информации об аналитике Apigee см. раздел «Обзор аналитических сервисов» .

    Поддержка многопользовательской среды

    Теперь вы можете включить адаптер для обслуживания нескольких сред в рамках организации Apigee. Эта функция позволяет использовать один адаптер Apigee для Envoy, связанный с одной организацией Apigee, для обслуживания нескольких сред. До этого изменения один адаптер всегда был привязан к одной среде Apigee.

    Для настройки поддержки нескольких сред измените значение параметра tenant:env_name на * в файле config.yaml . Например:

    1. Откройте файл config.yaml в текстовом редакторе.
    2. Измените значение параметра tenant.env_name на * . Например:
      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. Сохраните файл.
    4. Примените файл:
      kubectl apply -f $CLI_HOME/config.yaml

    При настройке многосредового режима необходимо также настроить Envoy для отправки соответствующего значения среды адаптеру, добавив следующие метаданные в раздел virtual_hosts:routes файла envoy-config.yaml . Например:

    1. Сгенерируйте файл envoy-config.yaml с помощью командной строки. Например:
      $CLI_HOME/apigee-remote-service-cli samples create \
        -t envoy-1.16 -c ./config.yaml --out myconfigs
    2. Откройте сгенерированный файл (он называется envoy-config.yaml ).
    3. Добавьте следующие метаданные в раздел virtual_host или routes файла:
      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

      Следующий пример иллюстрирует конфигурацию virtual_host с несколькими определенными маршрутами, где каждый маршрут направляет трафик в определенную среду:

      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. Повторите последний шаг, чтобы добавить дополнительные среды по мере необходимости.
    5. Сохраните файл и примените его.

    Настройка mTLS между адаптером и средой выполнения Apigee.

    Для использования mTLS между адаптером и средой выполнения Apigee вы можете указать клиентские TLS-сертификаты в разделе tenant файла config.yaml адаптера. Это изменение применяется ко всем поддерживаемым платформам Apigee. Оно также включает mTLS для аналитики на платформе Apigee Edge for Private Cloud. Например:

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