🛡

なるべく楽したいAWSセキュリティ

2022/05/12に公開

Leaner 開発チームの黒曜(@kokuyouwind)です。

先日開催された AWS Starup Community スタートアップ事例祭り 〜監視・モニタリング・セキュリティ編〜 に登壇させていただき、「なるべく楽したい AWS セキュリティ」と題して Leaner Technologies での AWS セキュリティ設定事例を紹介しました。

今回は発表内容のポイントとともに、発表で省いた話をいくつか記事にまとめていきます。

発表スライド

https://slides.com/kokuyouwind/aws-startup-community-202205

口頭での補足を前提としたスライド構成になっているため、スライドのみだと少々分かりづらい部分があります。

発表時の動画がアップロードされているので、そちらをご覧いただくとよりわかりやすいです。

https://www.youtube.com/watch?v=003HaOPEV6k&t=3896s

発表内容のおおまかなまとめ

スライドだけだと分かりづらいし、動画だと見るのに時間がかかるなぁ… という方もいそうなので、発表内容のポイントを以下にまとめます。

  • AWS アカウントのセキュリティは初期設定で大部分が決まるので、ベストプラクティスに沿ってちゃんと設定しよう
    • DevelopersIO の記事が質・量ともに高く、以下の 2 記事がおすすめ
    • 初期設定後に追加されたリソースも継続的に確認するため、Security Hubを設定するのがおすすめ
      • Leaner では「AWS 基礎セキュリティのベストプラクティス」を有効にして定期的に確認している
      • 「ルートアカウントの物理 MFA」ルールはリモートワーク中心だと運用が難しくなるため、緩和して 1password の仮想 MFA デバイスで運用している
      • 「重要度: 中」以下のルールは全部対応すると大変で月額費用も上がってくるため、個別に対応可否を検討している
    • IAM 悪用時の被害を減らすため、AWS アカウントは環境ごとに分ける
      • ログインが大変になるので AWS SSO を使っている
      • Control Tower を使う選択肢もあるが、小さく進めたかったので現時点では未導入。今後入れていきたい
  • ネットワーク周りの設定は自力で対応すると大変でセキュリティホールを作りやすいので、AWS Copilot CLIに任せている
    • VPC や Subnet だけでなく、 ALB や ECS なども全部作ってくれる
    • ECS のセキュリティグループで ALB からのリクエストのみ受け付けるようにするなど、運用上十分なセキュリティ設定をしてくれるので便利
    • ECS にすることで持ち物が減り、 EC2 のように OS やミドルウェアの更新を考えなくて良くなる点も良い
  • Web アプリのセキュリティを高めるため、 WAF 設置や ECR での push 時コンテナスキャンなどを行っている
    • WAF の Managed Rules は WafCharmの記事 を参考にして、導入お勧めセットのみ入れている
      • アプリケーション本来のリクエストもたまに False Positive でブロックされるので、 Slack 通知を仕込んで都度ホワイトリストに足している
    • ECR のコンテナスキャンは定期的に新しい脆弱性がでていないか目視でチェックしている
      • コンテナイメージの CVE は False Positive が出ると Docker FAQ にかかれているので、 0 を目指すのではなく推移を見るようにする

以上、本当に要点のみの箇条書きなので、興味があればスライドや動画も確認いただけると嬉しいです。

発表についての補足

関連記事

今回の発表内容と関連した記事を以下にまとめます。

AWS Copilot CLI について、導入や ARM へのアーキテクチャ変更に関する記事を書いています。導入を検討されている方はぜひ読んでみてください。

https://zenn.dev/leaner_tech/articles/20210607-migrate-rails-copilot

https://zenn.dev/leaner_tech/articles/20211222-copilot-arm-pipeline

AWS WAF がアクセスをブロックした際の Slack 通知について、以下の記事で具体的な構成や Lambda コードを掲載しています。

https://zenn.dev/leaner_tech/articles/20211125-waf-notify

発表では直接触れていませんが、フロントエンドの SPA についても持ち物を減らすために Amplify Console を導入しています。以下の記事でこのあたりの経緯や作業手順について解説しています。

https://zenn.dev/leaner_tech/articles/20210630-replace-spa-with-amplify

SecurityHub のスコアについて

質疑応答で「SecurityHub のスコアが 80% なのはかなり高くないか」という話がありました。

そのときは思いつかなかったのですが、ルールセットとして「AWS 基礎セキュリティのベストプラクティス」のみ有効にしており「CIS AWS Fundation Benchmark v1.2.0」が有効になっていないから、というのが原因としてありえます。

この 2 つは重複したチェックもあるのですが、 CIS はより厳しいルールが多く、スコアの計算方法も違うのか低いスコアになるようです。

ひとまずはベストプラクティスに沿うところから始めたかったことと、 CIS では「全リージョン」という指定のあるルールが多く、東京リージョンのみ使っている現状ではルールクリアのためにあまり重要でない作業が必要になってしまうため、 CIS のルールは適用していません。

1password を使った仮想 MFA の安全性について

ルートアカウントの封印に関して、下記記事に基づき「1password を利用した MFA は多要素になっていないのでは」というツッコミを見かけました。

https://qiita.com/tsukamoto/items/c1699bd2dd215aec2efc

この指摘についてはそのとおりで、正しく多要素認証するなら仮想 MFA デバイスだとしても個別のハードウェアデバイスに紐づけるべきでしょう。

ただ現実問題として「リモートワークでハードウェアデバイスに基づく MFA を設定する」のは誰がハードウェアデバイスを管理するのかという話になり、ハードウェア MFA と同じ問題を抱えることになります。そういった中で「本来の意味での多要素認証ではないが 1password の MFA 機能を利用する」というのは、少なくとも「MFA を設定しない」より安全な選択肢ではないかと考えています。

まとめ

Leaner での AWS セキュリティの取組みについてざっと紹介しました。まだまだ設定できていない箇所や使いたいツールもあるので、今後もいろいろ取り組んでいきたいところです。

また今回のイベント自体についても、他の方の発表が参考になったり耳が痛かったりでとても良かったです。次回は丸一日を使った拡大版ということで今から楽しみですね。

https://aws-startup-community.connpass.com/event/247548/

宣伝

Leaner Technologies では AWS のセキュリティに取り組みたいエンジニアを募集しています!

https://careers.leaner.co.jp/engineering

リーナーテックブログ

Discussion