初めに:OpenSearchのドメイン
OpenSearchを構築するときは
- パブリックドメイン
- VPCドメイン
のどちらかを選択して構築します。
パブリックドメインで構築するとインターネットに接続されたあらゆるデバイスからアクセスできるような形でデプロイが行われますが、VPCドメインですと指定したVPCの中でOpenSearchがデプロイされますので、OpenSearchにアクセスするときはプロキシを用意するなど一手間が必要になります。
セキュリティを考慮したプロダクション環境ではVPCドメインで構築されることもよく発生すると思います。
今回実施すること
OpenSearchにはOpenSearch dashboardというブラウザからアクセスするGUIが提供されています。
VPCドメインでデプロイされたOpenSearch dashboardにアクセスするときは以下のような方法が考えられます。
- VPC内のEC2インスタンスにプロキシを立ててPort Forwardingする
- Client VPNでVPCにアクセス
- VPCにWorkspacesを立てる
- VPC内のWindowsのEC2インスタンスにFleet Managerでアクセスする
ここでは「VPC内のWindowsのEC2インスタンスにFleet Managerでアクセスする」という方法でOpenSearch dashboardに接続してみたいと思います。
Fleet Managerとは?
Fleet ManagerはAWS Systems Managerの一機能になります。
AWS Systems Manager コンソールからマネージドノードに対してさまざまなタスクを実行できます。
Fleet Managerではリモートデスクトッププロトコル(RDP)を使ってブラウザからWindowsインスタンスに接続できますので、ここではこの機能を使ってWindowsインスタンスに接続し、インスタンス上のブラウザからOpenSearch dashboardにアクセスしてみます。
以下のような構成になります。
OpenSearchの構築
構築のポイントをかいつまんで解説します。
- ネットワークについてはVPCアクセスを指定します。今回は2サブネット構成で構築を行います。
- セキュリティグループは自己参照インバウンドルールが設定されており、後述のEC2インスタンスに対しても同じセキュリティグループを設定します。
- きめ細かなアクセスコントロールは検証の簡易化のため有効化しません。きめ細かなアクセスコントロールはOpenSearch dashboardのログイン検証にも使用されるため本来は有効化すべきです。
- ドメインアクセスポリシーは使用しません。ドメインアクセスポリシーを有効化するとIAMベースのアクセス制御を行えるようになりますが、認証を通すためにCognitoとの連携が必要になったりするため、今回は検証の簡易化のためドメインアクセスポリシーは使用しません。
EC2インスタンスの構築
EC2インスタンスの構築を行います。
Fleet ManagerでインスタンスにアクセスするにはインスタンスにSSM Agentが導入されている必要があります。
Windows Server 2019のAMIであればSSM Agentがプリインストールされているため、Windows Server 2019のAMIを使用してインスタンスを構築します。
そのほかの構築時の注意点は以下です。
- AmazonSSMManagedInstanceCoreポリシーを含むインスタンスプロファイルをEC2インスタンスにアタッチする
- セキュリティグループはOpenSearchに割り当てたものと同じものを割り当てる
- セキュリティグループでポート3389は開く必要はない
OpenSearch dashboardにアクセスしてみる
OpenSearchとEC2インスタンスの構築が終わったので、Fleet Managerを使用してOpenSearch dashboardにブラウザからアクセスできるか確認してみます。
- Fleet Managerに移動し構築したノードIDを選択して「リモートデスクトップ(RDP)との接続」を選択します
- 構築時に指定したキーペアを指定してインスタンスにリモートデスクトップ接続します
- リモートデスクトップ接続できるので、ブラウザを開きOpenSearch dashboardのURLを指定すると以下のようなOpenSearch dashboardの画面が確認できます
終わりに
VPCドメインに構築されたOpenSearch dashboardにFleet Managerで接続する方法を確認してみました。
Fleet ManagerであればRDPポート(3389)を開く必要もないので、よりセキュアにVPCに構築されたOpenSearchにアクセスできることが確認できたと思います。