【予算0円】個人開発でやっておくべきセキュリティ対策

※本記事は広告を含みます

初めに

「個人開発のサイトなんて、誰も狙わないでしょ?」 もしそう思っているなら、今すぐその考えをゴミ箱へポイしちゃいましょう。ネットの海には、24時間365日、獲物を探して徘徊する「攻撃ボット」が溢れています。彼らにとって、あなたのサイトが「個人」か「企業」かなんて関係ありません。 でも、安心してください。 「セキュリティは、必ずしも札束で殴る必要はない」んです。 今回は個人開発をしてる現役エンジニアの視点で、最低限やっておくべき対策を開発・実装・運用のフェーズ順に紹介していこうと思います!

【開発時】Git管理してはいけない「地雷」の見定め方

セキュリティツールを導入する前に、絶対にやってはいけないことがあります。それは 「秘密の情報をリポジトリに含めること」 です。一度でもGitHubにプッシュしてしまったら、たとえ後から削除しても履歴には残り続けます。

「何を .gitignore に入れるべきか?」——その判断基準を整理しましょう。

絶対にプッシュしてはいけない「3種の神器」

  • 認証情報(Secrets):APIキー、DBのパスワード、SSH秘密鍵、AWSのアクセスキー。これらは「鍵」そのものです。
  • 環境変数ファイル(.env):ローカル開発用の設定が入った .env ファイル。これを上げたら、あなたのDBは世界中に公開されたも同然です。
  • 個人情報(PII):テスト用のダンプデータに含まれる実際のユーザーのメールアドレスや名前など。

「設定」と「機密」を分離する技術

「でも、これがないと動かないじゃん!」という時の正解はこれです。

  • .env.example を作る:中身を空(あるいはダミー値)にしたテンプレートだけをGit管理し、使い方は README に書きましょう。envの本設定は本番環境のみで行うのが正攻法です。
  • CI/CDの標準機能を活用する:例えばGitHubの Secret Scanning (Push Protection) は予算0円で使える最強の門番です。間違ってAPIキーをプッシュしようとした瞬間に弾いてくれるので、必ず有効にしておきましょう。

【開発時】Snykでライブラリの脆弱性をチェック

自作コードが完璧でも、使っているライブラリに穴があったらアウト。でも、世界中の脆弱性情報を毎日チェックするのは個人では不可能ですよね。 そこで Snyk(スニーク) の出番です。

  • 24時間の門番: GitHub等と連携するだけで、依存ライブラリやDockerイメージの脆弱性を可視化してくれます。
  • 「直し方」まで教えてくれる: 脆弱性を見つけるだけでなく、「このバージョンに上げればOK」と解決策まで提案してくれるのが神。無料プランでも個人開発なら十分すぎるほど強力です。(※GitHub標準の Dependabot を活用するのも一つの手です!)

特に最近はクライアントはnode.jsベースが増えてきていますし、特にここは気にしておいたほうが良いポイントです。もちろんnode以外の言語にも対応しているので、個人開発との相性はかなり良いツールだと思います。

【実装時】「作らない」ことが最大の防御

元も子もないですが、外部サービスで欲しい機能に対応できるであれば、そちらに任せてしまう方がリスクも運用保守も楽になります。

「認証機能」や「コメント機能」を自作するのは楽しいですが、そこは一番脆弱性が生まれやすい場所。

  • 餅は餅屋: コメント欄が欲しければ、軽量でプライバシーに強い Cusdis などを外部導入する、というイメージ。
  • リスクを外出し: 自分でコードを書かない=脆弱性を作るリスクをゼロにする、という引き算の思考が大切です。
  • 特に決済系は個人がノリで手を出してはダメ。ここは金融庁や総務省も絡んでくるルールがあるので、要件把握が大変。運用保守に時間も取れないと思うので、事故ったら詰みになる可能性が高いです。

色んなものをパズルみたいに組み合わせて開発するのは時間がかかりますが、このあたりが人間のやるべき設計の部分でもあります。取捨選択していきましょう。

【運用時】Cloudflare Zero Trustで「管理画面」を消し去る

二段階認証の考え方ですね。個人開発で一番怖いのは、ブログや管理ツールのログイン画面を突破されること。ここに対する対策は必須と言えるでしょう。ちなみにWordPressなんかでも同じ考え方です。Cloudflare以外にも選択肢があるので、お好みのものを利用すればオッケーです。

  • 「見えない」のが最強の防御: ログインパスにCloudflare Zero Trustを被せましょう。
  • 認証の二重化: 通常のログイン画面の「前」に、自分だけのメールアドレスやGitHubアカウントによる認証を強制。扉に鍵をかけるのではなく「扉そのものを透明にする」感覚です。これで攻撃者はログイン画面に辿り着くことすらできません。
  • 無料プロキシの恩恵: そもそもCloudflareを通す(オレンジの雲マークをオンにする)だけで、オリジンサーバーのIPアドレスを隠蔽し、無料のWAFやDDoS保護の恩恵を受けられます。これも「予算0円」の大きな武器です。

今日からできる!予算0円セキュリティ・チェックリスト

まずは以下のチェックリストに基づき、自身が開発しているプロジェクトをチェックしてみましょう。

  • [ ] .gitignore.env が含まれているか確認する
  • [ ] GitHub等リポジトリの Secret Scanning (Push Protection) が有効か確認する
  • [ ] GitHub等で Snyk(または Dependabot)を連携する
  • [ ] 自作している機能の見直し(外部サービスの検討)をする
  • [ ] Cloudflareのアカウントを作成し、サイトを登録する

慣れていないと時間がかかるかもですが、まあ開発ってそういうもんですよね。。この辺りはAIも勝手にやってくれるわけじゃないので、お勉強がてら時間を使ってみるのがいいと思います。

編集後記:セキュリティは「自由」を守るための投資

正直何年エンジニアをやってきても、セキュリティ周りの対策はめっちゃ大変だし、筆者もすべてを把握できている訳ですし、現在開発しているもののセキュリティ対策が万全であるかどうかは自信はないです。本当に「セキュリティ対策は、一度やって終わりじゃない」んですよね。 Snykのアラートに「はいはい」と付き合ったり、Dependabotのプルリクをマージしたり。そんな地味な習慣の積み重ねなんですよね。

特に最近はAIの普及により、これまでよりインターネット上に公開されるプロジェクトが増えているでしょうし、同様にWEBサイトへの攻撃も以前より増えているはずです。ここ1年くらいでかなり情報漏洩の報告が多いですよね、これは個人だけでなく法人もそうです。セキュリティ対策は難しい。

せっかく作った愛着のあるサービス。攻撃を受けて閉鎖……なんて悲しい結末にならないよう、できることから対策していきましょう。まず変えるべきは意識です!

書いた人

やまぐろ

やまぐろ

Japan
業務アプリケーション開発、エンドユーザ向け機能などの開発に携わっている文系(経営学)卒エンジニア。 ブログでは読書記録を残したり、ガジェットのレビューをしたり、エンジニアっぽくプログラムの話や業界の話をしたりしています。 他にも個人開発者として、自作ツール、自作WEBサービスを公開中です。