ちょっと話題の記事

「コンテナもサーバーレスも、AWSの各レイヤーの最新セキュリティ」というタイトルで登壇しました

AWSで動かす様々なビジネスの仕組みをどう守るか、各レイヤー毎解説します。
2021.07.03

こんにちは、臼田です。

みなさん、すべてのレイヤーでAWSのセキュリティ対策出来ていますか?(挨拶

今回は先日登壇したAWS コンサルティングパートナーがお伝えする最先端のクラウドセキュリティ対策 – S3のファイルは安全ですか?AWSの設定は安全ですか? –の内容について解説します。

資料

解説

コンセプト

AWSにおけるセキュリティ対策も、一般的なセキュリティ対策と同じように様々なレイヤーで実施していく必要があります。

最近トレンドマイクロさんのAWS上で利用できる製品群がたくさんリリースされ、昔からよく使われているDeep Security + EC2以外にも様々なレイヤーで活用できるようになりました。

このセミナーでは特に私がめっちゃ押したいS3のファイルをマルウェアスキャンするFile Storage Security(FSS)とAWS環境のセキュリティチェックをするConformityについて他のメンバーが解説してくれたので、私はAWS全体のセキュリティについて話すことにしました。

AWSのセキュリティ

そもそものセキュリティを考えるときに何を守らなければいけないのか?個人情報や顧客情報などもあれば、データ的にも存在しない信用などもあります。資産の洗い出しを行い、リスクベースで対応を考えていく必要があります。

AWSでは責任共有モデルがあり、利用者が責任を持つべき場所が明確です。

利用するツールとしてWell-Architectedフレームワークが活用できます。セキュリティの柱では様々な質問を活用して自身の環境のセキュリティを考察できます。

具体的にAWSのセキュリティを考えていくときに、1つの分け方として以下があります。

  • AWSレイヤーのセキュリティ
  • OS/アプリレイヤーのセキュリティ

各レイヤーでも様々な対策が必要です。すべてのレイヤーで対策していくため1人でセキュリティ対策をやっていくことはできません。つまり総力戦です。周りの人を巻き込んでやっていきましょう。

AWSレイヤーのセキュリティ

AWSレイヤーでも特に以下を守っていく必要があります。

  • IAM: 奪われたら終わり。でもよく奪われています。
  • S3: 大事なデータ。搾取されないように。正規のサイトのコンテンツを不正なものに差し替えられることも。
  • 各種リソース: EC2はとにかくマイニングのために消費されます。使われないように。

IAMやS3などの設定や運用は当たり前のように適切に使っていく必要があります。しかし気をつけるだけではどうにもなりません。AWSレイヤー全体のセキュリティ対策として以下のサービスが利用できます。

  • Amazon GuardDuty:
    • AWSの脅威検知サービス
    • EC2が乗っ取られてコインマイニングされていたり
    • IAMが乗っ取られて不正操作されていたり
  • AWS Security Hub:
    • AWSのセキュリティチェックサービス
    • 誤って公開したS3やゆるいセキュリティグループを検知するなど

クラウドは特に設定の管理が重要です。一歩間違えると様々なインシデントに繋がります。そのため最近はCSPM(Cloud Security Posture Management)と呼ばれるジャンルの製品がサードパーティのセキュリティベンダーからリリースされています。

トレンドマイクロからもTrend Micro Cloud One Conformityがリリースされています。2,000近い設定チェックがあり幅広いルールやコンプライアンス管理とアカウントをまたがった管理が簡単に可能です。

現状AWSのセキュリティチェックはSecurity Hubをはじめ様々な選択肢があります。私は以下の順で検討することをおすすめします。

  • まずはSecurity Hubを有効化して使う
    • 「AWS基礎セキュリティのベストプラクティス」がAWS環境の幅広いサービスのセキュリティチェックができる
  • 独自ルールを作りたい場合にはAWS Config
    • AWS Lambdaと組み合わせて利用
    • 難易度は高め
  • 楽していろんなポリシーを利用したい場合はCloud One Conformity
    • Configを作らなくても多彩なポリシーを利用できる

セキュリティチェックについては以下を参考にしてください。

OS/アプリレイヤーのセキュリティ

OS/アプリでは以下を守っていく必要があります。

  • コンピューティングリソース: マルウェア感染させたりマイニングしたり。IAM乗っ取られて勝手に立てられるとどうしようもないけど
  • データ: 抜かれたら大変。ユーザー情報とか
  • コンテンツ: 改ざんされるといろんな被害が。S3のjavascriptが改ざんされる事件も起きている

OS/アプリも幅が広いです。一個ずつ解説します。

ネットワークのセキュリティ

VPC内のアクセス制御をしっかりやっていく必要があります。NACLは扱いが難しいので基本はセキュリティグループで絞っていきます。SSHを0.0.0.0/0で開放するなんて論外です。IPを絞るのもそうですが、最近はAWS Systems ManagerのSession Managerがあります。SSHやRDPなどの管理アクセスポートをインターネットに開放するなんて愚の骨頂です。閉じましょう。

Session ManagerならEC2からの上りの通信でトンネルを張れます。詳細は以下をご確認ください。

OS/ミドルのセキュリティ

いろんな機能があります。

  • OS/ミドルの既知の脆弱性管理
  • アンチマルウェア
  • IDS/IPS
  • 変更監視
  • セキュリティログ監視

脆弱性管理、めっちゃ大事です。既知の脆弱性、いわゆるCVEは各機能のバージョンでどういう脆弱性があるか公表されています。適切に情報を収集し、パッチを当てるなどして対処していく必要があります。

AWSでは脆弱性診断にAmazon Inspector、パッチ適用にはSystems ManagerのPatch Managerが活用できます。ただ、運用が大変なので私は現状そんなにおすすめしてないです。安く始めるならいいですが、運用を楽にしたいならFuture Vulsをおすすめしています。以下を見ていただくと良さがわかるかと。

脆弱性管理以外にも様々な対策が必要ですが、あとはCloud One Workload Security、つまりDeep Securityでカバーできます。幅広くホスト上のセキュリティを確保できるので重宝します。最近ではマーケットプレイスから従量課金で利用することが簡単になりました。EC2のセキュリティ対策としてガンガン活用します。

高レイヤーのセキュリティ

アプリ周りはAWS的にはできることは多くありません。まずはアプリとしてセキュアなアーキテクチャやコーディングで実装することが前提です。その上でWAFなどで多層防御していくことも大事です。最近ではAWS WAFにBotコントロール機能が追加されました。簡単にBotの状況を可視化したりブロックしたり出来ます。

コンテナのセキュリティ

コンテナ環境は通常のEC2(サーバー)のセキュリティに加えてコンテナ管理のレイヤーも気にする必要があります。が、ECSやFargateを利用していればマネージドなのでだいぶ自分で頑張らないといけないところは減ります。

コンテナセキュリティはNIST SP800-190を読むといいです。

AWSの機能としてはECRリポジトリスキャンがあるのでこれを活用します。

Cloud One Container Securityという製品もありますが、こちらはECSでは利用できずEKSのみなので注意してください。

サーバレスのセキュリティ

サーバレスのサービスを利用しても守るものは基本変わりません。ただOS/ミドルはマネージドで気にする必要がないです。WAFを利用することでアプリケーションレベルのセキュリティを高めることができます。ただ、動いているコード上やデータベースへの問い合わせのところでセキュリティを高めることも可能です。AWS Lambdaに組み込んで各処理にフックしてチェックやブロックを行うことがCloud One Application Securityなら可能です。いわゆるRASP(Runtime Application Self Protection)と呼ばれるジャンルの製品です。Lambdaレイヤーの機能を利用することでLambda上で動いてくれるところが特に魅力的ですね。

コンテンツのセキュリティ

ユーザーがシステムに画像などのデータをアップロードできるシステムの場合、これのチェックが必要になります。サーバー上で動いているならアンチマルウェアでこのファイルをチェックしますが、S3では直接チェックが難しいです。EC2でやろうとすると仕組みづくりもそうですがスケーラビリティやライセンス費用が問題になります。

我々がずっと待ち望んでいた、S3にファイルをアップロードしたらサーバーレスでファイルのセキュリティチェックをしてくれるサービスがCloud One File Storage Securityという名前で登場しました。これが欲しかったんじゃぁ…

まとめ

様々なレイヤーのセキュリティについて解説しました。

大事なのはすべてのレイヤーで対策していく、ひとりではなくみんなで対策していくことです。

守るものを意識してそれぞれ対策していきましょう!