見出し画像

AWS:Cloudformation~ElasticSearchことOpenSearchで詰まる

みなさん、こんにちは。ちゃみみです。

今日は、リアルにCloudformationのESことOsのデプロイで詰まったことを記録しておこうと思います。
要点はいくつありまして大きく分けると以下です。

①ServiceLinkedRoleの必要性
②LogGroupに吐き出すときのポリシー設定
③OpenSearchにアクセスできない問題


①のServiceLinkedRoleですが、こちら一番最初のときだけ必要なもので今のところ必要な場面は私はESことOsでしか利用する場面は無いのかな?というかエラーをここでしか確認していないっていうのが現状となります。
端的に言うと、サービスを作るときにRoleを付与する場面てあると思います。その時にマネコン上で操作すると自動でそのRoleを作ってくれるケースがあると思うのですが、そのロールがServiceLinkedRoleとなります。←具体的なRole名はこれじゃないんですけどねっっ汗

これを一番最初の初回のみ作ってあげないと以下のエラーがでます。

ただこれって一回こっきりやってあげればOKなんですが、2回目以降でこのServiceLinkedRoleが例えば別コードで何かに同じサービス宛てで紛れていると今度はエラーを起こすので注意が必要です。
←なのでテンプレートを頻繁に更新するようなサービス(例えばIAMRoleやPolicyなど)に紛れ込ませておくよりかは、一回デプロイしたらあとは基本ほぼ触らないよっていうテンプレートなどに書いておいてあげるのがベターかなと思います。

②LogGroupに吐き出すときのポリシー設定ですが、私もよく知らなかったんですがESのロギング設定でロググループを指定してあげればOKじゃね?と思っていたのですが実はそうではなく以下のような設定を組み込んであげる必要があるようです。
↓ちょっと1行が長くてブログの幅をオーバーしてしまったので適宜改行入れてますが、コピペの際は、つなげてあげてください。

関連AWSナレッジURL:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-resourcepolicy.html

https://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/createdomain-configure-slow-logs.html

見る限り、普通のポリシーなのですが、PolicyDocumentをYAML形式で頑張って書こうと思って色々格闘していたのですが、結構エラーで弾かれてしまうことが多いこともありJSON形式で無理やり1行に収まってしまいました。
こちらって所謂ESが、LogsGroupにログを書き込むために必要なポリシーなようで設定しないと間違いなくロギング設定はできないので注意が必要です。

③OpenSearchにアクセスできない問題
これもしかすると接続の仕方に問題があるかもしれないのですが、ESのCFn(冒頭になりますが)でAccessPolicyとAdvancedSecurityPolicyを設定すると、接続できなくなってしまいました。
エラーとして以下が出るようで、、、

特段おかしな要素ってあまりなく、ナレッジに書いてある通りなのですが色々な記事などを読み進めていく(確かナレッジにも書いてあった)とESをVPC内で構成する場合、きめ細かなアクセス制限(AdvancedSecurityOptions)をするというよりかは、SGなどできちんと制限を加えてあげる(=セキュリティをそれで担保する)ことを暗に進められていてこの↑の状態でアクセスポリシーに例えば、VPCセグメントを許可する形で書き足してみても今度は、IPを制限する場合はSGでやれ!と怒られ、IAMユーザーを書いても怒られ、、という感じでニッチもサッチもいきませんでした。

そもそも今回のこの詰りの背景って、ESがやらしいのが取れるログが以下になるんですね。

名目に直してあげると、
・アプリケーションログ
・インデックス遅延ログ
・サーチログ
・監査ログ

になるのですが、この監査ログを有効にしようとすると、AdvancedSecurityOptionsを有効にせねばならず、もしかすると有効にするだけで良くて他の設定はしなくても良いのかもしれない(試してないからわからない。。。)のですが、実施すると↑のお悩みにぶつかってしまい結局色々格闘したのですが、開発環境ということと検証している時間がないことから一旦、監査ログはあきらめてAccessPolicyはそのままテンプレート通りにし、AdvancedSecurityOptionsをコメントアウトすることで通常通りのアクセスができるようになったようで問題解決はしていないというのが現状です。

この問題通常どおりで解決しようとすると、ログインのときにちょっと一工夫してあげないといけないようでそれを試したクラメソの記事があるので参考までにおいておこうと思います。

2022年04月16日

以下、宣伝です。
仲間も募集中なので、気になる方は↓の記事を覗いてみてくださいませ。
いい会社だと思いますよ。


いいなと思ったら応援しよう!