メインコンテンツにスキップ

Envoyによるサービスメッシュの承認

Envoy-authz はEnvoyのミドルウェアで、カシンを介して外部RBAC & ABAC認証を実行します。 このミドルウェアは、gRPCサーバーを介して Envoyの外部認証 API を使用します。 このプロキシは、Istio のような任意のタイプのenvey ベースのサービス メッシュにデプロイされます。

要件

  • 特使1.17+
  • Istioまたは任意のタイプのサービスメッシュ
  • grpc依存関係

依存関係は go.mod を通じて管理されます。

ミドルウェアの作業

  • クライアントはhttpリクエストを行います。
  • Envoyプロキシはそのリクエストをgrpcサーバーに送信します。
  • grpcサーバーはカスビンポリシーに基づいてリクエストを承認します。
  • 承認されると、リクエストは通過または他の方法で送信されますが、拒否されます。

grpcサーバはEnvoyの external_auth.proto からのプロトコルバッファに基づいています。

// A generic interface for perform authorization check on incoming
// requests to a networked service.
service Authorization {
// Performs authorization check based on the attributes associated with the
// incoming request. を選択すると、状態を`OK` かどうかを返します。
rpc Check(v2.CheckRequest) returns (v2.CheckResponse);
}

上記のprotoファイルから、認証サーバーで Check() サービスを使用する必要があります。

使用法

  • この ガイド に従って、設定ファイルの下にあるCasbin ポリシーを定義します。

You can verify/test your policies on online casbin-editor.

  • 実行して認証サーバーを起動します:-
$ go build .
$ ./authz
  • 利用者の構成を読み込む:-
$  envoy -c authz.yaml -l info

使節が開始されると、許可プロセスの要求が傍受され始めます。

Istioとの統合

このミドルウェアを動作させるには、JWT トークン OF ヘッダーにユーザー名を含むカスタムヘッダーを送信する必要があります。 公式の Istio ドキュメント を確認して、 リクエストヘッダー の変更に関する詳細情報を得ることができます。