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 共有が可能です。
マネージド ID のセキュリティ上の利点
- アプリケーション コードで資格情報を管理およびローテーションする必要がなくなります
- 構成ファイルで資格情報が公開されるリスクを軽減します
- Azure RBAC を使用してきめ細かいアクセス制御を提供する
- 必要なアクセス許可のみを付与することで、最小限の特権の原則をサポートします
各 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 統合を使用して、一元化されたシークレット管理を行います。
- シークレットへのアクセスを許可する場合は、最小限の特権を実装します。
- 値をハードコーディングする代わりに、環境変数でシークレット参照を使用します。
- ボリューム マウントを使用して、必要に応じてシークレットにファイルとしてアクセスします。
- 適切なシークレット ローテーションプラクティスを実装します。
詳細については、アプリケーションのシークレット管理を設定する方法の詳細については、 Azure Key Vault からの証明書のインポート に関するページを参照してください。
セキュリティで保護された認証用のトークン ストア
トークン ストア機能は、アプリケーション コードとは無関係に認証トークンを管理する安全な方法を提供します。
トークン ストアのしくみ
- トークンは、アプリケーション コードとは別に Azure Blob Storage に格納されます
- キャッシュされたトークンにアクセスできるのは、関連付けられているユーザーだけです。
- Container Apps はトークンの更新を自動的に処理します。
- この機能は、カスタム トークン管理コードを排除することで攻撃対象領域を減らします。
詳細については、アプリケーションのトークン ストアを設定する方法の詳細については、「 認証トークン ストアを有効にする 」を参照してください。
ネットワークのセキュリティ
適切なネットワーク セキュリティ対策を実装すると、承認されていないアクセスや潜在的な脅威からワークロードを保護できます。 また、アプリと他のサービス間の安全な通信も可能になります。
Azure Container Apps のネットワーク セキュリティの詳細については、次の記事を参照してください。
- WAF Application Gateway の構成
- ユーザー定義ルート (UDR) を有効にする
- ルール ベースのルーティング
機密コンピューティング (プレビュー)
Azure Container Apps には、ハードウェア ベースの信頼された実行環境 (TE) 内でコンテナー化されたワークロードを実行する機密コンピューティング ワークロード プロファイル (パブリック プレビュー) が含まれています。 コンフィデンシャル コンピューティングは、メモリを暗号化し、コードを実行する前に環境を構成証明することで、使用中のデータを保護することで、保存時および転送中の Azure 暗号化を補完します。 この機能は、クラウド オペレーターからのアクセスなど、機密性の高いワークロードへの不正アクセスのリスクを軽減するのに役立ちます。
アプリケーションが規制対象または機密性の高いデータを処理し、構成証明ベースの保証を必要とする場合は、機密コンピューティング ワークロード プロファイルを使用します。 プレビューはアラブ首長国連邦北部で入手できます。 プラットフォーム機能の概要については、 Azure コンフィデンシャル コンピューティングに関するページを参照してください。