VPC内にElasticsearchを配置する際の注意点
VPC内のプライベートサブネットにElasticsearchを置いたはいいけど、LambdaからAPI叩けないしKibanaにもアクセスできなくて困ったときのメモです。
解決策
- BastionServerとして同VPC内にEC2(パブリックサブネット)を置く
- EC2にSSH接続してダイナミックフォワードを行う(ダイナミックフォワードあまりわかっていない...)
- Lambdaを同じVPC内に置く
- 仕様によってプライベートかパブリックかを選択する
- それぞれのリソースに適切なセキュリティグループ(後述)を設定する
セキュリティグループ設定
EC2
アクセス元IPアドレス(ローカルマシン)から22ポート
へのトラフィック許可
アクセス元IPアドレス(ローカルマシン)から8157ポート
へのトラフィック許可
Lambda
- 今回は特に設定は不要(仕様による)
Elasticsearch
Lambdaにアタッチしたセキュリティグループから443ポートへのトラフィック許可
EC2のプライベートIPアドレスから443ポートへのトラフィック許可
ハマりポイント
- EC2にSSH接続してダイナミックフォワードを行う(ダイナミックフォワードあまりわかっていない...)
- 仕様によってプライベートかパブリックかを選択する
EC2
アクセス元IPアドレス(ローカルマシン)から
22ポート
へのトラフィック許可アクセス元IPアドレス(ローカルマシン)から
8157ポート
へのトラフィック許可
Lambda
- 今回は特に設定は不要(仕様による)
Elasticsearch
Lambdaにアタッチしたセキュリティグループから443ポートへのトラフィック許可
EC2のプライベートIPアドレスから443ポートへのトラフィック許可
ハマりポイント
ElasticsearchのアクセスコントロールでEC2のプライベートIPを許可しようとしたが以下のエラーが出ました。
UpdateElasticsearchDomainConfig: {"message":"You can’t attach an IP-based policy to a domain that has a VPC endpoint. Instead, use a security group to control IP-based access."}
解決策が見つからず2時間くらいはまりましたが、ちゃんと公式に書いてありました。
VPCs ではセキュリティグループを通じてドメインへのアクセスを管理できます。多くのユースケースでは、このセキュリティ機能の組み合わせで十分となり、ドメインにオープンなアクセスポリシーを安心して適用できます。
Amazon Elasticsearch Service ドメインの VPC サポート - Amazon Elasticsearch Service
どうやらセキュリティグループでの制限で十分のようです。
つまりVPC内にElasticsearchを置くケースだとオープンアクセスを選択しておいて、アタッチしているセキュリティグループのみでアクセスの制限を行う形になります。
参考
Author And Source
この問題について(VPC内にElasticsearchを配置する際の注意点), 我々は、より多くの情報をここで見つけました https://qiita.com/sakashin10291029/items/c33509001702f759eb12著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .