Azure クラウドおよびコンテナのセキュリティ・ベストプラクティス
マイクロソフトのAzureクラウドは、総市場シェアが20%を超える水準を維持し、近年、パブリッククラウドコンピューティング市場における主要な競合他社の一つに成長しました。同時に、Azureクラウドのセキュリティは、ますます多くの企業にとって重要な課題となっています。
Azureのセキュリティは、主要なパブリッククラウドプラットフォームのセキュリティと多くの点で同じ実践方法と原則に基づいているものの、Azureのセキュリティ戦略を策定する際には、重要な違いと微妙な点について理解しておく必要があります。以下では、Azureクラウドセキュリティの基礎を解説し、その後、Azureセキュリティのベストプラクティスについて議論していきます。
Azure の共同責任モデル
すべてのパブリック クラウドと同様に、Azure は共同責任モデルを使用して、顧客が担当するセキュリティ タスクと Azure が担当するセキュリティ タスクを定義しています。Azure の責任分担の概念を理解することは、Azure クラウド セキュリティ戦略を構築する上で最初のステップです。この戦略により、Azure がクラウド環境内で監督しないセキュリティの責任を管理することができます。
Azure は、責任分担モデルの詳細をこちらで説明していますが、その概要は次のとおりです。
- Azure は、SaaS サービス上で顧客が作成したデータまたはアプリケーションを除き、SaaS サービスに関するほとんどのセキュリティ責任を負います。
- 顧客は、Azure PaaS サービスに展開されたワークロードのセキュリティ確保について Azure と責任を共有します。この文脈では、Azure は基盤となる物理インフラストラクチャのセキュリティを確保しますが、ネットワークおよびアイデンティティとアクセス管理(IAM)に関するほとんどの責任は顧客に帰属します。
- Azure IaaS サービスでは、顧客がほとんどのセキュリティタスクを処理します。例外は、Azure がセキュリティを確保する基盤となる物理インフラストラクチャです。
- 顧客が Azure のハイブリッドクラウドフレームワーク(Azure Stack や Azure Arc など)を介してオンプレミスインフラストラクチャ、アプリケーション、またはデータを Azure と統合する場合、オンプレミスリソースのセキュリティ確保に関するすべての責任は顧客にあります。
クラウドの共有責任モデルに慣れている方であれば、上記の内容は驚くべきことではないでしょう。Azureの共有責任アーキテクチャは、他の主要なパブリッククラウドプロバイダーが採用しているモデルと非常に一貫しています。
Azure クラウドのセキュリティ・ベストプラクティス
使用するAzureクラウドサービスの種類に基づいて、自分に課せられるセキュリティの責任を特定したら、セキュリティ義務を満たす Azure セキュリティ戦略を計画できます。
標準的なクラウドセキュリティ・ベストプラクティス
この点に関して従うべきベストプラクティスの多くは、主要なパブリッククラウド環境をセキュリティで保護するための標準的な手法です。その中には、次のようなものがあります。
- IAM を使用する:アイデンティティおよびアクセス管理 (IAM) は、パブリッククラウドのワークロードをセキュリティで保護するための基本的なツールです。Azure を使用する場合は、最小権限の原則に基づいてクラウド リソースへのアクセスを管理してください。後述するように、Azure IAM は Active Directory を基盤としているため、他のクラウド IAM と動作が若干異なりますが、Azure でも他の主要なパブリック クラウドで適用可能なのと同じ詳細なアクセス制御構成を実現できます。たとえば、次の Azure IAM ロールの例では、仮想マシンを監視および再起動できるロールを作成しています:
{
"Name": "Virtual Machine Operator",
"Id": "88888888-8888-8888-8888-888888888888",
"IsCustom": true,
"Description": "Can monitor and restart virtual machines.",
"Actions": [
"Microsoft.Storage/*/read",
"Microsoft.Network/*/read",
"Microsoft.Compute/*/read",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Authorization/*/read",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Insights/alertRules/*",
"Microsoft.Insights/diagnosticSettings/*",
"Microsoft.Support/*"
],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/{subscriptionId1}",
"/subscriptions/{subscriptionId2}",
"/providers/Microsoft.Management/managementGroups/{groupId1}"
]
}
- クラウド ネットワークを分離する: 可能であれば、プライベート クラウドを使用して、ネットワーク レベルでクラウド環境を分離してください。これらのサービスは、すべての種類の Azure ワークロードで使用できるわけではありませんが、ほとんどの IaaS および PaaS ベースのワークロード (および一部の SaaS ベースのワークロード) は、プライベート ネットワークまたは仮想プライベート クラウドで分離することができます。
- クラウド タグを使用する: 他のほとんどのクラウドと同様、Azure ではタグを使用してリソースにラベルを付け、整理することができます。タグが付けられていないクラウド リソースは必ずしも安全ではないわけではありませんが、タグを使用すると、実行中のクラウド リソースとその場所を簡単に追跡できるため、セキュリティの観点から有益です。その結果、アクセス制御の構成やクラウド環境の監査などを行う際に、一部のワークロードを見落とすことを防ぐことができます。
- Azure データのセキュリティ保護: Azure IAM を使用して、Azure Blob Storage または Azure 内の他のストレージ サービスに保存したデータへのアクセスを管理することに加え、クラウド データと、データへのアクセスに使用するトランスポート層も暗号化する必要があります。Azure には、クラウド データの不正な改ざんを防ぐのに役立つストレージ アカウントの「ロック」機能も用意されています。
Azure のセキュリティに関する特別な考慮事項
一般的なクラウドセキュリティのベストプラクティスに加えて、Azure 独自の仕様を考慮して、Azure クラウドのセキュリティ戦略に組み込む必要があります。
- Azure IAM を理解する:前述のように、Azure の IAM システムは、Microsoft Active Directory をベースとしている点で、主要なパブリッククラウドの中で独特です。Azure IAM を使用すると、非常に効果的なアクセスポリシーを構成および実施できますが、ポリシーの記述方法および管理方法は、AWS などのクラウドとは異なります。Active Directory をこれまで使用したことがない場合は、Azure Active Directory および Azure クラウド IAM におけるその役割について、時間をかけて学習することをお勧めします。
- ハイブリッドクラウドサービスを賢く活用する:Azure は、Azure Stack および Azure Arc の導入により、近年ハイブリッドクラウドサービスに多額の投資を行ってきました。これらのサービスにより、お客様はオンプレミスまたはコロケーションのインフラストラクチャを Azure を通じて管理することができます。前述のように、Azure は顧客がプライベートインフラストラクチャのほとんどのセキュリティリスクを管理することを想定しています。したがって、Azure がプライベートインフラストラクチャを管理しているからといって、そのセキュリティも確保されていると仮定してはなりません。
- Azure セキュリティツール:Azure は、ワークロードのセキュリティ確保と監査を支援するクラウド専用のセキュリティツールを提供しています。最も重要な 2 つは、Azure Defender です(Azure Defender は技術的には Azure Security Center の一部ですが、独立したサービスとして動作します)。これらのサービスは、Azure 自体および Azure を含むハイブリッド クラウド環境におけるセキュリティ イベントやリスクに関連するアラートの構成および管理に役立ちます。通常、Azure のネイティブ サービスでは対応できないリスクを管理するには、外部のセキュリティ ツールも併用することをお勧めしますが、Azure がネイティブで提供する基本的なセキュリティ サービスについてはよく理解しておく必要があります。
Azure コンテナの セキュリティ・ベストプラクティス
コンテナサービスは Azure 内で最も重要な製品サービスの 1 つとなっているため、Azure での コンテナのセキュリティ管理方法について少しご説明いたします。
Azure では複数のコンテナサービスを提供しているため、このトピックは複雑です。最も注目すべきものは次のとおりです。
- Azure Kubernetes Services (AKS)、マネージド Kubernetes サービス。
- Azure Container Instances:Kubernetes や他のオーケストレーションサービスを使用する必要のない、マネージドコンテナサービス。
- Azure Red Hat OpenShift:マネージド OpenShift サービス。(OpenShift は Kubernetes をベースにしていますが、これと同じものではありません。)
- Azure Web App for Containers:オーケストレーションやインフラストラクチャを自分で管理する必要なく、コンテナを迅速にデプロイできるサービス。
Azure でのコンテナのセキュリティは、使用するサービスの種類によって大きく異なります。ただし、一般的に、Azure コンテナのセキュリティに関するベスト プラクティスは次のとおりです。
- Azure はイメージ内の脆弱性やマルウェアを自動的に検出しないため、コンテナ イメージをスキャンしてください。
- Azure のネイティブ コンテナ レジストリ サービスを使用する場合も、サード パーティのレジストリを使用する場合も、コンテナ レジストリへのアクセスを管理してください。
- コンテナ環境に Kubernetes が含まれている場合は、セキュリティコンテキストを使用して、環境のセキュリティを確保してください。これは、AKS などのマネージド Kubernetes サービスを使用している場合でも重要です。AKS では、Azure は主にクラスタ インフラストラクチャのセキュリティのみを確保します。Kubernetes 自体およびそこにデプロイされたコンテナのセキュリティ確保は、お客様の責任となります。
- コンテナおよび Kubernetes の構成データ、デプロイ、その他のファイルを監査して、セキュリティポスチャの弱体化につながる設定ミスを検出してください。
強力な Azure クラウドセキュリティポスチャの構築
世界最大級のクラウドコンピューティングプラットフォームであるAzureは、シングルクラウド、マルチクラウド、ハイブリッドクラウドモデルの一部として導入できる数十種類のクラウドサービスを提供しています。この複雑さのため、Azure クラウド環境をセキュリティで保護するための簡単な方法はありません。
ただし、利用している Azure サービスに基づいて管理する必要のあるセキュリティリスクを特定し、それらのサービスを攻撃から強化し、侵害が発生した場合に検出できるツールを展開することで、最も強固な Azure クラウドセキュリティ態勢を構築できます。
