Amazon Elasticsearch ServiceのKibanaでマッピングするユーザーをワイルドカードで指定する

こんにちは。サービスグループの武田です。Amazon Elasticsearch ServiceのKibanaで用意するロールで、ユーザーマッピングにワイルドカードが使えました。簡単に多数のユーザーをマッピングできます。
2021.07.31

こんにちは。サービスグループの武田です。

社内用のシステムで、Amazon Elasticsearch Serviceを立てる機会がありました。Amazon ESはKibanaも提供してくれているため、適切な認証/認可を設定するだけで簡単に使用を開始できます。

その認証/認可なのですが、今回はSAML認証を利用した社内ディレクトリサービスとのSSOを設定しました。事前にKibanaのユーザーを作成しておく場合と異なり、ディレクトリサービスで管理されている任意のユーザーがアクセス可能です。

SAML認証の設定についてはKitanoのエントリを参照ください。

さて認証はそれでいいとして、問題は認可です。Open Distroでの認可は、ロールを作成し、そのロールにユーザーをマッピングすることで実現します。ユーザーはSSOで認証した名前が渡されるため、そのユーザー名とロールを紐付ける必要があります。初めは、利用するユーザーに申請なりしてもらい毎度追加するしかないのかなと思っていたのですが、ワイルドカードが使用でき解決できました。

たとえば会社で@example.comドメインを取得し、ディレクトリサービスで社員のユーザー管理をしているとします。そうするとuser1@example.comadmin@example.comなどのユーザーが存在するはずです。

このようなexample-roleがあったとします。

Map userから2ユーザーを追加します。

紐付けできました。

ユーザー数が少なければ個別に追加で問題ありません。一方で、利用するユーザーが社内の不特定多数となると管理が難しくなってきます。いちいち追加/削除なんてやってられませんよね。そんなわけで個別のユーザーを追加する代わりに*@example.comを追加します。

*はワイルドカードとなっており、@example.comドメインの任意のユーザーがこのロールにマッピングされます。

細かい制御をしようとするとこの方法は使えませんが、ある程度ざっくりで問題なければ有用な方法ではないでしょうか。

最後に

ユーザーマッピングにワイルドカードが使えることを知らなかったため、どう運用していこうか悩んでいたのですが、試してみたらできてよかったです。Amazon ESのKibanaをSAML認証する際の参考になれば幸いです。