こんにちは。IBM CloudのAndrea Crawfordです。本日はDevSecOpsについてお話しします。DevSecOpsとはセキュリティーを考慮したDevOpsです。
メリット1: 可観測性
DevSecOpsの第一のメリットは可観測性です。可観測性とは、アプリケーション・デリバリーのプロセス自体がどの程度、観測可能であるかを示すものです。私たちは、ユーザー・ストーリーからコーディング、ビルド、デプロイ、管理、継続的改善までの全行程で起こっていることを理解しているでしょうか?
メリット2: トレーサビリティー
2つ目のメリットはトレーサビリティです。ランタイム環境でどのようなユーザー・ストーリーがデプロイされ、管理されているかを把握し、それを証明できるでしょうか?
メリット3: 信頼
もう1つのメリットは信頼です。要件またはユーザー・ストーリーとして開始された内容が、パイプラインの開始時とデリバリー時で同じであることが保証されるビジネスとIT組織との信頼関係です。
メリット4: コンプライアンス
最後のメリットはコンプライアンスです。医療、公共サービス、政府機関、銀行など特定の業界では、コンプライアンスの重要性がますます高まっています。リリース・パイプラインにコンプライアンスを組み込む必要があり、それを開始時点から計画する必要があります。
ユーザー・ストーリー
DevSecOpsには、サプライ・チェーンやこのパイプラインにおけるさまざまな活動が関係しています。そのうちの1つが、適切なユーザー・ストーリーの作成です。ユーザー・ストーリーはサイズと形式が適切で開発チームが理解しやすいものでなければなりません。
コード・フェーズ
コード・フェーズには別のセキュリティー機能が組み込まれます。テスト駆動開発やペア・プログラミングなどです。これらは固有の目的を持った活動であり、コーディング・レベルで、バグや欠陥が発生するリスクを低減するための新しい方法です。最初にテスト・ケースを記述してからコードを記述することで、テスト・コード・カバレッジも改善できます。
ビルド・フェーズ
ビルド・フェーズにもセキュリティー機能を組み込むことができます。ここではリンティングのように、コードが標準のコーディング・プラクティスに従っていることを確認します。
スキャンの概念も導入し、特に無限ループや未定義変数などをチェックします。これらはまさしく潜在的な脆弱性であり、業務が本番に移行すると非常に望ましくない形で表面化します。
デプロイ・フェーズ
適用可能なデプロイ関連のセキュリティー・プラクティスはほかにもあります。クラウド・ネイティブやクラウド・イメージの登場によって公証サービスなどの利用も進んでいます。このサービスではイメージが変更不可能であることだけでなく、デプロイされるDockerイメージとビルド・プロセスで作成されたイメージが同じであることを確認できます。
管理フェーズ
次の管理セクションには、変更検知などの活動が含まれます。変更検知では、ビルド・フェーズで見つからなかった、ランタイム環境の脆弱性が、稼働環境のランタイム・コンテナーで突然発覚することがないようにします。つまりDevSecOpsとは、このパイプライン全体にわたってリスク軽減活動を組み込む手法です。
セキュリティーを組み込むユース・ケースとは
つまりDevSecOpsとは、このパイプライン全体にわたってリスク軽減活動を組み込む手法です。では、どのようなユースケースでセキュリティーを組み込むのでしょうか?ほぼすべてのユースケースです。
ユース・ケース: 可視化に問題発生
具体的には、パイプライン内でのアプリケーションの進捗状況や、誰がいつ、どのような環境に何をデプロイしているかを可視化できていないケースです。
ユース・ケース: 監査に問題発生
監査で問題が発生した場合に、デリバリーの内容がパイプラインの開始時から変更されていないことを経験的データによって証明できる、つまり最初から最後までの全行程を経験的に追跡可能なケース。
ユース・ケース: ガバナンスの統一に問題発生
ガバナンスの統一に問題があり、このパイプラインを一貫した方法で全社的に使用するケース。
ユース・ケース: リスク緩和策
適切なリスク緩和策を適用して、ソフトウェアをデリバリーするケース。デジタル評価が企業規模で低下するリスクを軽減するために、適切な活動がパイプライン全体を通して行われているかどうかを確認します。
業界標準組織
このようなユースケースにDevSecOpsの原則を導入します。OWASP(Open Web Application Security Project)などの業界標準組織は、ソフトウェア保証成熟度モデルを使用して、これらのパイプライン活動だけでなくガバナンスや構築にも対応し、さらにはここに挙げた安全なコーディング・プラクティスの推奨も行っています。
以上をまとめると、DevSecOpsとはコードやデリバリーに対する、総合的でセキュア・バイ・デザインのアプローチであり、そこには人、プロセス、ツールが関与しています。
最後までご覧いただきありがとうございました。