AWS を利用するなら設定しておきたいセキュリティ系サービス
AWS を利用するなら設定しておきたいセキュリティ系サービス:
セキュリティグループや VPC ネットワークの運用など基本的なセキュリティ設定についてはふれません。AWS ならではのサービスを利用したセキュリティ設定について簡単に紹介します。
CloudTrail は AWS の各種操作を記録してくれるサービスです。何か問題のありそうな操作を検知したり、問題があった時にログを遡って検証するのに役立ちます。簡単な設定は数クリックで完了するので、本番運用するまでに設定しておきましょう。
CloudTrail はデフォルトでは90日間のデータを保持してくれます(2018/12/09時点)。このままでは過去のデータが消えてしまうので、証跡を作成して Athena にログを永続化しましょう。検索も柔軟にできるのでオススメです。
ただし Athena のパーティションを事前に設定しておくようにしておきましょう。CloudTrail のログは膨大になるので簡単に利用料金が高くなります。HIVE 形式で自動でパーティションが切られると楽なんですが…。
というわけで、CloudTrail から簡単に Athena テーブルを作成できますがパーティションを設定したいので手動で作成をします。CREATE TABLE は作ってくれるのでそれをベースに作成します。
下記のようなパーティションクエリを追加します。
また、Lambda を利用して
CloudTrail はデフォルトでは S3 のオブジェクトに対してアクセスログを取ってくれません。有料にはなりますがオプションを事前に有効にしておく必要があります。後から有効にしても設定前のログに関しては取得できないので注意してください。
「証跡情報」の作成を行う際に「データイベント」に「S3」と「Lambda」の設定欄があります。以前は個別に S3 バケット毎に設定が必要だったようですが、今は全てのバケットを対象にログを記録してくれる設定が可能です。
「アカウントのすべての S3 バケットの選択」にチェックを入れれば、それ以降はオブジェクトへのアクセスを記録してくれます。
このような SQL でアクションを取得できます。
GuardDuty は悪意のある操作や不正な動作を継続的にモニタリングする脅威検出サービスです。コストもそこまで高額ではないので有効にしておくことで怪しい挙動があった際に通知してくれます。
実際に有効にしてしばらく放置してからみてみると世界中からポートスキャンを仕掛けられているのが分かります。
ただし、GuardDuty が検出した脅威をメールや Slack などに通知する機能はありません。 CloudWatch Events と Lambda を使って配信設定をしましょう。Slack への通知方法は下記を参考にしてみてください。
Trusted Advisor というサービスを利用するとセキュリティ上、問題がありそうなものを教えてくれます。例えば S3 で公開設定されているバケットやポリシー設定がされていないバケットをを一覧表示してくれたりします。
他にも下記のようなチェック項目があります。
AWS Config は AWS リソースの設定を監視し変更履歴を取ってくれます。また、特定のルールを追加することで条件に一致しないリソースを通知してくれます。コストも低いので有効にすることをお勧めします。
例えば下記のように EC2 セキュリティーグループの設定変更をタイムラインで確認することができます。
実際に変更された内容も確認できます。
AWS を不正利用されるよくあるケースはマイニングなどの高額 EC2 インスタンスを利用されることです。また意図しない操作によって誤って起動してしまった場合にも早く気がつけるように CloudWatch で利用料金の監視をしましょう。
「請求ダッシュボード」→「設定」から「請求アラートを受け取る」にチェックを入れるた後に CloudWatch から「アラームの作成」→「Billing」→「概算合計請求額」のメトリクスを作成すれば監視できます。
細かい設定方法は公式ドキュメントを参考にしてみてください。
また、請求データを Slack や Prometheus で可視化する方法はこちらを参考にて見てください。
サービスというわけではないですが、S3 の権限設定についての基本方針のメモです。
S3 に外部に公開してはまずいオブジェクトをうっかり公開設定で置いてしまったり、適切な権限設定がされていないと誰でも閲覧・編集が可能になってしまいます。まずは格納するオブジェクトに応じてバケットを分割し、バケットポリシーで全体の設定をするようにするといいでしょう。
バケットポリシーの作成には AWS Policy Generator を利用すると便利です。基本は全部拒否で、必要に応じて許可していくスタイルがいいと思います。
例えば以下のバケットポリシーは誰もオブジェクトを閲覧することはできない設定です。
前提
セキュリティグループや VPC ネットワークの運用など基本的なセキュリティ設定についてはふれません。AWS ならではのサービスを利用したセキュリティ設定について簡単に紹介します。
CloudTrail
CloudTrail は AWS の各種操作を記録してくれるサービスです。何か問題のありそうな操作を検知したり、問題があった時にログを遡って検証するのに役立ちます。簡単な設定は数クリックで完了するので、本番運用するまでに設定しておきましょう。
ログを Athena で永続化する
CloudTrail はデフォルトでは90日間のデータを保持してくれます(2018/12/09時点)。このままでは過去のデータが消えてしまうので、証跡を作成して Athena にログを永続化しましょう。検索も柔軟にできるのでオススメです。ただし Athena のパーティションを事前に設定しておくようにしておきましょう。CloudTrail のログは膨大になるので簡単に利用料金が高くなります。HIVE 形式で自動でパーティションが切られると楽なんですが…。
というわけで、CloudTrail から簡単に Athena テーブルを作成できますがパーティションを設定したいので手動で作成をします。CREATE TABLE は作ってくれるのでそれをベースに作成します。
下記のようなパーティションクエリを追加します。
PARTITIONED BY (region string, year string, month string, day string)
ALTER TABLE ADD PARTITION
を実行する必要があります。具体的な設定方法はこちらを参考にしてみてください。
S3 のアクセスログを記録する
CloudTrail はデフォルトでは S3 のオブジェクトに対してアクセスログを取ってくれません。有料にはなりますがオプションを事前に有効にしておく必要があります。後から有効にしても設定前のログに関しては取得できないので注意してください。「証跡情報」の作成を行う際に「データイベント」に「S3」と「Lambda」の設定欄があります。以前は個別に S3 バケット毎に設定が必要だったようですが、今は全てのバケットを対象にログを記録してくれる設定が可能です。
「アカウントのすべての S3 バケットの選択」にチェックを入れれば、それ以降はオブジェクトへのアクセスを記録してくれます。
SELECT * FROM cloudtrail_logs WHERE eventname='GetObject' AND useridentity.username='example'
eventname
については公式ドキュメントを参照してください。
GuardDuty
GuardDuty は悪意のある操作や不正な動作を継続的にモニタリングする脅威検出サービスです。コストもそこまで高額ではないので有効にしておくことで怪しい挙動があった際に通知してくれます。実際に有効にしてしばらく放置してからみてみると世界中からポートスキャンを仕掛けられているのが分かります。
ただし、GuardDuty が検出した脅威をメールや Slack などに通知する機能はありません。 CloudWatch Events と Lambda を使って配信設定をしましょう。Slack への通知方法は下記を参考にしてみてください。
Trusted Advisor
Trusted Advisor というサービスを利用するとセキュリティ上、問題がありそうなものを教えてくれます。例えば S3 で公開設定されているバケットやポリシー設定がされていないバケットをを一覧表示してくれたりします。他にも下記のようなチェック項目があります。
- セキュリティグループ
- ルートアカウント MFA
- IAM の利用状況
- EBS / RDS のパブリックスナップショット
- そのほかにも細かいものがいくつか
AWS Config で設定変更の履歴
AWS Config は AWS リソースの設定を監視し変更履歴を取ってくれます。また、特定のルールを追加することで条件に一致しないリソースを通知してくれます。コストも低いので有効にすることをお勧めします。例えば下記のように EC2 セキュリティーグループの設定変更をタイムラインで確認することができます。
実際に変更された内容も確認できます。
CloudWatch で請求額の監視
AWS を不正利用されるよくあるケースはマイニングなどの高額 EC2 インスタンスを利用されることです。また意図しない操作によって誤って起動してしまった場合にも早く気がつけるように CloudWatch で利用料金の監視をしましょう。「請求ダッシュボード」→「設定」から「請求アラートを受け取る」にチェックを入れるた後に CloudWatch から「アラームの作成」→「Billing」→「概算合計請求額」のメトリクスを作成すれば監視できます。
細かい設定方法は公式ドキュメントを参考にしてみてください。
また、請求データを Slack や Prometheus で可視化する方法はこちらを参考にて見てください。
S3 権限設定
サービスというわけではないですが、S3 の権限設定についての基本方針のメモです。S3 に外部に公開してはまずいオブジェクトをうっかり公開設定で置いてしまったり、適切な権限設定がされていないと誰でも閲覧・編集が可能になってしまいます。まずは格納するオブジェクトに応じてバケットを分割し、バケットポリシーで全体の設定をするようにするといいでしょう。
バケットポリシーの作成には AWS Policy Generator を利用すると便利です。基本は全部拒否で、必要に応じて許可していくスタイルがいいと思います。
例えば以下のバケットポリシーは誰もオブジェクトを閲覧することはできない設定です。
{ "Id": "Policy1544367622367", "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1544367412764", "Action": [ "s3:GetObject" ], "Effect": "Deny", "Resource": "arn:aws:s3:::example-deny-object/*", "Principal": "*" } ] }
コメント
コメントを投稿