「AWSマネジメントコンソールにログインできる人はあなただけですか?」
ほとんどの企業が、この質問に対して”No”と答えるでしょう。
社長自らAWSコンソールにログインしてシステムを運用しているというのは一人会社をのぞくと少数ではないでしょうか。
複数人がAWSコンソールへログインして操作する場合、セキュリティ的に注意すべき観点は以下の2点です。
- 悪意のあるユーザーの不正操作
- 人為的な操作ミス
上記2つの対策として有効な方法は、IAMユーザーアカウントの権限を適切に設定することです。
権限を絞ることによって不要な操作を物理的にできなくしてしまえば、不正操作や操作ミスのリスクを下げることができます。
とはいえ、権限を絞り過ぎてしまうと肝心の作業に影響を与えてしまうといったことも考えられます。
このようなケースの場合は、多少のリスクを覚悟して権限を与えることになりますが、
あとで権限を与えたユーザーの操作履歴を見れるようにすることが必要と言えるでしょう。
また「操作履歴をとっている」ことを周知しておくことで悪意のあるユーザーに対して一定の牽制にもなります。
この”操作履歴を取得する”という機能を提供するのがCloudTrail(クラウドトレイル)というAWSサービスです。
今回は、CloudTrailについてご紹介したいと思います。
CloudTrailとは?
“CloudTrail”はクラウドトレイルと読みます。
CloudTrailとは、IAMユーザーやIAMロール、またはAWSサービスによって行われた以下の操作履歴を取得してくれるサービスです。
- AWSマネジメントコンソール
- AWS Command Line Interface
- AWS SDK
- AWS API
特に何も設定をしなくても、デフォルトですべての操作履歴が90日間保管されることになっています。
それ以上のログを保管したい、通知を利用したいといった場合はS3への保管、CloudWatch Logsとの連携、CloudWatchアラームを通してSNSによるEメール通知を行うといったことで実現することが可能です。
※下記”CloudTrailを使って特定の操作をEメール通知する方法(有料)”で、その設定方法をご紹介します。
また、AWSでは”CloudTrailパートナー”というサードパーティ製の製品やサービスを紹介しております。(詳細はこちら)
このような製品やサービスを利用することで、取得したログに対し、より複雑な分析や可視化を行うことが可能となります。
CloudTrailの料金
CloudTrail自体の利用料金は無料です。
CloudTrailコンソール画面からのイベント履歴参照やログデータのダウンロードを行うだけであれば利用料金はかかりません。
ただし、ログを90日以上保管するであるとか、特定のイベントに対して通知を行うといった場合は、他のAWSサービスを組み合わせる必要がありますので、その分の利用料金がかかります。
下記でご紹介している「特定のイベント操作をEメール通知する方法」は以下の料金が別途必要となりますのでご注意ください。
- 操作履歴を保管するためのS3保管料
- CloudWatch Logsの操作履歴保管料
- CloudWatch アラーム利用料
- SNS利用料
CloudTrailによって取得した履歴を確認する方法(無料)
まずは、基本的な操作履歴を確認する方法をご紹介します。
ここでご紹介する方法は”無料”でご利用いただけます。
(1)CloudTrailコンソールより、左メニューの[イベント履歴]をクリックします
(2)フィルターによってどのような操作履歴を抽出するかを決定します。
※読み取り専用=tureは、リソースの読み取りのみを行い、変更を行わないイベントを抽出します。
一方、falseとした場合、リソースの変更を伴うもの、例えばインスタンス起動や削除といったイベントを抽出します。
(3)時間範囲を設定することで、指定の時間範囲の操作履歴を抽出することができます。
(4)各イベント履歴の[▶︎]をクリックすることで詳細情報を確認することが可能です
(5)ダウンロードボタンをクリックすることで、”CSV”や”JSON”形式でダウンロードすることができます
このようにしてCloudTrailコンソール画面上で操作履歴を確認したり、ファイルに落として確認したりすることが可能です。
CloudTrailを使って特定の操作をEメール通知する方法(有料)
さぁ、それでは応用編です。
ここでご紹介する方法は”有料”となりますのでご注意ください。
CloudTrailを使って特定の操作が行われたらEメール通知される仕組みを設定してみたいと思いますが、
そもそもどのような操作を通知すべきかわからない、といった方が多いかと思います。
AWSでは推奨の通知項目を簡単に設定できるようにCloudFormationテンプレートにまとめられております。
◆CloudFormationテンプレートにまとめられている推奨の通知項目
- 開始や削除といったEC2インスタンスの再起動等の状態変更
- セキュリティグループの変更
- VPCの変更
- CloudTrailの変更
- 認証の失敗
- コンソールへのログイン失敗
- 4xlarge、または8xlargeサイズのEC2インスタンスの起動
- インターネットゲートウェイ等のネットワークゲートウェイに関する変更
- IAMポリシーの変更
- ネットワークACLの変更
今回は、こちらのテンプレートを利用した設定方法をご紹介したいと思います。
(1)CloudTrailコンソール画面の左メニューより[証跡情報]をクリックし、[証跡の作成]をクリックします
(2)”証跡名”に任意の名前を入力、”読み込み/書き込みイベント”の選択、証跡情報を格納するS3バケットを追加します。
※下記画像では、既存のS3バケットではなく、新規でS3バケットを作成して、作成したS3バケットに証跡を入れる設定としております。
※書き込み専用とすることで変更を伴わない操作ログを捨て、S3への保管料やCloudWatch Logsへの保管料を抑えることが可能です。
設定完了しましたら[作成]をクリックします
(3)ステータス欄が下記画像のように緑色の丸チェックになったら証跡の完成です。
完成した証跡の名前をクリックします
(4)表示された画面の下部に”CloudWatch Logs”欄があります。[設定]をクリックします
(5)”新規または既存のロググループ”という項目が表示されますので、そのまま[次へ]をクリックします
※ここでは特に何も指定せずに進みますが、ロググループ名を変更したい場合は、ロググループ名を指定して進みましょう
(6)CloudTrailからCloudWatch Logsへ送信するためには、CloudWatch Logsへ送信するためのIAMロールをCloudTrailへ付与する必要があります。
ここで[許可]をクリックすると、自動で新たにIAMロールを作成し、CloudTrailへ付与してくれるため[許可]をクリックして先へ進みます。
(7)これでCloudWatch Logsへのストリーミング設定が完了です。
ここからはCloudFormationテンプレートによる設定となります。
[CloudFormationテンプレートを使用し、セキュリティとネットワークに関するAPIアクティビティのCloudWatchアラームを作成]をクリックします。
(8)CloudFormationの画面に遷移します。[次へ]をクリックします
(9)通知先のEメールアドレスを入力して[次へ]をクリックします
※ここで入力したEメールアドレスが特定の操作がなされた際に通知される宛先となります。
(10)特に変更せず[次へ]をクリックします
(11)[作成]をクリックします
(12)登録したEメールアドレス宛へ”AWS Notifications”よりメールアドレスの確認メールが届きます。
メール本文に書かれている[Confirm subscription]をクリックしメールアドレス登録を行います。
(13)”Subscription confirmed!”と書かれた画面が表示されます
(14)CloudFormation画面にてスタックの状況が”CREATE_COMPLETE”となっていれば完成です
以上で完成です。
試しにセキュリティグループの変更を行ってみましょう。
セキュリティグループ変更後、数分の時間差がありますが以下のようなメールが届くはずです。
件名:”CloudTrailSecurityGroupChanges(セキュリティグループ変更)” in [発生したリージョン名]
いかがでしたでしょうか?
CloudTrailは、AWSのセキュリティサービスの中の超基本サービスです。
AWSシステムを複数人で運用する場合は、上記のような通知機能をうまく取り入れて、もしトラブルが発生したとしても即座に対応できるような仕組みを構築することが大切です。
以上、ここまでお読みいただきありがとうございました。
hidesanでした!