1. 超実践AI論
  2. 現役エンジニアがアプリ開発で..
現役エンジニアがアプリ開発で必ずやるセキュリティ対策5選
2026-11-12 09:42

現役エンジニアがアプリ開発で必ずやるセキュリティ対策5選

おたよりを送る

セキュリティ対策は自分用のアプリと公開するアプリで内容が違いますが、どちらにも欠かせない対策があります。現役エンジニアのぼくが全アプリで必ずやっている5つのセキュリティ対策を、自社アプリの具体例とともに解説します。


AIエージェント×1Passwordの解説回

https://open.spotify.com/episode/1tH9GxEZMULAa8aKl30ZRP


Linter・Formatter・セキュリティの解説回

https://open.spotify.com/episode/7tNRt0Ca4bJtg225veBfWt


Cloudflareセキュリティ監査スキルの解説回

⁠https://open.spotify.com/episode/4bXXr5K0l5a5ux15ckobnW


お仕事の無料相談、AI活用・動画の内容に関するご質問は公式LINEへお願いします

⁠https://lin.ee/89PQ9tH


今回の内容の解説記事

⁠https://hataracraft.com/articles/app-security-essentials?utm_source=spotify&utm_medium=audio&utm_campaign=app-security-essentials


【目次】

はじめに

権限を必要最小限にする

分析アプリでの権限の例

機密情報をGitHubに上げない

Betterleaksで自動チェック

AIに機密情報を読ませない

settings.jsonでコマンドを制御

指示より設定で縛る

依存ライブラリを更新する

package.jsonと間接依存

古いままだと脆弱性が残る

RenovateとDependabotで自動更新

緊急の脆弱性はDependabotで

AIによるセキュリティ監査

おすすめの監査ツール

まとめ

感想

まだ感想はありません。最初の1件を書きましょう!

00:00
おすすめは、クラウドフレアのセキュリティ観察キルです。 僕のアプリの場合、pnpmrock.yamlは7000行以上もあります。
プライベートリポジトリなら、上げても問題ないと思うかもしれませんが、それもNGです。 こんにちは、超実践AI論のたいちです。今回は、現役エンジニアがアプリ開発で必ずやる
セキュリティ対策5選、というテーマでお話しします。 セキュリティ対策は、自分だけが使うアプリと公開するアプリで結構内容が違います。
今回は、僕が自分用のアプリでも公開するアプリでも必ずやっているセキュリティ対策を5つ紹介します。
対策の一つ目は、権限を必要最小限にすることです。 具体的には、読み取りと書き込み自体の制御、読み書きできる範囲の設定という2つの観点があります。
やりたいことに対して、読み取り権限だけあれば済むなら、書き込み権限を与えてはダメです。 なぜなら、書き込み権限はデータの書き換えや設定の変更までできる非常に強力な権限だからです。
また、やりたいことに対して、読み書きできる範囲を適切に絞り込むことも重要です。
この読み書き自体の制御と読み書きできる範囲の設定を必要最小限にしておけば、
万が一権限が奪われたときの被害も最低限の範囲で済みます。
権限の概念の話だけだとイメージがつかみづらいと思うので、実際のアプリを例にして説明します。
これは、僕が個人で開発して運用している自社コンテンツの分析アプリです。
このアプリでは、YouTubeやGoogle、Xなどの様々な媒体から定期的にデータを取ってきています。
このデータ取得の権限は読み取りだけに絞っています。
なぜなら、データを見て分析するのが目的なので、データを書き換える必要はないからです。
また、読み取りを許可する範囲も分析に必要なものだけに絞り込んでいます。
例えば、ウェブサイトの分析データでは、予約・問い合わせの件数も読んでいますが、
その問い合わせ元のメールアドレスや問い合わせ内容までは読んでいません。
このように、分析に不要な情報は読まないことで、権限が流出した時に盗まれる情報も減らすことができます。
まとめると、権限は読み書きの許可自体をどうするか、
読み書きできる範囲をどうするかという2つの観点で、
やりたいことに対して、必要最小限になるよう設定するのが重要です。
前アプリで必ずやるべきセキュリティ対策の2つ目は、機密情報をGitHubに上げないことです。
アプリ開発では、APIキーという外部サービスの鍵などの機密情報を扱うことがよくあります。
この機密情報をGitHubに上げると、不正利用されて自分のデータが盗まれたり、
外部サービスの鍵なら多額の請求につながる恐れもあります。
GitHubでは、プライベートリポジトリという自分しか見られないリポジトリを作ることができ、
プライベートリポジトリなら上げても問題ないと思うかもしれませんが、それもNGです。
なぜなら、今プライベートリポジトリにしていても、将来的には公開するかもしれないからです。
公開する前に事前に機密情報を消しておいても、
GitHubは過去の履歴も保管されているので、履歴を遡れば見えてしまいます。
すべての履歴から機密情報を消すのはかなり手間がかかります。
であれば、プライベートリポジトリでも最初から機密情報を上げないようにしておくべきです。
03:03
加えて、GitHub自体が機密情報を流出してしまうリスクもあります。
GitやGitHubに機密情報を上げるのを防ぐツールとして便利なのは、Better Leaksです。
Better Leaksは、コミットの時に機密情報が混ざっていないかを自動判定して、混ざっていたら止めてくれます。
過去の全コミットも含めて、機密情報が入っていないかを一瞬でチェックすることができます。
Better Leaksは、GitLeaksという有名なツールの原作者が開発している後継プロジェクトなので、
これからアプリ開発で導入する場合は、こちらを入れるのがおすすめです。
全アプリでやるべきセキュリティ対策の3つ目が、AIに機密情報を読ませない、危険なコマンドを実行させないことです。
APIキーなどのアプリの機密情報は、.envといった環境変数ファイルに置くのが一般的ですが、
これをAIに読ませると流出する危険があります。
なので、環境変数ファイルは.envxで暗号化するか、機密情報をワンパスワードで管理して、
アプリやAIはワンパスワード経由で機密情報を使うようにするのが一般的です。
僕はアプリの機密情報をワンパスワードに入れています。
詳しくは概要欄のAIエージェント×ワンパスワードの動画で解説しているので、見てください。
そして、AIが危険なコマンドを実行できないよう設定しておくことも重要です。
例えば、クロードコードではsettings.jsonというファイルでコマンドの実行許可設定をできます。
Allowのところで実行可能なコマンドを明示的に制御したり、
Additional Dictionariesでプロジェクト外の読んでもいいフォルダを定義したり、
Askで実行するときは承認を求めるコマンドを決めたり、
Denyで実行してはいけないコマンドを定義したりできます。
AIへのプロンプトやスキル、
cloud.md などでやってはいけないことを指示する方法もありますが、これらは守られる保証がありません。
settings.json などの設定レベルでコマンドを制御しておけば、それを無視することはないので安心です。
このように、AIの設定レベルでコマンドの制御をしたいときは、クロードコードなどに
セキュリティ的に危険なコマンドは、拒否または承認を求めるよう設定してと頼めばやってくれます。
この指示だけで土台はできるので、
あとはクロードコードなどを使いながら、このコマンドは拒否に入れてたけど結構使う場面があるから
承認に変える、みたいな感じで使いながら微調整をしていくことが重要です。
今回はクロードコードを例に出しましたが、CodeXやアンチグラビティなど他のAIエージェントにも同様の設定があります。
全アプリでやるべきセキュリティ対策の4つ目が、依存ライブラリの更新です。
アプリはライブラリという様々なツールを組み合わせて作られています。
プログラミング言語や使う環境によって依存するライブラリは違いますが、
一般的にライブラリの管理でよく使われているのが package.json というファイルです。
package.json ではこのようにアプリで使う様々なツールのバージョンを管理しています。
さらに pnpmrock.yaml というファイルでは
package.json の依存ライブラリが依存しているライブラリのバージョンを管理しています。
依存の依存、つまり間接依存のライブラリというわけです。
僕のアプリの場合、pnpmrock.yaml は7000行以上もあります。
06:00
これらの間接依存も含めて、ライブラリは新しいバージョンが出たら更新しなければなりません。
なぜなら、更新をせず古いまま使っていると、
脆弱性というセキュリティ上の弱点が残ったままアプリを動かし続けることになるからです。
更新を放置すればするほどセキュリティのリスクは高まります。
今回は package.json と pnpmrock.yaml だけを紹介しましたが、
より大規模なアプリや GitHub Actions による自動テストなどを動かしていると、
依存ライブラリは他のファイルにもたくさん定義されます。
こういったアプリの依存ライブラリを手作業で更新していくのは数が多すぎて不可能です。
そこで使うのがライブラリ自動更新ツールです。
具体的には、Renovate と Dependabot という無料ツールを使います。
Renovate を使うと、こんな感じで1週間に1回など自分が決めたタイミングで
依存ライブラリを自動更新する PR を作ってくれます。
PR とはプルリクエストの略で、コードの変更をアプリに取り込む前に確認するための画面です。
人がやることは、その PR で GitHub Actions のテストが通っていることを確認して、
ライブラリを更新してもアプリが壊れていないことが担保された状態で、PR をマージするだけです。
僕は毎日ライブラリ更新の PR が出てくるのが嫌なので、
Renovate の PR 作成頻度を1週間に1回にしています。
ですが、緊急度の高い脆弱性は、1週間に1回の更新を待たず、すぐに対応しなければなりません。
そちらは Dependabot で即時更新されるよう設定しています。
詳しい設定方法などは、概要欄の
アプリ開発の最初にあるべき
リンター・フォーマッター・セキュリティ設定という動画で解説しているので、参考にしてください。
そして最後、5つ目のセキュリティ対策が、AI によるセキュリティ監査です。
最近は情報漏洩が頻発していて、その大きな原因は、攻撃者が AI を使って
安価に大量の攻撃をできるようになったことです。
だからこそ、僕たちサービス提供者側も AI を使って防御する必要があります。
AI を使ったセキュリティ対策ツールで有名なものは、
CodeX、クロード公式のセキュリティプラグイン、もしくは、クラウドフレアが公開しているセキュリティ監査スキルです。
どれも無料で使うことができます。
僕はクラウドフレアのセキュリティ監査スキルが、最も網羅的かつ徹底的に、アプリ全体のセキュリティ監査をしてくれると実感があるので、
クラウドフレアのセキュリティ監査スキルを使っています。
詳しい設定方法や使い方は、概要欄のクラウドフレアセキュリティ監査スキルの解説動画で紹介しているので、参考にしてください。
攻撃者がAIでアプリの弱点をついてくる以上、防御側もAIを使わないと対策は間に合いません。
ここで一つお知らせです。業務のAI活用の個別サポートや、
研修、システム開発などのお仕事は、概要欄の公式LINEからお問い合わせください。相談は無料です。
動画の内容やその他のご質問にも、公式LINEで回答しています。
今回の内容をまとめます。今回は、自分だけで使うアプリでも、公開するアプリでも、
必ずやるべき5つのセキュリティ対策を紹介しました。
1つ目は、権限の読み取り、書き込み及び、いじれる範囲を必要最小限に絞ること。
09:00
2つ目は、BetAleaksを使って、Gitに機密情報が入るのを自動で防ぐこと。
3つ目は、AIによる機密情報の読み書きは、.mxやワンパスワードなどで防ぎ、
AIが実行できるコマンドを設定ファイルで縛ること。
4つ目は、アプリの依存ライブラリを、Renovate、Dependabotで自動更新して、脆弱性を残さないこと。
5つ目が、AIによるセキュリティ観察をすること。おすすめは、Cloudflareのセキュリティ観察スキルです。
ぜひあなたのアプリも、今回紹介したセキュリティ対策で、未実施のものがあったら対応してください。
多少手間はかかりますが、AIに任せれば、ほとんどの対応は楽にできるはずです。
概要欄にも、今回の内容を解説した記事を貼っておきます。それでは今日はこの辺で。
09:42

コメント

スクロール