2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
リンクをコピー
記事をブックマーク
黒曜氏:「なるべく楽したいAWSセキュリティ」と題して、Leaner Technologiesの黒曜が発表します。よろしくお願いします。簡単に自己紹介をします。黒曜です。スライドのアイコンと@kokuyouwindというアカウント名で、TwitterやGitHubにいます。名古屋に住んでいて、今も名古屋の自宅からリモートで登壇しています。
Leaner Technologiesというスタートアップの会社は東京にあって、私はフルリモートで名古屋から働くかたちで参加しています。職種はRailsエンジニアですが、最近はNext.jsでフロントやAWSの設定もしています。
Leaner Technologiesの紹介をします。「調達活動を、ぐっとスマートに。」として、調達領域、会社が物を買うことにおいて非効率なこと、(例えば)電話をかけて見積りを取ったり、FAXを送ったり、返ってきたものをExcelに手で入力して「ここが安い」と比較していた部分を、デジタル化したりして効率化しようとしているスタートアップです。
(スライドを指して)このようなメンバーでやっています。たくさんいますが、実はこの中にエンジニアは5人くらいしかいなくて、ビジネスメンバーがすごく多い組織です。最近はエンジニアをどんどん増やしたくて積極的に採用しているので、よろしくお願いします。
本題にまいりましょう。AWSのセキュリティといえばいろいろあります。IAM権限を絞るとか、GuardDutyとか。SecurityGroupでも設定するし、「たくさんあって何からやればいいのかよくわからない」と思うことがあるのではないでしょうか。私はありました。
何をどこまでやればいいのか考えるけど、そんなに手間をかけたくない。怖いから安全にはしたい。とはいえ、手をかけ過ぎずなるべく楽をしたいので、どうにかして楽できないかと考えた内容を発表します。
どうやって安全に楽をするか。先にある程度まとめを言ってしまうと、結局AWSのベストプラクティスに従うのが一番ですが、ちゃんと従えているかをチェックするために「Security Hub」というサービスを使うのが1つ。また、そもそも気にするポイントが減るので、なるべく持ち物を減らす。ほかに、ツールを使って既定値に合わせることで、自分で設定する範囲を減らしています。
例えば、Fargateを使ってEC2のインスタンスを持たずに、なるべくコンテナ化していく。ネットワークの環境構築も手でやると大変なので、Copilot CLIに任せる。さらに、アプリケーションのレベルでもAWSサービスで、例えばWAF(Web Application Firewall)で典型的な攻撃を防ぐとか、ECR(Elastic Container Registry)のコンテナスキャンで脆弱性をチェックするとか、いろいろ使えるものがあるので、これらを使って楽をしながらなるべく安全に運用したいという話をします。
今回のアジェンダです。最初にセキュリティのレイヤー。大雑把にどういうセキュリティのポイントがあるのかという分類の話をしてから、AWSアカウント、ネットワーク、Webアプリ、データストアというレイヤーそれぞれについて話して、最後にまとめようと思います。
最初は「セキュリティレイヤーの分類」です。“セキュリティレイヤー”(という用語)は、いい言葉がなかったので適当に作りました。たぶん正式な用語ではないので、そこだけお目こぼし願います。
AWSでWebアプリを作って運用する際に、どんなポイントが攻撃されそうなのかを考えてみます。(スライドを指して)AWSでWebアプリを作るとこんな感じという、すごくざっくりしたものを描きました。
まず、AWSのIAMでいろいろなリソースを作って環境を構築していきます。ユーザーからのアクセスは、まずロードバランサのALB(Application Load Balancer)で受けて、そこから内部のアプリケーションサーバー、EC2やECS(Elastic Container Service)で立ち上がっているところに行って、データストアのRDS(Relational Database Service)やS3に書き込んだり読み込んだりする動きになると思います。
この中でどこが攻撃されそうかを考えると、一番ヤバいのはIAMです。IAMを不正利用されるとリソースをなんでもかんでもいじられるし、すごく料金がかかるかもしれないし、ウイルスも仕込まれるかもしれない。悪用し放題なので、ここが一番ヤバいポイントです。
次に、ネットワークです。VPC(Virtual Private Cloud)の中にEC2を置いているはずですが、そこにうっかり入られるとサーバーの中でなんでもできるので、ウイルスを設置したり、データを盗用できたりします。
次に、Webアプリ自体の脆弱性です。VPC自体に穴はないけれど、正規のルートのALBから入りSQLインジェクションを流し込むことによって、データを盗用するような攻撃があり得ます。
最後のデータストアについては、RDSであればVPCの中にいるので、VPCに穴がなければ大丈夫のはずですが、例えばS3がグローバルに公開されていると直接アクセスできてデータ盗用があり得ます。
大まかに、これら4つの攻撃ポイントがあるのではないかと思います。これ以外にも考えればあると思いますが、少なくともこれらは確実に対策が必要なので、ここからはこの4つの話をしようと思います。
まず、AWSアカウントのセキュリティです。使い始める時の設定は重要ですが、結局のところ、AWSアカウントの初期設定はベストプラクティスに従うのが確実だと思います。ベストプラクティスがどこにあるかというと、個人的には「DevelopersIO」の記事がすごくわかりやすくまとまっていると思うので紹介します。
(スライドを指して)こちらは『AWSアカウントを作ったら最初にやるべきこと 〜2021年版〜』という記事です。この中に、「この設定は絶対にやるべきだ」とか「理由がなければやったほうがいい」という一覧があるので、これに沿って設定すればおおむね間違いはないと思います。
https://dev.classmethod.jp/articles/aws-1st-step-2021/
ほかに、同じくDevelopersIOの『AWSセキュリティ対策全部盛り』という記事では、一番簡単なやり方から上級者向けまで、いろいろなパターンの「ここをやれ」というものがまとまっているので、ざっと目をとおすといいです。
例えば「必要なサービス有効化」ではGuardDutyを有効化するといい。Well-Architectedフレームワークは取っかかりのないまま読むと大変だけど、「こう読むといい」というアドバイスがあるので、すごくいい記事だと思います。
https://dev.classmethod.jp/articles/aws-security-all-in-one-2021/
人の記事を使って紹介していますが、それだけでなく弊社でやっている話もします。ベストプラクティスに沿って設定するのはいいんですが、本当に設定しきれているのか、あるいはその後足した設定がベストプラクティスに沿っているのか不安な部分は、「Security Hub」というサービスを使って設定状況をチェックしています。
(スライドを指して)Leanerのセキュリティスコアはこのように見られます。弊社で有効にしているセキュリティ基準では、AWS基礎セキュリティのベストプラクティスを有効にしています。これでセキュリティスコアが80パーセントになっている。
(その)下に、重要度ごとの検出数が出ています。「おいおい、80パーセントかよ。セキュリティスコア100パーセントじゃないの?」と思われるかもしれませんが、重要項目の中に「ルートアカウントを物理MFA(Multi-Factor Authentication)デバイスでロックしろ」というものがあるんです。
ただ、リモートワークだと物理MFAデバイスでのアクセスのハードルが高くて、ルート封印だけとはいえ、アカウントを作るたびにオフィスに置いてあるMFAデバイスの設定を誰かにお願いするようなボトルネックになるのは避けたい。今は1Passwordの仮想デバイスでMFA設定をすることにしているので、これについては漏れてしまっています。
「重要度:中」以下については、個別に対応するかどうかを検討するようにしています。この後に紹介しますが、Copilot CLIで作ったリソースが引っかかってしまうこともあります。それらはCloudFormationをいじらないといけないし、不整合が起こる可能性があるので、リスクが低ければ見送っています。
また、ログを出すようにする系のものも、全部出すとコストがかさむので、特にCloudWatchに流すものは見送っています。S3ならそんなにコストがかからないのでいいとは思います。以上の理由で、100パーセントにはなっていません。
もう1つのベストプラクティスは「環境ごとにAWSアカウントを分ける」です。開発環境は開発者が自由に使えないと不便ですが、本番環境はしっかり分けて権限を絞っておくことで、誤操作やアカウントを取られてしまった時の悪用リスクを低減できるようにしています。
構成としては、開発環境、ステージ環境、本番環境の各アカウントを分けた上で、中央アカウントからAWS SSOをして、各環境にシングルサインオンするようにしています。
SSOを直接使っていて、Control TowerというSSOなどのセキュリティのガードレールを設定してくれるものがあることは知っていて、「使わないの?」といわれることもあります。これらは私が入社してまだ1年未満で、サービスを立ち上げる際にアカウント整備する部分だったので、徐々に設定増やしていきたいとは思いますが、今回は未導入です。
経験則として、実際に個別のものを触っていない状態でControl Towerみたいな統合系のサービスをやってしまうと、トラブルシューティングが大変になる。SSOなど自分が未使用だったものがいくつかあるので、それらに個別に触ってから統合サービスを入れていこうと考えています。
次に新しいAWSアカウントを作る前には移行しておきたいと思っています。権限関連も今は最低限の分類しかしていないので、その時に合わせて見直したいと思っています。AWSアカウント周りの取り組みについては以上です。
(次回に続く)
関連タグ:
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05