スタートアップCTOがAWS OpenSearchのセキュリティを解説!高度な視点でOpenSearchの運用を見直しましょう

スタートアップCTOがAWS OpenSearchのセキュリティを解説!高度な視点でOpenSearchの運用を見直しましょう

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!

みなさまはAWSで OpenSearch を利用されておりますでしょうか?今回は ElasticSerach のセキュリティ面について解説し、運用面について触れていこうと思います。

※本記事で用いられる OpenSearch は Amazon OpenSearch を指しております。

想定する読者

  • OpenSearch を利用しているヒト
  • OpenSearch のセキュリティ面が気になるヒト
  • OpenSearch の運用について考えているヒト

はじめに

AWSの OpenSearch はマネージドされているため、一から構築するのに大きな手間がかからないのがメリットです。しかしAWSを利用されているなら周知の通り、セキュリティ面は自分自身で設定していかなければなりません。

基本的なアクセス制限やIAM権限の管理なども踏まえ、OpenSearch のセキュリティ面について解説していきます。

セキュリティ項目

OpenSearch のセキュリティにおいて設定を行うべき項目は以下のようになります。

  • IAMによるアクセス制御
  • VPC関連
  • 暗号化
  • Amazon Cognitoなどを用いた認証
  • インデックスレベル、ドキュメントレベル、フィールドレベルのセキュリティ
  • 監査ログ
  • Kibana マルチテナンシー

上記についてそれぞれ解説していきます。

基本的に Amazon OpenSearch はマネージドサービスなので、いくつかの点は設定を有効化するだけで済みます。簡単にできますのでぜひご自身の環境に取り入れてください。

IAMによるアクセス制御

IAMによるアクセス制御は、OpenSearchのドメインアクセスポリシーを用いて行います。例えば一部のユーザーを許可したい場合は、以下のように行います。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::123456789012:user/test-user"
        ]
      },
      "Action": [
        "es:*"
      ],
      "Resource": "arn:aws:es:us-west-1:123456789012:domain/test-domain/*"
    }
  ]
}

記述は普段利用されているIAMポリシーと同じなので、これを調整することでユーザーやIPアドレスの制限が可能となります。

VPC関連

VPC関連のセキュリティ対策としては、まず OpenSearch 構築の際に、パブリックアクセスではなく VPC を用いたアクセスを指定します。

これにより指定したサブネット内に OpenSearch に対するエンドポイントが作成されます。以下の図をご覧ください。

引用元:https://docs.aws.amazon.com/ja_jp/elasticsearch-service/latest/developerguide/es-vpc.html#es-vpc-security

これによってセキュリティを高めることができます。アクセスの制限はセキュリティグループを使って行います。

なおパブリックアクセスかVPCアクセスかの選択は、構築後に変更することはできませんので、その点だけ注意してください。

暗号化

OpenSearch は、保管時のデータの暗号化とノード間の暗号化を行うことでデータや通信の安全性を高めます。これらの機能は、作成時に有効にすれば適用されるますので、必ず有効にしておきましょう。

コンソール画面で確認できます

監査ログ

監査ログも暗号化と同じく OpenSearch の設定で有効化することができます。有効にすることで以下のようなログを監視できます。

  • 認証の成功と失敗
  • OpenSearch へのリクエスト
  • インデックスの変更
  • 受信検索クエリ

上記のように OpenSearch クラスターでのユーザーアクティビティを追跡します。

コンソールの「ログ」タブに設定できる箇所がある

設定方法は上記のように「ログ」タブを選択し、セットアップをクリックすると、CloudWatchロググループとポリシーの作成画面に遷移するので、そちらで設定のうえ作成を行います。設定後は、Kibana でも監査ログ作成の有効化を行ってください。これにて監査ログの設定が完了します。

Kibana の管理画面

Amazon Cognitoなどを用いた認証

Kibana の認証に Amazon Cognito を用いることでセキュリティを向上することができます。

OpenSearch はアクセスポリシーによりアクセス制限を行うことができるので、オプション的な要素とはなりますが、認証に Amazon Cognito を利用することでよりセキュアなアクセスを実現することができます。

インデックスレベル、ドキュメントレベル、フィールドレベルのセキュリティ

ロールの作成画面

インデックス、ドキュメント、フィールドレベルの参照や更新する権限を制限することで OpenSearch のセキュリティレベルを上げることができます。

これらは Kibana にてロールを設定することで実現できます。詳細はオープンソースの OpenSearch のドキュメントに記載があります。

Kibana マルチテナンシー

テナントを管理する画面

Kibana におけるテナントは、インデックスパターン、可視化、ダッシュボード、その他の Kibana オブジェクトを保存するための領域です。

Kibana ではマルチテナンシーを利用することで他の Kibanaユーザーと作業を共有できます。またテナントごとにアクセス許可を与えることで、ユーザーのアクセス制御が可能になります。アクセス許可は Kibana 上のロールによって制限が可能となります。

関連記事

まとめ

Amazon OpenSearch は AWS側の設定と OpenSearch 側の設定、この両方をセットアップすることで充分なセキュリティを確保することができます。ぜひ開発環境などで挙動などを確認して、充分なセキュリティ体制を整えましょう!

このブログでは、AWS の記事をどんどん公開しておりますので、ご興味のある方は他の記事もご覧いただければと思います。

AWS に関する開発は、お気軽にお問い合わせください。