Amazon RDS リソースの暗号化
Amazon RDS は Amazon RDS DB インスタンスを暗号化できます。保管時に暗号化されるデータには、DB インスタンス、自動バックアップ、リードレプリカ、スナップショット用の基本的なストレージが含まれます。
Amazon RDS の暗号化された DB インスタンスでは、業界スタンダードの AES-256 暗号化アルゴリズムを使用して、Amazon RDS DB インスタンスをホストしているデータをサーバーで暗号化します。データが暗号化されると、Amazon RDS はパフォーマンスの影響を最小限に抑えながら、データへのアクセスと復号の認証を透過的に処理します。暗号化を使用するために、データベースのクライアントアプリケーションを変更する必要はありません。
注記
暗号化された/されていない DB インスタンスのでは、AWS リージョン間でレプリケートする場合でも、ソースとリードレプリカ間で送信されるデータは暗号化されます。
トピック
Amazon RDS リソースの暗号化の概要
Amazon RDS の暗号化された DB インスタンスは、基になるストレージへの不正アクセスからデータを保護することによって、データ保護の追加レイヤーを提供します。Amazon RDS の暗号化を使用して、クラウドにデプロイされるアプリケーションのデータ保護を強化することや、保管時のデータ暗号化に関するコンプライアンスの要件を達成することができます。
Amazon RDS の暗号化された DB インスタンスでは、すべてのログ、バックアップ、スナップショットが暗号化されます。Amazon RDS は AWS Key Management Service キーを使用して、これらのリソースを暗号化します。KMS キーの詳細については、「AWS Key Management Service デベロッパーガイド」の「AWS KMS keys」と「AWS KMS key 管理」を参照してください。暗号化されたスナップショットをコピーする場合、ソーススナップショットの暗号化に使用した KMS キーとは異なる KMS キーを使用して、ターゲットスナップショットを暗号化できます。
また、Amazon RDS の暗号化されたインスタンスのリードレプリカとプライマリ DB インスタンスの両方が同じ AWS リージョンにある場合、リードレプリカはプライマリ DB インスタンスと同じ KMS キーを使用して暗号化する必要があります。プライマリ DB インスタンスとリードレプリカが異なる AWS リージョンにある場合には、その AWS リージョンの KMS キー を使用してリードレプリカを暗号化します。
AWS マネージドキー を使用することも、カスタマーマネージドキーを作成することもできます。Amazon RDS リソースを暗号化および復号するために使用するカスタマーマネージドキーを管理するには、AWS Key Management Service (AWS KMS) を使用します。AWS KMS は、セキュアで可用性の高いハードウェアとソフトウェアを組み合わせて、クラウド向けにスケールされたキー管理システムを提供します。AWS KMS を使用して、カスタマーマネージドキーを作成し、このカスタマーマネージドキーの使用方法を制御するポリシーを定義できます。AWS KMS は CloudTrail をサポートしているため、KMS キーの使用を監査して、カスタマーマネージドキーが適切に使用されていることを確認できます。カスタマーマネージドキーは、Amazon Aurora およびサポートされている AWS のサービス (Amazon S3、Amazon EBS、Amazon Redshift など) で使用できます。AWS KMS と統合しているサービスのリストについては、「AWS サービス統合
Amazon RDS は、Transparent Data Encryption (TDE) による Oracle または SQL Server の DB インスタンスの暗号化もサポートします。TDE は、RDS 保管時の暗号化とともに使用できますが、TDE と RDS 保管時の暗号化を同時に使用すると、データベースのパフォーマンスに若干影響する可能性があります。個々の暗号化方式ごとに異なるキーを管理する必要があります。TDE の詳細については「Oracle Transparent Data Encryption」または「SQL サーバーの透過的なデータの暗号化サポート」を参照してください。
DB インスタンスの暗号化
新しい DB インスタンスを暗号化するには、Amazon RDS コンソールで [Enable encryption] (暗号を有効化) を選択します。DB インスタンスの作成については、「Amazon RDS DB インスタンスの作成」を参照してください。
AWS CLI の create-db-instance コマンドを使用して、暗号化された DB インスタンスを作成するには、--storage-encrypted
パラメータを設定します。CreateDBInstance API オペレーションを使用する場合は、StorageEncrypted
パラメータを true に設定します。
暗号化された DB インスタンスを作成するときは、カスタマーマネージドキーまたは Amazon RDS の AWS マネージドキー を選択して、DB インスタンスを暗号化できます。カスタマーマネージドキーのキー識別子を指定しない場合、Amazon RDS は新しい DB インスタンスに AWS マネージドキー を使用します。Amazon RDS は、Amazon RDS 用の AWS マネージドキー を AWS アカウントに作成します。AWS アカウントには、AWS リージョンごとに Amazon RDS の AWS マネージドキー が別々にあります。
KMS キーの詳細については、「AWS Key Management Service デベロッパーガイド」の「AWS KMS keys」を参照してください。
暗号化された DB インスタンスを作成したら、その DB インスタンスで使用されている KMS キーを変更することはできません。したがって、暗号化された DB インスタンスを作成する前に、KMS キーの要件を必ず確認してください。
AWS CLI create-db-instance
コマンドを使用して、カスタマーマネージドキーで暗号化された DB インスタンスを作成する場合は、--kms-key-id
パラメータを KMS キーの任意のキー識別子に設定します。Amazon RDS API CreateDBInstance
オペレーションを使用する場合は、KmsKeyId
パラメータを KMS キーの任意のキー識別子に設定します。カスタマーマネージドキーを別の AWS アカウントで使用するには、キー ARN またはエイリアス ARN を指定します。
重要
KMS キーを無効にすると、Amazon RDS は DB インスタンス用の KMS キーにアクセスできなくなる場合があります。このような場合、暗号化された DB インスタンスはすぐに inaccessible-encryption-credentials-recoverable
状態になります。DB インスタンスは 7 日間この状態のままであり、その間、インスタンスは停止します。この間に DB インスタンスに対して行われた API コールは成功しない場合があります。DB インスタンスを復旧するには、KMS キーを有効にして、この DB インスタンスを再起動します。AWS Management Console から KMS キーを有効にします。AWS CLI コマンド start-db-instance または AWS Management Console を使用して DB インスタンスを再起動します。
DB インスタンスが 7 日以内に復旧されない場合、終了 inaccessible-encryption-credentials
状態になります。この状態では、DB インスタンスは使用できなくなり、バックアップからのみ DB インスタンスを復元できます。データベース内の暗号化されたデータの消失を防ぐために、暗号化された DB インスタンスのバックアップは常に有効にしておくことを強くお勧めします。
DB インスタンスの作成中に、Amazon RDS は呼び出し元のプリンシパルが KMS キーにアクセスできるかどうかを確認し、DB インスタンスの存続期間全体に使用する KMS キーから許可を生成します。呼び出し元のプリンシパルの KMS キーへのアクセス権を取り消しても、実行中のデータベースには影響しません。スナップショットを別のアカウントにコピーするなど、クロスアカウントシナリオで KMS キーを使用する場合は、KMS キーを他のアカウントと共有する必要があります。別の KMS キーを指定せずにスナップショットから DB インスタンスを作成すると、新しいインスタンスはソースアカウントの KMS キーを使用します。DB インスタンスの作成後にキーへのアクセス権を取り消しても、インスタンスには影響しません。ただし、キーを無効にすると、そのキーで暗号化されたすべての DB インスタンスに影響します。これを防ぐには、スナップショットのコピー操作時に別のキーを指定します。
DB インスタンスの暗号化が有効になっているかの判別
AWS Management Console、AWS CLI、または RDS API を使用して、DB インスタンスの保存時の暗号化が有効になっているか判別できます。
DB インスタンスに対して保存時の暗号化がオンになっているかどうかを判別します
AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 -
ナビゲーションペインで、[データベース] を選択します。
-
詳細を表示するためにチェックする DB インスタンスの名前を選択します。
-
設定タブを選択し、ストレージ下にある暗号化 値 をチェックします。
有効または無効のいずれかが表示されています。
AWS CLI を使用して DB インスタンスの保存時の暗号化が有効になっているかを判断するには、以下のオプションで describe-db-instances コマンドを呼び起こします:
-
--db-instance-identifier
- DB インスタンスの名前です。
次の例では、mydb
DB インスタンスの保管時の暗号化に関して TRUE
または FALSE
の いずれかを返すクエリを使用しています。
例
aws rds describe-db-instances --db-instance-identifier
mydb
--query "*[].{StorageEncrypted:StorageEncrypted}" --output text
Amazon RDS API を使用して DB インスタンスの保管時の暗号化が有効であるかを判断するには、以下のパラメータで DescribeDBInstances オペレーションを呼び起こします:
-
DBInstanceIdentifier
- DB インスタンスの名前です。
Amazon RDS の暗号化の可用性
Amazon RDS 暗号化は、現在 SQL Server Express Edition を除く、すべてのデータベースエンジンおよびストレージタイプに使用できます。
Amazon RDS 暗号化は、ほとんどの DB インスタンスクラスで使用できます。次の表は、Amazon RDS 暗号化をサポートしていない DB インスタンスクラスの一覧です。
インスタンスタイプ | インスタンスクラス |
---|---|
汎用 (M1) |
db.m1.small db.m1.medium db.m1.large db.m1.xlarge |
メモリ最適化 (M2) |
db.m2.xlarge db.m2.2xlarge db.m2.4xlarge |
バースト可能 (T2) |
db.t2.micro |
転送中の暗号化
AWS では、すべてのタイプの DB インスタンス間において安全でプライベートな接続を提供しています。さらに、一部のインスタンスタイプでは、基盤となる Nitro System ハードウェアのオフロード機能を使用して、インスタンス間の転送中のトラフィックを自動的に暗号化します。この暗号化では、256 ビットの暗号化による関連データによる認証暗号化 (AEAD) アルゴリズムを使用します。ネットワークのパフォーマンスには影響しません。インスタンス間でこの追加の転送中トラフィック暗号化をサポートするには、次の要件を満たす必要があります。
-
インスタンスは、次のインスタンスタイプを使用します。
-
汎用: M6i、M6id、M6in、M6idn、M7g
-
メモリ最適化: R6i、R6id、R6in、R6idn、R7g、X2idn、X2iedn、X2iezn
-
-
各インスタンスは同じ AWS リージョンにあるものとします。
-
各インスタンスは同じ VPC 内、あるいはピア接続された VPC 内にあり、トラフィックは仮想ネットワークのデバイスもしくはサービス (ロードバランサーや Transit Gateway など) を通過しないものとします。
Amazon RDS の暗号化された DB インスタンスの制限事項
Amazon RDS の暗号化された DB インスタンスには、以下の制限事項があります。
-
Amazon RDS DB インスタンスは、DB インスタンスの作成時にのみ暗号化できます。作成後には暗号化できません。
ただし、暗号化されていないスナップショットのコピーは暗号化できるので、暗号化されていない DB インスタンスに効果的に暗号化を追加できます。つまり、DB インスタンスのスナップショットを作成し、そのスナップショットの暗号化済みコピーを作成します。この暗号化されたスナップショットから DB インスタンスを復元することで、元の DB インスタンスの暗号化されたコピーを作成できます。詳しくは、「Amazon RDS の DB スナップショットのコピー」を参照してください。
-
暗号化された DB インスタンスの暗号化をオフにすることはできません。
-
暗号化されていない DB インスタンスの暗号化されたスナップショットを作成することはできません。
-
暗号化された DB インスタンスのスナップショットは、DB インスタンスと同じ KMS キーを使用して暗号化する必要があります。
-
暗号化されていない DB インスタンスのリードレプリカを暗号化することや、暗号化されている DB インスタンスのリードレプリカを暗号化しないようにすることはできません。
-
暗号化されたリードレプリカとソース DB インスタンスの両方が同じ AWS リージョンにある場合、リードレプリカはソース DB インスタンスと同じ KMS キーで暗号化する必要があります。
-
暗号化されていないバックアップやスナップショットを、暗号化された DB インスタンスに復元することはできません。
-
ある AWS リージョンから別のリージョンに暗号化されたスナップショットをコピーするには、送信先 AWS リージョンの KMS キーを指定する必要があります。これは、KMS キーが、作成される AWS リージョンに固有のものであるためです。
ソーススナップショットはコピープロセス全体で暗号化されたままになります。Amazon RDSは、コピー処理中にエンベロープ暗号化を使用してデータを保護します。エンベロープ暗号化の仕組みの詳細については、AWS Key Management Service デベロッパーガイドの「エンベロープ暗号化」を参照してください。
-
暗号化された DB インスタンスの暗号化を解除することはできません。ただし、暗号化された DB インスタンスからデータをエクスポートし、暗号化されていない DB インスタンスにデータをインポートすることはできます。