2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
リンクをコピー
記事をブックマーク
菊池宣明氏(以下、菊池):菊池宣明と申します。本日はよろしくお願いします。はじめに、簡単に自己紹介をさせてください。最近私は主にSRE関係の仕事を担当しています。2022年から「ハッカー飯」の開発者メンバーとしてジョインしました。経歴を簡単に述べると、科学系の大学院を卒業して、その後とあるCIerの会社に新卒で入社しました。
ここでは主にAWSについて業務でたくさん取り組み、そこでしばらく修行を積んだ後に、2021年の夏ごろ退職をして独立をして、今はいわゆるフリーランスエンジニアとして活動をしています。エンジニア歴としては、2022年でちょうど5年目になります。
最近の趣味はゲーム。「スマブラ」「Fortnite」が好きです。好きなAWSのサービスは「AWSサポート」です。AWSサポートのみなさん、いつも本当にありがとうございます。
自己紹介はこれぐらいにしておいて、さっそく本題に入りたいと思います。まずハッカー飯の紹介からさせてください。
ハッカー飯というプラットフォームは、技術や知識でアイデアをかたちにする人々、僕らは“ハッカー”と呼んでいますが、このハッカーがご飯を囲むような気軽さで語り合い、教え合い、つながれるオンラインプラットフォームとなっています。
もう少し概要について説明すると、ハッカー飯は、株式会社スタークロスの西田が作ったサービスとなっています。ハッカー飯の特徴としては、話したいことをもとに、エンジニアと1 on 1マッチングできる機能、エンジニア複数人と簡易的なイベントを行う食事会機能、そして興味のあることをもとに集まるコミュニティ機能が存在しています。
サービス開発の背景としては、「いわゆるエンジニア同士で気軽に、ハッカー同士で気軽に話せる環境があまりないよね」といったところがあり、そこを解決するためにハッカー飯というサービスを開発しました。
(スライドを示して)ハッカー飯にログインするとこういう画面になっていて、それぞれユーザーが話したいことリストみたいなことをカード形式で登録しています。
ここでは技術的な話や趣味的な話とかも行われていて、それぞれが「気になるボタン」を押すことによって、「この人はどんな話が気になっているのか」がわかり、気になるボタンを押してくれた人とマッチングして、メッセージを交換して話したり仲よくなったりするサービスとなっています。
(スライドを示して)食事会機能は、いわゆるエンジニアの勉強会なども企画されていたり、ただワインを飲む会というような、いわゆるリアルの飲み会、食事会も開催されていたりもします。
最近、ルーム機能も作成しました。こちらはハッカー飯上で「ルームを作成」というボタンを押すと画面が出て、入室することによってユーザー同士で気軽にカジュアルにお話しできる機能となっています。これによって、ユーザー同士がよりコミュニケーションがしやすくなるのかなと考えています。
そんなハッカー飯の運営メンバーですが、メンバー全員がそれぞれ本業がある中、副業でハッカー飯に携わっています。
開発スタイルですが、それぞれ副業で行っているので、毎週土曜日にDiscordのボイスチャンネルに入室して、各々開発を進めていく。そんなスタイルでやっています。
1時間開発して10分間休憩、みんなスマブラが好きなので、休憩時間中にスマブラをする。そんなサイクルでやっています。その日の夜には定例を行って、それぞれのタスクの確認や今後の方針について話し合いを行います。
収益化に関してですが、現状実はまだ収益化ができていなくて、コストをできるだけ抑えた構成となっています。今後、法人版のハッカー飯を作って、企業の中のエンジニアと気軽につながれるようなシステムを構築する予定です。ここまでがハッカー飯の紹介です。
ここからが今回のテーマでもあるセキュリティ・モニタリングについて、ハッカー飯で取り組んだことをお話しします。まずは、セキュリティについてお話しします。
セキュリティの話に入る前に、ハッカー飯のインフラの構成について簡単に紹介します。本当にすごくシンプルな構成ですが、「Route 53」があって、「CloudFront」「S3」「Lightsail」、こういったサービスを使っています。
この中でLightsailと呼ばれるサービスは、もしかするとあまり聞き慣れないサービスかもしれないので、ここで少し説明させてください。
(スライドを示して)こちらがLightsailの公式ページに載っているスクリーンショットです。「Amazon Lightsail」というのは、ここにも書いてあるとおり、低価格の事前設定されたクラウドリソースを使用して、アプリケーションとWebサイトを構築できるサービスとなっています。
ポイントとしては、数回クリックするだけでWebサイトやアプリケーションを作成でき、費用対効果の高い月額料金で使用できる。これが主なLightsailのポイントです。
なぜハッカー飯の初期の構成でLightsailを選定したかというと、一番の理由としては、コスト管理が行いやすいからです。低額で使用できるため、コストの予算が立てやすいというメリットがありました。
また、3.5ドルのプランというのがあり、これを使用するとEC2を起動するよりも安く使うことができる。そういったメリットもあったのでLightsailを選定しました。
2つ目の理由としては、環境の構築を素早くできるからです。Lightsailでインフラ環境を構築する場合、先ほどのプランを選んでプラットフォームを選択して、必要なものを選択する。これぐらいのクリック(だけ)でインフラの環境が構築できるものとなっています。
いわゆるVPC(Virtual Private Cloud)やサブネット、インターネットゲートウェイすら作成する必要がない。すべて、いわゆる隠蔽化されている状態で作成されるので、そういったところをあまり意識しなくても誰でも構築できるのは、当時の開発メンバーにとって都合がいいものでした。
3番目の理由としては、EC2への移行も可能ということです。やはりEC2に比べるとLightsailはある程度制約、制限があって、EC2に移行したくなるタイミングがあると思います。そういった時にもLightsail上でスナップショットを取得することで、簡単にEC2へエクスポートが行えます。(スライドを示して)この「Export to Amazon EC2」というボタンを押すことで、EC2にエクスポートが可能となります。
そんなLightsailですが、運用していて困ったことがちょっとあって。まずはLightsailにIAMロールが使用できないことです。
EC2であれば必要な権限を付与してIAMロールを作成してアタッチすると思いますが、そういったことができないというのが問題としてありました。なので、いわゆるアンチパターンと呼ばれるものだと思いますが、IAMユーザーを作成してアクセスキーをインスタンス内部に格納する必要があります。
2点目としては、スケールアップが簡単にできないといったことがあります。EC2のようにインスタンスを停止して、インスタンスタイプを変更して、スケールアップして起動ということが、Lightsailでは行えません。
Lightsailの場合、スケールアップするにはスナップショットから作り直す必要があるので、今後、サービスが広く認知されてアクセス数が増えた際には、ちょっと困りそうだなと考えていました。
僕がジョインした後に発覚したんですが、そもそもアクセスキー・シークレットキーがプログラムの中にハードコーディングされていて、誰でも閲覧できる状態になっていました。これは外に漏洩した際にけっこうなセキュリティ上のリスクがあると判断して、最初にアクセスキーを廃止する取り組みを行いました。
方法はほかにもあるかもしれませんが、ハッカー飯ではこれを機にLightsailからEC2へ移行してIAMロールを使用することにしました。
移行の流れとしては本当にシンプルで、LightsailをEC2へエクスポートして、適切な権限に絞ったIAMロールをEC2にアタッチします。アクセスキーには有効化・無効化を切り替えるボタンがあり、まずアクセスキーを無効化にしてテストを実施した後、問題ないことを確認してからアクセスキーを削除する方法で行いました。
これによって、アクセスキーを最初に無効化にしてからテストを実施したほうが、なにか問題があった時にも切り戻しが楽かなと思ったので、こういった手順を踏んでいます。
本来であれば、ここで移行の苦労話とかをしようかなと思っていましたが、特につまずくこともなくすんなりと移行できてしまったので、逆に言うとそれぐらい簡単にシンプルに移行できるサービスなんだとあらためて認識することができました。
実はセキュリティ上のリスクが実はこれだけではなくて、そもそもAWSコンソールへのログインなども、これまでRootユーザーが使われていたということが発覚しました。これもやはり、ふだんの作業でRootユーザーを使うケースはほとんどないと思うので、これもアクセスキーを廃止したタイミングで管理を見直そうと考えました。
そこでハッカー飯では、簡単にセットアップできてユーザー管理を効率化できる「AWS Single Sign-On」を採用しました。
(スライドを示して)こちらを使うとこのような画面が表示されて、このようなポータルページが表示されて、必要な権限が表示されます。「Management console」というボタンを押すとAWSアカウントにログインでき、アクセスキー・シークレットキーの一時的なクレデンシャル情報を出力することも可能となっています。
Single Sign-Onについてもう少し詳しく説明すると、「AWS SSO」と略されたりすることが多いのかなと思いますが、こちらを使用することによって、ユーザー・グループの管理および認証を行えます。
先ほど紹介したようなポータルサイトにログイン後、所属しているグループに付与されている権限のみ使用を制限できます。
(スライドを示して)このように、例えばグループを2つ作って、それぞれにユーザーを所属させて、片方のグループには2つの権限、もう片方のグループには1つの権限のみとこともできて、今後開発メンバーが増えた時にもこういった構成のほうが管理が楽かなと考えたので、AWS SSOを採用することにしました。
以上がハッカー飯のセキュリティに関するお話でした。
(次回に続く)
関連タグ:
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