Azure Function App - Azure Defender コンプライアンス

Azure Function App - Azure Defender コンプライアンス

Azure 上の Azure Defender には、Azure Function 認証用の 2 つのポリシーがありますが、HTTP 呼び出しをサポートする他の A​​zure リソースからは実装できません。

  • 関数アプリではクライアント証明書(受信クライアント証明書)が有効になっている必要があります
  • 関数アプリでは認証が有効になっている必要があります

Azure Datafactory で、システム管理 ID として認証を選択し、ヘッダーで証明書を渡そうとすると、Microsoft ではサポートされません (サポート チケットで「2 つの異なるタイプの認証で同時に認証できる場合が非常にまれにありますが、MSI 認証で十分なはずです」と説明されています)。

システム管理ID認証

関数アプリでクライアント証明書と認証を有効にして、クライアントの認証に成功した人はいますか? ロジック アプリまたはデータ ファクトリのクライアント側の構成を共有できますか?

答え1

使用事例についてさらに詳しく教えていただければ、質問に回答しやすくなります。とはいえ、私の仮定に基づいて回答してみます。(大胆に

Azure Data Factory の Web アクティビティを使用して Azure 関数を呼び出します。

残念ながら、Web アクティビティでは、システム割り当てマネージド ID とクライアント証明書の認証方法を同時に使用することはできません。

それでも両方の方法を同時に使いたい場合は

  1. WebアクティビティでマネージドID認証をオンにする必要があります。
  2. 証明書をカスタム ヘッダーで渡し、Azure 関数のコード内で検証します。

カスタムヘッダーで証明書を渡すことは、組み込みのAzure Functionsとは何の関係もありません。クライアント証明書モードクライアント証明書モードはオンのままにしておく必要があります無視するAzure 関数の全般設定で状態を確認します。この場合、Azure 関数のフロントエンド ロード バランサーは、ヘッダーをクライアント コードに透過的に転送します。

Azure Function への認証に 2 つの独立した方法を提供する

Azure Functionがクライアントに2つのメソッドを独立して提供できるようにする場合は、許可するAzure 関数のクライアント証明書モード設定のオプション。この場合、クライアントは最初にフロントエンド ロード バランサーから証明書の入力を求められます。証明書が提供されていない場合、ロード バランサーは Easy-Auth ミドルウェアに要求を転送し、呼び出し元を認証します。認証されていない要求はミドルウェアによってブロックされます。

このフォールバック方法を使用すると、2 つの認証方法を個別に提供できます。私の想定が正しいかどうか、または提案されたソリューションを実現するためにコンポーネントを構成する方法の詳細が必要な場合は、お知らせください。

関連情報