AWS
AdventCalendar
Elasticsearch
kibana

kibanaに合ったAWS Elasticsearch Serviceのアクセスポリシーで迷います

More than 1 year has passed since last update.

この記事はdots girls Advent Calendar 2016の記事です。

AWS ESのアクセスポリシーで迷ってしまう

AWSは基本的にVPCに入らないServiceに対してポリシー(セキュリティ)を設定出来ますが、AWS Elasticsearch Serviceに関してはLambdaと連携してkibanaで表示するなどの場合、デフォルトで選択できるポリシーだと足りないことが多く、かといって例を検索するととりあえず全部許可していたりしているので、どの設定が一番いいのか絶賛模索中です。

AWSのデフォルトで選択し入力できるポリシー

セレクトボックスで選択できるポリシーです。ただし、アカウント、ユーザー、IPは一つしか入力欄しかありません。少しひねりたい場合はそこからJsonをいじる必要があります。

Allow or deny access to one or more AWS accounts or IAM users

AWSアカウントもしくは、IAMユーザーによるアクセス制御

Allow access to the domain from specific IP(s)

送信元IPアドレスによるアクセス制御

Allow open access to the domain

全部許可

Deny access to the domain

全部拒否

Copy access policy from another domain

以前作ったポリシーのコピー

ポリシーで選択できるActionリスト

LambdaからbulkAPIを使用してデータをアップロードする場合は、es:ESHttp*のみで権限は足りるようです。
kibanaから閲覧する場合、es:ESHttpGetだけでは無理でした。たぶんDomain系やTag系が関係してるのかと思います。ひとまず*で良いと思います。

  • es:ESHttpDelete
  • es:ESHttpGet
  • es:ESHttpHead
  • es:ESHttpPost
  • es:ESHttpPut
  • es:CreateElasticsearchDomain
  • es:DescribeElasticsearchDomain
  • es:DescribeElasticsearchDomains
  • es:DescribeElasticsearchDomainConfig
  • es:DeleteElasticsearchDomain
  • es:ListDomainNames
  • es:AddTags
  • es:ListTags
  • es:RemoveTags
  • es:UpdateElasticsearchDomainConfig

私の思う汎用的なAWS ES向けポリシー

現在の最新バージョンは2012-10-17です。
kibanaはIP制限などがいいと思いました。自身のグローバルIPは確認くんなどで確認して下さい。
IPやarnはList(["", ""])で複数渡すことも可能です。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:リージョン:アカウントID:domain/ES名/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "自分のIP"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::アカウントID:role/Lambdaの実行ロール"
      },
      "Action": "es:ESHttp*",
      "Resource": "arn:aws:es:リージョン:アカウントID:domain/ES名/*"
    }
  ]
}

懸念点

  • kibanaは、IP制限掛けてしまうと使い勝手が悪いのではないか

目標

  • Actionの役割をちゃんと理解してものすごく細かく設定したい

参考

公式ドキュメント(日本語)

ここまで読んで下さりありがとうございました。詳しい人意見下さい。

dots.女子部について

インフラ、サーバー、フロント開発から運用ノウハウ、女性エンジニアのキャリアについてなどいろいろな観点から勉強したり、情報共有している女性エンジニアのための部活です。
興味がある方は是非SNSアカウントのフォローしてみて下さい!

Twitter
Facebook

明日はきょんさんよろしくお願いいたします\(^o^)/