公開日:2023年2月16日最終更新日: 2023年2月16日
AWSからS3の仕様変更が発表され、これからは保管するオブジェクトが暗号化されるようになりました。今までは利用者が暗号化するかどうかを選択できる仕組みでしたが、暗号化しない選択肢がなくなります。
非常に重要な仕様変更ですが、細かな内容についてはまだ理解できていない人も多いようです。今回はS3のアップデートによる暗号化について解説します。
目次 <Contents>
S3のオブジェクトが保存時に暗号化されます
AWSアップデートによって、S3のオブジェクトは保存の際に暗号化されるようになりました。今まで暗号化は強制される仕様ではなく利用者が選択するものでしたが、強制される仕様に変更されています。
詳細な背景などはAWS公式ブログ「Amazon S3 ですべての新しいオブジェクトが自動的に暗号化」で解説されています。
このようなアップデートが発生した背景をまとめると、情報漏洩の防止があるようです。これまで、AWSでは暗号化を設定していないことによる情報漏洩がいくつも発生していました。そのような状況を鑑みて、標準で暗号化されるように変更されたのです。
ただ、AWSのようなクラウドサービスは責任境界点があるため、暗号化するかどうかはユーザが考えるべき内容です。そのような内容であるにも関わらずアップデートが発生したということは、社会的な影響などを踏まえての判断でしょう。
S3のオブジェクト暗号化とは
S3が暗号化される仕様について理解するためには、S3の暗号化方式について理解すべきです。主にサーバー側とクライアント側があるため、それぞれについて解説します。
S3で利用できる暗号化の種類
AWSはS3に対して以下のとおり4種類の暗号化を提供しています。
- SSE-S3:S3管理キーによる暗号化
- SSE-KMS:KMSキーによる暗号化
- SSE-C:クライアントキーによる暗号化
- クライアントでの暗号化:クライアント側機能での暗号化
今回のアップデートでは、これらの暗号化の中でもAWSが管理するサーバー側である「SSE-S3」「SSE-KMS」「SSE-C」が影響を受けます。クライアント側で暗号化する機能については厳密にはAWSが提供するサービスではないため、今回のアップデートでは影響を受けません。
なお、AWSは例に漏れずSSL通信を採用しているため、ファイル転送においてはHTTPS (TLS) による暗号化が行われています。ただ、これは通信の暗号化であり、S3に保管されているオブジェクトの暗号化ではないため、今回は別の観点として割愛します。
S3に適用される暗号化の設定
S3に適用される暗号化で理解してもらいたいことは「暗号化されるのはオブジェクト」ということです。今回のアップデートではバケットの暗号化について仕様変更が発生していますが、暗号化されるのはバケットに格納されるオブジェクトと考えましょう。バケット自体には暗号化という概念が存在しません。
アップデートでは「オブジェクトの暗号化」が強制化されます。これはバケットの設定として暗号化を設定しておくことで、そのバケットにアップロードされるオブジェクトを暗号化する仕組みです。
今までは明示的に暗号化しない限り、オブジェクトは暗号化されませんでしたが、これからは明示的に暗号化しなくとも、標準設定で自動的に暗号化されます。
S3のアップデートによる変更点
S3のアップデートによって、いくつかの設定変更が行われました。それらの中でも根本的に理解しておきたい部分は限られているため、どのような変更が施されたのか簡単にまとめていきます。
新規バケットの制御変更
新規バケットを作成する際に「バケットのデフォルト暗号化」で「無効」の選択肢がなくなります。以下のとおり「暗号化キータイプ」を選択する以外の選択肢はなく、暗号化しない状況でS3バケットを作成することはできません。
なお、バケットキーについては状況に応じて適切なものを選択できます。
以前は「無効」の選択肢がありましたが、現在ではそもそも選択肢が表示されなくなっています。
既存バケットの制御変更
既存バケットのうち、現時点で暗号化が設定されているものは現時点での設定がそのまま適用されます。
現時点でバケットの暗号化が設定されておらず「バケットのデフォルト暗号化」に「無効」がされているものは、デフォルトの暗号化を無視して暗号化が適用される仕組みです。
バケットの設定変更は自分で対応する必要がなく、強制的に暗号化されてしまいます。例えば、以下のとおり設定自体は変化していません。
この場合、自分が意図しない暗号化方式である場合は変更しなければなりません。
なお、2023年1月23日時点で、海外版で提供されているAWSでは強制的に暗号化キータイプが変更されているため、日本でも順次対応があると考えられます。
S3のアップデートによる既存オブジェクトへの影響
上記ではS3のバージョンアップによるバケットに対する影響をご説明しました。続いては、バケットの中に格納されるデータファイルである、オブジェクトへの影響についても解説します。
既存オブジェクトへの影響はなし
上記で既存バケットが自動的に暗号化されるとご説明しました。そのため「オブジェクトについても暗号化されるのではないか」と考えた人は多いかもしれません。上記の流れからすると当然の考えでしょう。
しかし、実は今回のアップデートではS3のバケットは自動的に暗号化されるものの、保管されているオブジェクトについては影響を与えません。
つまり、暗号化されていないオブジェクトが暗号化されることや既存のオブジェクトに適用される暗号化方式が変更になることはありません。この点は心配する必要がありません。
そもそも、今回のアップデートはバケットの設定を変更しておくことで保存されるオブジェクトを強制的にアップデートするものです。バケット自体が暗号化されていれば、オブジェクトは必然的に暗号化されます。これが根底の考え方であるため、既存オブジェクトについて直接的な影響はないのです。
必要に応じて自分で暗号化する
上記で触れたとおり、既存オブジェクトについては自動的に暗号化されません。そのため、AWSのアップデートとともに「暗号化しておきたい」と考えるならば、自分で暗号化する作業が必要です。
ただ、既存オブジェクトを暗号化するためには以下、どちらかの対応を取らなければなりません。
- 既存オブジェクトと同じファイルをアップロードしなおして暗号化する
- 既存オブジェクトをコピーする形で暗号化する
アップロードしたファイルをそのまま暗号化することは不可能であるため、一度ローカルにファイルをダウンロードして、アップロードする際に暗号化を設定すれば暗号化されます。また、ファイルをダウンロードせずとも、S3内でファイルをコピーする形で暗号化することも可能です。
まとめ
S3に格納するオブジェクトが強制的に暗号化されるアップデートについて解説しました。厳密にはオブジェクトを格納するバケットの設定が変更になるアップデートで、バケットの設定が変更されるためオブジェクトが暗号化されるようになります。
ただ、バケットの設定が変更されても既存オブジェクトには影響がありません。もし、既存オブジェクトも暗号化したいならば、自分で暗号化する必要があります。
暗号化にあたってはオブジェクトの再アップロードなどが必要となるため、対応時間などは注意しておくと良いでしょう。