Encryption
Q1. S3バケットの中のデータが保管時に暗号化されていなければならない。また、暗号鍵はあなたの会社が提供・管理するという要件がある。これを実現するためのアクションは?
A1.
- Use S3 server-side encryption with customer-provided keys(SSE-C)
- Encrypt the data on the client-side before sending to S3 using their own key
暗号化関連は、保管時(at rest)と転送時(in transit)で分けて整理。
鍵を誰が発行・管理するか、とかローテーションが自動化でできるためには、とかその辺が選択のキモかと。
暗号化整理
at rest
- Server-side encryption
- Use Sever-side encryption w/ S3-Managed Keys(SSE-S3)
- Use Sever-side encryption w/ AWS KMS-Managed Keys(SSE-KMS)
- Use Sever-side encryption w/ Customer-Provided Keys(SSE-C)
- Client-side encryption
- Use Client-side encryption w/ AWS KMS-Managed Customer Master Key(CMK)
- Use Client-side encryption Using a Client-side Master Key
in transit
- SSLを使いましょう
Q2. EC2にEBSをアタッチして利用している。次の文章から正しいものを2つ選択せよ。
- インスタンス間・ボリューム間を移動する全てのデータは暗号化されている。
- スナップショットは自動的に暗号化されている。
- スナップショットは自動的に暗号化されていない。
- ボリュームの中のデータのみ暗号化されており、転送時には全てのデータが暗号化されるわけではない。
- 暗号化されたスナップショットから作られたボリュームは暗号化されていない。
A2. 1,2
EBSを作成しEC2にアタッチするとき、次のタイプのデータは全て暗号化されている。
※暗号化が有効になっているEBSの話ですね
※2019/5/27 の発表で新規EBSのデフォルト暗号化オプトインを公開
- EBSボリューム中のデータ
- ボリューム・インスタンス間を移動する全てのデータ
- EBSから作られた全てのスナップショット
- それらのスナップショットから作られた全てのEBS
ref1.
新機能 – 新規 EBS ボリュームのデフォルト暗号化へのオプトイン
Q3. 毎週アクセスされるような機密ファイルを保管するストレージシステムを探している。暗号化と自動のキーローテが行われ、同時に誰がアクセスしたかというようなaudit trail(監査証跡)を出したい。最もコスト効率の良い方法は?
- SSE-C
- SSE-S3
- SSE-KMS
- Standard S3
- Glacier DeepArchive
A3. 3
- SSE-CやSSE-S3でも暗号化、キーローテーションは可能だが、監査証跡を残すことはできない。
- S3はAWS KMS customer master keys(CMKs)を用いてS3オブジェクトを暗号化する
- AWS KMSはオブジェクトは暗号化するが、メタデータは暗号化しない
- CMKはkeyID, 作成日, 説明, 状態などのメタデータを含む
- 典型的には、CMKはユーザがAWS KMSの外で利用する暗号鍵を生成、暗号化、復号化するために利用される(=エンベロープ暗号化)
IAM
Q1.既にEC2用のIAMロールを利用している。新しいリージョンでEC2を立てたい時、IAMロールはどーする?
A1.IAMロールはGlobalなサービスなので、そのままアサインするだけでOK
Q2. 同一のVPC内にUAT用のEC2、本番用のEC2が存在する。UATインスタンスを担当するエンジニアが本番用インスタンスにアクセスできないようにするためのベストな選択は?
A2. IAMとTagを組み合わせる。
UAT、PRDそれぞれにタグ付けをして、IAMポリシーのconditionにそのタグを指定することで実現するのがよい。