メニュー
Amazon Redshift
管理ガイド (API Version 2012年12月1日)

Amazon Redshift データベース暗号化

Amazon Redshift では、クラスターに対してデータベースの暗号化を有効にして、保管時のデータを保護できます。クラスターに対して暗号化を有効にすると、クラスターとそのスナップショットのデータブロックとシステムメタデータが暗号化されます。

暗号化はクラスターのオプションの設定ですが、起動後に変更することはできません。暗号化を必要とする場合は、クラスターの起動プロセス中に有効にする必要があります。暗号化されたクラスターから暗号化されていないクラスターに移行する場合や、その逆を行う場合は、既存のクラスターからデータをアンロードしてから、選択した暗号化設定を適用した新しいクラスターに再ロードする必要があります。

暗号化は Amazon Redshift ではオプションの設定ですが、機密データを含むクラスターに対しては有効にすることをお勧めします。また、データに適用されるガイドラインやルールに応じて暗号化の使用が必要になる場合があります。たとえば、Payment Card Industry Data Security Standard (PCI DSS)、Sarbanes-Oxley Act (SOX)、Health Insurance Portability and Accountability Act (HIPAA) といった規制では、特定の種類のデータの取り扱いに関するガイドラインが規定されています。

Amazon Redshift では、暗号化キーの階層を使用してデータベースを暗号化します。AWS Key Management Service (AWS KMS) またはハードウェアセキュリティモジュール (HSM) のいずれかを使用して、この階層の最上位の暗号化キーを管理できます。Amazon Redshift で暗号化に使用するプロセスはキーの管理方法によって異なります。

また、Amazon Redshift は自動的に AWS KMS に統合されますが、HSM には統合されません。HSM を使用するときは、クライアントとサーバーの証明書を使用して、Amazon Redshift と HSM との間で信頼された接続を設定する必要があります。

Amazon Redshift での AWS KMS を使用したデータベース暗号化について

Amazon Redshift によるキー管理用に AWS KMS を選択すると、4 階層の暗号化キーがあります。これらのキーは、階層の最上位から順にマスターキー、クラスターの暗号化キー (CEK)、データベースの暗号キー (DEK)、データ暗号化キーとなっています。

クラスターを起動すると、Amazon Redshift では、AWS アカウントが作成したか AWS KMS での使用アクセス権限のあるカスタマーマスターキー (CMK) のリストが返されます。暗号化キーの階層でマスターキーとして使用する CMK を選択します。

Amazon Redshift の初期の設定では、スターキーとしてデフォルトのキーが選択されています。デフォルトのキーは AWS 管理のキーであり、AWS アカウントが Amazon Redshift 用に作成したものです。暗号化されたクラスターをリージョンで初めて起動してデフォルトのキーを選択すると、AWS KMS でこのキーが作成されます。

デフォルトのキーを使用しない場合は、Amazon Redshift でクラスターを起動する前に、AWS KMS でカスタマー管理の CMK を別途用意 (作成) する必要があります。カスタマー管理の CMK を作成すると、データの保護に使用する暗号化キーを作成、更新、無効化、アクセス制御定義、監査できるなど、より柔軟に取り扱うことができます。CMK の作成の詳細については、AWS Key Management Service Developer Guide の「キーの作成」を参照してください。

別の AWS アカウントの AWS KMS キーを使用する場合は、そのキーの使用アクセス権限が必要であり、Amazon Redshift でその ARN を指定する必要があります。AWS KMS でのキーのアクセスの詳細については、AWS Key Management Service Developer Guide の「キーへのアクセスの制御」を参照してください。

マスターキーを選択した後、Amazon Redshift は AWS KMS に、データキーの生成と選択されたマスターキーでの暗号化をリクエストします。このデータキーは Amazon Redshift で CEK として使用されます。AWS KMS は暗号化された CEK を Amazon Redshift にエクスポートします。その CEK はクラスターから別のネットワークのディスクに内部で保存され、同時に、CMK とその CEK の暗号化コンテキストに対する権限も保存されます。暗号化された CEK のみが Amazon Redshift にエクスポートされます。CMK は AWS KMS に残ります。また、Amazon Redshift は、暗号化された CEK を安全なチャンネル経由でクラスターに渡し、メモリにロードします。その後、Amazon Redshift は、AWS KMS を呼び出して CEK を復号化し、復号化された CEK をメモリにロードします。権限、暗号化コンテキスト、その他の AWS KMS 関連の概念の詳細については、AWS Key Management Service Developer Guide の「概念」を参照してください。

次に、Amazon Redshift は DEK として使用するキーを生成し、クラスターのメモリにランダムにロードします。復号化された CEK は DEK の暗号化に使用されます。その後、暗号化された DEK はクラスターから安全なチャンネル経由で Amazon Redshift に渡され、クラスターとは別のネットワーク内のディスクに内部で保存されます。CEK と同様に、DEK の暗号化および復号の両方のバージョンはクラスターのメモリにロードされます。その後、DEK の復号バージョンは、データベース内の各データブロックのランダムに生成された暗号化キーを暗号化するために使用されます。

クラスターを再起動すると、Amazon Redshift は、内部で保存した CEK と DEK の暗号化バージョンをまずメモリに再ロードしてから、AWS KMS を呼び出して CMK で CEK を再び復号化します。これで、CEK はメモリにロードできるようになります。復号された CEK で DEK は再び復号され、復号された DEK はメモリにロードされて、必要に応じてデータブロックキーの暗号化および復号に使用されます。

AWS KMS キーで暗号化された Amazon Redshift クラスターの作成の詳細については、「クラスターの作成」と「Amazon Redshift CLI および API を使用してクラスターを管理する」を参照してください。

別のリージョンに AWS KMS 暗号化スナップショットコピーする

AWS KMS キーは、リージョンに固有です。別のリージョンへの Amazon Redshift スナップショットのコピーを有効にし、ソースクラスターとそのスナップショットが AWS KMS からのマスターキーを使用して暗号化される場合は、ターゲットリージョンで Amazon Redshift に対してマスターキーの使用権限を設定する必要があります。この権限により、Amazon Redshift はターゲットリージョンでスナップショットを暗号化できるようになります。リージョン間のスナップショットのコピーの詳細については、「別のリージョンにスナップショットをコピーする」を参照してください。

注記

暗号化されたクラスターからのスナップショットのコピーを有効にし、マスターキーに AWS KMS を使用する場合、クラスター名は暗号化コンテキストの一部になるため、クラスター名を変更することはできません。クラスター名を変更するには、ソースリージョンでスナップショットのコピーを無効にし、クラスター名を変更してから、再びスナップショットのコピーを設定して有効にする必要があります。

スナップショットのコピー権限を設定するプロセスは、以下のとおりです。

  1. ターゲットリージョンで、次の手順を実行してスナップショットのコピー権限を作成します。

    • 使用する AWS KMS キーがまだなければ作成します。AWS KMS キーの作成の詳細については、AWS Key Management Service Developer Guide の「キーの作成」を参照してください。

    • スナップショットのコピー権限の名前を指定します。この名前は AWS アカウントのリージョンで一意であることが必要です。

    • 作成する権限が適用される AWS KMS キーの ID を指定します。キー ID を指定しない場合は、この権限はデフォルトのキーに適用されます。

  2. ソースリージョンで、スナップショットのコピーを有効にし、ターゲットリージョンで作成したスナップショットのコピー権限の名前を指定します。

この事前のプロセスは、AWS CLI、Amazon Redshift API、または SDK を使用してスナップショットのコピーを有効にする場合にのみ必要です。コンソールを使用する場合、Amazon Redshift では、リージョン間のスナップショットのコピーを有効にするときに、権限の設定ワークフローがあります。コンソールを使用して、AWS KMS で暗号化されたクラスター用にリージョン間のスナップショットのコピーを設定する方法の詳細については、「AWS KMS 暗号化クラスターのクロスリージョンスナップショットコピーの設定」を参照してください。

スナップショットがターゲットリージョンにコピーされる前に、Amazon Redshift はソースリージョンでマスターキーを使用してスナップショットを復号化し、Amazon Redshift が内部で管理しているランダムに生成された RSA キーを使用して一時的に再暗号化します。その後、Amazon Redshift はスナップショットを安全なチャンネル経由でターゲットリージョンにコピーし、内部で管理している RSA キーを使用してスナップショットを復号化してから、ターゲットリージョンでマスターキーを使用してスナップショットを再暗号化します。

AWS KMS 暗号化されたクラスター用にスナップショットのコピー権限を設定する方法の詳細については、「Amazon Redshift API および AWS CLI を使用して、AWS KMS 暗号化キーを使用するように Amazon Redshift を設定する」を参照してください。

Amazon Redshift でのハードウェアセキュリティモジュールを使用した暗号化について

キー管理に AWS KMS を使用しない場合は、Amazon Redshift ではキー管理にハードウェアセキュリティモジュール (HSM) を使用できます。HSM は、キー生成と管理を直接に制御するデバイスです。キーの管理をアプリケーションとデータベースのレイヤから切り離すことで、より優れたセキュリティを実現します。Amazon Redshift は、AWS CloudHSM とオンプレミスの HSM の両方のキー管理方式をサポートします。AWS KMS の代わりに HSM を使用して暗号化キーを管理するときは、暗号化プロセスが異なります。

HSM を使用するようにクラスターを設定すると、Amazon Redshift は HSM に、CEK として使用されるキーの生成と保存をリクエストします。ただし、AWS KMS とは異なり、HSM は Amazon Redshift に CEK をエクスポートしません。代わりに、Amazon Redshift はクラスターで DEK をランダムに生成し、HSM に DEK を渡して、DEK は CEK で暗号化されます。HSM は暗号化された DEK を Amazon Redshift に返します。その DEK は、内部で保存されているランダムに生成されたマスターキーでさらに暗号化され、クラスターとは別のネットワーク内のディスクに内部で保存されます。また、Amazon Redshift は、DEK の復号化バージョンをクラスターのメモリにロードします。それにより、DEK を使用して個々のデータブロックキーを暗号化および復号化できるようになります。

クラスターを再起動した場合、Amazon Redshift は、内部に保存したマスターキーを使用して、内部で保存した二重に暗号化された DEK を復号化することで、その DEK を CEK で暗号化した状態に戻します。その後、CEK で暗号化された DEK は HSM に渡され、復号化されて、Amazon Redshift に戻され、再びメモリにロードされて、個々のデータブロックキーに使用できるようになります。

Amazon Redshift と HSM との間の信頼された接続の設定

クラスターキーの管理に HSM を使用するように選択した場合、Amazon Redshift と HSM の間に信頼されたネットワークリンクを構成する必要があります。これを行うには、クライアント証明書とサーバー証明書の設定が必要です。信頼された接続は、暗号化と復号化のオペレーション中に、HSM と Amazon Redshift との間で暗号化キーを渡すために使用されます。

Amazon Redshift は、ランダムに生成されたプライベートキーとパブリックキーの組み合わせから、パブリッククライアント証明書を作成します。これらは内部的に暗号化されて保管されます。ユーザーは、パブリッククライアント証明書を HSM にダウンロードして登録し、該当する HSM パーティションに割り当てます。

ユーザーは、HSM の IP アドレス、HSM パーティションの名前、HSM パーティションのパスワード、および内部マスターキーで暗号化された HSM サーバー証明書を、Amazon Redshift サービスに伝達します。Amazon Redshift は設定プロセスを完了し、HSM に接続できることを確認します。接続できない場合、クラスターは INCOMPATIBLE_HSM 状態に設定され、クラスターは作成されません。この場合、不完全なクラスターを削除してから、もう一度やり直す必要があります。

重要

別の HSM パーティションを使用するクラスターを変更する場合、Amazon Redshift は新しいパーティションに接続できるか確認しますが、有効な暗号化キーがあるかは確認しません。新しいパーティションを使用する前に、新しいパーティションのキーを複製する必要があります。クラスターを再起動し、Amazon Redshift が有効なキーを見つけることができない場合、再起動は失敗します。詳細については、Replicating Keys Across HSMs を参照してください。

HSM を使用するように Amazon Redshift を設定する方法の詳細については、「Amazon Redshift console を使用し、HSM を使用するように Amazon Redshift を設定する」と「Amazon Redshift API および AWS CLI を使用し、HSM を使用するように Amazon Redshift を設定する」を参照してください。

初期設定の後で Amazon Redshift が HSM に接続できない場合、イベントが記録されます。これらのイベントの詳細については、「Amazon Redshift イベント通知」を参照してください。

Amazon Redshift での暗号化キーの更新について

Amazon Redshift では、暗号化したクラスターの暗号化キーを更新することができます。キーの更新プロセスを開始すると、Amazon Redshift は、指定されたクラスターとそのクラスターの自動または手動スナップショット用の CEK を更新します。また、Amazon Redshift は指定されたクラスターの DEK を更新しますが、スナップショットの DEK を更新することはできません。スナップショットの DEK は、Amazon Simple Storage Service (Amazon S3) に内部で保存されている間、既存の DEK で暗号化されているためです。

更新の進行中、クラスターはその完了まで ROTATING_KEYS 状態に設定され、完了すると AVAILABLE 状態に戻ります。Amazon Redshift は、キーの更新プロセスの間に、復号化と再暗号化の処理を行います。

注記

ソースクラスターなしでスナップショットのキーを更新することはできません。クラスターを削除する際には、スナップショットのキー更新が必要になるかどうかを検討してください。

キー更新プロセス中はクラスターが一時的に使用不能になるので、キーの更新は、データのニーズによって必要となるか、キーの漏洩の疑いがある場合のみ行ってください。ベストプラクティスとして、保存するデータの種類を考慮してデータの暗号化キーの更新頻度を計画してください。キーの更新の頻度は、データセキュリティに対する企業のポリシーと、機密データおよび規制コンプライアンスに関する業界標準によって異なります。セキュリティのニーズとクラスターの可用性のバランスを考慮して計画を立ててください。

キーの更新の詳細については、「Amazon Redshift console を使用した暗号化キーの更新」と「Amazon Redshift API および AWS CLI を使用した暗号化キーの更新」を参照してください。