Azure と GitHub で DevSecOps を有効にする

DevSecOps (Secure DevOps とも呼ばれます) は、DevOps の原則に基づいていますが、セキュリティを重視した強化がなされています。 DevSecOps を使用すると、セキュリティがアプリケーションのライフサイクル全体の中核になります。また、アプリケーションの作業にたずさわるすべてのチームと個人がセキュリティを考慮することが求められます。 この概念を "シフトレフト セキュリティ" と呼びます。これは、セキュリティの考え方を、運用環境だけのものから、計画と開発の初期段階から関連性のあるものに変えることです。

Microsoft と GitHub では、コードを検査し、使用されているサードパーティ コンポーネントの作業項目と分析情報に至るまでの追跡可能性を実現することで、運用環境で実行しているコードに自信を持つためのソリューションを提供しています。

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

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

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

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

Azure Boards Web サービスを使用すると、チームはソフトウェア プロジェクトを管理できます。 Azure Boards には、スクラムおよびかんばんのネイティブ サポート、カスタマイズ可能なダッシュボード、統合レポートなどの豊富な機能セットが用意されています。

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

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

Azure Pipelines を使用すると、コミット ハッシュやイシュー番号などのトレース メタデータが Azure Boards からコンテナー イメージに統合されるため、実行しているアプリケーションを自信を持って調査することができます。

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

Dev Spaces を使用したコンテナーの実行とデバッグ

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

Azure Dev Spaces は AKS の拡張機能で、使用すると、大規模なアプリケーションのコンテキストで簡単にコードを実行およびデバッグできます。 干渉されることなく、コードをエンドツーエンドでテストしたり、クラスターで実行中のコードのブレークポイントにヒットしたりするほか、チーム メンバー間で開発クラスターを共有することができます。

Azure Security Center と Azure Policy を使用してコンテナーのセキュリティを適用する

Azure Policy は Azure Kubernetes Service (AKS) と統合することにより、一元的な一貫性のある方法でクラスターを大規模に適用して保護できます。

Azure を使用して ID とアクセスを管理する

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

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

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

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

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

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

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

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

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

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

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

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

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