すぐに始めて、継続できる AWS のセキュリティ対策
Author : 平賀 敬博
こんにちは、セキュリティソリューションアーキテクトの平賀です。
AWS 環境のセキュリティ対策について、どのようにご検討されていますか。
セキュリティが大事なことはわかっていても、どこから手を付けたらいいのかわからない、また、一度は導入してみたものの、次はどこをどうやって改善すればよいのかわからない、とお悩みの方もおられるかと思います。
本記事では、AWS のセキュリティ対策について、予防的統制と発見的統制の考え方のもと、いくつかの導入例を紹介します。さらに、セキュリティを継続的に改善するための方法を紹介します。
このシリーズ記事のその他の記事はこちら
- 選択
- ビルダーのビルダーによるビルダーのためのセキュリティ »
- セキュリティを何から始めれば良いか分からない開発者の方へ »
- DevSecOps パイプラインを構築してみよう ! »
- Amazon Inspector と AWS Systems Manager を用いて脆弱性の修復パイプラインを構築しよう
- マルチテナント SaaS アプリケーションの認証を Amazon Cognito で実現してみよう !
- すぐに始めて、継続できる AWS のセキュリティ対策
AWS のセキュリティ
本記事では、セキュリティ対策を「予防的統制」と「発見的統制」に分類します。
「予防的統制」とはセキュリティインシデントの原因となる問題を取り除く、もしくは、軽減させるための対策です。例えば、権限分離によってユーザーが利用できる機能を制限する、というような統制を指します。
一方の「発見的統制」とは、セキュリティに関わるイベントが発生した際に、問題の早期検知と記録を行い、進行中のインシデントに対して関係者にアラートをあげるような統制を指します。例えば、不審な通信や通常とは異なるユーザーの異常な振る舞いがないかを分析し、アラートメールを送る、というようなものです。
次のパートからは、AWS サービスを用いて、予防的統制、発見的統制を導入する具体的な事例を紹介していきます。
本記事はいくつかのサービスのピックアップにとどまりますが、AWS ではセキュリティ、アイデンティティ、コンプライアンスに関するサービスを 6 つのカテゴリに分け、それぞれのベストプラクティスを公開しております。お客様のセキュリティ要件の実現にぜひお役立てください。
予防的統制 : AWS Identity and Access Management (IAM)
予防的統制の例として、AWS Identity and Access Management (IAM) を取り上げます。IAM は AWS の 200 以上に渡るサービスに関わるサービスです。IAM のベストプラクティスは こちら にまとめられています。
本記事では、ベストプラクティスの一つである “AWS にアクセスするには、ワークロードが IAM ロールを使用して一時的な資格情報を使用する必要があります” を例にとります。
ここでいうワークロードとは、AWS のサービスへリクエストを行うアプリケーションや運用ツールなど、システムにおいてビジネス価値を提供するために利用されているリソースやコード全般を指します。
IAM ロールとは
具体的な実装を見る前に、簡単に IAM ロールについてご紹介します。
IAM ロールは、ユーザーやアプリケーションが AWS でアクションを実行できるように、特定のアクセス許可を作成し割り当てるエンティティです。プリンシパルが IAM ロールを引き受けると、それらの IAM ロールに付与されたアクセス許可のみが付与されます。
こちらの図で示したような帽子のイメージで考えると、IAM ロールを理解しやすいかもしれません。
帽子を被せる相手はアプリケーションの場合もあれば、ユーザーの場合もあります。帽子を被った後は、そのロールに与えられたアクセス許可を利用することができるのです。
クリックすると拡大します
ローテーションする必要のない一時的な認証情報を提供するため、IAM ロールの使用はAWSセキュリティのベストプラクティスになっています。
たとえば、自分の AWS アカウントのユーザーに通常時はアクセス権限がないリソースへのアクセス権を一時的に付与する、ということもできますし、アプリケーションに AWS リソースの使用を許可したいがアプリ内に AWS のキーを埋め込みたくない、といったユースケースにも対応可能です。
ストレージにアクセスするための仮想マシン向け IAM ロールの作成
本記事では、Amazon Elastic Compute Cloud (EC2) をプリンシパル、Amazon Simple Storage Service (S3) をアクセスの許可を与える AWS サービスとして例に挙げ、EC2 から S3 にアクセスする際の IAM ロールを設定します。
大まかな流れはこちらの図の通りです。
ここで、EC2 インスタンスプロファイルは IAM ロールを EC2 にアタッチするためのコンテナの役割を果たします。IAM ロールを作成するときに内部で自動的に作成されていますので、ご安心ください。
クリックすると拡大します
IAM ロールは IAM コンソールより設定が可能です。上の図に示したように、ロールにアタッチするアクセス許可である IAM ポリシーの準備が必要となります。“AmazonS3ReadOnlyAccess”、“AmazonS3FullAccess” といった AWS マネージドのポリシーも用意されています。
この設定によって、ワークロードである EC2 は、IAM ロールを利用した一時的な認証情報を利用して、S3 へアクセスできるようになりました。
IAM セキュリティのベストプラクティスにあるように、アクセスキーを直接埋め込んだ場合には、定期的なローテーションが必要となり運用が大変です。IAM ロールを利用いただくことで、セキュアで便利な運用を実現できます。
発見的統制 : Amazon GuardDuty 検出結果のメール通知
発見的統制の代表的なサービスとして、Amazon GuardDuty、AWS CloudTrail や AWS Config によるロギングが挙げられます。これらの設定については、各ユーザーガイドをご覧ください。
本記事では、より発見的統制を加速するための仕組みとして、Amazon GuardDuty で、重要度が [Medium] (中)〜[High] (高) の検出結果を検知した場合にメール通知する仕組みを構築します。
検知したイベントのメール通知
Amazon GuardDuty に加えて、こちらの図に示すように、メッセージ配信を提供するマネージドサービスである Amazon Simple Notification Service (SNS) と、イベントの受信、フィルター、配信などを可能とするイベントバスである Amazon EventBridge を利用します。
まずは、SNS を利用してメールを送付するため、トピックとサブスクリプションを作成します。この際、SNS は Amazon GuardDuty と同じリージョンに作成する必要があることにご注意ください。既存のトピックがあれば再利用しても構いません。
次に、Amazon EventBridge にて、イベントブリッジルールを新規作成します。イベントソースは 「AWS イベント」または「Amazon EventBridge パートナーイベント」を選択します。
続けて、イベントパターンとして、「AWS のサービス」を、 AWS サービスについては「GuardDuty」を、イベントタイプ では「GuardDuty Finding」を選択します。イベントパターンのコード例を下記に示しておきます。
{
"source": ["aws.guardduty"],
"detail-type": ["GuardDuty Finding"],
"detail": {
"severity": [4, 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6, 6.0, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 6.9, 7, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9, 8, 8.0, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7, 8.8, 8.9]
}
}
最後に、ターゲットタイプとして、「AWS のサービス」の中から「SNS トピック」を選択し、作成したトピックを選んだうえで、ルールの作成を完了します。
以上で、Amazon GuardDuty で重要度の高い検出結果を検知した際に自動でメール送付する仕組みを構築できました。
継続的改善 : AWS Trusted Advisor
ここまで、予防的統制として IAM ロール、発見的統制として Amazon GuardDuty のメール通知自動化を実装しました。
最後に、こうしたセキュリティ対策を継続的に改善するためのサービスを見ていきましょう。AWS では、セキュリティの継続的改善を支援し、自動化するサービスを提供しています。
継続的な改善に利用できるサービスの例として、AWS Trusted Advisor が上げられます。AWS Trusted Advisor を利用することで、お客様の AWS 環境が AWS のベストプラクティスに沿っているか、コスト、パフォーマンス、セキュリティ、耐障害性、サービスの制限の 5 つの観点から確認することができます。
こちらの図は、セキュリティについてのチェック結果の例です。
AWS Well-Architected ツールの回答によって発見されたリスクが ”アクションが推奨される” 指摘事項として、AWS Config が有効化されていない点が ”調査が推奨される” 指摘事項として、挙がっています。
クリックすると拡大します
AWS Well-Architected ツールは、質問票を通じて、アーキテクチャのベストプラクティス対応状況を測定するためのサービスです。次に取り組むべき領域を定めるための自己問診票として、組織として定めているセキュリティポリシーへの準拠状況を確認するためのツールとして、など様々な用途でお使いいただけます。
このように、AWS Trusted Advisor で推奨される事項に対応していくことで、お客様環境に不足しているセキュリティ対策を、継続的に見直し、改善していくことが可能になっています。
まとめ
本記事では、AWSにおいて予防的統制と発見的統制を導入する方法、さらにそうしたセキュリティ対策を継続的に改善していくための方法について、いくつかの AWS サービスを例に紹介しました。
セキュリティは難しい、あるいは、終わりのないセキュリティ対策に、面倒さを感じてしまっているという方も少なくないかと思います。しかし、AWS サービスを利用することで、セキュリティの導入と継続的改善を、より簡単に仕組み化することができます。
AWS サービスをご利用いただくことで、セキュリティが、皆様にとって少しでも楽なもの、楽しいものになれば大変嬉しく思います。
このシリーズ記事のその他の記事はこちら
- 選択
- ビルダーのビルダーによるビルダーのためのセキュリティ »
- セキュリティを何から始めれば良いか分からない開発者の方へ »
- DevSecOps パイプラインを構築してみよう ! »
- Amazon Inspector と AWS Systems Manager を用いて脆弱性の修復パイプラインを構築しよう
- マルチテナント SaaS アプリケーションの認証を Amazon Cognito で実現してみよう !
- すぐに始めて、継続できる AWS のセキュリティ対策
筆者プロフィール
平賀 敬博
アマゾン ウェブ サービス ジャパン合同会社
セキュリティソリューションアーキテクト
セキュリティ系サービスの支援を担当するソリューションアーキテクト。セキュリティの敷居を下げることが仕事上での目標。
趣味は観葉植物を育てること。最近は、ブルーベリーなどの果樹を増やすか悩み中。
AWS を無料でお試しいただけます