ElastiCache for Redis での保管時の暗号化
データを安全に保つために、Amazon ElastiCache と Amazon S3 には、キャッシュ内のデータへのアクセスを制限するさまざまな方法が用意されています。詳細については、Amazon VPC と ElastiCache のセキュリティ および Amazon ElastiCache での Identity and Access Managementq を参照してください。
ElastiCache for Redis の保管時の暗号化は、ディスク上のデータを暗号化することでデータのセキュリティを強化するオプションの機能です。レプリケーショングループに対して有効にすると、以下の側面が暗号化されます。
データ階層化が有効なクラスター内の SSD (ソリッドステートドライブ) に保存されたデータは、デフォルトで常時暗号化されます。クラスターをバックアップするときに、暗号化オプションで、デフォルトの暗号化キーを使用するか、カスタマー管理のキーを使用するかを選択します。詳細については、保管時の暗号化を有効にするを参照してください。
-
同期、バックアップ、およびスワップオペレーション中のディスク
-
バックアップは Amazon S3 に保存されます。
ElastiCache for Redis では、保管時のデフォルト (サービス管理) の暗号化が用意されているだけでなく、お客様独自のカスタマー管理の対称 AWS KMS キーを AWS Key Management Service (KMS) で使用することもできます。
注記
デフォルトの (サービス管理) 暗号化は、GovCloud (US) リージョンで使用できる唯一のオプションです。
重要
既存の redis クラスターで保管時の暗号化を有効にするには、レプリケーショングループでバックアップと復元を実行した後で、既存のレプリケーショングループを削除する必要があります。
保管時の暗号化は、レプリケーショングループに対してその作成時にのみ有効にできます。データの暗号化と復号を行うにはある程度の処理が必要であるため、保管時の暗号化を有効にすると、これらのオペレーションの実行中のパフォーマンスに影響を与える可能性があります。保管時の暗号化の使用時と未使用時でデータのベンチマークを取得して、ユースケースにおけるパフォーマンスの影響を判断する必要があります。
転送時の暗号化については、「ElastiCache の転送時の暗号化 (TLS)」を参照してください。
保管時の暗号化の条件
ElastiCache の保管時の暗号化の実装を計画する際は、ElastiCache の保管時の暗号化の以下の制約事項に留意する必要があります。
-
保管時の暗号化は、Redis バージョン (EOL が予定されている 3.2.6、「Redis バージョンのサポート終了スケジュール」を参照)、4.0.10 またはそれ以降を実行しているレプリケーショングループでサポートされます。
-
保管時の暗号化は、Amazon VPC で実行されているレプリケーショングループでのみサポートされます。
-
保管時の暗号化は、以下のノードタイプを実行しているレプリケーショングループでのみサポートされます。
-
R6gd、R6g、R5、R4、R3
-
M6g、M5、M4、M3
-
T4g、T3、T2
詳細については、サポートされているノードの種類 を参照してください。
-
-
保管時の暗号化は、パラメータ
AtRestEncryptionEnabled
を明示的にtrue
に設定することで有効化されます。 -
保管時の暗号化は、レプリケーショングループの作成時にのみレプリケーショングループで有効にできます。レプリケーショングループを変更して保管時の暗号化のオンとオフを切り替えることはできません。既存のレプリケーショングループ上への保管時の暗号化の実装の詳細については、「保管時の暗号化を有効にする」を参照してください。
クラスターが r6gd ファミリのノードタイプを使用している場合、保管時の暗号化が有効になっているかどうかにかかわらず、SSD に保存されているデータは暗号化されます。
AWS GovCloud (us-gov-east-1 および us-gov-west-1) リージョンでは、保管時の暗号化にカスタマー管理のキーを使用することを選択できません。
クラスターが r6gd ファミリーのノードタイプを使用している場合、SSD に保存されているデータは、選択したカスタマー管理の AWS KMS キー (または AWS GovCloud リージョンのサービスで管理された暗号化) で暗号化されます。
保管時の暗号化を実装することで、バックアップオペレーションおよびノード同期オペレーションの実行中にパフォーマンスが低下する場合があります。自身のデータで保管時の暗号化使用時のベンチマークを暗号化なしの場合と比較して、実装におけるパフォーマンスの影響を判断してください。
AWS KMS のカスタマー管理のキーの使用
ElastiCache for Redis は、保管時の暗号化用の対称カスタマー管理の AWS KMS キー (KMS キー) をサポートしています。カスタマー管理の KMS キーは、AWS アカウントで作成、所有、管理される暗号化キーです。詳細については、AWS Key Management Service デベロッパーガイドの「AWS KMS キー」を参照してください。キーは、Elasticache で使用する前に AWS KMS で作成する必要があります。
AWS KMS ルートキーを作成する方法の詳細については、AWS Key Management Service デベロッパーガイドの「キーの作成」を参照してください。
ElastiCache for Redis を使用すると、AWS KMS と統合できます。詳細については、AWS Key Management Service デベロッパーガイドの「付与の使用」を参照してください。Amazon ElastiCache と AWS KMS の統合を有効にするために、お客様の作業は必要ありません。
kms:ViaService
条件キーは、AWS KMS キー (KMS キー) の使用を、指定の AWS サービスからのリクエストだけに制限します。ElastiCacheとともに kms:ViaService
を使用するには、elasticache.AWS_region.amazonaws.com
とdax.AWS_region.amazonaws.com
の条件キーの値に両方のViaService 名を含めます。詳細については、「kms:ViaService」を参照してください。
AWS CloudTrail を使用して、Amazon ElastiCache によってお客様に代わって AWS Key Management Service に送信されるリクエストを追跡できます。カスタマー管理のキーに関連する AWS Key Management Service へのすべての API コールには、対応する CloudTrail ログがあります。ListGrants KMS API コールを行うことで、ElastiCache によって作成される許可を表示することもできます。
カスタマー管理のキーを使用してレプリケーショングループが暗号化されると、レプリケーショングループのすべてのバックアップは以下のように暗号化されます。
毎日の自動バックアップは、クラスターに関連付けられたカスタマー管理のキーを使用して暗号化されます。
レプリケーショングループが削除されたときに作成される最終バックアップも、レプリケーショングループに関連付けられたカスタマー管理のキーを使用して暗号化されます。
手動で作成されたバックアップは、デフォルトで、レプリケーショングループに関連付けられた KMS キーを使用して暗号化されます。この動作は、別のカスタマー管理のキーを選択して上書きできます。
バックアップをコピーするとき、デフォルトでは、ソースバックアップに関連付けられたカスタマー管理のキーが使用されます。この動作は、別のカスタマー管理のキーを選択して上書きできます。
注記
-
選択した Amazon S3 バケットにバックアップをエクスポートするとき、カスタマー管理のキーは使用できません。ただし、Amazon S3 にエクスポートされたすべてのバックアップは、サーバー側の暗号化を使用して暗号化されます。バックアップファイルを新しい S3 オブジェクトにコピーし、カスタマー管理の KMS キーを使用して暗号化するか、デフォルトの暗号化が設定された別の S3 バケットにコピーし、KMS キーを使用して暗号化するか、ファイル自体の暗号化オプションを変更できます。
-
また、暗号化にカスタマー管理のキーを使用しないレプリケーショングループに手動で作成されたバックアップを、カスタマー管理のキーを使用して暗号化することもできます。このオプションでは、データが元のレプリケーショングループで暗号化されていなくても、Amazon S3 に保存されているバックアップファイルは KMS キーを使用して暗号化されます。
バックアップから復元するときは、新しいレプリケーショングループの作成時に使用できるものと同様の暗号化オプションから選択できます。
キーを削除するか、キーを無効にして、レプリケーショングループの暗号化に使用したキーの許可を取り消すと、レプリケーショングループは回復不可能になります。つまり、ハードウェア障害の後に変更も回復もできなくなります。AWSルートキーは 7 日間以上の待機期間後にのみ KMS によって削除されます。キーが削除された後、別のカスタマー管理のキーを使用して、アーカイブ目的のバックアップを作成できます。
自動キー更新は AWS KMS ルートキーのプロパティを保持するため、お客様が ElastiCache データにアクセスできるかどうかには影響しません。暗号化された Amazon ElastiCache レプリケーショングループは、手動キー更新をサポートしていないため、新しいルートキーの作成や古いキーへの参照の更新などを行うことはできません。詳細については、AWS Key Management Service デベロッパーガイドの「AWS KMS キーのローテーション」を参照してください
KMS キーを使用して ElastiCache レプリケーショングループを暗号化するには、レプリケーショングループごとに 1 つの許可が必要です。この許可はレプリケーショングループの有効期間を通じて使用されます。また、バックアップの作成中、バックアップごとに 1 つの許可が使用されます。この許可はバックアップの作成後に無効になります。
AWS KMS の付与と制限の詳細については、AWS Key Management Service デベロッパーガイドの「制限」を参照してください。
保管時の暗号化を有効にする
ElastiCache 保管時の暗号化は、Redis レプリケーショングループの作成時にパラメータ AtRestEncryptionEnabled
を true
に設定して有効にできます。既存のレプリケーショングループ上で保管時の暗号化を有効にすることはできません。
保管時の暗号化は、ElastiCache for Redis レプリケーショングループの作成時に有効化できます。AWS Management Console、AWS CLI、または ElastiCache API を使用して、これを行うことができます。
レプリケーショングループを作成するときに、以下のオプションのいずれかを選択できます。
-
デフォルト - このオプションでは、サービス管理の保存時の暗号化が使用されます。
-
[カスタマー管理のキー] - このオプションでは、AWS KMS からのキー ID/ARN を保管時の暗号化に使用できます。
AWS KMS ルートキーを作成する方法については、AWS Key Management Service デベロッパーガイドの「キーの作成」を参照してください。
目次
既存の Redis クラスター上で保管時の暗号化を有効にする
保管時の暗号化は、Redis レプリケーショングループの作成時にのみ有効化できます。保管時の暗号化を有効化したい既存レプリケーショングループがある場合は、次の操作を行います。
既存のレプリケーショングループ上で保管時の暗号化を有効にするには
-
既存のレプリケーショングループの手動バックアップを作成します。詳細については、「手動バックアップの作成」を参照してください。
-
バックアップから復元して新しいレプリケーショングループを作成します。新しいレプリケーショングループで、保管時の暗号化を有効にします。詳細については、「クラスターのサイズ変更 (オプション) によるバックアップからの復元」を参照してください。
-
アプリケーションのエンドポイントを、新しいレプリケーショングループのエンドポイントに更新します。
-
古いレプリケーショングループを削除します。詳細については、「クラスターの削除」または「レプリケーショングループの削除」を参照してください。
AWS Management Console を使用して保管時の暗号化を有効にする
AWS Management Console を使用してレプリケーショングループの作成時に保管時の暗号化を有効にするには、以下のように選択します。
-
エンジンとして redis を選択します。
-
エンジンのバージョンとしてバージョン 3.2.6、4.0.10 またはそれ以降を選択します。
-
[保管時の暗号化] リストから [はい] を選択します。
詳しい手順については、以下を参照ください。
AWS CLI を使用して保管時の暗号化を有効にする
AWS CLI を使用して Redis クラスターを作成するときに保管時の暗号化を有効にするには、レプリケーショングループの作成時に --at-rest-encryption-enabled パラメーターを使用します。
Redis (クラスターモードが無効) クラスターで保管時の暗号化を有効にする (CLI)
次のオペレーションでは、3 つのノード (--num-cache-clusters)、1 つのプライマリ、2 つのリードレプリカを持つ Redis (クラスターモードが無効) レプリケーショングループ my-classic-rg
を作成します。保管時の暗号化は、このレプリケーショングループに対して有効です (--at-rest-encryption-enabled)。
以下のパラメーターとその値は、このレプリケーショングループで暗号化を有効にするために必要です。
主要パラメータ
-
--engine
—redis
を指定する必要があります。 -
--engine-version
— 3.2.6 または 4.0.10 以降を指定する必要があります。 -
--at-rest-encryption-enabled
— 保管時の暗号化に必要です。
例 1: レプリカがある Redis (クラスターモードが無効) クラスター
Linux、macOS、Unix の場合:
aws elasticache create-replication-group \ --replication-group-id
my-classic-rg
\ --replication-group-description"3 node replication group"
\ --cache-node-typecache.m4.large
\--engine
\redis
--at-rest-encryption-enabled
\ --num-cache-clusters3
Windows の場合:
aws elasticache create-replication-group ^ --replication-group-id
my-classic-rg
^ --replication-group-description"3 node replication group"
^ --cache-node-typecache.m4.large
^--engine
^redis
--at-rest-encryption-enabled
^ --num-cache-clusters3
^
詳細については、以下を参照してください。
Redis (クラスターモードが有効) のクラスター上で保管時の暗号化を有効にする (CLI)
次のオペレーションでは、3 つのノードグループまたはシャード (--num-node-groups) を持つ Redis (クラスターモードが有効) レプリケーショングループ my-clustered-rg
を作成します。各レプリケーショングループには、1 つのプライマリ、および 2 つのリードレプリカ (--replicas-per-node-group) があります。保管時の暗号化は、このレプリケーショングループに対して有効です (--at-rest-encryption-enabled)。
以下のパラメーターとその値は、このレプリケーショングループで暗号化を有効にするために必要です。
主要パラメータ
-
--engine
—redis
を指定する必要があります。 -
--engine-version
— 4.0.10 以降を指定する必要があります。 -
--at-rest-encryption-enabled
— 保管時の暗号化に必要です。 -
--cache-parameter-group
—default-redis4.0.cluster.on
、またはこれをクラスターモードが有効なレプリケーショングループにするために、それから算出されたいずれかに指定する必要があります。
例 2: Redis (クラスターモードが有効) クラスター
Linux、macOS、Unix の場合:
aws elasticache create-replication-group \ --replication-group-id
my-clustered-rg
\ --replication-group-description"redis clustered cluster"
\ --cache-node-typecache.m3.large
\ --num-node-groups3
\ --replicas-per-node-group2
\--engine
\redis
--engine-version
\6.2
--at-rest-encryption-enabled
\--cache-parameter-group
default.redis6.x.cluster.on
Windows の場合:
aws elasticache create-replication-group ^ --replication-group-id
my-clustered-rg
^ --replication-group-description"redis clustered cluster"
^ --cache-node-typecache.m3.large
^ --num-node-groups3
^ --replicas-per-node-group2
^--engine
^redis
--engine-version
^6.2
--at-rest-encryption-enabled
^--cache-parameter-group
default.redis6.x.cluster.on
詳細については、以下を参照してください。
ElastiCache API を使用して保管時の暗号化を有効にする
ElastiCache API を使用して Redis レプリケーショングループの作成時に保管時の暗号化を有効にするには、パラメータ AtRestEncryptionEnabled
を true
と CreateReplicationGroup
に設定します。
Redis (クラスターモードが無効) クラスターで保管時の暗号化を有効にする (API)
次のオペレーションでは、3 つのノード (NumCacheClusters)、1 つのプライマリ、2 つのリードレプリカを持つ Redis (クラスターモードが無効) レプリケーショングループ my-classic-rg
を作成します。保管時の暗号化は、このレプリケーショングループに対して有効です (AtRestEncryptionEnabled=true
)。
以下のパラメーターとその値は、このレプリケーショングループで暗号化を有効にするために必要です。
-
Engine
—redis
を指定する必要があります。 -
EngineVersion
— 3.2.6 または 4.0.10 以降を指定する必要があります。 -
AtRestEncryptionEnabled
— 保管時のtrue
の暗号化に必要です。
例 3: レプリカがある Redis (クラスターモードが無効) クラスター
改行は読みやすくするために追加しています。
https://elasticache.us-west-2.amazonaws.com/ ?Action=CreateReplicationGroup &AtRestEncryptionEnabled=true &CacheNodeType=cache.m3.large &CacheParameterGroup=default.redis6.x &Engine=redis &EngineVersion=6.0 &NumCacheClusters=3 &ReplicationGroupDescription=test%20group &ReplicationGroupId=my-classic-rg &Version=2015-02-02 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20150202T192317Z &X-Amz-Credential=<credential>
詳細については、以下を参照してください。
Redis (クラスターモードが有効) のクラスター上で保管時の暗号化を有効にする (API)
次のオペレーションでは、3 つのノードグループ/シャード (NumNodeGroups) を持つレプリケーショングループ my-clustered-rg
を作成します。各レプリケーショングループに 3 つのノード、1 つのプライマリ、2 つのリードレプリカ (ReplicasPerNodeGroup) が含まれます。保管時の暗号化は、このレプリケーショングループに対して有効です (AtRestEncryptionEnabled=true
)。
以下のパラメーターとその値は、このレプリケーショングループで暗号化を有効にするために必要です。
-
Engine
—redis
を指定する必要があります。 -
AtRestEncryptionEnabled
— 保管時のtrue
の暗号化に必要です。 -
EngineVersion
— 3.2.6 または 4.0.10 以降を指定する必要があります。 -
CacheParameterGroup
—default-redis4.0.cluster.on
、またはこれをRedis (クラスターモードが有効) クラスターにするために、それから算出されたいずれかを指定する必要があります。
例 4: Redis (クラスターモードが有効) クラスター
改行は読みやすくするために追加しています。
https://elasticache.us-west-2.amazonaws.com/ ?Action=CreateReplicationGroup &AtRestEncryptionEnabled=true &CacheNodeType=cache.m3.large &CacheParemeterGroup=default.redis6.x.cluster.on &Engine=redis &EngineVersion=6.0 &NumNodeGroups=3 &ReplicasPerNodeGroup=2 &ReplicationGroupDescription=test%20group &ReplicationGroupId=my-clustered-rg &Version=2015-02-02 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20150202T192317Z &X-Amz-Credential=<credential>
詳細については、以下を参照してください。