😡

AWS Opensearch Serviceのアクセスポリシー

2025/03/12に公開

背景

構築担当になったがここら辺の意味が分からないために実際にいくつか試した。

結論

「きめ細かなアクセスコントロールの有効化」を有効にする場合は以下の設定で良いと考える。

  1. Basic認証による認証
  2. IPベースの制限
  3. きめ細かなアクセスコントロールによる制限

IAMではなくBasic認証にしている理由としては純粋にIAMロールときめ細かなアクセスコントロールによる権限の競合の考慮が必要のためである。(コントロールできるなら

実験内容

ドメインレベルのアクセスポリシーを設定しない を選択する

ドメイン作成時の選択肢としてドメインレベルのアクセスポリシーを設定しないにチェックを入れた場合はどうなるか?
アクセスポリシーが以下の様になり、ダッシュボードにアクセス出来なくなる。
作成して誰にもまだアクセスさせないための設定だと思われる

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:ap-northeast-1:XXXXXXXXXXXX:domain/maki-test/*"
    }
  ]
}

アクセスした際の結果

ドメインレベルのアクセスポリシーを設定する その1

前述のDenyAllowに変える。当然ログイン画面は出る。
問題はこの場合だと誰でもログイン可能である。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
---- snip
}

アクセスした際の結果

ドメインレベルのアクセスポリシーを設定する その2 (リソースベースのポリシー)

ダッシュボードへの接続で動作確認をしていた。
今回の環境は「きめ細かなアクセスコントロールの有効化」とadminユーザの作成を行う形(user+passwordのBasic認証)で用意した。
つまり、ダッシュボードはIAMでの認証確認はできないのだ。

ドメインレベルのアクセスポリシーを設定する その3 (IPベースのポリシー)

この指定をすることで自身のIPアドレスからのみログインが出来た。
これの応用としてVPC cidr等を設定すれば良いと思われる。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:ap-northeast-1:XXXXXXXXXXX:domain/maki-test/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "102.73.76.223/32"
        }
      }
    }
  ]
}

Discussion