DEA / ドメイン4 データセキュリティとガバナンス

重要な内容

AWS KMS とデータの暗号化

データパイプラインのデータは、 に置かれ、 や で処理され、 に載り、アカウントをまたいで共有されます。どの段階でも暗号化が切れないようにするのがデータエンジニアの仕事です。 DEA では、 のキーで保存データを暗号化・復号すること、アカウントの境界を越えて暗号化したデータを使わせること、転送中または転送前に暗号化することが問われます。

Point
  • KMS = Key Management Service の略で、暗号化に使うキーを作成・管理・利用するサービスです。
  • SSE = Server-Side Encryption (サーバー側暗号化) の略です。S3 などが保存時に暗号化します。
  • TLS = Transport Layer Security の略で、通信を暗号化する仕組みです (HTTPS の土台)。
  • エンベロープ暗号化は、データをデータキーで暗号化し、そのデータキーを KMS キーで暗号化する方式です。
  • 和訳

概要

暗号化は、データの状態に合わせて3つに分けて考えます。

状態守る手段例
保存時 (at rest)サーバー側暗号化 ( のキーなど) の 、 のクラスター暗号化
転送中 (in transit) の 呼び出し、 の 接続
転送前 (クライアント側)送る前に自分で暗号化AWS Encryption 、S3 の暗号化クライアント
概要の図 TLS SSE-KMS で書き込み COPY TLS データ共有両側とも暗号化 キーを提供 オンプレミスの DB Glue ジョブ S3 データレイク RedshiftKMS で暗号化 別アカウント AWS KMS

主要技術

①KMS キーとキーポリシー

キーの種類管理者判断ポイント
AWS 所有のキーAWS利用者からは見えません。監査や権限の制御はできません。
AWS マネージドキー (aws/s3 など)AWS がサービスごとに作成手軽ですが、キーポリシーを変えられず、別アカウントへ使わせることができません。
利用者キーポリシー、ローテーション、無効化、削除を自分で管理します。アカウントをまたぐ場合や監査の要件がある場合に選びます。

のキーを使うには、キーポリシーでの許可が必須です。キーポリシーでアカウントに委ねる記述 (アカウントのルートを Principal にする) があれば、 ポリシーでも許可を付けられます。

操作内容
自動ローテーションカスタマー管理キーで有効にできます。既定は365日ごとで、90〜2,560日の範囲で指定できます。古い鍵素材は残るため、過去のデータも復号できます。
無効化・削除削除は7〜30日の待機期間を経て実行されます。削除したキーで暗号化したデータは復号できなくなります。
監査KMS の 呼び出し (Encrypt、Decrypt、GenerateDataKey) は に記録されます。

大きなデータは KMS に直接送らず、GenerateDataKey で得たで暗号化し、暗号化したデータキーをデータと一緒に保存します (エンベロープ暗号化)。 や はこれを内部で行います。


②S3 の暗号化方式 ⚠️ 頻出

方式キーの管理判断ポイント
が管理すべてのの既定の暗号化です。追加の設定や の費用はかかりません。
KMS のキーキーの権限で読める人を絞り、 でキーの利用を監査したい場合です。読む人に kms:Decrypt が必要です。
DSSE-KMSKMS のキーで二重に暗号化二層の暗号化を求める規制に対応する場合です。
利用者が毎回キーを渡す2026年4月から、新しいバケットでは既定で使えなくなりました。使うには明示的に有効にする必要があります。AWS のサービスはこの方式のデータを扱えません。
クライアント側暗号化アプリケーションAWS に平文を渡したくない場合です。

SSE-KMS でオブジェクトが大量にあると、KMS の 呼び出しが増えて費用やの問題になります。S3 バケットキーを有効にすると、バケット単位のキーでを作るため、KMS への呼び出しを大きく減らせます。

暗号化を強制したい場合は、既定の暗号化を SSE-KMS に設定し、バケットポリシーで別の方式や別のキーを指定したアップロードを拒否します (s3:x-amz-server-side-encryption、s3:x-amz-server-side-encryption-aws-kms-key-id の条件キー)。


③分析サービスの暗号化

サービス押さえること
クラスター・Serverless の名前空間を で暗号化します。新しいプロビジョンドクラスターは既定で暗号化されます (キーを指定しなければ AWS 所有のキー)。にすると、キーの権限で監査や制御ができます。
Data Catalog の暗号化 (メタデータと接続のパスワード) と、セキュリティ設定 (ジョブが書く のデータ、 Logs、) を設定します。セキュリティ設定はジョブ・に付けます。ジョブのロールにキーの利用権限が必要です。
セキュリティ設定で、S3 () のデータの暗号化、ローカルディスクの暗号化、を指定します。クラスター作成時にセキュリティ設定を指定します。
クエリ結果の暗号化 (、、CSE-KMS) をワークグループで強制できます。元のデータが暗号化されていれば、クエリする人にもキーの権限が必要です。
/ KMS によるサーバー側暗号化を有効にできます。プロデューサー・コンシューマーにキーの権限が必要です。
/ 作成時に暗号化を有効にします。既存の暗号化されていない DB は、を暗号化してコピーし、そこから復元します。
常に暗号化されます。キーの種類 (AWS 所有、AWS マネージド、カスタマー管理) を選びます。監査やキーの管理が必要ならカスタマー管理キーです。

④アカウントの境界を越えた暗号化 ⚠️ 頻出

別のアカウントの主体が、 で暗号化したデータを読むには、データへの権限とキーへの権限の両方が要ります。

④アカウントの境界を越えた暗号化 ⚠️ 頻出の図 GetObject (バケットポリシーで許可が必要) Decrypt (キーポリシーで利用側を許可が必要) データキー 復号したオブジェクト 利用側アカウントのロール 提供側の S3 バケット 提供側の KMS キー
設定する場所内容
提供側のキーポリシー利用側のアカウント (またはロール) に kms:Decrypt などを許可します。
利用側の ポリシー自分のロールに、提供側のキーの ARN への kms:Decrypt を許可します。
提供側のリソースのポリシー のポリシーなどで利用側を許可します。
場面押さえること
暗号化した ・ のを共有AWS マネージドキーで暗号化したものは共有できません。で暗号化し、キーも共有します。
S3 の・クロスのレプリケーションのロールに、元のキーでの復号と、宛先のキーでの暗号化の権限が要ります。
(アカウントをまたぐ)提供側と利用側の両方が暗号化されている必要があります。同じキーである必要はありません。
のクロスアカウント共有元データが なら、Lake Formation に登録したロールがキーを使えるようにします。
期間限定・委任の使用グラントで、特定の主体にキーの使用を一時的に委ねられます。

⑤転送中・転送前の暗号化

手段内容
aws:SecureTransport 条件ポリシーで aws:SecureTransport が false のリクエストを Deny し、 以外の通信を拒否します。
の require_sslパラメータグループで 接続を必須にします。新しいクラスターの既定のパラメータグループでは有効です。
の SSL 接続で SSL 接続を必須にし、 などへの通信を暗号化します。
のセキュリティ設定でノード間・ のなどの通信を で暗号化します。
クライアント側暗号化AWS Encryption や の暗号化クライアントで、送る前に暗号化します。AWS 側で平文を扱わせたくない場合に使います。

試験対策

暗号化の問題では、まず「どの状態のデータか (保存時、転送中、送る前)」を決め、次に「誰がキーを管理・監査する必要があるか」で のキーの種類を選びます。 アカウントをまたぐなら、とキーポリシーの許可が前提です。

①判断マトリクス

問題文のキーワード選ぶもの理由
追加の費用や運用なしで を暗号化 (既定)すべてので既定です。
キーの利用を監査し、読める人を絞りたい + キーポリシーと で制御・監査します。
規制で二層の暗号化が必要DSSE-二重の暗号化を行います。
SSE-KMS の KMS 呼び出しの費用・S3 バケットキーKMS への呼び出しを減らします。
暗号化されていないアップロードを拒否既定の暗号化 + バケットポリシーの条件キーで Deny方式やキーを強制します。
以外のアクセスを拒否aws:SecureTransport が false を Denyを強制します。
別アカウントが暗号化された S3 データを読めない提供側のキーポリシーで許可 + 利用側の で kms:Decryptデータとキーの両方の許可が必要です。
暗号化を別アカウントへ共有カスタマー管理キーで暗号化し、キーも共有AWS マネージドキーは共有できません。
既存の暗号化なしの を暗号化スナップショットを暗号化してコピーし、復元既存のインスタンスはその場で暗号化できません。
ジョブの出力とログを暗号化Glue のセキュリティ設定S3・ Logs・ブックマークを暗号化します。
AWS に平文を渡したくないクライアント側暗号化送る前に暗号化します。
への接続を必ず暗号化require_ssl を true 以外の接続を拒否します。

②よくある誤答

  • の権限だけで のオブジェクトを読めると考えること。kms:Decrypt とキーポリシーの許可も必要です。
  • AWS マネージドキーをキーポリシーで別アカウントに許可できると考えること。変更できないため、を使います。
  • キーのローテーションで過去のデータが読めなくなると考えること。古い鍵素材は残ります。
  • で大きなファイルを直接暗号化すると考えること。によるエンベロープ暗号化です。
  • を新しいですぐ使えると考えること。現在は既定で無効です。

参考文献

  1. ※1出題比率: AWS 公式の試験ガイドに記載された、採点対象の設問のうちその分野が占める割合です。

検索

キーワードを入力してください