はじめる前に
- 必須AWS アカウントを持っていること
- 必須マネジメントコンソールにサインインできること
- あると良いS3 バケットを作成した経験(無くても進められます)
※ このハンズオンは すべてコンソールだけで完結します。コマンドラインや SSH などの操作は一切ありません。
参照する公式ドキュメント
手順に迷ったときや、用語の意味を確かめたいときに開きましょう。
※ リンク切れの場合は、ページタイトルで検索してください。
背景・シナリオ
S3 に保存するデータの中には、個人情報や業務上の機密情報が含まれることがあります。万が一データへの不正なアクセスがあった場合に備え、保存する時点でデータを暗号化しておくことは、基本的かつ重要な対策です。
S3 には「デフォルト暗号化」という設定があり、これを有効にしておくと、アップロード時に暗号化の指定を毎回しなくても、自動的にオブジェクトが暗号化されます。今回は、この設定がどこにあるか、どんな種類があるかを確認し、実際にオブジェクトをアップロードして暗号化が反映されることを確かめます。
暗号化を設定しないと、データは無防備なの?
現在の S3 では、新しく作成するバケットに標準で暗号化(SSE-S3)が有効になっています。つまり、何もしなくても基本的な暗号化はすでに行われています。今回は、その設定がどこで確認できるか、そして鍵の種類をどう切り替えるかを体験します。
暗号化されているかどうかは、見た目で分かるの?
ファイルをダウンロードして開く分には違いはありません(アクセス時に自動的に復号されます)。ただし、オブジェクトの「プロパティ」画面を開くと、使われている暗号化の種類を確認できます。
S3 バケットのデフォルト暗号化の設定を確認し、別の暗号化方式に変更したうえで、アップロードしたオブジェクトのプロパティで、暗号化の種類が設定どおりに反映されていることを確認する。
つくる構成
バケットのデフォルト暗号化には、主に 2 つの選択肢があります。それぞれの違いを確認してから設定します。
選べる暗号化方式(例)
要件
以下の要件を満たし、暗号化の設定とその反映結果を確認してください。
| No | 要件 |
|---|---|
| 1 | リージョンは「東京(ap-northeast-1)」を使用する。 |
| 2 | S3 バケットを1 つ作成する(バケット名はグローバルで一意になるよう自由に決める、例:encryption-demo-yourname)。 |
| 3 | バケットの「プロパティ」タブから「デフォルトの暗号化」の設定を確認する(標準で SSE-S3 が有効になっているはず)。 |
| 4 | ファイルを1 つアップロードし、そのオブジェクトの「プロパティ」で暗号化の種類が表示されることを確認する。 |
| 5 | デフォルト暗号化の設定を別の方式(例:SSE-KMS、AWS 管理キー)に変更し、再度ファイルをアップロードして、暗号化の種類が変わることを確認する。 |
構築の進め方
「設定を確認する → アップロードして見る → 設定を変えて、もう一度見る」という順番で進めます。
-
マネジメントコンソールにサインインし、リージョンを合わせる
ブラウザで AWS マネジメントコンソールにサインインし、画面右上のリージョンが「アジアパシフィック(東京)ap-northeast-1」になっていることを確認します。
-
S3 バケットを作成する
S3 コンソールで「バケットを作成」を押し、バケット名を自由に決めます(例:
encryption-demo-yourname)。パブリックアクセスのブロック設定は、今回バケットを公開しないためデフォルトのまま(すべてブロック)にしておきます。 -
「デフォルトの暗号化」の設定を確認する
作成したバケットを開き、「プロパティ」タブを選び、下にスクロールして「デフォルトの暗号化」の項目を見つけます。すでに
Amazon S3 マネージドキー(SSE-S3)が有効になっていることを確認します。「アクセス許可」タブではない暗号化の設定は「アクセス許可」タブではなく「プロパティ」タブにあります。最初は見つけづらいので、タブの位置を覚えておきましょう。
-
ファイルを 1 つアップロードする
「オブジェクト」タブから「アップロード」を選び、適当なファイルを 1 つ選んでアップロードします。
-
アップロードしたオブジェクトの暗号化を確認する
アップロードしたオブジェクトを選び、「プロパティ」を開きます。「サーバー側の暗号化設定」の項目に、
SSE-S3(Amazon S3 マネージドキー)が使われていることが表示されます。 -
デフォルト暗号化の設定を変更する
バケットの「プロパティ」タブに戻り、「デフォルトの暗号化」の「編集」を選びます。暗号化の種類を
AWS Key Management Service キー(SSE-KMS)に変更し、鍵には「AWS 管理キー(aws/s3)」を選んで保存します。独自の KMS キーを新しく作る必要はない今回は学習目的のため、AWS が用意している管理キーを使えば十分です。自分で新しい KMS キーを作成する必要はありません。
-
もう一度ファイルをアップロードし、暗号化が変わったことを確認する
別のファイルをもう 1 つアップロードし、その「プロパティ」を開きます。今度はSSE-KMSが使われていることを確認します。最初にアップロードしたファイルのプロパティも見てみて、暗号化の種類が変わっていない(SSE-S3 のまま)ことも確認しましょう。
これがこのハンズオンの肝デフォルト暗号化の設定変更は、これからアップロードするものにだけ影響し、既存のオブジェクトには影響しません。新旧 2 つのファイルの暗号化方式を見比べることで、この性質を体感できます。
つまずきポイント
初学者がよく引っかかる箇所を先回りでまとめました。答えそのものは載せていませんが、「どこを見直せばよいか」の手がかりとして使ってください。
「バケットの画面を見ても、暗号化の項目が見つからない」
開いているタブが「アクセス許可」になっていないか見直しましょう。デフォルト暗号化の設定は「プロパティ」タブの中にあり、ページの下のほうにスクロールする必要があります。
「設定を変更したのに、前にアップロードしたファイルの暗号化方式が変わっていない」
これは想定どおりの動きです。デフォルト暗号化の設定は「これから」アップロードするオブジェクトにだけ適用され、既存のオブジェクトには影響しません。既存のオブジェクトの暗号化方式を変えたい場合は、別途そのオブジェクトを上書き保存(再アップロード)する必要があります。
完了チェック
要件の再確認ではなく、画面のどこを見れば達成を確認できるかをまとめました。S3 コンソールを開いて、次を順に確かめましょう。
- バケットの「プロパティ」タブで、「デフォルトの暗号化」がSSE-KMSに変更されている。
- 1 回目にアップロードしたオブジェクトのプロパティで、暗号化の種類がSSE-S3のまま表示されている。
- 2 回目(設定変更後)にアップロードしたオブジェクトのプロパティで、暗号化の種類がSSE-KMSになっている。
考えてみよう
手を動かすことに加えて、次の問いに自分の言葉で答えられるようにしておくと、理解がより深まります。
- デフォルト暗号化の設定を変えても、既存のオブジェクトに影響しないのはなぜだと考えられるでしょうか。
ヒント
「デフォルト」という言葉の意味を考えてみましょう。新しく何かをするときの初期設定であり、すでに完了している過去の操作をさかのぼって変更するものではない、という考え方がヒントです。 - SSE-S3 と SSE-KMS のように、複数の暗号化方式が用意されている理由は何でしょうか。
ヒント
SSE-S3 は手軽さを重視した方式です。一方 SSE-KMS は、鍵の利用履歴を記録したり、鍵ごとに細かくアクセスを制限したりできます。利用者によって「シンプルさ」と「管理の厳密さ」のどちらを重視するかが異なる、という観点で考えてみましょう。 - 暗号化を「常に自動で有効」にしておくことには、どんな利点があるでしょうか。
ヒント
人の手による設定は、忘れてしまったり、一部のファイルだけ抜け漏れたりすることがあります。「意識しなくても、常に同じ状態になっている」ことが、セキュリティ対策にとってどんな価値を持つか考えてみましょう。
後片づけ
アップロードしたオブジェクトとバケットを削除し、リソースを整理しましょう。
- オブジェクトを削除する:バケットの「オブジェクト」タブで、アップロードした 2 つのファイルを選び、削除します。
- バケットを削除する:バケット一覧から、作成したバケット(例:
encryption-demo-yourname)を選び、削除します。
削除の順番は「オブジェクト → バケット」
バケットの中にオブジェクトが残っていると、そのままではバケットを削除できません。先にすべてのオブジェクトを削除してから、バケット本体を削除する順番で進めましょう。他で使っている既存のバケットは、間違えて削除しないようにしてください。
コストに関する注意: S3 の保存容量・リクエスト数に応じた料金がかかりますが、今回のような少量のファイルであれば無料利用枠の範囲内に収まることが多いです。SSE-S3 による暗号化自体に追加料金はかかりません。一方、SSE-KMS を使う場合は、AWS KMS の鍵の利用に応じた料金が別途発生します(少量の利用であれば少額です)。後片づけでオブジェクトとバケットを削除すれば、それ以降の課金は発生しません。