Amazon ElastiCache クラスターの保存時の暗号化をモニタリングする - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon ElastiCache クラスターの保存時の暗号化をモニタリングする

Abhishek A"、Amazon Web Services

概要

Amazon ElastiCache は、高パフォーマンス、拡張性、コストパフォーマンスの高いキャッシュソリューションを提供するAmazon Web Services (AWS) サービスで、インメモリデータストアやキャッシュ環境をクラウドに分散します。スループットが高く、レイテンシーが低いメモリ内データストアからデータを取得します。この機能により、キャッシュ、セッションストア、ゲーム、地理空間サービス、リアルタイム分析、キューイングなどのリアルタイムユースケースによく利用されています。ElastiCache には Redis データストアと Memcached データストアがあり、どちらもミリ秒未満の応答時間を実現します。

データ暗号化は、権限のないユーザーがRedisクラスターや関連するキャッシュストレージシステムで利用可能な機密データを読み取ることを防ぐのに役立ちます。このデータには、保管中のデータと呼ばれる、永続的なメディアに保存されているデータや、転送中のデータと呼ばれる、ネットワークを介した転送の間に傍受される可能性のあるデータが含まれます。

AtRestEncryptionEnabledパラメータを に設定することで、レプリケーショングループの作成時に ElastiCache (Redis OSS) の保管時の暗号化を有効にできますtrue。このパラメータを有効にすると、同期、バックアップ、スワップ操作中にディスクが暗号化され、Amazon Simple Storage Service (Amazon S3) に保存されたバックアップが暗号化されます。既存のレプリケーショングループ上で保管時の暗号化を有効にすることはできません。レプリケーショングループを作成するときに、以下の 2 つの方法で保管中の暗号化を有効にすることができます

  • [デフォルト] オプションを選択すると、保存時にはサービス管理型の暗号化が使用されます。

  • カスタマーマネージドキーを使用して、 AWS Key Management Service () からキー ID または Amazon リソースネーム (ARN) を指定しますAWS KMS。

このパターンは、API コールをモニタリングし、 CreateReplicationGroupオペレーションで Amazon EventBridge Events イベントを生成するセキュリティコントロールを提供します。このイベントは、Python スクリプトを実行する AWS Lambda 関数を呼び出します。関数は、イベント JSON 入力からレプリケーショングループ ID を取得し、次のチェックを実行して、暗号化されていないクラスターがあるかどうかを確認します。

  • AtRestEncryptionEnabledキーが存在するかどうかを確認します。

  • AtRestEncryptionEnabled存在する場合、 は 値をチェックして、それが かどうかを確認しますtrue

  • AtRestEncryptionEnabled値が に設定されている場合false、 は Amazon Simple Notification Service (Amazon SNS) 通知を使用して、違反を追跡し、指定した E メールアドレスに違反メッセージを送信する変数を設定します。

前提条件と制限

前提条件

  • アクティブ AWS アカウント。

  • 提供されたLambda コードをアップロードする S3 バケットに

  • 違反の通知を受信するメールアドレス

  • すべての API ログにアクセスするための ElastiCache ロギングが有効になっています。

制限事項

  • この検出コントロールはリージョン別であり、モニタリング AWS リージョン する各 にデプロイする必要があります。

  • コントロールは、仮想プライベートクラウド (VPC) で実行中のレプリケーショングループをサポートします。

  • このコントロールは、以下のノードタイプを実行するレプリケーショングループをサポートします。

    • R7g、R6gd、R6g、R5、R4、R3

    • M7g、M6g、M5、M4、M3

    • T4g、T3、T2

    • C7gn

製品バージョン

  • ElastiCache (Redis OSS) バージョン 3.2.6 以降、および Valkey 7.2 以降をサポート

アーキテクチャ

ワークフローアーキテクチャ

ElastiCache クラスターをモニタリングするためのワークフロー。
  1. ユーザーは、、 AWS Command Line Interface (AWS CLI) AWS マネジメントコンソール、または API コールを通じて ElastiCache レプリケーショングループを起動します。

  2. CreateReplicationGroup API が呼び出されると、ElastiCache は EventBridge イベントを生成します。

  3. EventBridge ルールは、コンプライアンスチェックのために Lambda 関数をトリガーして呼び出します。

  4. Lambda 関数はイベントを処理し、ElastiCache クラスターで保管時の暗号化が有効になっているかどうかを確認します。

  5. 暗号化違反が検出されると、Lambda 関数は SNS トピックに通知メッセージを発行します。

  6. Amazon SNS は、暗号化コンプライアンス違反に関する E メール通知を管理者に送信します。

自動化とスケール

  • を使用している場合は AWS Organizations、AWS CloudFormation StackSets を使用して、モニタリングする複数のアカウントにこのテンプレートをデプロイできます。

ツール

AWS のサービス

  • Amazon ElastiCache は、 AWS クラウドにおける分散インメモリキャッシュ環境のセットアップ、管理、スケーリングを容易にします。分散キャッシュ環境のデプロイと管理に伴う複雑さを排除しながら、高性能、サイズ変更可能、費用対効果の高いインメモリキャッシュを提供します。ElastiCache は Redis エンジンと Memcached エンジンの両方で動作します。

  • AWS CloudFormation は、 AWS リソースのモデル化とセットアップ、迅速かつ一貫したプロビジョニング、ライフサイクル全体の管理に役立ちます。リソースを個別に管理する代わりに、テンプレートを使用してリソースとその依存関係を記述し、それらをスタックとしてまとめて起動して設定できます。複数の および にまたがるスタックを管理 AWS アカウント およびプロビジョニングできます AWS リージョン。

  • Amazon EventBridge は、 AWS リソースの変更を記述するシステムイベントのほぼリアルタイムのストリームを提供します。EventBridge は、運用上の変更が発生するとそれを認識し、必要に応じて修正措置を講じます。そのためには、環境への応答、関数のアクティブ化、変更、状態情報の取得のためのメッセージを送信します。

  • AWS Lambda は、サーバーのプロビジョニングや管理を行わずにコードの実行を支援できるコンピューティングサービスです。Lambda は必要に応じてコードを実行し、1 日あたり数個のリクエストから 1 秒あたり数千のリクエストまで自動的にスケールします。課金は実際に消費したコンピューティング時間に対してのみ発生します。コードが実行されていない場合、料金は発生しません。 

  • Amazon SNS は、ウェブサーバーや E メールアドレスなど、パブリッシャーとクライアント間のメッセージの送信を調整および管理します。サブスクライバーは、サブスクライブしているトピックに対して発行されたすべてのメッセージを受信します。また、同じトピックのサブスクライバーはすべて同じメッセージを受信します。

Code

このパターンのコードは、保管時の暗号化リポジトリ用の GitHub Monitor Amazon ElastiCache クラスターで使用できます。 Amazon ElastiCache リポジトリ内のファイルの使用方法については、「エピック」セクションを参照してください。

ベストプラクティス

デプロイメント

  • このコントロールをデプロイする前に、 AWS CloudTrail が ElastiCache API コールをログに記録していることを確認します。

  • これはリージョン別のコントロールであり、ElastiCache を使用する各 AWS リージョン にコントロールをデプロイします。

  • ソリューションを本番環境にデプロイする前に、開発/テスト環境でソリューションを検証します。

セキュリティ

  • 暗号化キーの制御を強化するには、カスタマーマネージド KMS キーを使用します。

  • AWS Identity and Access Management (IAM) アクセス許可を確認して、Lambda 実行ロールの最小特権アクセスを確認します。

  • デッドレターキュー内のメッセージのアラートを設定します。

オペレーション

  • コンプライアンスのニーズとコストのバランスを取るために、適切なログ保持を設定します。

  • Lambda の予約済み同時実行数を調整して、ElastiCache の作成頻度に基づいて調整します。

  • チーム通知のために、複数の E メールアドレスを Amazon SNS にサブスクライブします。

モニタリング

  • Amazon CloudWatch アラームを確認して、アラームのしきい値が運用上のニーズと一致していることを確認します。

  • Lambda メトリクスの実行期間とエラー率を定期的にモニタリングします。

  • 違反を定期的に監査して、暗号化コンプライアンス通知を確認します。

エピック

タスク説明必要なスキル

GitHub からコードをダウンロードします。

GitHub からコードリポジトリをクローンまたはダウンロードします。リポジトリには、 ファイルindex.pyと が含まれていますelasticache_encryption_at_rest.yml

クラウドアーキテクト

Lambda デプロイパッケージを作成します。

Python コードから 2 つの .zip ファイルを作成します。

  • ElastiCache-EncryptionAtRest.zipを含む を作成しますindex.py

  • 以下のコマンドを使用します。

    zip ElastiCache-EncryptionAtRest.zip index.py
クラウドアーキテクト

S3 バケットにコードをアップロードします。

  1. 新しい S3 バケットを作成するか、既存の S3 バケットを使用して Lambda コードをアップロードします。

  2. Lambda コード (index.py) を圧縮し、 という名前を付けますElastiCache-EncryptionAtRest.zip

  3. .zip ファイルを S3 バケットにアップロードします。このバケットは、評価するリソース AWS リージョン と同じ にある必要があります。

クラウドアーキテクト

CloudFormation テンプレートをデプロイします。

S3 バケット AWS リージョン と同じ でCloudFormation コンソールを開き、コードリポジトリで提供されているelasticache_encryption_at_rest.ymlファイルをデプロイします。次のエピックでは、テンプレートパラメータの値を指定します。

クラウドアーキテクト
タスク説明必要なスキル

S3 バケット名を入力します。

最初のエピックで作成または選択した S3 バケットの名前を入力します。この S3 バケットには Lambda コードの .zip ファイルが含まれており、評価される CloudFormation テンプレートおよびリソース AWS リージョン と同じ にある必要があります。 

クラウドアーキテクト

S3 キーを入力します。

S3 バケット内の Lambda コードの.zip ファイルの場所を、先頭にスラッシュを付けずに指定します (例えば、ElasticCache-EncryptionAtRest.zipcontrols/ElasticCache-EncryptionAtRest.zip)。

クラウドアーキテクト

メールアドレスを入力します。

違反の通知を受信するメールアドレスを入力します。 

クラウドアーキテクト

ログレベルを指定します。

ログ記録レベルと詳細度を指定します。

  • Info は、アプリケーションの進行状況に関する詳細情報メッセージを指定し、デバッグにのみ使用する必要があります。

  • Error は、アプリケーションの実行を継続できる可能性のあるエラーイベントを指定します。

  • Warning は、潜在的に有害な状況を指定します。

クラウドアーキテクト
タスク説明必要なスキル

メールサブスクリプションを確認します。

CloudFormation テンプレートが正常にデプロイされると、指定した E メールアドレスにサブスクリプションメッセージを送信します。通知を受信するには、この E メールのサブスクリプションを確認する必要があります。

クラウドアーキテクト

トラブルシューティング

問題ソリューション

Lambda 関数がトリガーされない

症状: ElastiCache クラスターを作成または変更した後、CloudWatch にログがない。

解決方法:

  • EventBridge ルールのステータスを確認します。 

    aws events describe-rule --name <rule-name>
  • Lambda リソースベースのポリシーで EventBridge 呼び出しが許可されていることを確認します。

  • EventBridge イベントパターンが ElastiCache API コールと一致することを確認します。

E メール通知なし

症状: Lambda 関数は正常に実行されますが、E メール通知は送信されません。

解決方法:

  • E メールの確認リンクを使用して Amazon SNS サブスクリプションを確認します。

  • Amazon SNS E メールのスパムフォルダまたは迷惑メールフォルダを確認します。

  • Lambda 環境変数の Amazon SNS トピックの Amazon リソースネーム (ARN) を確認します。OUTBOUND_TOPIC_ARN

  • Amazon SNS を手動でテストします。 

    aws sns publish --topic-arn <arn> --message "Test"

アクセス許可の問題

症状: Lambda 関数 CloudWatch ログのアクセス拒否エラー。

解決方法:

  • Lambda 実行ロールに必要な ElastiCache 読み取りアクセス許可があることを確認します。

  • AWS KMS キーポリシーに Lambda 実行ロールが含まれていることを確認します。

  • Amazon SNS トピックポリシーが Lambda に発行を許可していることを確認します。

関連リソース