こんにちは。
「AWSのセキュリティサービス、たくさんあってよーわからんわ」ってなることありませんか?
先日AWS認定セキュリティの学習をしていた時に、簡単にまとまっているものがあると嬉しいなあと思ったので、ザクっとまとめました。これで概要を掴んだ上で深掘りしていただく、ような使い方をしていただけると嬉しいです。
■AWS Config
AWSアカウントが持つリソース、およびソフトウェアの設定状況などを履歴として管理、および変更を監視することができるサービス
AWS Configの設定を有効化するだけで、いつどのリソースが作成されて、どのように変更されたか、監視することができる。また、変更をトリガとしてSNS経由で任意の宛先に通知する機能を有する。
上記に加え、SystemsManagerとの統合によってEC2インスタンスのソフトウェアの状態を管理することもできる。
■AWS SystemsManager
Amazon EC2 インスタンス、オンプレミスサーバーと仮想マシンや他の AWS リソースを大規模に設定および管理する機能の集合体となるサービス
Run Command,セッションマネージャーによるSSHからの脱却、PatchMagagerによるパッチ適用状況の取得・管理と適用の計画・実行、パラメータストアによる共通的パラメータ(DB接続状況など)の管理、などを実現できる。
後述のAmazon Inspectorと組み合わせて脆弱性を検知し、PatchManagerのパッチ適用ポリシーを更新し、全体に対して反映する、といった運用フローなどが考えられる。
■AWS CloudTrail
AWSリソースへのManagementConsoleによる操作やAPIリクエストの証跡を保存・管理するサービス
管理イベント(EC2の作成、変更、削除など)とデータイベント(S3へのGetObject)の双方を記録することができる。
また、CloudTrailの設定によって、Amazon S3、Amazon CloudWatch Logs、Amazon Amazon CloudWatch Events に CloudTrail イベントを配信できる。
これにより、セキュリティオートメーションや管理の効率性を向上することができる。
不正な利用などを検知・対処するため、AWSアカウントの全てのリージョンで有効化することが推奨されている。
■AWS Key Management System
暗号化するための鍵を管理するサービス
KMSにはマスターキー・データキーという概念が存在する。
マスターキーはデータキーを暗号化するもの、データキーはデータそのものを暗号化するものである。
利用の流れとしては、
-
マスターキーの作成(CreateMasterKey)
マスターキーがAWS側に作成される -
データキーの生成(GenerateDataKey)
生のデータキーと暗号化されたデータキーがユーザに返却される -
データの暗号化@ローカル
2で取得した生のデータキーを使ってデータを暗号化する、 暗号化後、生のデータキーは速やかに廃棄する
暗号化されたデータ・暗号化されたデータキーの双方を大事に保管する -
データキーの復号
暗号化されたデータキーとマスターキーのIDを利用して、AWSにデータキーの復号化を要請する -
データの復号@ローカル
4で取得したデータキーを使って暗号化されたデータを復号する
ポイントは、"生"のデータキーは必要なタイミングのみ保持する仕組みという点である。もし暗号化データや暗号化データキーが流出しても、データそのものを見ることができない仕組みになっている。
また、マスターキーの運用については、定期的にローテーションできたり、ユーザ所有の鍵をインポートできたりする。ユーザ所有の鍵をインポートする際は、KMSのエイリアスを利用することでアプリケーションへの影響を低減することができる。
■Amazon Inspector
Amazon EC2内の脆弱性を検出して通知するサービス
InspectorエージェントをEC2にインストールすることで、インターネットへの公開状況, CVEへの対応状況, CISベンチマークによる評価, 不適切なLISTENポート, Rootプロセスの状況など、EC2のホストとしてのセキュリティ対策状態を評価できる。
0.15~0.30USD程度のコストで1度診断することができるため、ASG用のAMI作成フローに組み込むなどの運用が良さそう。
なお、L7レイヤでの脆弱性を検知/遮断するものではないので、そういった場合はAWS WAFやその他の3rd Partyソリューションを組み合わせて利用する必要がある。
■Amazon GuardDuty
VPCフローログおよびAWS CloudTrailイベントログから脅威を検出して通知するるサービス
ManagementConsoleもしくはCLIから設定を有効化することで使用を開始できる。
例えば不正なAPIコールの発生やSSH用のポートがInternetに公開されていることの検知などの脆弱性を、複数のアカウントにわたって自動的に監視することができる。
GuardDutyが検知した脆弱性は5分に1度CloudwatchEventに送信されるため、特定のメールアドレスに通知したり、Lambdaで実装した独自機能で処理することもできる。(攻撃者のIPアドレスをAWS WAFのブラックリストに追加するなど)
■AWS Organizations
複数のAWSアカウントを横断的に管理するためのサービス
サービスコントロールポリシー(SCP)と呼ばれる機能で、ユーザが所属するグループを作成し、そのグループが操作可能なサービスを制限することができる。
利用の流れとしては、
- OUと呼ばれる組織ごとの単位を作成
- IAMユーザをOUに参画
- OUが操作可能なサービス・アクションを指定
となる。
例えば、ルート以外のOUにおいてCloudTrail,AWS Organizations,AWS Configの操作を禁じる、などのポリシーが想定される。
ルートに適用されるSCPは、その権限を子となるOUにカスケードされる。子OUは、親ルートから下位のアクセス権限と、OUにアタッチされているSCPの数学的な共通部分(AND)を取得し、その結果が子OUに適用されるポリシーとなる。
サービスコントロールポリシーの利用によって、組織のコンプライアンスに準ずるセキュリティルールを効率的に管理することができる。
■Amazon Macie
機密データを検出、分類、保護するための機械学習によるセキュリティサービス
S3に保持されているデータに、個人情報や知的財産などの機密データが含まれないか検出・レポートできる。具体的には、FIPS 199 などの業界標準に基づいて"フルネーム"、"郵送先住所"、"E メールアドレス"、"クレジットカード番号"などが存在することを検出することができる。Amazon Macieでは、Macie アラートに変更が行われた際、CloudWatch イベント に基づいて通知が送信される。
Amazon Macieの利用により、セキュリティコンプライアンスへの積極的な対応と、データセキュリティに対する予防的統制を実現できる。