前提
CloudTrailのログを流し込んでいるとします。
Kibanaでの管理者操作
一般ユーザー作成
画面左メニューの"Security"をクリックし、人型マークの"Internal User Database"をクリック
"+"をクリックし、以下の値を入れ"Submit"をクリックしユーザー作成
ユーザー名:user4
パスワード:任意の値
テナントの作成
"Tenants"をクリック
"+"をクリック
テナント名に"yokogushi"と入れて[Submit]
ロール作成
"Roles"をクリック
"+"をクリック
以下の値を入力し、[Save Role Definition]をクリックする
-
Overviewタブ
- Role name:kansa-role
-
Cluster Permissionsタブ
- "Permissions:Action Groups"で[Add Action Group]をクリックして"data_access"を選択
-
Index Permissionsタブ
- [Add index permissions]をクリック、Index patternsに"log-aws-cloudtrail-*"を入力
- "Permissions:Action Groups"で[Add Action Group]をクリックして"read"を選択
-
Tenant Permissionsタブ
- [Add tenant permissions]をクリックし、「Add tenant pattern]をクリックし、"yokogushi*"を入力
- Permissionsで[Add Field]をクリックし、"kibana_all_read"を選択
Action Group
ロールで設定した"data_access"と"read"はAction Groupと呼ばれ、権限のセットです。
例えば、readは、"indices:data/read*"と"indices:admin/pammpings/fields/get*"のSingle Permissionのセットです。
https://opendistro.github.io/for-elasticsearch-docs/docs/security/access-control/default-action-groups/
このAction Groupの中にAction Groupをセットすることもできます。data_accessがそんな感じでした。
ユーザーとロールのマッピング
"Role Mappings"をクリック
"+"をクリック
ロールにkansa-roleを選び、ユーザーにuser4を選び[Submit]をクリック
Index Pattern/Visual/Dashboard作成
テナントを"yokogushi"に移動します。
左メニューのTenantsをクリックして、yokogushiの文字列をクリックします。
このテナントにはインデックスパターン定義がないので作成します。
左メニューのManagementをクリックし、画面右上の[Create Index Pattern]をクリックします。
今回はcloudtrailとGuardDutyのインデックスパターンを作ります。
一般ユーザーにはCloudTrailのみ許可しているので、CloudTrailは見えるがGuardDutyは見えないというシナリオです。
Discoverでデータが見えることを確認します。
時間があればVisualやDashboardも作成してください
Kibanaでの一般ユーザー操作
user4でログインし直す
テナントyokogushiを選択
Discoverで
log-aws-cloudtrail-*のログは見える
他は見えない
ダッシュボードで、
左側のlog-aws-cloudtrail-*を元にしたものは見える
右側のGuadDutyを元にしたものは権限がないので見えない
イメージ図
感想
同じテナント内だと、そもそもDiscoverでのIndexマッピング情報や、ダッシュボードなどが見えてしまう(中身はエラーとなり見えない)。FGACのPermissionでは、indexのリスト、ダッシュボードのリストの制限はできなそう
必要がないIndexマッピングやダッシュボードなどを見せたくない場合はテナントを分けることになりそう。Indexマッピングやダッシュボードを他のテナントでも使いたい場合は、テンプレートとしてエクスポートし、他のテナントでインポートになりそう
シングルテナントでやる場合
- メリット:
- ダッシュボードを見るなどの表示やサーチだけの用途なら権限設定がシンプルになる
- 管理者側でダッシュボード作成が1つのテナントだけで済むので手間が少ない
- デメリット:
- indexやダッシュボードはリストされちゃう。選択してもエラーにはなる
- アラートや異常値検知やダッシュボード作ったりなど書き込み操作するニーズが出てきたら細かい権限制御が必要になる。
マルチテナント
- メリット:
- indexやダッシュボードが自身のテナントのものだけが表示されて見やすい
- アラートや異常値検知やダッシュボード作ったりなど書き込み操作するニーズが出てきても、制御しやすい
- デメリット
- 管理者側でダッシュボード作成をテナントごとにしないといけない。テンプレート化するなどで手間は減らせるが手間はある。
参考情報
AmazonESのFGAC
https://docs.aws.amazon.com/ja_jp/elasticsearch-service/latest/developerguide/fgac.html
Access Control Permission
https://opendistro.github.io/for-elasticsearch-docs/docs/security/access-control/permissions/
OpenDistro Security
https://opendistro.github.io/for-elasticsearch/features/security.html