Azure Container Apps には、セキュリティで保護されたコンテナー化されたアプリケーションの構築に役立つ組み込みのセキュリティ機能がいくつか用意されています。 このガイドでは、マネージド ID、シークレット管理、トークン ストアなどの主要なセキュリティ原則について説明すると同時に、セキュリティで保護されたスケーラブルなアプリケーションの設計に役立つベスト プラクティスを提供します。
管理されたアイデンティティー
マネージド ID では、 Microsoft Entra ID で自動的にマネージド ID を指定することで、コードまたは構成に資格情報を格納する必要がなくなります。 コンテナー アプリでは、これらの ID を使用して、Azure Key Vault、Azure Storage、Azure SQL Database など、Microsoft Entra 認証をサポートする任意のサービスに対する認証を行うことができます。
マネージド ID の種類
Azure Container Apps では、次の 2 種類のマネージド ID がサポートされています。
システム割り当て ID: コンテナー アプリのライフサイクルに合わせて自動的に作成および管理されます。 アプリが削除されると、ID が削除されます。
ユーザー割り当て ID: 個別に作成され、複数のコンテナー アプリに割り当てることができ、リソース間での ID 共有が可能です。
Azure Container Appsでのマネージド ID のセキュリティ上の利点
- アプリケーション コードで資格情報を管理およびローテーションする必要がなくなります
- 構成ファイルで資格情報が公開されるリスクを軽減します
- Azure RBAC を使用してきめ細かいアクセス制御を提供する
- 必要なアクセス許可のみを付与することで、最小限の特権の原則をサポートします
システム割り当て ID とユーザー割り当て ID の選択
次のワークロードには、システム割り当て ID を使用します。
- 1 つのリソース内に含まれている
- 独立した ID が必要
ワークロードにユーザー割り当て ID を使用する:
- 1 つの ID を共有する複数のリソース間で実行する
- リソースをセキュリティで保護するために事前認証が必要
イメージ プルのマネージド ID
一般的なセキュリティ パターンは、 マネージド ID を使用して Azure Container Registry のプライベート リポジトリからイメージをプルすることです。 この方法の特徴は次のとおりです。
- レジストリの管理者資格情報の使用を回避する
- ACRPull ロールを使用してきめ細かいアクセス制御を提供します
- システム割り当て ID とユーザー割り当て ID の両方をサポート
- 特定のコンテナーへのアクセスを制限するように制御できます
詳細については、マネージド IDに関するページと、マネージド ID を使用した Azure Container Registry からのイメージ プルのページをご参照いただき、アプリケーションのマネージド ID 設定方法をご確認ください。
シークレットの管理
Azure Container Apps には、接続文字列、API キー、証明書などの機密性の高い構成値を安全に格納してアクセスするための組み込みメカニズムが用意されています。
主なシークレット管理機能
- シークレットの分離: シークレットをアプリケーション レベルにスコープし、特定のリビジョンから分離します。
- 環境変数参照: 環境変数としてコンテナーにシークレットを公開します。
- ボリューム マウント: シークレットをコンテナー内のファイルとしてマウントします。
- Key Vault の統合: Azure Key Vault に格納されている参照シークレット。
シークレット管理のベスト プラクティス
- 運用環境用の Container Apps にシークレットを直接格納しないようにします。
- Azure Key Vault 統合を使用して、一元化されたシークレット管理を行います。
- シークレットへのアクセスを許可する場合は、最小限の特権を実装します。
- 値をハードコーディングする代わりに、環境変数でシークレット参照を使用します。
- ボリューム マウントを使用して、必要に応じてシークレットにファイルとしてアクセスします。
- 適切なシークレット ローテーションプラクティスを実装します。
詳細については、「Import certificates from Azure Key Vault」を参照して、アプリケーションのシークレット管理を設定する方法を確認してください。
認証セキュリティ用のトークン ストア
トークン ストア機能は、アプリケーション コードとは無関係に認証トークンを管理する安全な方法を提供します。
認証トークン ストアのしくみ
- システムはトークンをAzure Blob Storageに格納し、アプリケーション コードから分離します。
- キャッシュされたトークンにアクセスできるのは、関連付けられているユーザーだけです。
- Container Apps はトークンの更新を自動的に処理します。
- この機能は、カスタム トークン管理コードを排除することで攻撃対象領域を減らします。
詳細については、アプリケーションのトークン ストアを設定する方法の詳細については、「 認証トークン ストアを有効にする 」を参照してください。
ネットワークのセキュリティ
適切なネットワーク セキュリティ対策を実装すると、承認されていないアクセスや潜在的な脅威からワークロードを保護できます。 また、アプリと他のサービス間の安全な通信も可能になります。
Azure Container Apps のネットワーク セキュリティの詳細については、次の記事を参照してください。
- WAF Application Gateway の構成
- ユーザー定義ルート (UDR) を有効にする
- ルール ベースのルーティング
コンフィデンシャル コンピューティング (プレビュー)
Azure Container Appsには、ハードウェア ベースの信頼された実行環境 (TE) 内でコンテナー化されたワークロードを実行する機密コンピューティング ワークロード プロファイルが含まれています。 コンフィデンシャル コンピューティングは、コードの実行前にメモリ暗号化と環境構成証明を通じて使用中のデータを保護することで、保存時および転送中のAzure暗号化を補完します。 この機能は、クラウド オペレーターからのアクセスなど、機密性の高いワークロードへの不正アクセスのリスクを軽減するのに役立ちます。
アプリケーションが規制対象または機密性の高いデータを処理し、構成証明ベースの保証を必要とする場合は、機密コンピューティング ワークロード プロファイルを使用します。 サポートされているリージョンとプラットフォームの機能の概要については、Azureコンフィデンシャル コンピューティングを参照してください。
構成の詳細については、Azure Container Apps での Confidential compute を参照してください。
Microsoft Defender for Cloud のサーバーレス コンテナーのセキュリティ態勢 (プレビュー)
Microsoft Defender for Cloudには、Azure Container Apps用の CSPM のサーバーレス コンテナーポスチャ機能が含まれています。 これらの機能により、Azure Container Apps ワークロードのインベントリ、体制評価、攻撃パス分析が提供されるため、セキュリティ チームはコンテナー アプリ環境のリスクを特定して優先順位を付けることができます。 オンボードのガイダンスと機能の詳細については、 サーバーレス保護に関するページを参照してください。