

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

# Amazon ElastiCache Well-Architected レンズのセキュリティの柱
<a name="SecurityPillar"></a>

セキュリティの柱は、情報とシステムの保護に焦点を当てています。主なトピックは、データの機密性と完全性、権限ベースの管理による誰が何を実行できるのかの特定と管理、システムの保護、セキュリティイベントを検出するための制御の確立です。

**Topics**
+ [SEC 1: ElastiCache データへの許可されたアクセスを制御するためにどのような措置を講じているか。](#SecurityPillarSEC1)
+ [SEC 2: アプリケーションでは、ネットワークベースの制御に加えて、ElastiCache への追加の認可が必要か。](#SecurityPillarSEC2)
+ [SEC 3: コマンドが誤って実行され、データが失われたり失敗するリスクはあるか。](#SecurityPillarSEC3)
+ [SEC 4: ElastiCache を使用して保存中のデータの暗号化をどのように実現しているか。](#SecurityPillarSEC4)
+ [SEC 5: 転送中のデータを ElastiCache でどのように暗号化するか。](#SecurityPillarSEC5)
+ [SEC 6: コントロールプレーンリソースへのアクセスをどのように制限するか。](#SecurityPillarSEC6)
+ [SEC 7: セキュリティイベントをどのように検出して対応しているか。](#SecurityPillarSEC7)

## SEC 1: ElastiCache データへの許可されたアクセスを制御するためにどのような措置を講じているか。
<a name="SecurityPillarSEC1"></a>

**質問レベルの紹介:** すべての ElastiCache クラスターは、VPC 内の Amazon Elastic Compute Cloud インスタンス、サーバーレス関数 (AWS Lambda)、またはコンテナ (Amazon Elastic Container Service) からアクセスできるように設計されています。最もよく遭遇するシナリオは、同じ Amazon Virtual Private Cloud (Amazon Virtual Private Cloud) の Amazon Elastic Compute Clou インスタンスから ElastiCache クラスターにアクセスすることです。Amazon EC2 インスタンスからクラスターに接続するには、Amazon EC2 インスタンスにクラスターへのアクセスを許可する必要があります。VPC で実行されている ElastiCache クラスターにアクセスするには、クラスターへのネットワーク進入を許可する必要があります。

**質問レベルのメリット:** クラスターへのネットワーク進入は VPC セキュリティグループによって制御されます。セキュリティグループは、Amazon EC2 インスタンスの仮想ファイアウォールとして機能し、受信トラフィックと送信トラフィックを制御します。インバウンドルールはインスタンスへの受信トラフィックを制御し、アウトバウンドルールはインスタンスからの送信トラフィックをコントロールします。ElastiCache の場合、クラスターを起動するときに、セキュリティグループを関連付ける必要があります。これにより、インバウンドとアウトバウンドのトラフィックルールがクラスターを構成するすべてのノードに適用されるようになります。さらに、ElastiCache はプライベートサブネットにのみデプロイするように設定されているため、VPC のプライベートネットワーク経由でのみアクセスできます。
+ **[必須]** クラスターに関連付けられているセキュリティグループは、クラスターへのネットワークの進入とアクセスを制御します。デフォルトでは、セキュリティグループにはインバウンドルールが定義されていないため、ElastiCache への進入パスはありません。これを有効にするには、セキュリティグループのインバウンドルールを設定し、送信元 IP アドレス/範囲、TCP タイプのトラフィック、および ElastiCache クラスターのポート (例えば、ElastiCache for Valkey と ElastiCache for Redis OSS の場合はデフォルトポート 6379) を指定します。VPC 内のすべてのリソース (0.0.0.0/0) など、非常に広範囲の進入ソースを許可することは可能ですが、特定のセキュリティグループに関連付けられた Amazon EC2 インスタンスで実行されている Valkey または Redis OSS クライアントへのインバウンドアクセスのみを許可するなど、インバウンドルールはできるだけ細かく定義することをお勧めします。

  **[リソース]: **
  + [サブネットおよびサブネットグループ](SubnetGroups.md)
  + [クラスターまたはレプリケーショングループへのアクセス](accessing-elasticache.md)
  + [セキュリティグループを使用してリソースへのトラフィックを制御する](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html#DefaultSecurityGroupdefault%20security%20group)
  + [Linux インスタンス用の Amazon Elastic Compute Cloud セキュリティグループ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html#creating-your-own-security-groups)
+ **[必須]** AWS Identity and Access Management ポリシーを AWS Lambda 関数に割り当てて、ElastiCache データへのアクセスを許可できます。この機能を有効にするには、`AWSLambdaVPCAccessExecutionRole` アクセス許可を持つ IAM 実行ロールを作成し、そのロールを AWS Lambda 関数に割り当てます。

  **[リソース]:** Amazon VPC 内の Amazon ElastiCache にアクセスするための Lambda 関数の設定: [チュートリアル: Amazon VPC 内の Amazon ElastiCache にアクセスするための Lambda 関数の設定](https://docs.aws.amazon.com/lambda/latest/dg/services-elasticache-tutorial.html)

## SEC 2: アプリケーションでは、ネットワークベースの制御に加えて、ElastiCache への追加の認可が必要か。
<a name="SecurityPillarSEC2"></a>

**質問レベルの導入:** クラスターへのアクセスを個々のクライアントレベルで制限または制御する必要があるシナリオでは、AUTH コマンドを使用して認証することをお勧めします。ElastiCache 認証トークンとオプションのユーザーおよびユーザーグループ管理により、ElastiCache では、クライアントにコマンドやアクセスキーの実行を許可する前にパスワードを要求できるようになるため、データプレーンのセキュリティが向上します。

**質問レベルのメリット:** データを安全に保つために、ElastiCache にはデータへの不正アクセスを防ぐメカニズムが用意されています。これには、承認されたコマンドを実行する前にクライアントが ElastiCache に接続するために使用するロールベースのアクセス制御 (RBAC) AUTH または AUTH トークン (パスワード) を強制することが含まれます。
+ **[最良]** Redis OSS 用の ElastiCache バージョン 6.x 以降と Valkey 用の ElastiCache バージョン 7.2 以降では、ユーザーグループ、ユーザー、アクセス文字列を定義して認証と認可の制御を定義します。ユーザーをユーザーグループに割り当ててから、ユーザーグループをクラスターに割り当てます。RBAC を利用するには、クラスターの作成時に RBAC を選択し、転送中の暗号化を有効にする必要があります。RBAC を利用するには、TLS をサポートする Valkey または Redis OSS クライアントを使用していることを確認します。

  **[リソース]: **
  + [ElastiCache のレプリケーショングループへの RBAC の適用](Clusters.RBAC.md#rbac-using)
  + [アクセス文字列を使用したアクセス許可の指定](Clusters.RBAC.md#Access-string)
  + [ ACL](https://valkey.io/topics/acl/)
  + [サポートされている ElastiCache バージョン](VersionManagement.md#supported-engine-versions)
+ **[最良]** Redis OSS 用の 6.x より前のバージョンの ElastiCache では、強力なトークンまたはパスワードを設定し、AUTH の厳格なパスワードポリシーを維持することに加えて、パスワードまたはトークンをローテーションすることがベストプラクティスです。ElastiCache は一度に最大 2 つの認証トークンを管理できます。また、クラスターを変更して、認証トークンの使用を明示的に要求することもできます。

  **[リソース]: **[既存の ElastiCache クラスターでの AUTH トークンの変更](auth.md#auth-modifyng-token)

## SEC 3: コマンドが誤って実行され、データが失われたり失敗するリスクはあるか。
<a name="SecurityPillarSEC3"></a>

**質問レベルの導入:** 誤って実行されたり、悪意のある攻撃者によって実行されたりすると、オペレーションに悪影響を及ぼす可能性のある Valkey または Redis OSS コマンドが多数あります。これらのコマンドは、パフォーマンスとデータ安全性の観点から、意図しない結果をもたらす可能性があります。例えば、開発者が開発環境で日常的に FLUSHALL コマンドを呼び出している場合、間違って本番システムでこのコマンドを呼び出そうとすると、誤ってデータが失われる可能性があります。

**質問レベルのメリット:** Redis OSS 用の ElastiCache バージョン 5.0.3 以降、ワークロードに支障をきたす可能性のある特定のコマンドの名前を変更できるようになりました。コマンドの名前を変更すると、クラスターでコマンドが誤って実行されるのを防ぐことができます。
+ **[必須] **

  **[リソース]: **
  + [Redis OSS 用の ElastiCache バージョン 5.0.3 (廃止、バージョン 5.0.6 を使用してください)](engine-versions.md#redis-version-5-0.3)
  + [Redis OSS 用の ElastiCache バージョン 5.0.3 パラメータの変更](ParameterGroups.Engine.md#ParameterGroups.Redis.5-0-3)
  + [Redis OSS のセキュリティ](https://redis.io/docs/management/security/)

## SEC 4: ElastiCache を使用して保存中のデータの暗号化をどのように実現しているか。
<a name="SecurityPillarSEC4"></a>

**質問レベルの導入:** ElastiCache はインメモリデータストアですが、クラスターの標準オペレーションの一部として (ストレージ上に) 永続化される可能性のあるすべてのデータを暗号化できます。これには、Amazon S3 に書き込まれたスケジュールバックアップと手動バックアップ、および同期およびスワップオペレーションの結果としてディスクストレージに保管されたデータが含まれます。M6g および R6g ファミリーのインスタンスタイプには、常時オンのインメモリ暗号化も備わっています。

**質問レベルのメリット:** ElastiCache では、データセキュリティを強化するため、保管時の暗号化をオプションで提供しています。
+ **[必須] **保管時の暗号化は、ElastiCache クラスター (レプリケーショングループ) に対してその作成時にのみ有効にできます。既存のクラスターを変更して、保管中のデータの暗号化を開始することはできません。デフォルトでは、保管中の暗号化に使用されるキーは ElastiCache が提供および管理します。

  **[リソース]: **
  + [保存時の暗号化の制限](at-rest-encryption.md#at-rest-encryption-constraints)
  + [保管時の暗号化を有効にする](at-rest-encryption.md#at-rest-encryption-enable)
+ **[最良]**メモリ内にあるデータを暗号化する Amazon EC2 インスタンスタイプ (M6g や R6g など) を活用します。可能な場合は、保管中の暗号化に独自のキーを管理することを検討してください。より厳格なデータセキュリティ環境では、AWS Key Management Service (KMS) を使用してカスタマーマスターキー (CMK) を自己管理できます。AWS Key Management Service と ElastiCache を統合することで、ElastiCache クラスターの保管中のデータの暗号化に使用されるキーを作成、所有、管理できます。

  **[リソース]: **
  + [ からの KMS のカスタマーマネージドキーの使用AWS Key Management Service](at-rest-encryption.md#using-customer-managed-keys-for-elasticache-security)
  + [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)
  + [AWS KMS のコンセプト](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)

## SEC 5: 転送中のデータを ElastiCache でどのように暗号化するか。
<a name="SecurityPillarSEC5"></a>

**質問レベルの導入:** 一般要件として、転送中のデータ漏えいを防止することが必要です。これには、分散システムのコンポーネント内のデータだけでなく、アプリケーションクライアントとクラスターノード間のデータも含まれます。ElastiCache では、クライアントとクラスターの間、およびクラスターノード間の転送中のデータを暗号化できるようにすることで、この要件に対応します。M6g および R6g ファミリーのインスタンスタイプには、常時オンのインメモリ暗号化も備わっています。

**質問レベルのメリット: **Amazon ElastiCache 転送時の暗号化は、ある場所から別の場所に移動するときに、データの最も脆弱なポイントでのデータのセキュリティを強化できるオプション機能です。
+ **[必須]** 転送中の暗号化は、作成時にクラスター (レプリケーショングループ) でのみ有効にできます。データの暗号化または復号化には追加の処理が必要なため、転送中の暗号化を実装すると、パフォーマンスにいくらか影響があることに注意してください。この影響について理解するため、転送中の暗号化を有効にする前と後にワークロードのベンチマークを行うことをお勧めします。

  **[リソース]: **
  + [転送時の暗号化の概要](in-transit-encryption.md#in-transit-encryption-overview)

## SEC 6: コントロールプレーンリソースへのアクセスをどのように制限するか。
<a name="SecurityPillarSEC6"></a>

**質問レベルの導入:** IAM ポリシーと ARN により、ElastiCache for Valkey と ElastiCache for Redis OSS のよりきめ細かなアクセス制御が可能になり、クラスターの作成、変更、削除をより厳密に管理できるようになります。

**質問レベルのメリット:** レプリケーショングループ、ノードなどの Amazon ElastiCache リソースの管理を、IAM ポリシーに基づいて特定の権限を持つ AWS アカウントに制限できるため、リソースのセキュリティと信頼性が向上します。
+ **[必須]** 特定の AWS Identity and Access Management ポリシーを AWS ユーザーに割り当てて Amazon ElastiCache リソースへのアクセスを管理し、どのアカウントがクラスターでどのアクションを実行できるかをより細かく制御できるようにします。

  **[リソース]: **
  + [ElastiCache リソースに対するアクセス許可の管理の概要](IAM.Overview.md)
  + [Amazon ElastiCache でのアイデンティティベースのポリシー (IAM ポリシー) の使用](IAM.IdentityBasedPolicies.md)

## SEC 7: セキュリティイベントをどのように検出して対応しているか。
<a name="SecurityPillarSEC7"></a>

**質問レベルの紹介:** ElastiCache は RBAC を有効にしてデプロイするとき、CloudWatch メトリクスをエクスポートしてユーザーにセキュリティイベントを通知します。これらのメトリクスは、接続する RBAC ユーザーに許可されていない認証、キーのアクセス、コマンドの実行の試みが失敗したことを特定するのに役立ちます。

さらに、AWS 製品とサービスのリソースは、デプロイを自動化し、すべてのアクションと変更を記録して後から確認または監査できるようにすることで、全体的なワークロードを保護するのに役立ちます。

**質問レベルのメリット:** イベントをモニタリングすることで、組織は要件、ポリシー、手順に従って対応できるようになります。これらのセキュリティイベントのモニタリングと対応を自動化すると、全体的なセキュリティ体制が強化されます。
+ **[必須]** RBAC 認証と認可の失敗に関連する発行済みの CloudWatch メトリクスをよく理解しておきます。
  + AuthenticationFailures = Valkey または Redis OSS への認証の試みに失敗
  + KeyAuthorizationFailures = ユーザーによる許可のないキーへのアクセスの試みの失敗
  + CommandAuthorizationFailures = ユーザーによる許可のないコマンドの実行の試みの失敗

  **[リソース]: **
  + [Valkey または Redis OSS のメトリクス](CacheMetrics.Redis.md)
+ **[最良]** これらのメトリクスにアラートと通知を設定し、必要に応じて対応することをお勧めします。

  **[リソース]: **
  + [Amazon CloudWatch でのアラームの使用](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)
+ **[最良]** Valkey または Redis OSS ACL LOG コマンドを使用して詳細を収集します

  **[リソース]: **
  + [ACL ログ](https://valkey.io/commands/acl-log/)
+ **[最良]** ElastiCache のデプロイとイベントのモニタリング、ロギング、分析に関連する AWS 製品とサービスの機能についてよく理解しておきます。

  **[リソース]: **
  + [AWS CloudTrail による Amazon ElastiCache API コールのロギング](logging-using-cloudtrail.md)
  + [elasticache-redis-cluster-automatic-backup-check](https://docs.aws.amazon.com/config/latest/developerguide/elasticache-redis-cluster-automatic-backup-check.html)
  + [CloudWatch メトリクスの使用状況のモニタリング](CacheMetrics.md)