2017-12-24 5 views
0

でKeyVaultへの接続を防止:記事でhttps://medium.com/statuscode/getting-key-vault-secrets-in-azure-functions-37620fd20a0bマネージドサービスIDを使用しますが、私はこの記事の次に私Azureの機能のアプリでAzureのKeyVaultを実装しようとしているデバッグモード

、機能のアプリは(Managed Service Identityを使用するように設定されていますMSI)ので、Azure KeyVaultに接続するためにトークンを取得するために秘密を使用する必要はありません。これは、Azure KeyVaultを使用する目的を無効にするためです。私の理解では、Azureのアプリは、このようにトークンを取得する必要がなくなるため、接続プロセスを簡素化し、他のAzureのリソースが直接それを認識するようにMSIを使用するために登録することができ

など

しかし、私は私のAzure関数のアプリケーションをデバッグする、私は必要な秘密を取得するAzure KeyVaultに接続することができません。

機能アプリがデバッグ時にローカルで実行され、Azureでは実行されていない可能性があります。

これが私がKeyVaultに接続できない理由ですか?

答えて

1

はい残念ながら、MSIはAzure関数サービス内で実行している場合にのみトークンを取得します。私はDEBUGモードの場合、ローカル変数からシークレットを引き出すために使用する新しい#if領域を1週間ほど前にサンプルを更新しました。

https://github.com/jeffhollan/functions-csharp-keyvault-eventhub/blob/master/ScaleTestV1_NoHost/Http.cs

+0

私の機能アプリはローカルでは問題なく動作していますが、Azureでは機能しません。 Azure Key Vaultから秘密を読むのに問題があるようです。あなたのコードでは、私がAzure関数にどのキーボルトに接続するかを伝えているところはわかりません。機能アプリは、キーボルトが値を取得するために呼び出すものをどのように知っていますか? – Sam

+0

@Sam GetSecretAsync呼び出しに渡されたSecret Id(Environment.GetEnvironmentVariable( "EventHubSecretId")))は、その情報をその一部として持っています。 * https:// {keyvault-name} .vault.azure.net/{オブジェクトタイプ}/{オブジェクト名}/{オブジェクトバージョン} *の形式をとります。 –

関連する問題