本記事の立ち位置:7割合格のセキュアなAWSアカウント環境が作れる!
みなさん、AWSアカウントのセキュリティ設定は捗っていますか?
イマイチ何をして良いか分からないという方も多いのではないかと思います。
運用保守エンジニア8年生が「おすすめのAWSセキュリティ設定」を9つご紹介します!
以下流れで説明するので気になるところをつまんで見て頂ければ幸いです。
- 前半:設定AWSサービス&最近のクラウドセキュリティ脅威を紹介
- 後半:ハンズオン
【対象読者】
・AWS初心者の方
・AWS環境の運用保守に関するヒントが欲しい方
・AWSセキュリティサービスをおさらいしたい方
【説明しないこと】
・各AWSサービスの詳細
・アカウント、IAMユーザなどの各関連の事前作成
・セキュリティアラートの通知設定
サービス詳細も知りたい!という方は 「AWS Builders Online Series 今⽇からスタート! AWS セキュリティ 初めの⼀歩」 のPDF資料をぜひご参照あれ。
AWS運用をされている皆さんの一助になってほしいなと、長文ですがお付き合いください
[0] はじめに
- 本ページは2024/12月時点の各種ドキュメントを参照して作成しています
- 最新情報等については各種公式ドキュメントの確認をオススメします
設定するAWSサービス紹介
おすすめする設定項目は下図掲載の項目になります。
AWS Security Hubの「AWS 基本的なセキュリティのベストプラクティス」をベースにおすすめする設定項目や有効化するAWSサービスをピックアップしました。
- ルート/ IAM ユーザ(MFA設定)
- AWS IAM Access Analyzer
- AWS Config
- AWS CloudTrail
- AWS Trusted Advisor
- Amazon GuardDuty
- AWS Security Hub
- Amazon EBS(デフォルト暗号化)
- Amazon S3(パブリックアクセスブロック)
なぜこの9項目を選んだか?
セキュリティといえばIPA。ということで、IPAのWebサイトから「クラウドセキュリティ11大脅威」を見つけました。
- 1位:不十分なアイデンティティ、クレデンシャルおよびアクセスと鍵の管理、ならびに特権アカウント
- 3位:設定ミスと不適切な変更管理
出展:CSA - Top Threats to Cloud Computing - Pandemic Eleven
クラウドセキュリティ脅威は「アカウントや設定変更の管理」にあり。
IAM管理と設定変更によるミスを検知、もしくは設定出来ないように出来れば良いのでは?と考え、それらの対策が可能な項目をアカウント開設時に実施してしまおう!というスタンスです。これでみんなはっぴーです。
結論:AWS Security Hubを有効化 / 運用しよう
「AWS 基本的なセキュリティのベストプラクティスの標準」はAWSのベストプラクティスに沿っているか定期的にスキャンをして設定状況のチェックができます。
つまり、Security Hubを有効化し、検知された項目をひたすら修正することでセキュリティ対策はほぼ完了です。オメデトウゴザイマス!
しかし
AWS知識が薄いとなかなかに運用のハードルが高い。
(項目も多く取捨選択の判断が難しい...😿)
AWS知識が無いから何を設定すれば良いか分からん!
そのような悩みを抱えた皆さん向けに重要となる項目を紹介するのでぜひご覧あれ👀
- クラウドセキュリティを担保出来るサービスを知れる
- ある程度セキュアな状態でAWS環境を使い始められる
それではハンズオンスタートです!一緒にがんばりましょう💪💪
[1] ハンズオン開始
本記事では「東京リージョン」に限定して実施します。
リージョンを確認するサービスは、全リージョン有効化が推奨されています。
運用するAWSアカウント環境の必要要件に応じて他リージョンも同手順で実施ください。
1. ルート / IAM ユーザ MFA設定
対応することで下記のSecurity Hubチェック項目がクリアされます。
- 【Critical】[IAM.9] MFA should be enabled for the root user
- 【Medium】[IAM.19] MFA should be enabled for all IAM users
設定方法は公式ドキュメントを参照。
1-1. IAMユーザ MFA設定
IAMユーザでログインします。
IAMユーザを作成していない場合はコンソールサインイン可能なIAMユーザを別途作成します。
「セキュリティに関するレコメンデーション」はAWSのベストプラクティスに沿った推奨設定が表示されます。
運用時のトラブル軽減のためにも警告が出ている際は都度内容を確認すると幸せになれるかもしれません。
③MFAデバイスを選択 > 下記設定 > 画面下部[次へ]をクリック
- デバイス名:[IAMユーザ名]
- デバイスオプション:パスキーまたはセキュリティキー
今回のハンズオンでは2024/6月に新たに設定可能となった「パスキー」をMFAに利用します。
各端末によって挙動が変わる箇所になります。
各自で利用しているパスワード管理アプリを利用、スマホを利用、Chromeプロフィールを利用 etc...。状況に応じて設定をお試しください。
⑤多要素認証(MFA)に「パスキーとセキュリティキー」が保存されて登録完了
⑥別ブラウザ or シークレットウィンドウでルートアカウントにサインイン可能か確認する
サインアウトしてしまうと登録失敗時にサインイン出来なくなる可能性があります。
「別ブラウザ」もしくは「シークレットウィンドウ」でパスキーを使用したログインが出来ることを確認しましょう!
万が一失敗している際はルートアカウント、もしくは他の権限を持っているIAMユーザでMFA設定を削除する必要があります。
1-2. ルートアカウント MFA設定
ルートアカウントでログインします。
②rootユーザーのMFAを追加する > [MFA を追加]をクリック
③MFAデバイスを選択 > 下記設定 > 画面下部[次へ]をクリック
(手順④のMFA登録は[1-1]と同じのため省略)
⑤多要素認証(MFA)に「パスキーとセキュリティキー」が保存されて登録完了
⑥別ブラウザ or シークレットウィンドウでルートアカウントにサインイン可能か確認する
サインアウトしてしまうと登録失敗時にサインイン出来なくなる可能性があります。
「別ブラウザ」もしくは「シークレットウィンドウ」でパスキーを使用したログインが出来ることを確認しましょう!
2. AWS Config 有効化
対応することで下記のSecurity Hubチェック項目がクリアされます。
- 【Critical】[Config.1] AWS Config should be enabled and use the service-linked role for resource recording
言語によって緊急度の記述に差異がありました。
- 日本語・・・重要度: 中
- 英語・・・・Severity: Critical
今回は英語ドキュメントを基準に掲載します。
2-1. AWS Config を有効化する
①マネコン上部の検索バーで「Config」を検索してクリック
②マネコン画面の右上部でリージョンが「東京」であることを確認する
⑤AWS Config用のIAMロール、S3バケットが作成される
- 左ペイン:リソースより、変更履歴を確認することが可能
- 自動復旧などのより高度な管理を行う場合は「ルール」を設定する
【設定される概要説明】
- IAM以外の設定変更が記録される
- AWS環境内に設定変更がある度に記録がされる(コスト増 影響あり)
- コスト増を気にする場合は、「日次記録」へ変更するとコストが抑えられる
- 「設定」> レコーダー:[編集]から、記録頻度を[日次記録]に変更
3. AWS IAM Access Analyzer 外部アクセス有効化
対応することで下記のSecurity Hubチェック項目がクリアされます。
3-1. AWS IAM Access Analyzer 外部アクセス を有効化する
②左ペイン:アクセスアナライザーをクリック > 画面右上部でリージョンが「東京」であることを確認
④信頼ゾーン:組織のアカウントを選択(他はデフォルト)> [アナライザーを作成]をクリック
メンバーアカウントの場合「信頼ゾーン」は基本的に選択不可となります。
選択肢が表示されていない場合は手順をスキップしてください。
AWS Organizations利用の管理アカウントは「現在の組織」が推奨です。
管理アカウント→メンバーアカウントへの許可設定は検知されない挙動になり、過検知が減らせます。
4. AWS CloudTrail 証跡有効化
対応することで下記のSecurity Hubチェック項目がクリアされます。
4-1. AWS CloudTrail 証跡を作成する
①マネコン上部の検索バーで「CloudTrail」を検索してクリック
②画面右上部でリージョンが「東京」であることを確認
③[証跡の作成]をクリック
④証跡名、ログ保存先のS3バケットを指定 > [証跡の作成]をクリック
※今回はデフォルト設定のまま作成
【管理イベントのコストについて】
証跡が1つだけであれば管理イベントの保存は無料です。
進行中の管理イベントのコピーを 1 つ無料で Amazon Simple Storage Service (S3) バケットに配信できます。
https://aws.amazon.com/jp/cloudtrail/pricing/
しかし、他に証跡が作成されている場合は、2つ目の「管理イベント」の保存は課金対象 になります。複数証跡がある際は管理イベントでコストが肥大化する可能性もあるため注意が必要です。
クイック証跡作成では「SSE-KMS」のみ有効化されません。
あとから変更することも可能なため、より強固な設定とする場合はSSE-KMSを有効化しましょう。
5. Amazon GuardDuty 有効化
対応することで下記のSecurity Hubチェック項目がクリアされます。
5-1. Amazon GuardDuty を有効化する
①マネコン上部の検索バーで「GuardDuty」を検索してクリック
②画面右上部でリージョンが「東京」であることを確認
③[Amazon GuardDuty - すべての機能]をチェック > [今すぐ始める]をクリック
6. Amazon EBS デフォルト暗号化設定
対応することで下記のSecurity Hubチェック項目がクリアされます。
- 【Medium】[EC2.3] Attached Amazon EBS volumes should be encrypted at-rest
- 【Medium】[EC2.7] EBS default encryption should be enabled
6-1. Amazon EBS デフォルト暗号化を設定する
②画面右上部でリージョンが「東京」であることを確認
③[データ保護とセキュリティ]をクリック
⑤常に新しい EBS ボリュームを暗号化:有効化にチェック > [EBS 暗号化を更新する]をクリック
暗号化キーはAWSマネージドキーを利用します。
セキュリティ要件に応じて各自で作成したKMSのカスタマーマネージドキー(CMK)をデフォルトに設定することも可能です。
7. AWS Trusted Advisor 活用
AWS Trusted Advisorはデフォルトで有効化されています。
「コスト最適化」「パフォーマンス」「セキュリティ」「耐障害性」「サービス制限」「運用上の優秀性」を推奨事項に沿っているか定期チェックしてくれる神サービスです。(しかも無料)
ただし、サポートプランによって機能制限があり、チェック可能な範囲が変わってきます。
- デベロッパー:サービスクォータ / ベーシックなセキュリティチェック
- ビジネスプラン:チェックのフルセット
- エンタープライズ:チェックのフルセット(優先順位&推奨事項付き)
- パートナー経由でアカウント契約されているケース etc...
後述するAWS Security Hubを活用する前に、まずは予行練習でAWS Trusted Advisorのセキュリティ項目をチェックする運用も検討の余地ありです!
【無料でチェック可能なセキュリティ項目】
- Amazon EBS パブリックスナップショット
- Amazon RDS パブリックスナップショット
- Amazon S3 バケット許可
- セキュリティグループ - 制限されていない特定のポート
- ルートアカウントの MFA
全チェック項目は下記リンク参照。
7-1. AWS Trusted Advisor 活用
①マネコン上部の検索バーで「Trusted Advisor」を検索してクリック
②非推奨設定が存在する場合、推奨されるアクション等にカウントされる
7-2. AWS Trusted Advisor 通知設定
②代替連絡先「請求」「オペレーション」「セキュリティ」の連絡先にそれぞれ通知先を追加する
③言語:日本語を設定 > [詳細設定を保存]をクリック > 設定が完了
8. AWS Security Hub 有効化
サービス利用時は、事前に「AWS Config」有効化する必要があります。
AWS環境のセキュリティ状態を可視化 / 管理するためのサービスです。
CSPM(クラウドセキュリティポスチャマネージメント) 相当の機能となり、セキュリティのベストプラクティスや業界標準(CISベンチマーク)に基づいたセキュリティ基準チェックを自動的かつ継続的にチェックして設定ミスを特定することに貢献するサービスです。
AWS Trusted Advisorを有効化してスコアを100%にすること。
これがAWS環境のセキュリティ強化の一番の近道です。
本記事のほぼ全てはこのサービスに詰まっています。
8-1. AWS Security Hub を有効化する
①マネコン上部の検索バーで「Security Hub」を検索してクリック
②画面右上部でリージョンが「東京」であることを確認
④セキュリティ基準:[AWS 基礎セキュリティのベストプラクティス v1.0.0 を有効にする] にチェック > [Security Hubの有効化]をクリック
セキュリティ基準でCISベンチマーク等の要件が無ければ「AWS 基礎セキュリティのベストプラクティス」を選択で良いです。
チェックしたいベンチマークに応じて設定を行います。
⑤「AWS 基礎セキュリティのベストプラクティス v1.0.0」が有効化される
9. Amazon S3 パブリックアクセスブロック設定有効化
対応することで下記のSecurity Hubチェック項目がクリアされます。
- 【Medium】[S3.1] S3 general purpose buckets should have block public access settings enabled
- 【Critical】[S3.2] S3 general purpose buckets should block public read access
- 【Critical】[S3.3] S3 general purpose buckets should block public write access
- 【High】[S3.8] S3 general purpose buckets should block public access
9-1. Amazon S3 パブリックアクセスブロック設定を有効化する
この設定はアカウント内の全S3バケットに適用されます。
既に運用中で影響が分からない場合は、影響範囲の確認から進めることをおすすめします。
無理に全体へ適用せず、各S3バケット個別でブロックアクセスを有効化もひとつの手となります。状況に応じてご検討ください。
②左ペイン:このアカウントのブロックパブリックアクセス設定 > [編集] をクリック
③[パブリックアクセスをすべて ブロック]にチェック > [変更の保存]をクリック
④AWSアカウント全体のS3バケットに対して、パブリックアクセスブロック設定有効化が完了
[2] お片付け(有料サービスだけを停止)
コストの掛からない設定は残したままとします。
各サービスの「設定」から無効化をそれぞれ設定していきます。
[2-1] AWS Config 無効化
AWS Config > 左ペイン:設定 > レコーダー:[記録を停止しますか?]をクリック
Amazon S3 のデータも削除する必要があります。
削除方法は後続の[2-5]を参照します。
[2-2] AWS CloudTrail 証跡削除
AWS CloudTrail > 左ペイン:証跡 > [作成した証跡]を選択 > [削除]をクリック
Amazon S3 のデータも削除する必要があります。
削除方法は後続の[2-5]を参照します。
KMSキーを有効化している場合は併せてKMSキーの削除も必要です。
削除方法は後続の[2-6]を参照します。
[2-3] Amazon GuardDuty 無効化
Amazon GuardDuty > 左ペイン:設定 > GuardDuty を無効にする:[無効にする]をクリック
[2-4] AWS Security Hub 無効化
AWS Security Hub > 左ペイン:一般 > AWS Security Hub の無効化 > [AWS Security Hub の無効化]をクリック
[2-5] S3バケット削除
AWS Config と AWS CloudTrail(証跡) のデータを削除します。
[2-5-1] AWS Config データ削除
①S3バケット > [config]で検索 > 表示されたS3バケットを選択
⑤[S3バケット名]を入力 > [バケットを削除]をクリック
[2-5-2] AWS CloudTrail 証跡データ削除
①S3バケット > [cloudtrail]で検索 > 表示されたS3バケットを選択
手順②~⑤は[2-5-1]と同じ手順のため省略
[2-6] KMS キー削除
AWS CloudTrail 証跡作成時に「クイック証跡作成」の場合は不要です。
証跡設定時に有効化している場合の作業となります。
本記事内では「handson-cloudtrail-management-event-key」のみ削除対象です。
誤って他のKMSキーを削除すると、データ復元が不可となる等の障害となるため慎重に削除をしてください。
①マネコン上部の検索バーで「Key Management Service」を検索してクリック
②左ペイン:カスタマー管理型のキー > [handson-cloudtrail-management-event-key]を選択
③[キーのアクション] > [キーの削除をスケジュール] をクリック
自信がない場合は「無効」を選択しましょう。
誤っていた場合も「有効」に変更してキーを再度利用することが出来ます。
④待機期間を設定 > [確認]でチェック > [削除をスケジュール] をクリック
[3] 最後に:AWSアカウントのセキュリティ対策の運用
基本的には「AWS Trusted Advisor」「AWS Security Hub」の指摘項目を処理する。
これが最強のセキュアアカウント作成方法という考えに共感しています。
実はこれらのサービスは「AWSアカウント開設時」が一番設定しやすいのです。
(運用始まってからの修正は調査、調整、説明の汗と涙が待っています)
設定ミスを未然に防ぐ
設定ミスを検知する
これらの対策には AWS Security Hub での管理は非常に有効です。
ぜひ気になるという方はまずは活用してみると幸せになれるかもしれません。
AWSサービス紹介資料
AWS Builders Online Series 今⽇からスタート! AWS セキュリティ 初めの⼀歩
AWS サービス別資料 > 最初にやるべき AWS セキュリティ設定 10 のこと