Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
11
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@wakanayoshizawa

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

この記事は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^)/

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
11
Help us understand the problem. What are the problem?