DevSecOps とは何ですか?

DevSecOps は、ソフトウェア開発プロセスのすべての段階のセキュリティテストを統合する手法です。これには、効率的で安全なソフトウェアを構築するために、開発者、セキュリティの専門家、運用チームの間のコラボレーションを促進するツールとプロセスが含まれています。DevSecOps は、ソフトウェアを構築しているすべての人にセキュリティに関する共通の責任を持たせる文化の変革をもたらします。

DevSecOps とは何の略ですか?

DevSecOps は、開発、セキュリティ、運用を意味します。これは DevOps プラクティスを拡張したものです。各用語は、ソフトウェアアプリケーションを構築する際のソフトウェアチームのさまざまなロールと責任を定義します。

開発 

開発とは、アプリケーションの計画、コーディング、構築、およびテストを行うプロセスです。

セキュリティ

セキュリティとは、ソフトウェア開発サイクルの早い段階でセキュリティを導入することを意味します。たとえば、プログラマーはコードにセキュリティの脆弱性がないことを確認し、セキュリティ担当者は会社がリリースする前にソフトウェアをさらにテストします。 

運用

運用チームは、ソフトウェアから発生する問題をリリース、監視、および修正します。 

DevSecOps が重要なのはなぜですか?

DevSecOps は、開発チームがセキュリティ問題に効率的に対処できるよう支援することを目的としていますこれは、厳しいスケジュールと迅速なソフトウェアアップデートに対応できなかった古いソフトウェアセキュリティプラクティスの代替手段となります。DevSecOps の重要性を理解するために、ソフトウェア開発プロセスを簡単に確認しましょう。

ソフトウェア開発ライフサイクル

ソフトウェア開発ライフサイクル(SDLC)は、ソフトウェアチームが高品質のアプリケーションを作成できるようにするための構造化されたプロセスです。ソフトウェアチームはSDLCを使用してコストを削減し、ミスを最小限に抑え、ソフトウェアが常にプロジェクトの目的に合致するようにします。ソフトウェア開発ライフサイクルでは、ソフトウェアチームは次の段階を経ます。

  • 要件分析
  • 計画
  • 建築デザイン
  • ソフトウェア開発
  • テスト
  • デプロイ

SDLC の DevSecOps

従来のソフトウェア開発方法では、セキュリティテストはSDLCとは別のプロセスでした。セキュリティチームは、ソフトウェアを構築した後に初めてセキュリティ上の欠陥を発見しました。DevSecOps フレームワークは、ソフトウェア開発および配信プロセス全体で脆弱性を検出することにより、SDLC を改善します。

DevSecOps によってどのようなメリットが得られますか?

DevSecOps の実践には次のようないくつかのメリットがあります。

ソフトウェアの脆弱性を早期に発見 

ソフトウェアチームは、開発プロセス全体を通じてセキュリティの制御に重点を置きます。ソフトウェアが完成するまで待つのではなく、各段階でチェックを行います。ソフトウェアチームは、セキュリティ問題を早期に検出し、脆弱性の修正に関するコストと時間を削減できます。その結果、アプリケーションの作成後に、ユーザーの中断を最小限に抑え、セキュリティを強化できます。

市場投入までの時間を短縮

DevSecOps を利用すると、ソフトウェアチームはセキュリティテストを自動化し、人為的なミスを減らすことができます。また、セキュリティ評価が開発プロセスのボトルネックになるのを防ぐこともできます。 

規制コンプライアンスを確保

ソフトウェアチームは、DevSecOps を使用し、専門的なセキュリティプラクティスとテクノロジーを採用することにより、規制要件に準拠します。システム内のデータ保護とセキュリティの要件を特定します。例えば、ソフトウェアチームは、AWS Security Hub を使用して、業界標準に関するセキュリティチェックを自動化します。 

セキュリティを意識した文化を構築

ソフトウェアチームは、アプリケーションを開発する際に、セキュリティのベストプラクティスをより強く意識するようになります。彼らは、アプリケーションを構築するためのコード、モジュール、またはその他のテクノロジーの潜在的なセキュリティの問題をプロアクティブに発見します。 

新機能を安全に開発

DevSecOps は、開発、運用、セキュリティの各チーム間の柔軟なコラボレーションを促進します。彼らはソフトウェアのセキュリティについて同様に理解できるようになり、評価とレポートを自動化するために共通のツールを使用します。全員が、セキュリティについて妥協することなく、顧客のための付加価値を増やす方法に焦点を合わせます。 

DevSecOps はどのように機能しますか?

DevSecOps を実装するには、ソフトウェアチームはまず、DevOps と継続的インテグレーションを実装する必要があります。

DevOps

DevOps 文化は、開発チームと運用チームを結びつけるソフトウェア開発手法です。これは、ツールと自動化を使用して、2 つのチーム間のコラボレーション、コミュニケーション、透明性を向上させます。その結果、企業は、変更に柔軟に対応しながら、ソフトウェア開発期間を短縮できます。 

継続的インテグレーション

継続的インテグレーションと継続的デリバリー (CI/CD) は、自動化されたビルドアンドテストのステップを使用して、アプリケーションの小さな変更を信頼性の高い方法で効率的に提供する最新のソフトウェア開発手法です。開発者は、CI/CD ツールを使用してアプリケーションの新しいバージョンをリリースし、ユーザーがアプリケーションを使用できるようになった後で、問題に迅速に対応します。例えば、AWS CodePipeline は、アプリケーションのデプロイと管理に使用できるツールです。

DevSecOps

DevSecOps は、CI/CD プロセス全体でセキュリティ評価を統合することにより、DevOps プラクティスにセキュリティを導入します。これにより、セキュリティは、ソフトウェアの構築に関わるすべてのチームメンバー間で共有される責任になります。開発チームは、コードを記述する前にセキュリティチームとコラボレーションします。同様に、運用チームは、デプロイ後もソフトウェアのセキュリティの問題を監視し続けます。その結果、企業はコンプライアンスを確保しつつ、安全なソフトウェアをより迅速に提供します。 

DevSecOpsDevOps の比較

DevOps は、アプリケーションをできるだけ早く市場に投入することに重点を置いています。DevOps では、セキュリティテストは、アプリケーション開発の最後、デプロイの直前に実行される個別のプロセスです。通常、別のチームがソフトウェアのセキュリティをテストして適用します。例えば、セキュリティチームはファイアウォールを設定して、アプリケーションの構築後にアプリケーションへの侵入をテストします。

一方、DevSecOps では、セキュリティテストをアプリケーション開発プロセスの一部にします。セキュリティチームと開発者は協力して、ソフトウェアの脆弱性からユーザーを保護します。例えば、セキュリティチームはファイアウォールを設定し、プログラマーが脆弱性を防ぐためにコードを設計し、テスターが不正なサードパーティによるアクセスを防ぐためにすべての変更をテストします。

DevSecOps のコンポーネントとは何ですか?

DevSecOps プラクティスの実装を成功させるには、次のコンポーネントが必要です。

コード分析

コード分析は、アプリケーションのソースコードの脆弱性を調査し、セキュリティのベストプラクティスに従っていることを確認するプロセスです。

変更管理

ソフトウェアチームは、変更管理ツールを使用して、ソフトウェアまたは要件に関連する変更を追跡、管理、および報告します。これにより、ソフトウェアの変更による不注意なセキュリティの脆弱性が防止されます。

コンプライアンス管理

ソフトウェアチームは、ソフトウェアが規制要件に準拠していることを確認します。例えば、開発者は AWS CloudHSM を使用して、HIPAA、FedRAMP、PCI といったセキュリティ、プライバシー、および改ざん防止の規制へのコンプライアンスを実証できます。

脅威モデリング

DevSecOps チームは、アプリケーションのデプロイの前と後に発生する可能性のあるセキュリティの問題を調査します。チームは、既知の問題を解決し、アプリケーションのアップデートされたバージョンをリリースします。

セキュリティトレーニング

セキュリティトレーニングには、最新のセキュリティガイドラインに関するソフトウェア開発者と運用チームのトレーニングが含まれます。これにより、開発チームと運用チームは、アプリケーションを構築してデプロイするときに、独自にセキュリティ上の決定を下すことができるようになります。

DevSecOps 文化とは何ですか?

DevSecOps 文化は、コミュニケーション、人、テクノロジー、プロセスを組み合わせたものです。 

通信

企業は、トップから始まる文化的変化を促進することにより、DevSecOps を実装します。上級リーダーは、セキュリティプラクティスを採用することの重要性とメリットを DevOps チームに説明します。ソフトウェア開発者と運用チームは、DevSecOps プラクティスを採用するために適切なツール、システム、および奨励を必要とします。 

人材

DevSecOps は、ソフトウェアチームが関与する文化的トランスフォーメーションにつながります。ソフトウェア開発者は、コードのビルド、テスト、デプロイという従来の役割に固執しなくなりました。DevSecOps を利用すると、ソフトウェア開発者と運用チームはセキュリティの専門家と緊密に連携し、開発プロセス全体を通じてセキュリティを強化します。 

テクノロジー

ソフトウェアチームは、テクノロジーを使用して開発中に自動セキュリティテストを実行します。DevOps チームは、これを使用して、デリバリースケジュールを損なうことなく、セキュリティ上の欠陥がないかアプリをチェックします。例えば、ソフトウェアチームは、Amazon Inspector を使用して、継続的な脆弱性管理を大規模に自動化します。

処理

DevSecOps は、従来のソフトウェア構築プロセスを変えます。DevSecOps により、ソフトウェアチームは開発のあらゆる段階でセキュリティテストと評価を実行します。ソフトウェア開発者は、コードを記述するときにセキュリティ上の欠陥をチェックします。次に、セキュリティチームがプレリリースアプリケーションにセキュリティの脆弱性がないかテストします。例えば、次の項目をチェックします。

  • ユーザーが必要なものだけにアクセスできるようにするための承認
  • 異常なデータを受信したときにソフトウェアが正しく機能できるようにするための入力検証 

その後、ソフトウェアチームは、最終アプリケーションをエンドユーザーにリリースする前にすべての欠陥を修正します。

セキュリティテストは、アプリケーションが公開されても終了しません。運用チームは引き続き潜在的な問題を監視し、修正を行い、セキュリティチームおよび開発チームと協力してアプリケーションのアップデートバージョンをリリースします。例えば、Amazon CodeGuru Reviewer を使用して、セキュリティの脆弱性、開示されたシークレット、リソースのリーク、同時実行の問題、誤った入力検証、AWS API と SDK の使用に関するベストプラクティスからの逸脱を検出する場合があります。 

DevSecOps のベストプラクティスを教えてください

企業は次のアプローチを使用して、DevSecOps によるデジタルトランスフォーメーションをサポートします。

シフトレフト

シフトレフトは、ソフトウェア開発の初期段階で脆弱性をチェックするプロセスです。このプロセスに従うことで、ソフトウェアチームは、アプリケーションを構築するときに検出されないセキュリティの問題を防ぐことができます。例えば、開発者は DevSecOps プロセスで安全なコードを作成します。

シフトライト

シフトライトは、アプリケーションのデプロイ後にセキュリティを重視することの重要性を示します。一部の脆弱性は、早期のセキュリティチェックをすり抜け、顧客がソフトウェアを使用するときにのみ明らかになる場合があります。 

自動セキュリティツールの使用

DevSecOps チームは、1 日に複数のリビジョンを作成する必要がある場合があります。これを行うには、セキュリティスキャンツールを CI/CD プロセスに統合する必要があります。これにより、セキュリティ評価のために開発が遅くなるのを防ぎます。 

セキュリティ意識の促進

企業は、ソフトウェアを構築する際に、セキュリティ意識がコアバリューの一部になるようにします。アプリケーションの開発に関与するすべてのチームメンバーは、セキュリティ上の脅威からソフトウェアユーザーを保護することに関する責任を共有する必要があります。 

一般的な DevSecOps ツールは何ですか?

ソフトウェアチームは以下の DevSecOps ツールを使用して、ソフトウェア開発中にセキュリティの欠陥を評価、検出、報告します。

静的アプリケーションセキュリティ検査

静的アプリケーションセキュリティ検査 (SAST) ツールは、独自のソースコードの脆弱性を分析して検出します。 

ソフトウェア構成分析 

ソフトウェア構成分析 (SCA) は、リスク管理、セキュリティ、およびライセンスコンプライアンスの目的で、オープンソースソフトウェア (OSS) の使用に関する可視性を自動化するプロセスです。 

対話型アプリケーションセキュリティ検査

DevSecOps チームは、対話型アプリケーションセキュリティ検査 (IAST) ツールを使用して、本番環境におけるアプリケーションの潜在的な脆弱性を評価します。IAST は、アプリケーション内から実行される特別なセキュリティモニターで構成されています。 

動的アプリケーションセキュリティ検査

動的アプリケーションセキュリティ検査 (DAST) ツールは、ネットワークの外部からアプリケーションのセキュリティをテストすることにより、ハッカーを模倣します。

アジャイル開発における DevSecOps とは何ですか?

アジャイルは、ソフトウェアチームがより効率的にアプリケーションを構築し、変化に対応できるようにするために役立つ考え方です。ソフトウェアチームは、柔軟性のない連続した段階でシステム全体を構築していました。アジャイルフレームワークでは、ソフトウェアチームは継続的な循環型ワークフローで作業します。彼らはアジャイルプロセスを使用して絶えずフィードバックを収集し、短い反復的な開発サイクルでアプリケーションを改善します。 

DevSecOps とアジャイル開発との比較

DevSecOps とアジャイルは相互に排他的な手法ではありません。アジャイルにより、ソフトウェアチームは変更要求に迅速に対応できます。一方、DevSecOps は、アジャイル開発の各反復サイクルにセキュリティプラクティスを導入します。DevSecOps を利用することで、ソフトウェアチームはアジャイル開発手法を使用してより安全なコードを生成できます。 

DevSecOps を実装する上での課題は何ですか?

ソフトウェアチームに DevSecOps を導入する際、企業は次のような課題に直面する可能性があります。 

文化的変化への抵抗

ソフトウェアチームとセキュリティチームは、長年にわたり従来型のソフトウェア構築手法に従ってきました。企業では、IT チームが DevSecOps の考え方にすぐに慣れるのが難しいと感じられる場合があります。ソフトウェアチームは、アプリケーションの構築、テスト、および展開に重点を置いています。一方、セキュリティチームはアプリケーションを安全に保つことに重点を置いています。したがって、上級管理者は、ソフトウェアセキュリティプラクティスとタイムリーなデリバリーの重要性について、両方のチームに同じ認識を持たせる必要があります。 

複雑なツールの統合

ソフトウェアチームは、さまざまなタイプのツールを使用してアプリケーションを構築し、セキュリティをテストします。さまざまなベンダーのツールをデリバリープロセスに統合し続けることは困難です。従来型のセキュリティスキャナーは、最新の開発手法をサポートしていない場合があります。 

AWS は DevSecOps の実装をどのようにサポートできますか?

AWS は、最新の DevSecOps プラクティスをサポートしているので、ソフトウェアチームは、アプリケーションのセキュリティ、コンプライアンス、データ保護を自動化できます。例えば、次のことができます。

  • Amazon Inspector を使用して、大規模な自動化された継続的な脆弱性管理を実現できます。
  • AWS CodeCommit を使用して、ソースコントロールを管理し、アプリケーションに段階的な変更を加えます。 
  • AWS Secrets Manager を使用して、データベースの認証情報、API キー、その他のシークレットをライフサイクル全体で簡単にローテーション、管理、および取得することができます。

今すぐ AWS アカウントを作成して、AWS で DevSecOps を使用開始しましょう。

AWS DevSecOps の次のステップ

その他の製品関連リソースを確認する
無料のセキュリティサービスを見る 
無料のアカウントにサインアップ

AWS 無料利用枠にすぐにアクセスできます。 

サインアップ 
コンソールで構築を開始する

AWS マネジメントコンソールで構築を始めましょう。

サインイン