AIコード支援を安全に導入するための5つのヒント
2024年5月30日
0 分で読めますここ数年、生成AI技術への期待が高まっており、特にソフトウェア開発の分野で注目されています。あらゆるレベルの開発者が、GitHub Copilot、Amazon CodeWhisperer、OpenAIのChatGPTなどのAIツールをコーディングに活用しています。実際、GitHubの調査によると、開発者の92%がAIコーディングツールを利用しています。
しかし、多くの企業は、ソフトウェア開発でAIを利用する際には、より慎重になる必要があると認識しています。生成AIには依然として不正確な回答やハルシネーションが生じやすく、データポイズニングやプロンプトインジェクションなどの新たな攻撃経路によって、組織がリスクにさらされる可能性があります。
AIを活用するうえで大切なのは、AIを排除したり、チームに無制限に使わせたりすることではありません。AI生成コードを安全に活用するためのガードレールを、戦略的に整えることです。
ソフトウェア開発ライフサイクル全体でAIコードアシスタントを安全に利用するための5つのヒントをご紹介します。
必ず人間が確認する
IDE上のAI生成コードを、独立した公平なセキュリティツールでスキャンする
サードパーティ製コードを検証する
チームやプロジェクト全体のテストを自動化する
知的財産を保護する
必ず人間が確認する
生成AIは、インターネット上の何百万ものコード例にアクセスできる、いわばジュニア開発者のようなものです。作業は迅速ですが、良質なコードも問題のあるコードも学習データに含まれているため、AIコーディングアシスタントは決して万能ではありません。そのため、生成AIコードツールを導入する際は、十分な人間によるチェックを組み込むことが重要です。次のような取り組みで、人間が確認する仕組みを整えられます。
AI導入前と同様のコードセキュリティテストを実施します。たとえば、IDE上で静的アプリケーションセキュリティテスト(SAST)を使い、脆弱性を検証、テストし、修正します。
AI生成コードのメリットとリスクについて、定期的なトレーニングを実施します。
AI生成コードを定期的にレビューするためのポリシーと手順を整備します。
IDE上のAI生成コードを、独立した公平なセキュリティツールでスキャンする
AI生成コードのセキュリティテストには、最初にそのコードの大部分を生成したツールとは別のツールを使うのがベストプラクティスです。独立したセキュリティツールを使えば、公平な評価を確保できます。また、ツールによって得意分野は異なります。動作するコードの生成を目的としたAIツールは、セキュリティ態勢の全体像を把握できず、複雑なセキュリティ上のニュアンスを理解する機能も備えていない場合があります。
AI生成コードを保護するために、独立した公平なツールを選ぶ際は、主に次の2点を考慮します。
アプリケーション全体を網羅したコンテキストに即した包括的な可視性。個々のAI生成コードの断片だけを、不完全な形で見るのではありません。これにより、アプリケーションのほかの部分に影響を与えない修正案を提示できます。
セキュリティ対策をできる限り早い段階に移行できる、IDE内でのスキャン機能。これにより、開発者はAI生成コードも手動で書いたコードも、書いた直後に脆弱性を修正できます。
サードパーティ製コードを検証する
一般的なアプリケーションの70~90%はオープンソースコードで構成されています。開発者がこうしたサードパーティ製リソースを日常的に利用するだけでなく、AIが生成するコードもサードパーティの依存関係を活用します。オープンソースコードを使えば、開発者はより迅速にアプリケーションを構築できますが、品質やセキュリティレベルにはばらつきがあります。AIが推奨するオープンソースライブラリにもリスクがあります。AIは最新のセキュリティ情報を把握していないことが多く、古くなったリソースや、既知の脆弱性を含むリソースを推奨する可能性があります。
ソフトウェア構成分析(SCA)は、こうしたサードパーティ製リソースに含まれる脆弱性を組織が発見し、修正するのに役立ちます。人間またはAIが選んだ依存関係をスキャンし、脆弱性のあるオープンソースパッケージを特定して、その脆弱性を報告し、修正方法を提案します。AIコーディングアシスタントを利用する場合、チームは高品質なSCAツールで、AIが推奨するオープンソースライブラリをテストし、検証する必要があります。
チームやプロジェクト全体のテストを自動化する
人間が書いたコードとAIが生成したコードの両方に、こうしたコードセキュリティのベストプラクティスを適用する方法を検討する際は、自動化できる箇所を見つけましょう。AIコーディングアシスタントによって開発ライフサイクルはかつてないほど速くなりました。セキュリティテストを自動化しなければ、この前例のない開発スピードについていけません。自動化を成功させる鍵は、CI/CDパイプラインなど、開発チームがすでに利用しているワークフローにセキュリティテストを組み込むことです。
知的財産を保護する
AIコーディングアシスタントへのプロンプトに使うコードについても検討し、従業員がプロンプトを通じて誤って機密データを漏えいしないよう対策を講じる必要があります。AIツールは一般に、顧客のプロンプトを学習データとして利用します。つまり、プロンプトに入力した内容が利用される可能性があります。そのため、機密情報や独自のコードをAIツールに入力しないことが重要です。AIツールにプロンプトを入力する際は、次の点に注意しましょう。
詳細なAI利用ポリシーを文書化し、ガイドラインに従わなかった場合の影響も含めて、チームに周知・教育します。
LLMに入力したデータはすべて、学習に使われるものと想定します。
AIツールが処理を行うために必要な、最小限の情報だけを入力します。
ユーザーの入力とAIツールの出力をサニタイズするために、入力チェックと出力チェックの導入を検討します。
SnykがAIコーディングアシスタントの安全な導入をどのように支援するかについて、詳しくはこちらをご覧ください。
