Azure Container AppsでAzure Functionsのシークレットを管理する

Azure Container AppsでAzure Functionsを実行すると、次の 2 つのカテゴリのシークレットを操作できます。

カテゴリ 説明 使用者
アプリ レベルのシークレット データベース接続文字列、API キー、トリガー/バインド資格情報など、関数コードが実行時に読み取る構成値。 コードと Functions ランタイムのバインディング。
関数のアクセスキー マスター、ホスト、関数、システム キーなど、HTTP によってトリガーされる関数エンドポイントをセキュリティで保護する認証トークン (アクセス キー)。 HTTP 関数の外部呼び出し元 (サービス、Webhook、開発者)。

次の 2 つのカテゴリの 方向が異なります。

アプリレベルのシークレット アクセス キーの機能
方向 送信 - 関数が他のサービスに対して認証を行う 受信 - 呼び出し元が関数に対して認証を行う
シークレットを保持するユーザー 関数アプリ 呼び出し元 (webhook プロバイダー、サービス、開発者)
保護対象 関数が接続するもの HTTP エンドポイントを呼び出すことができるのは誰か
による検証済み ターゲット サービス 関数のランタイム

アプリレベルのシークレット

アプリ レベルのシークレットは、関数コードとバインドが外部サービスに接続するために必要な資格情報です。 次の 2 つの方法で格納できます。

オプション 最適な用途 回転 監査 ガイド
Container Apps のシークレット 開発/テスト、単純なシングルアプリ ワークロード マニュアル アクティビティ ログのみ アプリ レベルのシークレットを格納する
Key Vault の参照 運用、マルチアプリ、コンプライアンス 自動 (バージョンレス URI) Key Vaultの完全診断 アプリ レベルのシークレットを格納する

ヒント

わかりやすくするために、Container Apps のシークレットから始めます。 一元管理、自動ローテーション、またはコンプライアンス グレードの監査が必要な場合は、Key Vault参照に移動します。

アクセス キーの機能

アクセス キーは、HTTP エンドポイントに軽量の共有シークレット認証を提供します。 アクセス キーは、呼び出し元がサード パーティの Webhook、サービス間呼び出し、開発中などのMicrosoft Entra IDトークンを提示できない場合に使用します。

AzureWebJobsSecretStorageType環境変数を設定して、ストレージ バックエンドを選択します。

バックエンド 値を設定する 最適な用途 ガイド
Container Apps シークレット ストア containerapps ほとんどのワークロード - 外部依存関係なし (推奨) ホスト キーの構成
Azure Key Vault keyvault 一元化されたガバナンス、コンプライアンス監査 ホスト キーの構成
Azure Blob Storage blob レガシーアプリまたは既存のAzureWebJobsStorage依存関係 ホスト キーの構成
ローカル ファイル システム files コンテナー アプリではお勧めしません - 警告を参照してください N/A

以下のバックエンドの考慮事項を念頭に置いてください:

  • ランタイムはコンテナアプリの秘密ストレージを自動的に選択しません。 AzureWebJobsSecretStorageTypeを設定しなかったり、認識されない値に設定した場合、FunctionsホストはAzureWebJobsStorage利用可能なときに使うBlob Storageを使用します。
  • ストレージの健康チェックやストレージ依存機能の設定 AzureWebJobsStorage 保持してください。
  • AzureWebJobsSecretStorageTypefiles に設定しないでください。 コンテナアプリのファイルシステムは一時的であるため、このバックエンドに保存された鍵は、アプリがゼロにスケールしたり再起動したり、新しいリビジョンを展開したりすると失われます。

次のステップ

管理する必要があるシークレットの種類に一致するガイドを選択します。