DevSecOps ( Secure DevOps とも呼ばれます) は、従来の DevOps ライフ サイクルのさまざまな段階でセキュリティを組み込むことによって、DevOps の実践に基づいています。 DevOps プラクティスにセキュリティを組み込み、次の操作を行います。
アプリケーションとシステムのセキュリティを強化し、セキュリティ上の脅威を可視化し、脆弱性がデプロイされた環境に到達するのを防ぎます。
開発チームと運用チームの間でセキュリティ意識を高めます。
ソフトウェア開発ライフサイクル (SDLC) に自動化されたセキュリティ プロセスを組み込みます。
開発と設計の段階の早い段階でセキュリティの問題を見つけることで、修復コストを削減します。
DevSecOps を Azure Kubernetes Service (AKS) に適用する場合、各組織ロールには特定のセキュリティに関する考慮事項があります。
開発者は、AKS で実行されるセキュリティで保護されたアプリケーションを構築します。
クラウド エンジニアは、セキュリティで保護された AKS インフラストラクチャを構築します。
運用チームは、クラスターを管理したり、セキュリティの問題を監視したりする可能性があります。
この記事では、DevOps ライフサイクル ステージ別のガイダンスを整理し、セキュリティ制御とベスト プラクティスに関する推奨事項を示します。 組み込みのツールを中心に、継続的インテグレーションと継続的デリバリー (CI/CD) パイプラインの一般的なプロセスとツールについて説明します。
プロセス フロー
このアーキテクチャのVisio ファイルをダウンロードしてください。
Note
この記事では AKS と GitHub を参照していますが、これらの推奨事項を任意のコンテナー オーケストレーションまたは CI/CD プラットフォームに適用できます。 実装の詳細は異なる場合がありますが、各ステージのほとんどの概念とプラクティスが引き続き適用されます。
Microsoft Entra ID は、GitHub の ID プロバイダーとして構成されます。 追加の認証セキュリティを提供するために、多要素認証 (MFA) を構成します。
開発者は、セキュリティ拡張機能が有効な Visual Studio Code または Visual Studio を使用して、セキュリティの脆弱性についてコードを事前に分析します。
開発者は、企業所有および管理されている GitHub Enterprise リポジトリにアプリケーション コードをコミットします。
GitHub Enterprise では、GitHub Advanced Security を介した自動セキュリティと依存関係のスキャンが統合されます。
プルリクエストにより、GitHub Actionsを介して継続的インテグレーション(CI)ビルドと自動テストがトリガーされます。
GitHub Actions を使用した CI ビルド ワークフローでは、Docker コンテナー イメージが生成され、 Azure Container Registry に格納されます。
GitHub Actions の継続的デリバリー (CD) ワークフローの一部として、運用環境などの特定の環境へのデプロイに対する手動承認を追加できます。
GitHub Actions は AKS への CD を可能にします。 GitHub Advanced Security を使用して、アプリケーションのソース ファイルと構成ファイル内のシークレット、資格情報、およびその他の機密情報を検出します。
Microsoft Defender は、Container Registry、AKS クラスター、および Azure Key Vault でセキュリティの脆弱性をスキャンします。
Microsoft Defender for Containers は、GitHub Actions がコンテナー レジストリにアップロードするときに、コンテナー イメージをスキャンして既知のセキュリティ脆弱性を検出します。
Defender for Containers では、AKS 環境をスキャンし、AKS クラスターの実行時の脅威保護を提供することもできます。
Microsoft Defender for Key Vault は、キー コンテナー アカウントへの通常とは異なる疑わしいアクセス試行を検出します。
Azure Policy を Container Registry と AKS に適用して、ポリシーコンプライアンスを適用できます。 Azure Policy には、Container Registry と AKS の両方に対する組み込みのセキュリティ ポリシーが含まれています。
Key Vault は 、シークレットと資格情報を開発者に公開することなく、実行時にアプリケーションに安全に挿入します。
AKS ネットワーク ポリシー エンジンは、Kubernetes ネットワーク ポリシーを使用してアプリケーション ポッド間のトラフィックをセキュリティで保護するように構成されています。 ネットワーク ポリシー エンジンとして 、Cilium を搭載した Azure CNI をお勧めします。 拡張されたバークレイ パケット フィルター (eBPF) ベースの適用、レイヤー 7 ポリシー、完全修飾ドメイン名 (FQDN) フィルター処理が提供されます。
Azure Monitor を使用して Prometheus メトリック、コンテナー ログ、および Kubernetes イベントを収集することで、AKS クラスターの継続的な監視を設定できます。 視覚化には Azure Managed Grafana ダッシュボードを使用し、クエリベースのアラートには Log Analytics を使用します。
Azure Monitor では、Managed Prometheus を使用してパフォーマンス メトリックを収集し、コンテナー ログ収集を使用してアプリケーションログとクラスター ログを収集します。
Log Analytics ワークスペースには、ログ クエリを実行するための診断ログとアプリケーション ログが格納されます。
一元化されたセキュリティ情報とイベント管理 (SIEM) として Microsoft Sentinel を使用して、AKS テレメトリを Microsoft Defender for Cloud、Microsoft Entra ID、およびネットワーク リソースからのシグナルと関連付けます。 Microsoft Sentinel は、AKS 環境全体のセキュリティ インシデントに対する検出、調査、自動対応を提供します。
Zed Attack Proxy (ZAP) などのオープンソース ツールは、Web アプリケーションやサービスの侵入テストを実行できます。
Defender for Cloud で利用できるサービスである Defender for DevOps は、セキュリティ チームが GitHub や Azure DevOps を含むマルチパイプ環境全体で DevOps セキュリティを管理できるようにします。
チーム メンバーの概要と責任
チーム間で責任を分けることで、Kubernetes ベースのソリューションデプロイで DevSecOps の複雑さを管理することを検討してください。 このセクションでは、開発者、サイト信頼性エンジニア、クラスター オペレーター、セキュリティ チームなどのアプリケーションオペレーターの役割と責任について説明します。
開発者
開発者はアプリケーション コードを記述し、指定されたリポジトリにコミットします。 自動テスト用のスクリプトを作成して実行し、コードが意図したとおりに動作し、アプリケーションの残りの部分と統合されていることを確認します。 また、開発者は、自動化パイプラインの一部としてコンテナー イメージのビルドを定義し、スクリプトを作成します。
アプリケーションオペレーター (サイト信頼性エンジニア)
コンテナーと Kubernetes を使用してアプリケーションをビルドすると、アプリケーションの開発、デプロイ、スケーラビリティを簡素化できます。 しかし、これらの開発アプローチにより、管理が複雑化する分散環境も生まれます。
サイト信頼性エンジニアは、チームが大規模なソフトウェア システムを監視する方法を自動化するソリューションを構築します。 これらは、開発チームとクラスター オペレーター チームの間のブリッジとして機能します。 これらは、サービス レベル目標 (SLO) とエラー予算の確立と監視に役立ちます。 また、サイト信頼性エンジニアは、アプリケーションのデプロイを管理し、Kubernetes マニフェスト (YAML) ファイルを記述するのにも役立ちます。
クラスター演算子
クラスター オペレーターは、クラスター インフラストラクチャを構成および管理します。 多くの場合、コードとしてのインフラストラクチャ (IaC) のベスト プラクティスと GitOps などのフレームワークを使用して、クラスターをプロビジョニングおよび維持します。 Prometheus 用の Azure Monitor マネージド サービスや Azure Managed Grafana などの監視ツールを使用して、クラスターの全体的な正常性を監視します。 クラスターに対する修正プログラムの適用、クラスターのアップグレード、アクセス許可、ロールベースのアクセス制御 (RBAC) を担当します。 DevSecOps チームでは、クラスターオペレーターがセキュリティ チームと協力してセキュリティ標準を確立し、クラスターがそれらの要件を満たしていることを確認します。
セキュリティ チーム
セキュリティ チームは、セキュリティ標準を開発して適用します。 一部のチームは、クラスターを含むサブスクリプションとリソース グループ全体で適用する Azure Policy 定義を作成して選択することがあります。 セキュリティ チームは、セキュリティの問題を監視し、他のチームと協力して、DevSecOps プロセス全体でセキュリティに優先順位を付けます。
DevSecOps のライフ サイクルステージ
SDLC の各フェーズでは、セキュリティ制御が実装されます。 これらのセキュリティ制御は、DevSecOps とセキュリティを開発の初期段階に組み込むプラクティスの中心です。
このアーキテクチャのVisio ファイルをダウンロードしてください。
計画フェーズ
通常、計画フェーズには最小限の自動化がありますが、後の DevOps ライフ サイクル ステージに影響を与える重要なセキュリティへの影響があります。 このフェーズでは、セキュリティ チーム、開発チーム、運用チーム間のコラボレーションが含まれます。 セキュリティ要件とセキュリティの問題を確実に考慮または軽減するには、このフェーズにセキュリティ関係者を含めます。
ベスト プラクティス: セキュリティで保護されたアプリケーション プラットフォームを設計する
セキュリティで保護された AKS でホストされるワークロードを構築するには、プラットフォーム自体から始めて、すべてのレイヤーでシステムにセキュリティを組み込む必要があります。 プラットフォームには、ランタイム セキュリティエージェントやポリシー エージェントなどのクラスター内部のコンポーネントと、ネットワーク ファイアウォールやコンテナー レジストリなどの AKS 外部のコンポーネントを含めることができます。
ベスト プラクティス: 脅威モデリングをプロセスに組み込む
脅威のモデリングは、通常、セキュリティチームと開発チームを含む手動アクティビティです。 コードを開発したり変更を加えたりする前に、脆弱性に対処するためにシステム内の脅威をモデル化して見つけることができます。 チームは、ソフトウェアの大幅な変更、ソリューション アーキテクチャの変更、またはセキュリティ インシデントに対応して脅威モデリングを実施します。
STRIDE 脅威モデルをお勧めします。 この手法はデータ フロー図から始まり、STRIDE ニーモニック (スプーフィング、改ざん、否認、情報漏えい、サービス拒否、特権の昇格) を使用して脅威を分類します。 チームはこれらのカテゴリを使用して、リスクの特定、軽減、検証を行います。 モデリング ツールは、システム コンポーネント、データ フロー、およびセキュリティ境界を示し、視覚化するのに役立ちます。
SDLC に脅威モデリングを組み込むと、プロセスのオーバーヘッドが増加し、更新された脅威モデルを維持する必要があります。 ただし、開発の早い段階でセキュリティに対処するため、後で検出された問題を修正するコストが削減されます。
ベスト プラクティス: Azure Well-Architected Framework を適用する
クラウドネイティブ環境に適用される ID 管理、アプリケーション セキュリティ、インフラストラクチャ保護、データ セキュリティ、DevOps に関するガイダンスを提供する セキュリティのベスト プラクティスを適用します。
DevSecOps と運用環境の監視に適用される オペレーショナル エクセレンス のベスト プラクティスを適用します。
開発フェーズ
左にシフトすることは 、DevSecOps の考え方の重要な考え方です。 このプロセスは、コードをリポジトリにコミットし、パイプラインを介してデプロイする前に開始されます。 開発ライフサイクルの早い段階でセキュリティの問題に対処するには、セキュリティで保護されたコーディングのベスト プラクティスを採用し、開発フェーズ中にコード分析に統合開発環境 (IDE) ツールとプラグインを使用します。
ベスト プラクティス: セキュリティで保護されたコーディング標準を適用する
確立されたセキュリティで保護されたコーディングのベスト プラクティスとチェックリストを使用して、インジェクションや安全でない設計などの一般的な脆弱性からコードを保護します。 Open Worldwide Application Security Project (OWASP) 基盤では、コードを記述するときに採用する必要がある業界標準のセキュリティで保護されたコーディングに関する推奨事項が公開されています。 これらのガイドラインは、一般向けの Web アプリケーションまたはサービスを開発する場合に特に重要です。
Java や .NET などの特定のプログラミング言語ランタイムのセキュリティで保護されたコーディングプラクティスを確認します。
アプリケーション ログへの機密情報の漏洩を防ぎ、ログ記録の標準を適用します。 Apache Log4j や Apache log4net などの最も一般的なログ 記録フレームワークには、アカウント番号や個人データなどの機密情報をマスクするためのフィルターとプラグインが用意されています。
ベスト プラクティス: IDE ツールとプラグインを使用してセキュリティ チェックを自動化する
Visual Studio、VS Code、IntelliJ IDEA、Eclipse などの最も一般的な IDE では、アプリケーション コードの記述中に発生する可能性のあるセキュリティの問題に関するフィードバックと推奨事項をすぐに取得するために使用できる拡張機能がサポートされています。
IDE 用 SonarQube は、最も一般的な言語と開発者環境向けの IDE プラグインです。 SOnarQube for IDE はフィードバックを提供し、コードを自動的にスキャンして、一般的なプログラミング エラーや潜在的なセキュリティの問題を検出します。
その他の無料および商用プラグインは、OWASP の上位 10 件の一般的な脆弱性など、セキュリティ固有の項目に重点を置いています。 また、Snyk プラグインは、アプリケーションソースと外部の依存関係をスキャンし、脆弱性が見つかると警告します。
Visual Studio および VS Code 用 の静的分析結果交換形式 (SARIF) プラグインを使用すると、一般的な静的アプリケーション セキュリティ テスト (SAST) ツールの脆弱性を、生の JSON 出力ファイルからの結果を解釈するのとを簡単に確認できます。
ベスト プラクティス: ソース コード リポジトリにコントロールを確立する
企業全体で一貫性を保つための分岐手法を確立します。 リリース フローや GitHub フローなどの手法には、ブランチを使用してチームと並列開発をサポートする方法に関する構造化されたガイドラインがあります。 これらの手法は、チームがコードのコミットと CI/CD ワークフローへのマージの標準と制御を確立するのに役立ちます。
main などの特定のブランチは、アプリケーションのソース コードの整合性を維持する長期的なブランチです。 変更をコミットまたはマージする前に、これらのブランチのマージ ポリシーを確立します。 例えば、あなたは次のことができます:
他の開発者がメイン ブランチに直接コードをコミットできないようにします。
メイン ブランチに変更をマージする前に、ピア レビュー プロセスを確立し、承認の最小数を要求します。 GitHub を使用して、これらのコントロールを構成して適用します。 GitHub を使用して、ゲート環境に必要な場合は、承認された承認者のグループを指定します。
プリコミット フックを使用して、アプリケーションのソース コード内の機密情報を確認し、セキュリティの問題を検出したときにコミットをブロックします。
- GitHub が提供する組み込みの事前コミット フックを使用します。 特定のプロジェクトに対して簡単に構成できます。 たとえば、一部の事前構築済みフックはシークレット、秘密キー、資格情報をスキャンし、これらの問題が見つかるとコミットをブロックします。
バージョン管理システム内で RBAC を確立します。
最小限の特権の原則を使用して、明確に定義されたロールを作成します。 CI/CD パイプラインは、運用デプロイのサプライ チェーンとして機能します。
組織内で確立されたユーザーロールまたはグループ ロール を適用します。 CI/CD ワークフローの特定の役割と機能に基づいて個人をグループ化するには、管理者、開発者、セキュリティ管理者、オペレーターなどのロールを作成します。
ワークフローの 監査を 有効にして、CI/CD パイプラインに構成やその他の変更の透明性と追跡可能性を追加します。
ベスト プラクティス: コンテナー イメージをセキュリティで保護する
最小の OS フットプリントを持つ軽量イメージを使用して、全体的な攻撃対象領域を減らします。 Alpine や、アプリケーションとそれに関連付けられているランタイムのみを含むディストリビューションレス イメージなどの最小限のイメージを検討してください。
コンテナーをビルドするときは、信頼された基本イメージのみを使用します。 脆弱性を頻繁にスキャンするプライベート レジストリからこれらの基本イメージを取得します。
開発者ツールを使用して、イメージの脆弱性をローカルで評価します。 Trivy は、コンテナー イメージ内のセキュリティの脆弱性を分析するオープンソース ツールです。
イメージのルート ユーザー アクセスまたはコンテキストを禁止します。 既定では、コンテナーはルートとして実行されます。
セキュリティ強化が必要なコンテナーの場合は、Kubernetes クラスター内で AppArmor または seccomp プロファイルを使用して、実行中のコンテナーのセキュリティをさらに強化することを検討してください。
ビルド フェーズ
ビルド フェーズ中、開発者はサイトの信頼性エンジニアやセキュリティ チームと協力して、CI ビルド パイプライン内にアプリケーション ソースの自動スキャンを統合します。 Teams は、CI/CD プラットフォームのセキュリティ ツールと拡張機能を使用してセキュリティ プラクティスを有効にするようにパイプラインを構成します。 これらのプラクティスには、SAST、ソフトウェアコンポジション分析 (SCA)、シークレット スキャンが含まれます。
ベスト プラクティス: SAST を実行して、アプリケーションのソース コードで潜在的な脆弱性を見つける
GitHubの高度なセキュリティ スキャン機能を使用して、コード スキャンとCodeQLを実施します。
コード スキャン は、GitHub リポジトリ内のコードを分析して、セキュリティの脆弱性とコーディング エラーを見つける機能です。 GitHub Enterprise Cloud の問題が表示されます。
コード スキャンでコード内の潜在的な脆弱性またはエラーが検出された場合、GitHubはリポジトリにアラートを表示します。
必要な状態チェックのブランチ ルールを構成できます。 たとえば、新しいコードをマージする前に、機能ブランチがベース ブランチと最新であることを要求できます。 この要件により、最新のコードでブランチをテストできます。
コード スキャン アラートに対して AI によって生成された修正候補を受け取るために Copilot Autofix を有効にします。 Copilot Autofix は、プル要求で直接修復を提案します。これにより、開発者はセキュリティの結果をすばやく解決できます。
kube-score などのツールを使用して、Kubernetes デプロイ オブジェクトを分析します。 このツールは、Kubernetes オブジェクト定義の静的コード分析を行います。 アプリケーションの安全性と回復性を高めるために、推奨事項の一覧が出力されます。
ベスト プラクティス: シークレット スキャンを使用して、誤ってコミットされたシークレットを検出する
リポジトリの シークレット スキャンを 有効にすると、GitHub はコードをスキャンして、多くのサービス プロバイダーが使用するシークレットに一致するパターンを探します。
GitHub は、リポジトリ内の既存のコンテンツの完全な Git 履歴スキャンを定期的に実行し、アラート通知を送信します。
Azure DevOps の場合、 Defender for Cloud ではシークレット スキャンを使用して、ソース コード内の資格情報、シークレット、証明書、およびその他の機密性の高いコンテンツを検出し、出力をビルドします。
シークレット スキャンは、Microsoft Security DevOps for Azure DevOps 拡張機能の一部として実行できます。
ベスト プラクティス: SCA ツールを使用してコードベース内のオープンソース コンポーネントを追跡し、依存関係の脆弱性を検出する
依存関係の確認 を使用すると、環境に導入する前に安全でない依存関係をキャッチできます。 また、依存関係のライセンス、依存ライブラリ、バージョンの古さに関する情報も提供します。 プル要求の [ ファイルの変更 ] タブで、依存関係の変更をリッチな差分で表示します。
Dependabot は、セキュリティで保護されていない依存関係を検出するためのスキャンを実行し、新しいアドバイザリが GitHub Advisory Database に追加されたとき、またはリポジトリの依存関係グラフが変更されたときに Dependabot アラートを送信します。
ベスト プラクティス: コンテナー イメージの SBOM を生成する
ソフトウェア部品表 (SBOM) は、コンテナー イメージを構成するコンポーネント、ライブラリ、依存関係の完全なインベントリを提供します。 CI ビルド中に Microsoft sbom-tool や Syft などの SBOM 生成ツールを使用して、SPDX または CycloneDX マニフェストを生成します。
コンテナー レジストリ に格納されているコンテナー イメージに SBOM をアタッチして、ダウンストリームの脆弱性スキャンとサプライ チェーン全体のライセンス コンプライアンス追跡を有効にします。
ベスト プラクティス: デプロイ前に IaC テンプレートをスキャンして誤った構成を検出する
開発ライフサイクル全体を通じて、クラウド リソース構成を事前に監視します。
Microsoft Defender for DevOps では 、GitHub と Azure DevOps の両方のリポジトリがサポートされており、IaC テンプレートをスキャンして IaC の脆弱性を特定できます。
ベスト プラクティス: コンテナー レジストリ内のワークロード イメージをスキャンして既知の脆弱性を特定する
Defender for Containers は、 Container Registry と Amazon Elastic Container Registry (ECR) のコンテナーをスキャンして、イメージの既知の脆弱性を通知します。
Azure Policy を有効にして、Container Registry に格納されているイメージに対して脆弱性評価を行い、各結果に関する詳細情報を提供できます。
ベスト プラクティス: 基本イメージの更新時に新しいイメージを自動的にビルドする
- コンテナー レジストリ タスクは、 コンテナー イメージのビルド時に基本イメージの依存関係を動的に検出します。 アプリケーション イメージの基本イメージの更新が検出されると、その基本イメージを参照するアプリケーション イメージを自動的にリビルドするようにビルド タスクを構成できます。
ベスト プラクティス: コンテナー レジストリ、Key Vault、表記を使用してコンテナー イメージにデジタル署名し、検証済みイメージのみを許可するように AKS クラスターを構成する
Key Vault には、 表記 ツールで使用される署名キーが格納されます。 Key Vault プラグイン (azure-kv) は、これらのキーにアクセスして、コンテナーイメージやその他の成果物に署名を行い、検証します。 これらの署名は、Azure CLI コマンドを使用して Container Registry イメージにアタッチできます。
署名されたコンテナーにより、デプロイは信頼できるソースから取得され、作成後にアーティファクトが改ざんされることはありません。 署名された成果物は、ユーザーが任意の環境に成果物をプルする前に整合性と信頼性を確保し、攻撃を回避するのに役立ちます。
- Ratify は、成果物のセキュリティ メタデータを検証し、Kubernetes クラスターにデプロイする前にアドミッション ポリシーを適用します。 AKS イメージの整合性 では、ポッドがクラスターに許可される前に、イメージ署名と SBOM 構成証明を検証するために、組み込みの検証ツールとして Ratify が使用されます。
デプロイ フェーズ
デプロイ フェーズでは、開発者、アプリケーションオペレーター、およびクラスター オペレーター チームが連携して、CD パイプラインの適切なセキュリティ制御を確立します。 これらのコントロールは、セキュリティで保護された自動化された方法でコードを運用環境にデプロイするのに役立ちます。
ベスト プラクティス: デプロイ パイプラインのアクセスとワークフローを制御する
ブランチ 保護 規則を設定することで、重要なブランチを保護できます。 これらのルールは、コラボレーターがブランチを削除するか、または強制的にプッシュできるかを定義します。 また、状態チェックや線形コミット履歴の受け渡しなど、ブランチへのプッシュの要件も設定します。
環境 をデプロイ に使用して、保護規則とシークレットを構成します。
承認とゲート機能を使用して、デプロイ パイプラインのワークフローを制御します。 たとえば、運用環境にデプロイする前に、セキュリティチームまたは運用チームからの手動承認を要求できます。
ベスト プラクティス: デプロイ資格情報をセキュリティで保護する
OpenID Connect (OIDC) を使用すると、GitHub アクション ワークフローは、有効期間の長い GitHub シークレットとして Azure 資格情報を格納する必要なく、Azure 内のリソースにアクセスできます。
GitOps を使用した CI/CD に対するプルベースのアプローチを使用して、セキュリティ資格情報を Kubernetes クラスターに移行します。 この方法では、外部 CI ツールから資格情報を削除することで、セキュリティとリスクの面を軽減します。 また、許可される受信接続を減らし、Kubernetes クラスターへの管理者レベルのアクセスを制限することもできます。
ベスト プラクティス: DAST を実行して、実行中のアプリケーションの脆弱性を見つける
デプロイ ワークフローで GitHub Actions を 使用して、動的アプリケーション セキュリティ テスト (DAST) テストを実行します。
ZAP などのオープンソース ツールを使用して、一般的な Web アプリケーションの脆弱性の侵入テストを行います。
ベスト プラクティス: 信頼されたレジストリからのみコンテナー イメージをデプロイする
Defender for Containers を使用して、Kubernetes の Azure Policy アドオンを有効にします。
コンテナー イメージのデプロイを信頼されたレジストリに制限するように、Kubernetes 用の Azure Policy を構成します。
運用フェーズ
このフェーズでは、運用の監視とセキュリティ監視のタスクを実行して、潜在的なセキュリティ インシデントを事前に監視、分析、アラートします。 Azure Monitor や Microsoft Sentinel などの運用監視ツールを使用して、企業のセキュリティ標準を監視し、コンプライアンスを確保します。
ベスト プラクティス: Defender for Cloud を使用して、運用構成を自動的にスキャンして監視する
継続的なスキャンを実行して、アプリケーションの脆弱性状態の誤差を検出し、脆弱な画像にパッチを適用して置き換えるプロセスを実装します。
オペレーティング システムの自動構成監視を実装します。
Defender for Cloud のコンテナーの推奨事項 ( コンピューティングとアプリの下) を使用して、AKS クラスターのベースライン スキャンを実行します。 Defender for Cloud では、構成の問題や脆弱性がダッシュボードに表示されます。
Defender for Cloud を使用し、そのネットワーク保護に関する推奨事項に従って 、AKS クラスターのネットワーク リソースをセキュリティで保護します。
Container Registry に格納されているイメージの脆弱性評価を実施します。
- Defender for Containers を有効にして、コンテナー レジストリで実行中のイメージの継続的スキャンを実装します。
ベスト プラクティス: Kubernetes クラスターを最新の状態に保つ
Kubernetes では、新しいバージョンが頻繁にリリースされます。 ライフサイクル管理戦略を保ち、クラスターをサポートし、最新の状態を維持します。 AKS には、クラスターのアップグレードを管理するためのツールが用意されています。 AKS 計画メンテナンス機能を使用して、メンテナンス期間とアップグレードのタイミングを制御します。
AKS ワーカーノードを頻繁にアップグレードします。 Azure では、OS とランタイムの更新プログラムが毎週リリースされます。 これらの更新プログラムは、無人モードで自動的に適用するか、Azure CLI を使用して手動で適用して、より詳細な制御を行います。
ベスト プラクティス: Azure Policy を使用して AKS クラスターをセキュリティで保護および管理する
AKS 用の Azure Policy アドオンをインストールしたら、個々のポリシー定義またはポリシー定義のグループ (イニシアティブまたはポリシー セットと呼ばれます) をクラスターに適用できます。
特権コンテナーの実行を防いだり、外部 IP アドレスを許可リストに制限したりするなどの一般的なシナリオでは、 組み込みの Azure ポリシー を使用します。 特定のユース ケースのカスタム ポリシーを作成することもできます。
クラスターにポリシー定義を適用し、Azure Policy によってそれらの割り当てが適用されることを確認します。
Gatekeeper を使用して、指定された規則に基づいてデプロイを許可または拒否するアドミッション コントローラーを構成します。 Azure Policy は Gatekeeper を拡張します。
AKS のネットワーク ポリシーを使用してワークロード ポッド間のトラフィックをセキュリティで保護します。
- Azure CNI Powered by Cilium をネットワーク ポリシー エンジンとして使用します。 Cilium は eBPF ベースのデータ プレーンを使用し、Kubernetes ネイティブ ポリシー、レイヤー 7 ポリシー、FQDN フィルタリングをサポートします。
ベスト プラクティス: Azure Monitor を使用した継続的な監視とアラート
Azure Monitor を使用して、AKS からログとメトリックを収集します。 Prometheus の Azure Monitor マネージド サービスを使用して Prometheus メトリックを収集し、Log Analytics でコンテナーとプラットフォームのログを照会し、Azure Managed Grafana ダッシュボードを使用してクラスターの正常性を視覚化します。
Azure Monitor は、継続的な監視を拡張してパイプラインをリリースします。 監視データを使用して、リリースを承認またはロールバックします。 Azure Monitor では、疑わしいアクティビティに関するセキュリティ ログとアラートも取り込まれます。
AKS インスタンスを Azure Monitor に登録し、クラスターの診断設定を構成します。
詳細については、 AKS の Azure セキュリティ ベースラインに関するページを参照してください。
ベスト プラクティス: Defender for Cloud を使用したアクティブな脅威の監視
Defender for Cloud では、ノード レベル (VM の脅威) とクラスター ワークロードでの AKS に対するアクティブな脅威の監視が提供されます。
Defender for DevOps を使用して、すべての CI/CD パイプラインを包括的に可視化します。 セキュリティチームとオペレーターチームに一元化されたダッシュボードを提供します。 特に、Azure DevOps や GitHub などの複数のパイプライン プラットフォームを使用する場合や、パブリック クラウド間でパイプラインを実行する場合は、この一元化された可視性のメリットがあります。
Defender for Key Vault は、キー コンテナー アカウントにアクセスしようとする異常で疑わしい試行を検出し、構成に基づいて管理者にアラートを送信できます。
Defender for Containers は、コンテナー レジストリに格納されているコンテナー イメージ内で見つかった脆弱性に関するアラートを生成できます。
ベスト プラクティス: ログの一元的な監視を有効にし、SIEM 製品を使用してリアルタイムのセキュリティ脅威を監視する
- AKS 診断ログを Microsoft Sentinel に接続して、パターンとルールに基づいて一元的なセキュリティ監視を行います。 Microsoft Sentinel では、 データ コネクタ経由でこのアクセスを有効にします。
ベスト プラクティス: 監査ログを有効にして運用クラスターのアクティビティを監視する
アクティビティ ログを使用して AKS リソースのアクションを監視し、すべてのアクティビティとその状態を表示します。 リソースに対してどの操作を実行したかを特定します。
CoreDNS カスタム ConfigMap に文書化された構成を適用して、 ドメイン ネーム システム (DNS) クエリ ログ を有効にします。
非アクティブ化された資格情報へのアクセスの試行を監視します。
AKS のユーザー認証をMicrosoft Entra IDと統合します。 Microsoft Entra ID の診断設定を作成し、 監査ログとサインイン ログを Log Analytics ワークスペースに送信します。 Log Analytics ワークスペース内で、非アクティブ化されたアカウントからのサインイン試行など、セキュリティ イベントのアラートを構成します。
ベスト プラクティス: Azure リソースで診断を有効にする
- ワークロードのすべてのリソースで Azure Diagnostics を有効にして、詳細な診断および監査情報を提供するプラットフォーム ログにアクセスします。 これらのログは、Log Analytics または Microsoft Sentinel などの SIEM ソリューションに取り込んで、セキュリティの監視とアラートを行うことができます。
貢献者
Microsoft では、この記事を保持しています。 この記事を書いたのは、以下の寄稿者です。
主要著者:
- アドナン・カーン |クラウド ソリューション アーキテクト
その他の共同作成者:
- あよばみあよでじ |プログラム マネージャー 2
- アーメッド・バム |クラウド ソリューション アーキテクト
- チャド・キットテル |プリンシパル ソフトウェア エンジニア - Azure パターンとプラクティス
- ジョン・プール |クラウド ソリューション アーキテクト
- バラム・ルセナス |ソリューション アーキテクト
- アベド・サウ |クラウド ソリューション アーキテクト
公開されていない LinkedIn プロフィールを見るには、LinkedIn にサインインしてください。