第8章 セキュリティ セキュリティ、保守性、信頼性
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
この章では、バイブ・コーディングとAI支援エンジニアリングの重要な側面、つまりAIの支援を受けて作成したコードが安全で、信頼性が高く、保守可能であることを保証することに立ち向かう。 出来上がったソフトウェアが脆弱性に満ちていたり、クラッシュしやすかったりすれば、スピードや生産性はほとんど意味をなさない。
まず、インジェクションの脆弱性から機密漏洩まで、AIが生成したコードに生じる一般的なセキュリティの落とし穴を検証する。AIが書いたコードにこのような問題がないか監査・レビューするテクニックを学び、AIペア・プログラマのセキュリティ・セーフティ・ネットとして効果的に機能させる。
次に、バグや信頼性の問題を早期に発見するために、AIが生成したコードの周りに効果的なテストとQAのフレームワークを構築することについて説明する。パフォーマンスに関する考察も行う。AIは正しいコードを書くかもしれないが、必ずしも最も効率的なコードとは限らないので、パフォーマンスのボトルネックを特定して最適化する方法について概説する。また、AIの提案は一貫性がなかったり、過度に冗長だったりすることがあるため、一貫性のあるスタイルの強制やAIのコードのリファクタリングなど、保守性を確保するための戦略も探る。
AI支援ワークフローにコードレビュープラクティスを適応させる方法を紹介し、部分的または全体的にマシンが生成したコードをレビューする際に、人間のレビュアーが何を重視すべきかを強調する。最後に、継続的インテグレーションパイプラインから本番環境でのモニタリングまで、AI支援プロジェクトを信頼性高くデプロイするためのベストプラクティスをまとめる。この章が終わるころには、AIによる開発を安全かつ堅牢に保つためのツールキットを手に入れることができるだろう。
AIが生成するコードに共通するセキュリティ脆弱性
AIコーディング・アシスタントは、強力ではあるが、適切に導かれなければ、不注意にセキュリティ問題を引き起こす可能性がある。 AIは多くの公開コードから学習するが、その中にはグッドプラクティスとバッドプラクティスの両方が含まれており、プロンプトやコンテキストによって誘導されなければ、安全でないパターンを再利用する可能性がある。このようなよくある落とし穴を知り、それを見つけて修正できるようにすることが重要だ。これには、潜在的なセキュリティ問題を検出するために、手作業と自動化された手段の両方を使用することが含まれる(図8-1を参照)。
図8-1. AIが導入したセキュリティの脆弱性AIが生成したコードには微妙なセキュリティ上の欠陥が含まれていることがあり、それを特定し修正するためには、慎重なレビューと自動化されたセキュリティ・スキャンが必要である。
AIが生成したコードに見られる典型的なセキュリティ問題には、以下のようなものがある:
- ハードコードされた秘密や資格情報
-
時々、AIは、APIキー、パスワード、またはトークンをコードに出力する。特に、類似した例がトレーニングデータに含まれていた場合はなおさらである。例えば、AWSと統合するように依頼すると、ダミーのAWSシークレットキーを直接コードに入れるかもしれない。コードが共有された場合、機密情報が漏れる可能性がある。シークレットが環境変数や設定ファイルで適切に管理されていることを常に確認すること。AIが ...