Posted at

Envoy: 外部認証


tldr

勉強がてらにEnvoyのドキュメントを邦訳してみました。ベースはGoogle Translateで、ところどころ不自然な箇所を直しています。

原文としたのEnvoyのドキュメントはこちらのディレクトリ以下にあります(ライセンス:Apache License 2.0, NOTICE)。

目次はこちらです。


外部認証


  • ネットワークフィルタの設定

  • HTTPフィルタ設定

外部許可フィルターは許可サービスを呼び出して、着信要求が許可されているかどうかを確認します。フィルタは、ネットワークフィルタ、HTTPフィルタ、またはその両方として設定できます。要求がネットワークフィルタによって許可されていないと判断された場合、接続は閉じられます。 HTTPフィルタでリクエストが不正と判断された場合、リクエストは403(禁止)レスポンスで拒否されます。

Tip

残りのフィルタがリクエストを処理する前にリクエストが承認されるように、これらのフィルタをフィルタチェーンの最初のフィルタとして設定することをお勧めします。

外部許可サービスクラスタは、静的に構成することも、クラスタ検出サービスを介して構成することもできます。リクエストが入ってきたときに外部サービスが利用できない場合、リクエストが許可されているかどうかは、該当するネットワークフィルタまたはHTTPフィルタのfailure_mode_allow設定の設定によって定義されます。 trueに設定されている場合、要求は許可されます(フェールオープン)。それ以外の場合は拒否されます。デフォルト設定はfalseです。


サービス定義

ここにリストされているサービス定義を使用して、トラフィックのコンテキストが外部許可サービスに渡されます。許可サービスに渡される要求の内容は、CheckRequestによって指定されます。


  • 属性コンテキスト


    • service.auth.v2.AttributeContext

    • service.auth.v2.AttributeContext.Peer

    • service.auth.v2.AttributeContext.Request

    • service.auth.v2.AttributeContext.HttpRequest



  • 認証サービス


    • service.auth.v2.CheckRequest

    • service.auth.v2.DeniedHttpResponse

    • service.auth.v2.OkHttpResponse

    • service.auth.v2.CheckResponse