はじめに
「好きなAWSサービス:S3」って書いてあると通っぽい雰囲気がでるなあ と思っています。
なので、S3をより好きになれるよう、理解した「S3でできること」を少しずつアウトプットしていきます。
S3のデータ保護
S3はストレージサービスなので、「格納するデータをどのように保護するか?」が重要です。
「サーバ側の暗号化」と「クライアント側の暗号化」の2つがあります。
クライアント側の暗号化
いわばデータを送る前の暗号化。
詳細は触れない。
サーバ側の暗号化
一言でいうと「S3にしまう時に暗号化する」という方法。
以下の方法がある。
S3管理キーによるサーバ側暗号化(SSE-S3)
S3が管理するキーで暗号化する。
設定は「デフォルトの暗号化」の選択で「S3キー」を選ぶだけ。
あとは裏側でよしなにやってくれるというわけ。
「本当に大丈夫なん?」と思ったら以下の記事がおすすめです。
https://dev.classmethod.jp/articles/behavior-when-s3-cannot-be-decrypted/
KMSのカスタマーマスターキー(CMK)によるサーバ側暗号化(SSE-KMS)
暗号化キー管理のサービス、KMSのCMKを使ってで暗号化します。
※CMKがどんなもんかは以下を参照。
https://www.slideshare.net/ssuser2c2bf2/encryption-with-raccon-dog-and-pear-242427386
S3キーでの暗号化とほとんど同じですが、以下のようなメリットがあります。
・CMK私用の個別アクセス許可を行える
・「CMKがいつ誰に使われたか」の証跡を残せる。
S3キーによる暗号化より選択肢が多いです。
各選択肢毎の違いは別記事で触れます。
利用者の指定したキーによるサーバ側暗号化(SSE-C)
言葉通り。
基本はAWS側でマネージしてくれるS3キーかKMSのCMKで暗号化すればよいと思う。
その他サーバ側の暗号化について覚えておくこと
・メタデータは暗号化されず、実データだけが暗号化される。
・同じオブジェクトに対し、異なる種類の暗号化は利用できない
・サーバ側の暗号化では、あくまで「しまう瞬間」の暗号化。
S3に送信するまでの通信では、暗号化通信を利用するなどで別途ネットワークセキュリティを担保する必要がある。
感想
S3キーで暗号化するのが簡単だが、想像しづらい。
AWSの操作感と利便性をより肌で感じるためには、KMS使いながら勉強するのがよいのではないかと感じた。
参考
暗号化を使用したデータの保護
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/UsingEncryption.html
サーバー側の暗号化を使用したデータの保護
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/serv-side-encryption.html
AWS Key Management Service (SSE-KMS) に保存された CMK によるサーバー側の暗号化を使ったデータの保護
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/UsingKMSEncryption.html