Внешняя авторизация Envoy с OPA - оценка ошибки с большим JSON телом - PullRequest
0 голосов
/ 16 июня 2020

У меня есть модуль k8s с тремя контейнерами: my app, opa, envoy

Все мои настройки следуют этому руководству: https://www.openpolicyagent.org/docs/latest/envoy-authorization/

Все шло хорошо, пока я имеют 15kb JSON body.

Проверяю журнал контейнера OPA, который я вижу в request.http.body - там только около половины JSON.

{
  "decision_id": "",
  "error": {},
  "input": {
    "attributes": {
      "destination": {
        "address": {
          "Address": {
            "SocketAddress": {
              "PortSpecifier": {
                "PortValue": 8000
              },
              "address": "10.244.8.102"
            }
          }
        }
      },
      "request": {
        "http": {
          "body": "only half of JSON body come here",
          "headers": {
            ":authority": "api-service.com",
            ":method": "PUT",
            ":path": "/api",
            "accept": "application/json",
            "content-length": "14822",
            "content-type": "application/json",
            "x-envoy-decorator-operation": "....",
            "x-envoy-internal": "true",
            "x-forwarded-for": "10.244.6.0",
            "x-forwarded-proto": "https",
            "x-istio-attributes": "..."  
          },
          "host": "....com",
          "id": "12114967460600931537",
          "method": "PUT",
          "path": "/api",
          "size": 14822
        }
      },
      "source": {
        "address": {
          "Address": {
            "SocketAddress": {
              "PortSpecifier": {
                "PortValue": 34670
              },
              "address": "10.244.3.164"
            }
          }
        }
      }
    },
    "parsed_path": [
      "api"
    ],
    "parsed_query": {}
  },
  "level": "info",
  "msg": "Decision Log",
  "query": "data.app.allow",
  "type": "openpolicyagent.org/decision_logs"
}

Я пробовал увеличить with_request_body.

http_filters:
   - name: envoy.ext_authz
        config:
          with_request_body:
            max_request_bytes: 819200
            allow_partial_message: true
            failure_mode_allow: false

Что еще я пропустил?

Большое спасибо за вашу помощь

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Я наконец заставил его работать, увеличив max_request_bytes.

name: envoy.ext_authz
        config:
          with_request_body:
            max_request_bytes: 819200

Я настроил это раньше в configmap, но забыл перезапустить модуль. Просто заново разверните все с новым max_request_bytes - теперь все в порядке

Ссылка: https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/buffer/v3/buffer.proto.html?highlight=max_request_bytes Всем спасибо

0 голосов
/ 16 июня 2020

Есть ли ошибки в логах Envoy?

Какие данные вы пытаетесь отправить? Должен ли он быть частью документа OPA input , или вы можете использовать функцию OPA bundle .

...