Elasticsearch の Security Hub
これらの AWS Security Hub コントロールは、Elasticsearch サービスとリソースを評価します。
これらのコントロールは、すべての AWS リージョン で使用できるとは限りません。詳細については、「リージョン別のコントロールの可用性」を参照してください。
[ES.1] Elasticsearch ドメインは、保管中の暗号化を有効にする必要があります
関連する要件: PCI DSS v3.2.1/3.4、NIST.800-53.r5 CA-9(1)、NIST.800-53.r5 CM-3(6)、NIST.800-53.r5 SC-13、NIST.800-53.r5 SC-28、NIST.800-53.r5 SC-28(1)、NIST.800-53.r5 SC-7(10)、NIST.800-53.r5 SI-7(6)
カテゴリ: 保護 > データ保護 > 保管中のデータの暗号化
重要度: 中
リソースタイプ : AWS::Elasticsearch::Domain
AWS Config ルール : elasticsearch-encrypted-at-rest
スケジュールタイプ: 定期的
パラメータ: なし
このコントロールは、Elasticsearch ドメインで保管中の暗号化設定が有効になっているかどうかをチェックします。保管中の暗号化が有効になっていない場合、チェックは失敗します。
OpenSearch 内の機密データのセキュリティを強化するには、保管中に暗号化されるように OpenSearch を設定する必要があります。Elasticsearch ドメインは、保管中のデータの暗号化を提供します。この機能では AWS KMS を使用して、暗号化キーを保存し管理します。暗号化の実行には、256 ビットキーを使用した Advanced Encryption Standard アルゴリズム (AES-256) を使用します。
保管中の OpenSearch での暗号化の詳細については、「Amazon OpenSearch Service 開発者ガイド」の「Amazon OpenSearch Service の保管中のデータの暗号化」を参照してください。
t.small
や t.medium
などの特定のインスタンスタイプでは、保管中のデータの暗号化がサポートされていません。詳細については、「Amazon OpenSearch Service 開発者ガイド」の「サポートされるインスタンスタイプ」を参照してください。
修正
新規および既存の Elasticsearch ドメインの保管時の暗号化を有効にするには、「Amazon OpenSearch Service 開発者ガイド」の「保管中のデータの暗号化の有効化」を参照してください。
[ES.2] Elasticsearch ドメインがパブリックにアクセスできないようにする必要があります
関連する要件: PCI DSS v3.2.1/1.2.1、PCI DSS v3.2.1/1.3.1、PCI DSS v3.2.1/1.3.2、PCI DSS v3.2.1/1.3.4、PCI DSS v3.2.1/1.3.6、NIST.800-53.r5 AC-21、NIST.800-53.r5 AC-3、NIST.800-53.r5 AC-3(7)、NIST.800-53.r5 AC-4、NIST.800-53.r5 AC-4(21)、NIST.800-53.r5 AC-6、NIST.800-53.r5 SC-7、NIST.800-53.r5 SC-7(11)、NIST.800-53.r5 SC-7(16)、NIST.800-53.r5 SC-7(20)、NIST.800-53.r5 SC-7(21)、NIST.800-53.r5 SC-7(3)、NIST.800-53.r5 SC-7(4)、NIST.800-53.r5 SC-7(9)
カテゴリ: 保護 > セキュアなネットワーク設定 > VPC 内のリソース
重要度: 非常事態
リソースタイプ : AWS::Elasticsearch::Domain
AWS Config ルール : elasticsearch-in-vpc-only
スケジュールタイプ: 定期的
パラメータ: なし
このコントロールは、Elasticsearch ドメインが VPC 内にあるかどうかをチェックします。このコントロールは、パブリックアクセスの可能性を判断するための VPC サブネットルーティング設定を評価しません。Elasticsearch ドメインがパブリックサブネットに添付済みでないことを確認する必要があります。「Amazon OpenSearch Service 開発者ガイド」の「リソースベースのポリシー」を参照してください。また、推奨されるベストプラクティスに従って VPC が確実に設定されていることを確認する必要があります。「Amazon VPC ユーザーガイド」の「VPC のセキュリティのベストプラクティス」を参照してください。
VPC 内にデプロイされた Elasticsearch ドメインは、パブリックインターネットを経由する必要なく、プライベート AWS ネットワーク経由で VPC リソースと通信できます。この設定では、転送中のデータへのアクセスを制限することにより、セキュリティ体制が向上します。VPC は、ネットワーク ACL やセキュリティグループを含む Elasticsearch ドメインへのアクセスを保護するための多数のネットワークコントロールを提供します。Security Hub では、これらのコントロールを有効に利用するために、パブリック Elasticsearch ドメインを VPC に移行することを推奨します。
修正
パブリックエンドポイントを使用してドメインを作成する場合、後で VPC 内にドメインを配置することはできません。代わりに、新規のドメインを作成して、データを移行する必要があります。逆の場合も同様です。VPC 内にドメインを作成する場合、パブリックエンドポイントを持つことはできません。代わりに、別のドメインを作成するか、このコントロールを無効にする必要があります。
「Amazon OpenSearch Service 開発者ガイド」の「VPC 内で Amazon OpenSearch Service ドメインを起動する」を参照してください。
[ES.3] Elasticsearch ドメインは、ノード間で送信されるデータを暗号化する必要があります
関連する要件: NIST.800-53.r5 AC-4、NIST.800-53.r5 SC-13、NIST.800-53.r5 SC-23、NIST.800-53.r5 SC-23(3)、NIST.800-53.r5 SC-7(4)、NIST.800-53.r5 SC-8、NIST.800-53.r5 SC-8(1)、NIST.800-53.r5 SC-8(2)
カテゴリ: 保護 > データ保護 > 転送中のデータの暗号化
重要度: 中
リソースタイプ : AWS::Elasticsearch::Domain
AWS Config ルール : elasticsearch-node-to-node-encryption-check
スケジュールタイプ: 変更がトリガーされた場合
パラメータ: なし
このコントロールは Elasticsearch ドメインでノード間の暗号化が有効になっているかどうかをチェックします。Elasticsearch ドメインでノード間の暗号化が有効になっていない場合、このコントロールは失敗します。Elasticsearch バージョンがノード間の暗号化チェックをサポートしていない場合、コントロールは失敗した検出結果も生成します。
HTTPS (TLS) を使用すると、潜在的な攻撃者が中間者攻撃または同様の攻撃を使用してネットワークトラフィックを盗聴または操作することを防止できます。HTTPS (TLS) 経由の暗号化された接続のみを許可する必要があります。Elasticsearch ドメインのノード間の暗号化を有効にすると、クラスター内の通信が転送中に確実に暗号化されます。
この設定には、パフォーマンス上のペナルティが発生する可能性があります。このオプションを有効にする前に、パフォーマンスのトレードオフを認識してテストする必要があります。
修正
新規および既存のドメインでノード間の暗号化を有効にする方法については、「Amazon OpenSearch Service デベロッパーガイド」の「ノード間の暗号化を有効にする」を参照してください。
[ES.4] CloudWatch Logs への Elasticsearch ドメインエラーログ記録を有効にする必要があります
関連する要件: NIST.800-53.r5 AC-2(4)、NIST.800-53.r5 AC-4(26)、NIST.800-53.r5 AC-6(9)、NIST.800-53.r5 AU-10、NIST.800-53.r5 AU-12、NIST.800-53.r5 AU-2、NIST.800-53.r5 AU-3、NIST.800-53.r5 AU-6(3)、NIST.800-53.r5 AU-6(4)、NIST.800-53.r5 CA-7、NIST.800-53.r5 SC-7(9)、NIST.800-53.r5 SI-3(8)、NIST.800-53.r5 SI-4(20)、NIST.800-53.r5 SI-7(8)
カテゴリ: 識別 - ログ記録
重要度: 中
リソースタイプ : AWS::Elasticsearch::Domain
AWS Config ルール : elasticsearch-logs-to-cloudwatch
スケジュールタイプ: 変更がトリガーされた場合
パラメータ :
-
logtype = 'error'
(カスタマイズ不可)
このコントロールは、Elasticsearch ドメインが CloudWatch Logs にエラーログを送信するように設定されているかどうかをチェックします。
Elasticsearch ドメインのエラーログを有効にし、これらのログは保持と応答のために CloudWatch Logs に送信する必要があります。ドメインのエラーログは、セキュリティとアクセス監査や、可用性の問題の診断に役立ちます。
修正
ログ発行を有効にする方法については、「Amazon OpenSearch Service 開発者ガイド」の「ログ発行を有効にする (コンソール)」を参照してください。
[ES.5] Elasticsearch ドメインで監査ログ記録が有効になっている必要があります
関連する要件: NIST.800-53.r5 AC-2(4)、NIST.800-53.r5 AC-4(26)、NIST.800-53.r5 AC-6(9)、NIST.800-53.r5 AU-10、NIST.800-53.r5 AU-12、NIST.800-53.r5 AU-2、NIST.800-53.r5 AU-3、NIST.800-53.r5 AU-6(3)、NIST.800-53.r5 AU-6(4)、NIST.800-53.r5 CA-7、NIST.800-53.r5 SC-7(9)、NIST.800-53.r5 SI-3(8)、NIST.800-53.r5 SI-4(20)、NIST.800-53.r5 SI-7(8)
カテゴリ: 識別 > ログ記録
重要度: 中
リソースタイプ : AWS::Elasticsearch::Domain
AWS Config ルール: elasticsearch-audit-logging-enabled
(カスタム Security Hub ルール)
スケジュールタイプ: 変更がトリガーされた場合
パラメータ :
-
cloudWatchLogsLogGroupArnList
(カスタマイズ不可)。Security Hub は、このパラメータを設定しません。監査ログ用に設定する必要がある CloudWatch Logs ロググループのカンマ区切りリスト。Elasticsearch ドメインの CloudWatch Logs ロググループがこのパラメータリストで指定されていない場合、このルールは
NON_COMPLIANT
です。
このコントロールは、Elasticsearch ドメインで監査ログ記録が有効になっているかどうかをチェックします。Elasticsearch ドメインで監査ログ記録が有効になっていない場合、このコントロールは失敗します。
監査ログは高度なカスタマイズが可能です。これにより、認証の成功と失敗、OpenSearch へのリクエスト、インデックス変更、受信検索クエリなど、Elasticsearch クラスターでのユーザーアクティビティを追跡できます。
修正
監査ログを有効にする詳細な手順については、「Amazon OpenSearch Service 開発者ガイド」の「監査ログの有効化」を参照してください。
[ES.6] Elasticsearch ドメインには少なくとも 3 つのデータノードが必要です
関連する要件: NIST.800-53.r5 CP-10、NIST.800-53.r5 CP-6(2)、NIST.800-53.r5 SC-36、NIST.800-53.r5 SC-5(2)、NIST.800-53.r5 SI-13(5)
カテゴリ: リカバリ > 耐障害性 > 高可用性
重要度: 中
リソースタイプ : AWS::Elasticsearch::Domain
AWS Config ルール: elasticsearch-data-node-fault-tolerance
(カスタム Security Hub ルール)
スケジュールタイプ: 変更がトリガーされた場合
パラメータ: なし
このコントロールは、Elasticsearch ドメインに少なくとも 3 つのデータノードが設定されていること、また zoneAwarenessEnabled
が true
かどうかをチェックします。
Elasticsearch ドメインでは、高可用性と耐障害性のために少なくとも 3 つのデータノードが必要です。少なくとも 3 つのデータノードを持つ Elasticsearch ドメインをデプロイすると、ノードに障害が発生した場合のクラスター操作が確保されます。
修正
Elasticsearch ドメインのデータノードの数を変更するには
Amazon OpenSearch Service コンソール (https://console.aws.amazon.com/aos/
) を開きます。 -
[ドメイン] で、編集するドメインの名前を選択します。
-
[Edit domain] (ドメインの編集) を選択します。
-
[Data nodes] (データノード) で、[Number of nodes] (ノード数) に
3
以上の数値を設定します。3 つのアベイラビリティーゾーンのデプロイは、3 の倍数に設定してアベイラビリティーゾーン間で均等に配信されるようにします。
-
[Submit] (送信) を選択します。
[ES.7] Elasticsearch ドメインは、少なくとも 3 つの専用マスターノードを設定する必要があります。
関連する要件: NIST.800-53.r5 CP-10、NIST.800-53.r5 CP-6(2)、NIST.800-53.r5 SC-36、NIST.800-53.r5 SC-5(2)、NIST.800-53.r5 SI-13(5)
カテゴリ: リカバリ > 耐障害性 > 高可用性
重要度: 中
リソースタイプ : AWS::Elasticsearch::Domain
AWS Config ルール: elasticsearch-primary-node-fault-tolerance
(カスタム Security Hub ルール)
スケジュールタイプ: 変更がトリガーされた場合
パラメータ: なし
このコントロールは、Elasticsearch ドメインが、少なくとも 3 つの専用プライマリノードで構成されているかどうかをチェックします。ドメインが専用プライマリノードを使用しない場合、このコントロールは失敗します。Elasticsearch ドメインに 5 つの専用プライマリノードがある場合、このコントロールは成功します。ただし、3 つ以上のプライマリノードの使用は、可用性リスクを低減するために不要な場合があり、使用により追加コストが発生します。
Elasticsearch ドメインでは、高可用性と耐障害性のために、少なくとも 3 つの専用プライマリノードが必要です。専用プライマリノードのリソースは、データノードのブルー/グリーンのデプロイ中に管理が必要なノードが追加されるため、負荷がかかることがあります。少なくとも 3 つの専用プライマリノードを持つ Elasticsearch ドメインをデプロイすると、ノードに障害が発生した場合に十分なプライマリノードのリソース容量とクラスター操作が確保されます。
修正
OpenSearch ドメイン内の専用プライマリノード数を変更するには
Amazon OpenSearch Service コンソール (https://console.aws.amazon.com/aos/
) を開きます。 -
[ドメイン] で、編集するドメインの名前を選択します。
-
[Edit domain] (ドメインの編集) を選択します。
-
[Dedicated master nodes] (専用マスターノード) で、[Instance type] (インスタンスタイプ) に目的のインスタンスタイプを設定します。
-
[Number of master nodes] (マスターノードの数) を 3 以上に設定します。
-
[Submit] (送信) を選択します。
[ES.8] Elasticsearch ドメインへの接続は最新の TLS セキュリティポリシーを使用して暗号化する必要があります
関連する要件: NIST.800-53.r5 AC-17(2)、NIST.800-53.r5 AC-4、NIST.800-53.r5 IA-5(1)、NIST.800-53.r5 SC-12(3)、NIST.800-53.r5 SC-13、NIST.800-53.r5 SC-23、NIST.800-53.r5 SC-23(3)、NIST.800-53.r5 SC-7(4)、NIST.800-53.r5 SC-8、NIST.800-53.r5 SC-8(1)、NIST.800-53.r5 SC-8(2)、NIST.800-53.r5 SI-7(6)
カテゴリ: 保護 > データ保護 > 転送中のデータの暗号化
重要度: 中
リソースタイプ : AWS::Elasticsearch::Domain
AWS Config ルール: elasticsearch-https-required
(カスタム Security Hub ルール)
スケジュールタイプ: 変更がトリガーされた場合
パラメータ: なし
このコントロールは、Elasticsearch ドメインエンドポイントが最新の TLS セキュリティポリシーを使用するように設定されているかどうかを確認します。Elasticsearch ドメインエンドポイントが最新のサポートされているポリシーを使用するように設定されていない場合、または HTTP が有効になっていない場合、コントロールは失敗します。現在サポートされている最新の TLS セキュリティポリシーは Policy-Min-TLS-1-2-PFS-2023-10
です。
HTTPS (TLS) を使用すると、潜在的な攻撃者が中間者攻撃または同様の攻撃を使用してネットワークトラフィックを盗聴または操作することを防止できます。HTTPS (TLS) 経由の暗号化された接続のみを許可する必要があります。転送中のデータの暗号化は、パフォーマンスに影響する可能性があります。TLS のパフォーマンスプロファイルと TLS の影響を把握するには、この機能を使用してアプリケーションをテストする必要があります。TLS 1.2 は、以前の TLS バージョンに比べて、いくつかのセキュリティ機能の強化を提供します。
修正
TLS 暗号化を有効にするには、UpdateDomainConfig API オペレーションを使用して、DomainEndpointOptions を設定します。これにより、TLSSecurityPolicy
が設定されます。
[ES.9] Elasticsearch ドメインにはタグを付ける必要があります
カテゴリ: 識別 > インベントリ > タグ付け
重要度: 低
リソースタイプ : AWS::Elasticsearch::Domain
AWS Config ルール: tagged-elasticsearch-domain
(カスタム Security Hub ルール)
スケジュールタイプ: 変更がトリガーされた場合
パラメータ :
パラメータ | 説明 | [Type] (タイプ) | 許可されているカスタム値 | Security Hub のデフォルト値 |
---|---|---|---|---|
requiredTagKeys
|
評価されたリソースに含める必要があるシステム以外のタグキーのリスト。タグキーでは、大文字と小文字が区別されます。 | StringList | AWS 要件を満たすタグのリスト |
No default value
|
このコントロールは、Elasticsearch ドメインにパラメータ requiredTagKeys
で定義された特定のキーを持つタグがあるかどうかをチェックします。ドメインにタグキーがない場合、またはパラメータ requiredTagKeys
で指定されたすべてのキーがない場合、コントロールは失敗します。パラメータ requiredTagKeys
が指定されていない場合、コントロールはタグキーの存在のみをチェックし、ドメインにキーがタグ付けされていない場合は失敗します。自動的に適用され、aws:
で始まるシステムタグは無視されます。
タグは AWS リソースに割り当てることができるラベルであり、キーとオプションの値で構成されます。タグを作成することで、リソースを目的、所有者、環境その他の基準別に分類できます。タグは、リソースの識別、整理、検索、フィルタリングに役立ちます。タグ付けは、アクションと通知の説明責任のあるリソース所有者を追跡するのに役立ちます。タグ付けを使用する場合、タグに基づいてアクセス許可を定義する認証戦略として属性ベースのアクセスコントロール (ABAC) を実装できます。タグは、IAM エンティティ (ユーザーまたはロール)、および AWS リソースにアタッチできます。IAM プリンシパルに対して、単一の ABAC ポリシー、または個別のポリシーセットを作成できます。これらの ABAC ポリシーを、プリンシパルのタグがリソースタグと一致するときに操作を許可するように設計することができます。ABAC の詳細については、「IAM ユーザーガイド」の「ABAC の目的AWS」を参照してください。
注記
タグには、個人を特定できる情報 (PII) や、機密情報あるいは秘匿性の高い情報は追加しないでください。タグは、AWS Billing を含む多くの AWS のサービス からアクセスできます。タグ付けのベストプラクティスの詳細については、「AWS 全般のリファレンス」の「AWS リソースのタグ付け」を参照してください。
修正
Elasticsearch ドメインにタグを追加するには、「Amazon OpenSearch Service デベロッパーガイド」の「タグの使用」を参照してください。