GitHub Copilotのような生成AIコードアシスタントを導入するためのセキュリティのベストプラクティス5選
2024年3月5日
0 分で読めます少し前まで、AIはSF映画に出てくるような未来的なアイデアだと考えられていました。her/世界でひとつの彼女やエクス・マキナのような映画は、AIというパンドラの箱を一度開ければ、予期せぬ結果を招く可能性があると警告していました。ChatGPTが利用しやすくなり、広く使われるようになったことで、状況は大きく変わりました。今年5月に実施された経営幹部を対象とするGartnerの調査では、89%の企業が生成AIを調査または導入中であることが示されました。また、同時期に発表された別のGartnerのレポートでは、2025年までに製品開発で使われるコードの80%以上がAIによって生成されると予測されています。
開発者は生成AIから大きな恩恵を受けています。GitHub Copilot、Amazon CodeWhisperer、OpenAIのChatGPTなどのAIコーディングアシスタントを活用し、生産性を飛躍的に高めています。しかし、こうしたAIツールは非常に強力で、開発のあり方を大きく変える一方、エラーやハルシネーションを起こすこともあります。あくまで開発者を支援するものであり、置き換えるものではありません。そのため、AI生成コードを人が慎重に検証すること、セキュリティツールやガードレールを整備することなど、生成AIコーディングツールを安全に使うための対策が必要です。安心してイノベーションを進められるよう、ここではCopilotのようなAIコード補完ツールを安全に導入するための5つのベストプラクティスを紹介します。
プラクティス1:必ず人間が確認する
生成AIコードツールの導入でよくある失敗のひとつが、人による確認や検証を行わない、または不十分なままにすることです。前述のとおり、こうしたツールは開発者を支援するためのものであり、完璧ではありません。AIコーディングツールの導入前と同じように、安全な開発習慣を守り、AI生成コードかどうかにかかわらず、コードを慎重に確認しましょう。
AIは、Stack Overflowのスレッドを一度に何千件も読めるだけの、経験の浅い開発者だと考えてみてください。新しい開発者が書いたコードをレビューなしでリリースすることはないはずです。AIの速さに惑わされて、実力以上に賢いと思い込まないようにしましょう。
チームには、AI生成コードのメリットだけでなく、そのリスクについても教育する必要があります。また、定期的なコードレビューを社内のソフトウェア開発プロセスに組み込みましょう。IDE内で検証、テスト、修正を行います。こうした習慣を社内のポリシーや手順に明記し、定期的なトレーニングを実施することで、チームがその重要性を理解し、適切にコードレビューを行えるようにしましょう。
プラクティス2:IDE内で、独立した公平なセキュリティツールを使ってAIコードをスキャンする
この2つのポイントは切り離せません。まず、AIによる開発者の生産性向上を最大限に活かすには、従来型のセキュリティレビューで開発の速度を落とすわけにはいきません。開発者の数はセキュリティ担当者を大きく上回っているため、チームはシフトレフトのセキュリティ対策を取り入れてきました。AIによって開発者の生産量が増えた今、作成される脆弱なコードの量も増加しています。そのため、シフトレフトは選択肢ではなく、必須です。最も簡単な方法は、セキュリティスキャンをIDEに直接組み込むことです。コードを書いた瞬間にスキャンし、脆弱性が開発パイプライン全体に広がってから後追いで探すのではなく、事前に検出できます。
次に、コードを書くツールとは別のセキュリティツールでスキャンする必要があります。開発チームとセキュリティチームを分けるのと同じ理由です。コードを書くチームにそのままセキュリティ確保も任せると、多くの脆弱性を見逃すことになります。セキュリティは複雑であり、開発とは異なる専門分野です。
コードを書くツールを支えるAIは、機能するコードを書くために、機能するコードを学習しています。一方、コードのセキュリティ確保だけを目的とする専用のセキュリティツールは、セキュリティに特化したデータで学習しているため、セキュリティ上の問題を確実に検出し、修正できます。さらに、セキュリティツールはスキャン対象のコードだけでなく、アプリケーション全体のコンテキストを理解する必要があります。そうすることで、ある箇所の修正が別の箇所でバグを引き起こすのを防げます。Snyk Codeが、LLMの提示する修正候補をルールベースのシンボリックAIでスキャンするのはこのためです。追加の問題を引き起こさない修正案だけをユーザーに提示します。
AIを活用するには、開発チームとセキュリティチームを分けるのと同じように、コードを書くツールとコードを保護するツールの2つが必要です。また、どちらのツールもアプリケーション全体のコンテキストを理解する必要があります。そうすれば、全体の状況から切り離されたコードスニペットだけを見て判断する事態を避けられます。
プラクティス3:サードパーティコードを検証する
アプリケーションのコードの平均70%はオープンソースコードです。つまり、アプリケーションの70%は自社以外の誰かが作成し、セキュリティを確保したものです。脆弱性が悪意ある攻撃者による顧客データ窃取の侵入口になっても、その作成者に責任を問うことはできません。
開発者がサードパーティの依存関係を使う場合は、必ずソフトウェア構成分析(SCA)ツールでスキャンし、安全性を確認しましょう。SCAツールは脆弱なパッケージを検出し、脆弱性の種類や深刻度などを報告して、修正方法を提案します。
AIが生成したコードも、サードパーティの依存関係を取り込みます。忘れないでください。AIもまた開発者のひとりで、コードを書くのが非常に速いだけです。そのコードの依存関係もすべてスキャンする必要があります。特に、LLMベースのAIツールは、サードパーティパッケージに関する最新の調査結果やリリースへの追随が遅れがちです。AIにもSCAが必要です。そこで、AIが推奨するオープンソースライブラリは必ず手作業で確認し、Snyk Open Sourceなどのツールでテストすることをおすすめします。
プラクティス4:チームやプロジェクト全体のテストを自動化する
自動化されていなければ、実行されない可能性が高くなります。自動化は基本となるベストプラクティスであり、あらゆるところで活用されています。Unix管理者がcronジョブを書くことから、QAチームが自動テストを導入すること、DevOpsチームがPythonスクリプトで支える大規模なインフラを構築することまで、幅広く使われています。自動化は作業を楽にするだけでなく、やるべきことを忘れる可能性もなくします。
CI/CDを通じてアプリケーションを自動的に保護するセキュリティツールを導入し、チームがすでに使っているワークフローにも組み込みましょう。
プラクティス5:知的財産を保護する
AIツールの利用ポリシーを定める際は、ツールが自社の機密コードから学習しないようにすることが非常に重要です。2023年には、利用データを使った学習の過程で機密データが漏えいしたことを受け、SamsungがChatGPTの利用を禁止しました。自社の競争優位性が、同じ業界の別企業で働く開発者に提案コードとして提供されるような事態は、絶対に避けたいものです。
この対策はテクノロジーだけで徹底するのが少し難しいため、AI利用ポリシーを文書化し、チームを十分にトレーニングすることが非常に重要です。許可される利用方法、必須の対策、違反した場合の影響を明確に示しましょう。また、LLMに入力したデータは学習に使われるものと想定してください。LLMには業務に必要な最小限の情報だけを渡し、機密情報は入力しないようにします。ユーザーからの入力とLLMの出力をサニタイズするため、入出力チェックの導入も検討しましょう。
AIコーディングアシスタントを安全に活用する
AIコーディングアシスタントがこれからの開発を担うことは間違いありません。チームはこれまで以上のスピードで開発し、より多くのコードを生成するようになります。リリースするアプリケーションの安全を確保するのは、あなたの役目です。適切なポリシーとトレーニングが必要です。そして何より、チームのスピードを落とさない適切なセキュリティツールが欠かせません。Snykがその実現を支援します。
業界をリードする脅威インテリジェンスと、専門家が関与するハイブリッドAIを活用したSnykの開発者向けセキュリティプラットフォームは、人間またはAIが書いたコードをリアルタイムでスキャンします。IDE内でインライン表示される修正案はワンクリックで適用できるため、開発者は速度を落とさず、セキュリティチームの負担も軽減できます。
Snykで、AI生成コードに安心を。SnykがCopilotに必要なセキュリティの副操縦士になれる理由を、ぜひ専門家によるデモを予約してご確認ください。
AIが生成したコードのセキュリティ対策を始めましょう
無料のSnykアカウントを作成して、AIが生成したコードのセキュリティ対策を数分で始めましょう。または、専門家によるデモを予約して、Snykが開発者セキュリティのニーズにどう応えられるかをご確認ください。



