VPCによるAmazon Elasticsearch Serviceのセキュリティ強化と始め方について
はじめに
Amazon VPCからAmazon Elasticsearch Serviceドメインに接続することで、セキュリティの強化ができます。本記事では、Amazon Elasticsearch Service とAmazon VPCの連携について、概要やそれらの運用制限、アクセスポリシー、始め方について紹介します。
まず、Amazon Elasticsearch ServiceとAmazon VPCについて簡単に紹介します。
- Amazon Elasticsearch Service - Elasticsearchとは、ログ分析やリアルタイムアプリケーション監視、クリックストリーム分析などのユースケース向けのオープンソース検索 / 分析エンジンです。Amazon Elasticsearch Service では、そのElasticsearchをAWSクラウドで簡単にデプロイ、運用、スケーリングするフルマネージド型のサービスです。
- Amazon VPC - Amazon VPCは、AWSアカウント専用の仮想ネットワークです。Amazon VPCでは、AWSクラウド内で論理的に分離したセクションをプロビジョニングし、定義した仮想ネットワーク(VPC)内でAmazon Elasticsearch Serviceドメインをはじめとする、AWSリソースを起動することができます。
Amazon Elasticsearch Service とAmazon VPCの連携
Amazon Elasticsearch Service では、Amazon VPCをサポートしています。このサポートの利用には追加費用が不要な上に、簡単な設定でセキュリティを強化することができます。
利用にあたっては、次のものをVPC内もしくはVPCのサブネットへ配置します。
Amazon Elasticsearch Serviceドメイン
Amazon Elasticsearch ServiceドメインをVPCに配置すると、インターネットゲートウェイやNATデバイス、VPN接続を必要とすることなく、Amazon Elasticsearch Serviceと他のサービス間にVPC内で安全な通信ができます。
エンドポイント
VPCをサポートするために、Amazon Elasticsearch Serviceはエンドポイントをドメインのアベイラビリティ ゾーン(AZ)数に応じて、1~3個のVPCのサブネットに配置します。サブネットはVPCのIPアドレスの範囲です。ドメインに対して複数のAZを有効にする場合、各サブネットは同じリージョンの異なるAZに存在する必要があります。AZが1つの場合は、Amazon Elasticsearch Serviceは1個のサブネットにエンドポイントを配置します。
Elastic Network Interface(ENI)
Amazon Elasticsearch Serviceは各データノード用にVPC内にENIを配置します。Amazon Elasticsearch Serviceは、各ENIにサブネットのIPv4アドレス範囲内のプライベートIPアドレスを割り当てます。また、IPアドレスにパブリックDNSホスト名(=ドメインエンドポイント)も割り当てます。データノード用に適格なIPアドレスでエンドポイント(DNSホスト名)を解決するために、パブリックDNSサービスを利用する必要があります。
※Amazon Elasticsearch ServiceはVPCでのIPv6アドレスをサポートしていません。IPv6アドレスを有効化したVPCの利用は可能ですが、ドメインはIPv4アドレスが使用されます。
VPC内のドメインの運用制限
現時点(2020年8月25日)において、VPC内のAmazon Elasticsearch Serviceドメインの運用には以下の制限があります。
- VPC内でドメインの起動とパブリックエンドポイントを実行することはできません。ドメイン作成時にどちらを実行するか選択します。
- パブリックエンドポイントでドメインを作成した後に、VPCに配置することはできません。その逆も同様です。VPCに配置したい場合は、VPC内で新規ドメインを作成して、データを移行する必要があります。
- [Dedicated]のテナント属性を使用しているVPC内でドメインを起動することはできません。テナント属性を[Default]に設定したVPCを使用する必要があります。
- サブネットやセキュリティグループの設定を変更することはできますが、VPC内にドメインを配置した後で、別のVPCにそのドメインを移動することはできません。
- パブリックドメインとは異なり、Amazon Elasticsearch ServiceコンソールのVPCドメインの情報から、[クラスターの状態]タブのシャドー情報と[インデックス]タブがなくなります。
- VPC内に存在するドメイン用にKibanaのデフォルトインストールにアクセスするために、VPNへの接続やネットワークの管理、またはプロキシサーバーを使用して、VPCへのアクセスを保持する必要があります。(※このプロセスはネットワーク構成によって異なる場合があります。)
VPCドメインのアクセスポリシー
VPC内にAmazon Elasticsearch Serviceドメインを配置すると、内在する強力なセキュリティ層が提供されます。エンドポイントへのアクセスには、パブリックアクセスとVPCアクセスにおいて次の特徴があります。
- パブリックアクセスのドメインを作成する場合 - エンドポイントには、すべてのインターネットに接続したデバイスからアクセスできます。ウェブブラウザでエンドポイントにアクセスするときに、Not Authorizedのメッセージが表示される場合がありますが、リクエストはドメインまで届いています。
- VPCアクセスを使用してドメインを作成する場合 - ウェブブラウザでエンドポイントにアクセスしようとすると、リクエストがタイムアウトする場合があります。基本的なGETリクエストを実行する場合であっても、コンピュータがVPCに接続している必要があります。
セキュリティグループ
前述の接続要件に加えて、VPCでは、セキュリティグループを使用したドメインへのアクセス管理が可能です。セキュリティグループの主な特徴を以下に示します。
- インスタンスの仮想ファイアウォールとして機能し、インバウンドおよびアウトバウンドトラフィックを制御する
- VPC内で起動したインスタンスには、最大5つのセキュリティグループのセットを割り当てることができる
- セキュリティグループはインスタンスレベルで動作し、VPC内のサブネット内のインスタンスごとに異なるセキュリティグループのセットを割り当てることができる
多くのユースケースでは、セキュリティグループを利用することで、ドメインにオープンアクセスポリシーを安心して適用できます。
オープンアクセスポリシー - オープンアクセスポリシーで運用する場合、リクエストがAmazon Elasticsearch Serviceドメインまで届いて、関連するセキュリティグループによって許可されると、それ以外のセキュリティチェックなしでドメインへのアクセスが受け入れられるようになります。(※インターネット上の誰もがAmazon Elasticsearch Serviceドメインにアクセスできるという意味ではありません。)
始め方
事前準備
VPCと新規のAmazon Elasticsearch Serviceドメイン間の接続を有効にするには、以下の2つの事前準備が必要です。
1. VPCの作成
Amazon VPCコンソールや、AWS CLI、いずれかのAWS SDKを使用して作成することができます。
2. IPアドレスのリザーブ
ネットワークインターフェースをVPCのサブネットに配置することで、Amazon Elasticsearch ServiceにおいてVPCをドメインに接続できるようになります。各ネットワークインターフェースには、1つのIPアドレスが関連付けされるため、Amazon Elasticsearch Service ドメインを作成する前に、ネットワークインターフェースに対応できる数のIPアドレスをVPCで有効にしておく必要があります。必要なIPアドレスの数は、ドメインのデータノード数とAZの数を基に計算されます。基本的に式は次のとおりです。
(各サブネットのIPアドレスリザーブ数)= 3 ×(ドメインのデータノード数)/(AZ数)
ドメインを作成する場合、Amazon Elasticsearch ServiceはIPアドレスをリザーブし、一部をドメインに使用し、残りをblue/greenデプロイ用にリザーブします。
また、他のアプリケーションやサービスとの重複を避け、将来的にクラスターをスケールする際に、追加のIPアドレスをリザーブできるため、別個でAmazon Elasticsearch Service専用のサブネットを作成することが推奨されています。
ドメインの作成
VPCでのAmazon Elasticsearch Serviceドメインの作成は通常のクラスターの作成手順とほとんど同じです。異なる点は、アクセス設定のネットワーク構成で[VPCアクセス(推奨)]を選択することです。これによりVPCからドメインにアクセスできるようになります。
まとめ
本記事では、Amazon Elasticsearch Service とAmazon VPCの連携について概要やVPC内のドメインの運用制限、VPCドメインのアクセスポリシー、利用方法について紹介しました。フルマネージド型のサービスでAmazon Elasticsearch Service は便利ですが、セキュリティの強化も大切です。Amazon Elasticsearch Service はAmazon VPCをサポートしており、追加費用なく、このサポートを利用してセキュリティの強化ができます。ぜひ、試してみてはいかがでしょうか。
参考文献:
https://d1.awsstatic.com/International/ja_JP/Whitepapers/AWS Security Whitepaper.pdf
https://d0.awsstatic.com/International/ja_JP/Whitepapers/Microsoft_Active_Directory_Quick_Start.pdf