🍵

AWS認定セキュリティ データ保護2

2021/05/23に公開

こんにちは!
現在AWS認定セキュリティ試験の勉強中です。
今回は試験範囲の1つである データ保護 で出題される可能性があるサービスの特徴などをまとめていきたいと思います。
基本的にはNRIネットコム株式会社の「要点整理から攻略する『AWS認定 セキュリティ-専門知識』」という本を使って勉強しております。とてもわかりやすいのでおすすめです。

目次

  • RDS
  • DynamoDB
  • S3
  • Secrets Manager

RDS

リレーショナルデータベースを提供してくれていて、データを保存するためのサービスです。
RDSに保存するデータを保護するために暗号化が必要なのですが、その暗号化の方法は2種類あります。
格納時の暗号化と伝送時の暗号化です。

格納時の暗号化
KMSCMKを使用して暗号化します。
DBインスタンスの作成時のみ暗号化できるので、既存のDBインスタンスを後から暗号化したくなった場合は、
スナップショットをコピーする時に暗号化し、そのスナップショットからリストアする必要があります
伝送時の暗号化
SSLTLSを使って暗号化します

mysqlなどに接続するときに認証のためにDBユーザーとパスワードを使用することがありますが、RDSではこれに加えてIAMを使用して認証することができます。

IAMを使うと何が良いの?

各RDSごとに認証情報を管理する必要がなく一元管理ができます。またパスワード漏洩リスクも減らせます。例えばEC2からRDSに接続するような構成だったとき、EC2にIAMロールをアタッチしておけばパスワードではなくIAMを使用した認証が実現できます。

DynamoDB

NoSQLのデータベースです。

NoSQLって何なん?

SQLではないデータベースのことです。

こちらはRDSと違って何も設定しなくてもデータ格納時には勝手に暗号化されます。無効化することもできません。

こちらもRDSと同じくKMSのCMKを使用して暗号化されます。CMKは以下の3種類から選択できます。

  • カスタマー管理CMK
  • AWS管理CMK
  • AWS所有CMK

デフォルトではAWS所有CMKが使用されます。

伝送時の格納化に関してですが、DynamoDBへのアクセスはhttpsを使用したAPI経由で行われるため必然的に暗号化されます。

アクセス認証はどうするん?

DynamoDBへの認証はIAMを使って行います。RDSと違ってユーザー・パスワードという概念はありません。

S3

インターネットストレージサービスです。
アクセス制御は以下3種類の方法で行います。

  • IAMポリシー
  • バケットポリシー
  • アクセスコントロールリスト(ACL)

アクセスコントロールリスト(ACL)って??

バケットACLとオブジェクトACLがあります。バケットACLはS3バケットへのアクセスを制御するもので、オブジェクトACLはS3バケットの中のオブジェクトへのアクセスを制御するものです。

それぞれどういうときに使うの??

バケットACLは、S3のアクセスログをS3バケットに保存する場合に使用することが推奨されています。バケット単位でのアクセス制御は基本的にはバケットACLではなくバケットポリシーを使うと良いです。

オブジェクトACLは、バケットの所有者とそのバケットにあるオブジェクトの所有者が違う場合、オブジェクトの所有者がオブジェクトACLを使用してアクセスを制御するために使用することができます。

VPCエンドポイントを利用するとVPC内のサービスとS3を閉域で通信させることができます。

閉域??

インターネットを経由せずということです。
例えばプライベートサブネットからS3にアクセスしたい場合などVPCエンドポイントを使うとプライベートサブネットとS3をインターネット経由なしでつなぐことができます。

S3 Glacierは取り出すのに時間がかかるがS3よりも安くデータを保存できるサービスです。一応残しておきたいけど頻繁には取り出さないデータ(バックアップ等)を保存するのに最適です。

S3 Glacierにはボールトロックという機能があり、それを使うと保存されたデータをロックして修正できないようにすることができます。

ボールトロックいつ使うの?

使いどきはいつなのかという話なのですが、例えば操作ログなど監査上の理由で保存する必要はあるが修正が許されないようなデータに対してボールトロックを使用すると良いです。

S3 Glacierだけでなく普通のS3に保存しているオブジェクトもロックすることが可能です。参照回数が少ないものはGlacierに、定期的に確認が必要かつ修正不要のものはS3のオブジェクトロックという機能を使えば良いですね。

Secrets Manager

パスワードなどの認証情報を管理するサービスです。
DBのパスワードなどを保存し、アプリケーションから取得できるようにしてくれます。

自動ローテーション機能もあって、パスワードを自動で更新してくれます。アプリケーション上ではSecretsManagerのAPIを呼んでいるだけなのでパスワードに変更があってもアプリケーション側で変更をする必要はないのが良いですね!

実はSystemManagerのParameterStoreも似た機能を提供しています。僕はSecretsManagerは使ったことがなく、このParameterStoreを使用しています。

ただしParameterStoreには自動ローテーション機能はありません。暗号化していなければ利用料金は無料だったりするので基本的にはParameterStoreで十分です。

顧客からの要望や社内のルールで自動ローテーションが必要ならSecretsManagerを使うと良いと思います。


以上で今回の記事は終わりです。
もっと詳しく勉強したい方は、「要点整理から攻略する『AWS認定 セキュリティ-専門知識』」という本を買って読んでみてください。

ありがとうございました。

Discussion