Azure と GitHub で DevSecOps を有効にする

DevSecOps (Secure DevOps とも呼ばれます) は、DevOps の原則に基づいていますが、セキュリティがアプリケーション ライフサイクル全体の中心になっています。 この概念は "シフト レフト セキュリティ" と呼ばれます。そこでは、セキュリティが、運用時にのみ考慮されるのではなく、さらに早い計画と開発のステージを含むように、上流に移動されます。 アプリケーションで作業するすべてのチームと開発者は、セキュリティを考慮する必要があります。

Microsoft と GitHub には、運用環境で実行するコードの信頼性を高めるソリューションが用意されています。 これらのソリューションでは、コードが検査され、使われているサード パーティのコンポーネントの作業項目と分析情報まで追跡できるようになります。

GitHub を使用してコードのセキュリティを確保する

開発者は、コード スキャン ツールを使って、GitHub リポジトリ内のコードをすばやく自動的に分析し、セキュリティの脆弱性とコーディング エラーを見つけることができます。

コードをスキャンして、既存の問題を検出し、トリアージして、修正の優先順位を決めることができます。 コード スキャンを使用すると、開発者による新たな問題の混入を防止することもできます。 特定の日付と時刻でのスキャンをスケジュールしたり、プッシュなどの特定のイベントがリポジトリで発生したときにスキャンをトリガーしたりできます。 また、リポジトリの依存関係を追跡し、GitHub で脆弱な依存関係が検出されたときにセキュリティ アラートを受け取ることもできます。

Azure Boards を使用して作業を追跡する

チームは Azure Boards Web サービスを使用してソフトウェア プロジェクトを管理できます。 Azure Boards は、スクラムとカンバンのネイティブ サポート、カスタマイズ可能なダッシュボード、統合レポートなどの豊富な機能セットを提供します。

Azure Pipelines を使用してコンテナーを構築およびデプロイする

Azure Pipelines と Kubernetes クラスターを簡単に統合できます。 同じ YAML ドキュメントを使って、継続的インテグレーションと継続的デリバリーの両方を対象とする複数ステージのコードとしてのパイプラインを構築できます。

Azure Pipelines により、Azure Boards からのコミット ハッシュやイシュー番号などを含むメタデータのトレースがコンテナー イメージに統合されるため、アプリケーションを確実に調査できます。

YAML ファイルを使用してデプロイ パイプラインを作成し、それをソース管理に格納する機能により、明確で読みやすいドキュメントに依存する開発と運用のチームの間の緊密なフィードバック ループが促進されます。

Bridge to Kubernetes を使用してコンテナーを実行してデバッグする

Kubernetes アプリケーションの開発には課題が生じる可能性があります。 Docker と Kubernetes の構成ファイルが必要です。 アプリケーションをローカルでテストし、その他の依存サービスとやり取りする方法を理解する必要があります。 開発者のチームが同時に複数のサービスの開発とテストを行うことが必要な場合があります。

Bridge to Kubernetes を使用すると、開発用のコンピューター上でコードの実行とデバッグを行いながら、残りのアプリケーションやサービスが置かれている Kubernetes クラスターとの接続を保つことができます。 干渉されることなく、コードをエンドツーエンドでテストしたり、クラスターで実行中のコードのブレークポイントにヒットしたりするほか、チーム メンバー間で開発クラスターを共有することができます。

Microsoft Defender for Containers と Azure Policy を使用してコンテナーのセキュリティを適用する

Microsoft Defender for Containers は、コンテナーをセキュリティで保護するためのクラウド ネイティブ ソリューションです。

Microsoft ID プラットフォームで ID とアクセスを管理する

Microsoft ID プラットフォームは、Azure Active Directory (Azure AD) 開発者プラットフォームの進化版です。 これにより、すべての Microsoft ID にサインインして、Microsoft API (Microsoft Graph) や開発者が構築した API を呼び出すためのトークンを取得するアプリケーションを開発者が構築できます。

Azure AD B2C では、サービスとしての企業-消費者間 (B2C) ID が提供されます。 顧客は、好みのソーシャル、エンタープライズ、またはローカル アカウント ID を使用して、アプリケーションや API にシングル サインオン アクセスできます。

クラウド リソースのアクセス管理は、クラウドを使用している組織にとって重要な機能です。 Azure ロールベースのアクセス制御 (Azure RBAC) は、Azure リソースにアクセスできるユーザー、そのユーザーがそれらのリソースに対して実行できること、およびそのユーザーがアクセスできる領域を管理するのに役立ちます。

Microsoft ID プラットフォームを使用して、Azure DevOps 内のネイティブ サポートや GitHub Enterprise との統合など、DevOps ツールの残りの部分で認証を行うことができます。

現在、Azure Kubernetes Service (AKS) クラスター (具体的には Kubernetes クラウド プロバイダー) で Azure 内にロード バランサーやマネージド ディスクなどの追加リソースを作成するには、ID が必要です。 この ID には、マネージド ID またはサービス プリンシパルを指定できます。 サービス プリンシパルを使用する場合、それを 1 つ指定する必要があります。指定しない場合、AKS によって代理で作成されます。 マネージド ID を使用する場合は、AKS によって自動的に作成されます。 サービス プリンシパルを使うクラスターの場合、クラスターの動作を維持するには、最終的にサービス プリンシパルを更新する必要があります。 サービス プリンシパルを管理しなければならない場合、複雑さが増すので、代わりにマネージ ID を使用した方が簡単です。 アクセス許可の要件は、サービス プリンシパルにおいてもマネージド ID においても同じです。

マネージド ID は、本質的にサービス プリンシパルのラッパーであり、管理がより簡単になります。

Azure Key Vault を使用してキーとシークレットを管理する

Azure Key Vault を使用すると、トークン、パスワード、証明書、API キー、その他のシークレットを安全に格納し、それらへのアクセスを制御できます。 アプリケーション シークレットのストレージを Key Vault に一元化することで、その配布を制御できます。 Key Vault によって、シークレットが誤って漏洩する可能性が大幅に小さくなります。 Key Vault を使うと、アプリケーション開発者はアプリケーションにセキュリティ情報を格納する必要がなくなり、この情報をコードの一部にする必要がなくなります。 たとえば、必要に応じてデータベースに接続するアプリケーションがあるとします。 この場合、接続文字列をアプリのコードに格納する代わりに、Key Vault に安全に格納できます。

アプリケーションを監視する

Azure Monitor を使用すると、アプリケーションとインフラストラクチャの両方をリアルタイムで監視して、コードに関する問題および潜在的な疑わしいアクティビティや異常を特定することができます。 Azure Monitor を使用すると、Azure Pipelines のリリース パイプラインが統合され、品質ゲートの自動承認や、監視データに基づくリリース ロールバックが可能になります。

Azure Application Insights と Azure Monitor を使用して、アプリケーションとインフラストラクチャを監視する方法については、以下を参照してください。

適切にアーキテクチャを構築する

セキュリティは、あらゆるアーキテクチャの最も重要な側面の 1 つです。 セキュリティは、重要なデータやシステムの意図的な攻撃や悪用に対して、機密性、整合性、および可用性の保証を提供します。 これらの保証を失うと、事業運営や収益のほか、市場における組織の評判に悪影響を与える可能性があります。