Amazon Aurora DSQL のデータ暗号化
Amazon Aurora DSQL は、保管中のすべてのユーザーデータを暗号化します。セキュリティを強化するために、この暗号化では AWS Key Management Service (AWS KMS) を使用します。この機能は、機密データの保護における負担と複雑な作業を減らすのに役立ちます。保管中の暗号化は、以下に役立ちます。
-
機密データを保護する運用上の負担を軽減する
-
セキュリティを重視したアプリケーションを構築して、暗号化のコンプライアンスと規制の厳格な要件を満たす
-
暗号化されたクラスター内のデータを常に保護することで、追加のデータ保護レイヤーを提供する
-
組織のポリシー、業界または政府の規制、コンプライアンス要件に準拠する
Aurora DSQL では、セキュリティを重視したアプリケーションを構築して、暗号化のコンプライアンスと規制の厳格な要件を満たすことができます。以下のセクションでは、新規および既存の Aurora DSQL データベースの暗号化を設定し、暗号化キーを管理する方法について説明します。
トピック
Aurora DSQL の KMS キーの種類
Aurora DSQL は AWS KMS と統合して、クラスターの暗号化キーを管理します。キーの種類と詳細については、「AWS Key Management Service デベロッパーガイド」の「AWS Key Management Service concepts」を参照してください。新しいクラスターを作成するときは、次の KMS キータイプから選択してクラスターを暗号化できます。
- AWS 所有のキー
-
デフォルトの暗号化タイプ。Aurora DSQL は、追加料金なしでキーを所有します。Amazon Aurora DSQL は、暗号化されたクラスターにアクセスするときにクラスターデータを透過的に復号します。暗号化されたクラスターを使用または管理するためにコードやアプリケーションを変更する必要はありません。すべての Aurora DSQL クエリは暗号化されたデータで動作します。
- カスタマーマネージドキー
-
お客様の AWS アカウントでキーを作成、所有、および管理できます。ユーザーには KMS キーに対するフルコントロールの権限があります (AWS KMS の料金が適用されます)。
AWS 所有のキー を使用した保管中の暗号化に追加の料金はかかりません。ただし、カスタマーマネージドキーには AWS KMS の料金がかかります。詳細については、AWS KMS 料金表
キーの種類は、いつでも切り替えることができます。キータイプの詳細については、「AWS Key Management Service デベロッパーガイド」の「カスタマーマネージドキー」および「AWS 所有のキー」を参照してください。
注記
Aurora DSQL の保管中の暗号化は、Aurora DSQL が利用可能なすべての AWS リージョンでご利用いただけます。
Aurora DSQL での保管中の暗号化
Amazon Aurora DSQL では、256 ビットの Advanced Encryption Standard (AES-256) を使用して保管中のデータを暗号化します。この暗号化は、基盤となるストレージへの不正アクセスからデータを保護するのに役立ちます。AWS KMS は、クラスターの暗号化キーを管理します。デフォルトの AWS 所有のキー を使用できます。または、独自の AWS KMS カスタマーマネージドキー を使用することを選択できます。Aurora DSQL クラスターのキーの指定と管理の詳細については、「暗号化された Aurora DSQL クラスターの作成」および「Aurora DSQL クラスターのキーの削除または更新」を参照してください。
AWS 所有のキー
Aurora DSQL は、デフォルトですべてのクラスターを AWS 所有のキー で暗号化します。これらのキーは、アカウントリソースを保護するために無料で使用でき、毎年ローテーションします。キーを表示、管理、使用、または監査する必要がないため、データ保護のためのアクションは必要ありません。AWS 所有のキー の詳細については、「AWS Key Management Service Developer Guide」の「AWS 所有のキー 」を参照してください。
カスタマーマネージドキー
AWS アカウントでカスタマーマネージドキーを作成、所有、管理できます。ポリシー、暗号化マテリアル、タグ、エイリアスなど、これらの KMS キーを完全に制御できます。アクセス許可の管理の詳細については、「AWS Key Management Service デベロッパーガイド」の「カスタマーマネージドキー」を参照してください。
クラスターレベルの暗号化にカスタマーマネージドキーを指定すると、Aurora DSQL はそのキーを使用して、クラスターとそのすべてのリージョンのデータを暗号化します。データ損失を防ぎ、クラスターアクセスを維持するために、Aurora DSQL は暗号化キーにアクセスする必要があります。カスタマーマネージドキーを無効にした場合、キーの削除をスケジュールした場合、またはサービスアクセスを制限するポリシーがある場合、クラスターの暗号化ステータスは KMS_KEY_INACCESSIBLE
に変わります。Aurora DSQL がキーにアクセスできない場合、ユーザーはクラスターに接続できず、クラスターの暗号化ステータスが KMS_KEY_INACCESSIBLE
に変わります。また、サービスはクラスターデータにアクセスできなくなります。
マルチリージョンクラスターの場合、お客様は各リージョンの AWS KMS 暗号化キーを個別に設定でき、各リージョンのクラスターは独自のクラスターレベルの暗号化キーを使用します。Aurora DSQL がマルチリージョンクラスター内のピアの暗号化キーにアクセスできない場合、そのピアのステータスは KMS_KEY_INACCESSIBLE
になり、読み取りおよび書き込み操作で使用できなくなります。他のピアは通常の操作を続行します。
注記
Aurora DSQL がカスタマーマネージドキーにアクセスできない場合、クラスターの暗号化ステータスは KMS_KEY_INACCESSIBLE
に変わります。キーアクセスを復元すると、サービスは 15 分以内に復元を自動的に検出します。詳細については、「クラスターのアイドリング」を参照してください。
マルチリージョンクラスターの場合、キーへのアクセスが長期間失われると、クラスターの復元時間は、キーにアクセスできない間に書き込まれたデータの量によって異なります。
Aurora DSQL での AWS KMS およびデータキーの使用
Aurora DSQL の保管中の暗号化機能は、AWS KMS keyおよびデータキーの階層を使用してクラスターのデータを保護します。
Aurora DSQL にクラスターを実装する前に、暗号化戦略を計画することをお勧めします。機密データまたは秘密データを Aurora DSQL に保存する場合は、クライアント側の暗号化をプランに含めることを検討してください。これにより、データをできるだけ送信元に近い状態で暗号化し、ライフサイクル全体にわたってデータを確実に保護できます。
Aurora DSQL での AWS KMS keyの使用
保管中の暗号化は、AWS KMS keyで Aurora DSQL クラスターを保護します。デフォルトでは、Aurora DSQL は AWS 所有のキー (Aurora DSQL サービスアカウントで作成および管理されるマルチテナント暗号化キー) を使用します。ただし、Aurora DSQL クラスターは、AWS アカウントのカスタマーマネージドキーで暗号化できます。マルチリージョン設定に参加している場合でも、クラスターごとに異なる KMS キーを選択できます。
クラスターを作成または更新するときは、クラスター用の KMS キーを選択します。クラスター用 KMS キーは、Aurora DSQL コンソールで、または UpdateCluster
オペレーションを使用していつでも変更できます。キーの切り替えプロセスでは、ダウンタイムやサービスの低下が求められません。
重要
Aurora DSQL は、対称 KMS キーのみをサポートします。非対称 KMS キーを使用して Aurora DSQL クラスターを暗号化することはできません。
カスタマーマネージドキーには、次の利点があります。
-
KMS キーを作成および管理します。これには、キーポリシーおよび IAM ポリシーの設定、KMS キーへのアクセスを制御する設定が含まれます。KMS キーの有効化または無効化、自動キーローテーションの有効化または無効化、使用しなくなった KMS キーの削除を実行できます。
-
インポートされたキーマテリアルを持つカスタマーマネージドキー、またはユーザーが所有して管理するカスタムキーストアで、カスタマーマネージドキーを使用できます。
-
Aurora DSQL クラスターの暗号化と復号を監査するには、AWS CloudTrail ログで AWS KMS への Aurora DSQL API コールを調べます。
ただし、AWS 所有のキー は無料で、その使用は AWS KMS リソースクォータまたはリクエストクォータに対してカウントされません。カスタマーマネージドキーには API コールごとに料金が発生し、これらのキーには AWS KMS クォータが適用されます。
Aurora DSQL でのクラスターキーの使用
Aurora DSQL は、クラスターの AWS KMS keyを使用して、クラスターキーと呼ばれるクラスターの一意のデータキーを生成および暗号化します。
クラスターキーは、キー暗号化キーとして使用されます。Aurora DSQL はこのクラスターキーを使用して、クラスターデータの暗号化に使用されるデータ暗号化キーを保護します。Aurora DSQL はクラスターの基本構造ごとに一意のデータ暗号化キーを生成しますが、複数のクラスター項目は同じデータ暗号化キーによって保護されていることがあります。
クラスターキーを復号するために、Aurora DSQL は暗号化されたクラスターに初めてアクセスするときに AWS KMS にリクエストを送信します。クラスターを使用可能にするために、Aurora DSQL はクラスターにアクティブにアクセスしていない場合でも、KMS キーへの復号アクセスを定期的に検証します。
Aurora DSQL は、クラスターキーとデータ暗号化キーを AWS KMS の外部に保存して使用します。これによって、Advanced Encryption Standard (AES) 暗号化および 256 ビット暗号化キーのすべてのキーが保護されます。続いて、暗号化されたキーを暗号化されたデータと一緒に保存します。これらのキーおよびデータは、必要なときにクラスターデータの復号に使用できます。
クラスターの KMS キーを変更すると、Aurora DSQL は既存のクラスターキーを新しい KMS キーで再暗号化します。
クラスターキーのキャッシュ
Aurora DSQL オペレーションごとに AWS KMS を呼び出さないように、Aurora DSQL は各呼び出しのプレーンテキストのクラスターキーをメモリにキャッシュします。Aurora DSQL では、キャッシュしたクラスターキーが 15 分間非アクティブ状態であった後にリクエストを取得すると、AWS KMS に新しいリクエストを送信してクラスターキーを復号します。この呼び出しは、クラスターキーの復号を求める前回のリクエスト以降に AWS KMS または AWS Identity and Access Management (IAM) で AWS KMS keyのアクセスポリシーに加えられた変更をすべてキャプチャします。
Aurora DSQL で AWS KMS keyの使用を許可する
Aurora DSQL クラスターを保護するために、アカウントでカスタマーマネージドキーを使用する場合は、そのキーのポリシーが Aurora DSQL に、ユーザーに代わってキーを使用する許可を付与する必要があります。
カスタマーマネージドキーに対するポリシーのフルコントロールはお客様にあります。Aurora DSQL では、デフォルトの AWS 所有のキー を使用して AWS アカウントの Aurora DSQL クラスターを保護するために追加の承認は必要ありません。
カスタマーマネージドキーのキーポリシー
Aurora DSQL クラスターを保護するためにカスタマーマネージドキーを選択する場合、Aurora DSQL には、選択を行うプリンシパルに代わって AWS KMS keyを使用するアクセス許可が必要です。そのプリンシパル (ユーザーまたはロール) は、Aurora DSQL に必要な AWS KMS keyのアクセス許可を持つ必要があります。それらのアクセス許可は、キーポリシーまたは IAM ポリシーにより付与できます。
Aurora DSQL には、少なくとも、カスタマーマネージドキーに対する次のアクセス許可が必要です。
-
kms:Encrypt
-
kms:Decrypt
-
kms:ReEncrypt*
(kms:ReEncryptFrom および kms:ReEncryptTo の場合) -
kms:GenerateDataKey
-
kms:DescribeKey
例えば、次のキーポリシーの例では、必要なアクセス許可のみを提供します。このポリシーには、以下の影響があります。
-
Aurora DSQL で AWS KMS keyを暗号化オペレーションで使用します。ただし、Aurora DSQL の使用許可を持つアカウント内のプリンシパルの代理として動作している場合に限ります。ポリシーステートメントで指定されたプリンシパルに Aurora DSQL を使用するアクセス許可がない場合、Aurora DSQL サービスから呼び出された場合でも、呼び出しは失敗します。
-
kms:ViaService
条件キーは、ポリシーステートメントにリストされているプリンシパルの代わりに Aurora DSQL からリクエストが来た場合にのみアクセス許可を許可します。これらのプリンシパルは、これらのオペレーションを直接呼び出すことはできません。 -
AWS KMS key管理者 (
db-team
ロールを引き受けることができるユーザー) に AWS KMS keyへの読み取り専用アクセスを付与します。
サンプルキーポリシーを使用する前に、サンプルプリンシパルを AWS アカウント の実際のプリンシパルに置き換えます。
{ "Sid": "Enable dsql IAM User Permissions", "Effect": "Allow", "Principal": { "Service": "dsql.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:Encrypt", "kms:ReEncryptFrom", "kms:ReEncryptTo" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:dsql:ClusterId": "w4abucpbwuxx", "aws:SourceArn": "arn:aws:dsql:us-east-2:111122223333:cluster/w4abucpbwuxx" } } }, { "Sid": "Enable dsql IAM User Describe Permissions", "Effect": "Allow", "Principal": { "Service": "dsql.amazonaws.com" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:dsql:us-east-2:111122223333:cluster/w4abucpbwuxx" } } }
Aurora DSQL 暗号化コンテキスト
暗号化コンテキスト は、一連のキー値のペアおよび任意非シークレットデータを含みます。データを暗号化するリクエストに暗号化コンテキストを組み込むと、AWS KMS は暗号化コンテキストを暗号化されたデータに暗号化してバインドします。データを復号するには、同じ暗号化コンテキストに渡す必要があります。
Aurora DSQL は、すべての AWS KMS 暗号化オペレーションで同じ暗号化コンテキストを使用します。カスタマーマネージドキーを使用して Aurora DSQL クラスターを保護している場合は、暗号化コンテキストを使って監査レコードやログの中で AWS KMS keyの使用を特定することができます。また、AWS CloudTrail などのログにもプレーンテキストで表示されます。
また、暗号化コンテクストはポリシーの認可用の条件としても使用できます。
Aurora DSQL は AWS KMS へのリクエストで、キーバリューペアを持つ暗号化コンテキストを使用します。
"encryptionContext": { "aws:dsql:ClusterId": "w4abucpbwuxx" },
キーと値のペアは、Aurora DSQL が暗号化しているクラスターを識別します。キーは、aws:dsql:ClusterId
です。値はクラスターの識別子です。
Aurora DSQL と AWS KMS のインタラクションのモニタリング
カスタマーマネージドキーを使って Aurora DSQL クラスターを保護している場合、AWS CloudTrail ログを使って、Aurora DSQL がお客様に代わって AWS KMS に送信したリクエストを追跡できます。
以下のセクションを展開して、Aurora DSQL が AWS KMS オペレーション GenerateDataKey
と Decrypt
を使用する方法を確認してください。
クラスターで保管中の暗号化を有効にすると、Aurora DSQL は一意のクラスターキーを作成します。クラスターの AWS KMS keyを指定する GenerateDataKey
リクエストを AWS KMS に送信します。
GenerateDataKey
演算を記録するイベントは、次のようなサンプルイベントになります。ユーザーは、Aurora DSQL サービスアカウントです。パラメータには、AWS KMS keyの Amazon リソースネーム (ARN)、256 ビットキーを必要とするキー指定子、クラスターを識別する暗号化コンテキストが含まれます。
{ "eventVersion": "1.11", "userIdentity": { "type": "AWSService", "invokedBy": "dsql.amazonaws.com" }, "eventTime": "2025-05-16T18:41:24Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-east-1", "sourceIPAddress": "dsql.amazonaws.com", "userAgent": "dsql.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:dsql:ClusterId": "w4abucpbwuxx" }, "keySpec": "AES_256", "keyId": "arn:aws:kms:us-east-1:982127530226:key/8b60dd9f-2ff8-4b1f-8a9c-bf570cbfdb5e" }, "responseElements": null, "requestID": "2da2dc32-d3f4-4d6c-8a41-aff27cd9a733", "eventID": "426df0a6-ba56-3244-9337-438411f826f4", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:982127530226:key/8b60dd9f-2ff8-4b1f-8a9c-bf570cbfdb5e" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "sharedEventID": "f88e0dd8-6057-4ce0-b77d-800448426d4e", "vpcEndpointId": "AWS Internal", "vpcEndpointAccountId": "vpce-1a2b3c4d5e6f1a2b3", "eventCategory": "Management" }
暗号化された Aurora DSQL クラスターにアクセスすると、Aurora DSQL はクラスターキーの復号化が必要となるため、階層の下でキーを復号できます。次に、クラスター内のデータを復号化します。クラスターキーを復号するために、Aurora DSQL はクラスターの AWS KMS keyを指定する Decrypt
リクエストを AWS KMS に送信します。
Decrypt
演算を記録するイベントは、次のようなサンプルイベントになります。ユーザーは、クラスターにアクセスしている AWS アカウントのプリンシパルです。パラメータには、暗号化されたクラスターキー (暗号文の blob として)、およびクラスターを識別する暗号化コンテキストが含まれます。AWS KMS は、暗号文から AWS KMS keyの ID を取得します。
{ "eventVersion": "1.05", "userIdentity": { "type": "AWSService", "invokedBy": "dsql.amazonaws.com" }, "eventTime": "2018-02-14T16:42:39Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "dsql.amazonaws.com", "userAgent": "dsql.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "encryptionContext": { "aws:dsql:ClusterId": "w4abucpbwuxx" }, "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "11cab293-11a6-11e8-8386-13160d3e5db5", "eventID": "b7d16574-e887-4b5b-a064-bf92f8ec9ad3", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "AWS Internal", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "sharedEventID": "d99f2dc5-b576-45b6-aa1d-3a3822edbeeb", "vpcEndpointId": "AWS Internal", "vpcEndpointAccountId": "vpce-1a2b3c4d5e6f1a2b3", "eventCategory": "Management" }
暗号化された Aurora DSQL クラスターの作成
すべての Aurora DSQL クラスターは保管中に暗号化されます。デフォルトでは、クラスターは AWS 所有のキーを無料で使用するか、カスタム AWS KMS キーを指定できます。AWS Management Consoleまたは AWS CLI から暗号化されたクラスターを作成するには、次の手順に従います。
Aurora DSQL クラスターのキーの削除または更新
AWS Management Consoleまたは AWS CLI を使用して、Amazon Aurora DSQL の既存のクラスターの暗号化キーを更新または削除できます。キーを置き換えずに削除すると、Aurora DSQL はデフォルトの AWS 所有のキー を使用します。Aurora DSQL コンソールまたは AWS CLI から既存のクラスターの暗号化キーを更新するには、次の手順に従います。
注記
独自のキーを所有および管理することを選択した場合は、KMS キーポリシーが適切に設定されていることを確認してください。詳細情報と例については、「カスタマーマネージドキーのキーポリシー」を参照してください。
Aurora DSQL による暗号化に関する考慮事項
-
Aurora DSQL は、保管中のすべてのクラスターデータを暗号化します。この暗号化を無効にしたり、クラスター内の一部の項目のみを暗号化したりすることはできません。
-
AWS Backup は、バックアップと、これらのバックアップから復元されたクラスターを暗号化します。AWS Backup でバックアップデータを暗号化するには、AWS 所有キーまたはカスタマーマネージドキーを使用します。
-
Aurora DSQL では、次のデータ保護状態が有効になっています。
-
保管中のデータ - Aurora DSQL は永続的ストレージメディア上のすべての静的データを暗号化します。
-
転送中のデータ - Aurora DSQL は、デフォルトで Transport Layer Security (TLS) を使用してすべての通信を暗号化します。
-
-
別のキーに移行する場合は、移行が完了するまで元のキーを有効にしておくことをお勧めします。AWS は、新しいキーでデータを暗号化する前に、データを復号するために元のキーを必要とします。クラスターの
encryptionStatus
がENABLED
で、新しいカスタマーマネージドキーのkmsKeyArn
が表示されると、このプロセスは完了です。 -
カスタマーマネージドキーを無効にするか、Aurora DSQL がキーを使用するためのアクセスを取り消すと、クラスターは
IDLE
状態になります。 -
AWS Management Consoleと Amazon Aurora DSQL API は、暗号化タイプに異なる用語を使用します。
-
AWS コンソール – コンソールでは、カスタマーマネージドキーを使用する場合は
KMS
、AWS 所有のキーを使用する場合はDEFAULT
が表示されます。 -
API – Amazon Aurora DSQL API は、カスタマーマネージドキーには
CUSTOMER_MANAGED_KMS_KEY
を使用し、AWS 所有のキーにはAWS_OWNED_KMS_KEY
を使用します。
-
-
クラスターの作成時に暗号化キーを指定しない場合、Aurora DSQL は AWS 所有のキーを使用してデータを自動的に暗号化します。
-
AWS 所有のキーとカスタマーマネージドキーはいつでも切り替えることができます。この変更は、AWS Management Console、AWS CLI、または Amazon Aurora DSQL API を使用して行います。