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

ELK

casdoor/elk-auth-casdoorの概要

ELK(Elasticsearch、Logstash、Kibana)の最大の欠点の一つは、もともとこれらの製品に認証メカニズムがなかったことです。 その結果、KibanaやElasticsearchのURLを知っている人なら誰でもKibanaダッシュボードにアクセスできるようになりました。 後に、ELKは「Xpack」と呼ばれる組み込み認証システムを統合しました。 しかし、その高度な機能(OAuth、OIDC、LDAP、SAMLなど)は無料ではありません。 アカウントとパスワードのセットを使用する単純な認証のみが無料で利用可能で、これは非常に不便です。 このアプローチでは、企業内の全員にユニークなアカウントを提供することができません。

この問題に対処するため、Casdoorに基づいたelk認証ソリューションを開発しました。 このソリューションは無料で、オープンソースで、継続的なメンテナンスが行われており、多くの高度な機能をサポートしています。 Casdoorは、OAuth 2.0/OIDCに基づいた集中型認証/シングルサインオンプラットフォームです。 Casdoor/elk-auth-casdoorは、ELK/KibanaスタックへのすべてのHTTPデータフローを傍受するように設計されたリバースプロキシとして機能します。 ログインしていないユーザーをログインするように案内します。 このリバースプロキシは、ユーザーがログインしている限り透過的に動作します。

ユーザーが正しく認証されていない場合、リクエストは一時的にキャッシュされ、ユーザーはCasdoorのログインページにリダイレクトされます。 Casdoorを通じてユーザーがログインすると、キャッシュされたリクエストが復元され、Kibanaに送信されます。 したがって、POSTリクエスト(またはGET以外の他のリクエストタイプ)が傍受された場合、ユーザーはフォームを再入力してリクエストを再送信する必要はありません。 リバースプロキシが覚えておいてくれます。

casdoor/elk-auth-casdoorリポジトリはhttps://github.com/casdoor/elk-auth-casdoorにあります。

どうやって実行するの?

  1. Goプログラミング言語環境がインストールされていることを確認してください。

  2. casdoor/elk-auth-casdoorにアクセスしてコードを取得してください。

  3. プロキシをCasdoorのアプリとして登録します。

  4. 設定を変更します。

    設定ファイルは「conf/app.conf」にあります。 こちらは例ですが、特定のニーズに基づいてカスタマイズする必要があります。

    appname = .
    # port on which the reverse proxy shall be run
    httpport = 8080
    runmode = dev
    # EDIT IT IF NECESSARY. The URL of this reverse proxy.
    pluginEndpoint = "http://localhost:8080"
    # EDIT IT IF NECESSARY. The URL of the Kibana.
    targetEndpoint = "http://localhost:5601"
    # EDIT IT. The URL of Casdoor.
    casdoorEndpoint = "http://localhost:8000"
    # EDIT IT. The clientID of your reverse proxy in Casdoor.
    clientID = ceb6eb261ab20174548d
    # EDIT IT. The clientSecret of your reverse proxy in Casdoor.
    clientSecret = af928f0ef1abc1b1195ca58e0e609e9001e134f4
    # EDIT IT. The application name of your reverse proxy in Casdoor.
    appName = ELKProxy
    # EDIT IT. The organization to which your reverse proxy belongs in Casdoor.
    organization = built-in
  5. (上記の例で)http://localhost:8080にアクセスして、リダイレクションの案内に従ってログインしてください。 その後、Casdoorによって保護され認証されたKibanaが表示されるはずです。

  6. すべてがうまく機能している場合は、ファイアウォール(または別の方法)を設定して元のKibanaポートへの外部アクセスをブロックすることを忘れないでください。 これにより、外部の人々はこのリバースプロキシを介してのみKibanaにアクセスできるようになります。