どのようにAzureアプリの設定とキーVaultを設定するには.ネットコアプロジェクト
9304 ワード
これは基本的な“ハウツードキュメント”ブログAzureアプリの設定とキーVaultを構成する上で.NETコアプロジェクト.
トピック Azureアプリケーションの設定 AzureキーVaultの設定 設定.サンプルコードを使用した キーVaultにおけるアクセスポリシーの設定 キーコードから秘密を取得するアプリケーションコードの認証 免責事項:おそらく、あなたは、MSFT公式ドキュメンテーションでこれに関する情報を見ることができました.しかし、このブログは、すべての混乱を削除するキュレーションステップを与える.
あなたがAzureで以下をするためにアクセスをすることを確認してください. アプリケーションの設定 Azureキーボールトの作成 新しく作成されたキーVaultのアクセスポリシーを編集 Azureでホストされているアプリケーションのシステム割り当てマネージIDを有効にする Azureアクティブディレクトリにアプリケーションを登録する(オプション)
Azure App Configuration あなたのアプリは、任意の環境依存性のないことができるようにazureであなたのアプリケーションの設定の詳細を維持することができます.これは、単一の設定プロパティの異なる環境の値を維持するために使用できるラベルがあります.
Key Vault Azureのリソースは、マネージアイデンティティまたはサービスプリンシパル認証を介してアプリケーションによってアクセスできる秘密情報を格納することです.
Managed Identities は、資格情報を管理する必要性を排除するアイデンティティを通してAzureリソースを横切って認証するのに使用されます.このブログではSystem-assigned managed identity 我々はそれがキーVaultの秘密にアクセスできるようになりますAzureアプリサービスの.
フォローthis 新しいAzureアプリケーション構成リソースを作成し、設定プロパティをストアに追加します.
すべてのキーは、さまざまな環境に使用することができます別のラベルでより多くの値を追加するオプションがあります.ここでは、1つのキーに2つの値を表示する設定エクスプローラのスクリーンショットを示します.
これらの値をアプリケーションで取得するには
フォローthis 新しいAzureキーVaultリソースを作成します.このブログのために、私たちはパスワード/クライアントの秘密を格納するために一人で秘密を見ていきます.チェックthis キーVaultの秘密を作成する方法について.
キーVaultから秘密の値を取得するには
これを行うには、秘密は、新しいキー値としてアプリケーションの構成で参照することです.チェックthis アプリの設定でKVリファレンスを追加する方法に関する記事.
アプリケーション構成は、キーVaultの秘密にアクセスするためにそれ自体をロードするのに用いられるアイデンティティを使用します.これは次のステップで設定するものです.今のところ、アプリケーションの設定は、以下のスクリーンショットのようになります.
ここではgithubのサンプルアプリです.
https://github.com/venbacodes/AppConfigKVSample
Azureアプリ構成に接続するには、パッケージが必要になります
これは、app - config接続文字列を読み込みます.JSONファイル
アプリケーションの設定からデータを取得しながら、我々は実際にキーと値を環境に基づいてフィルタリングされます.
キーVaultのアクセスポリシーセクションは、Azure Active Directoryから作成されたマネージIDを使用してアプリケーションとユーザーのアクセス許可を割り当てる場所です.
ここでは、このセクションのスクリーンショットです.
Azure App Servicesのシステム割り当てマネージIDまたはAzureアカウントのIDをキーVaultに接続するために使用できます.私はあなた自身のAzureアカウントを認証するために使用し、Visual Studioにログインして使用してキーVaultに接続することをお勧めします
フォローthis KAPLを構成している間、アプリケーションをAzure広告に登録して、資格情報をセットするためにそれから以下の詳細を得てください.
Azure App Servicesのアイデンティティを使用するには、以下のように有効にする必要があります.
これが完了したら
成功した認証を完了するには、校長としてKVの下にアクセスポリシーセクションで、この新しく登録されたアプリを追加し、秘密を読むにアクセスできます.
上記の手順を完了したら、現在の設定でアクセスできます
トピック
必要条件
あなたがAzureで以下をするためにアクセスをすることを確認してください.
と言われるAzure
Azure App Configuration あなたのアプリは、任意の環境依存性のないことができるようにazureであなたのアプリケーションの設定の詳細を維持することができます.これは、単一の設定プロパティの異なる環境の値を維持するために使用できるラベルがあります.
Key Vault Azureのリソースは、マネージアイデンティティまたはサービスプリンシパル認証を介してアプリケーションによってアクセスできる秘密情報を格納することです.
Managed Identities は、資格情報を管理する必要性を排除するアイデンティティを通してAzureリソースを横切って認証するのに使用されます.このブログではSystem-assigned managed identity 我々はそれがキーVaultの秘密にアクセスできるようになりますAzureアプリサービスの.
アプリケーションの設定
フォローthis 新しいAzureアプリケーション構成リソースを作成し、設定プロパティをストアに追加します.
Configuration Explorer
下Operations
, Configプロパティを見て編集することができます.すべてのキーは、さまざまな環境に使用することができます別のラベルでより多くの値を追加するオプションがあります.ここでは、1つのキーに2つの値を表示する設定エクスプローラのスクリーンショットを示します.
これらの値をアプリケーションで取得するには
Connection String
それはユニークに下で生成されますAccess Keys
が必要です.アプリケーションの設定ストアに接続するために我々のアプリケーションで使用されるこのページから接続文字列を取得します.Azureキーボールトの作成
フォローthis 新しいAzureキーVaultリソースを作成します.このブログのために、私たちはパスワード/クライアントの秘密を格納するために一人で秘密を見ていきます.チェックthis キーVaultの秘密を作成する方法について.
キーVaultから秘密の値を取得するには
Azure.Identity
パッケージ.しかし、もしあなたが秘密をロードしたいConfigurationSection
, そこには道があるConfigurationBuilder
両方のアプリケーション構成キー値とキーVaultの秘密を含める.これを行うには、秘密は、新しいキー値としてアプリケーションの構成で参照することです.チェックthis アプリの設定でKVリファレンスを追加する方法に関する記事.
アプリケーション構成は、キーVaultの秘密にアクセスするためにそれ自体をロードするのに用いられるアイデンティティを使用します.これは次のステップで設定するものです.今のところ、アプリケーションの設定は、以下のスクリーンショットのようになります.
設定.サンプルコードを使用した
ここではgithubのサンプルアプリです.
https://github.com/venbacodes/AppConfigKVSample
Azureアプリ構成に接続するには、パッケージが必要になります
Microsoft.Extensions.Configuration.AzureAppConfiguration
拡張メソッドAddAzureAppConfiguration
のためにConfigurationBuilder
. この拡張メソッドは、アプリケーション構成の接続文字列を取得し、また、キーVaultをConfigureKeyVault
オプションのメソッド.builder.Host.ConfigureAppConfiguration((webHostBuilderContext, config) =>
{
var isDevelopment = webHostBuilderContext.HostingEnvironment.IsDevelopment();
var environment = webHostBuilderContext.HostingEnvironment.EnvironmentName.ToLower();
config
.AddJsonFile("appsettings.json", false, true)
.AddJsonFile($"appsettings.{webHostBuilderContext.HostingEnvironment.EnvironmentName}.json", true, true);
var settings = config.Build();
var appConfigConnectionString = settings.GetSection(AppConfigConnectionStringSection);
if (appConfigConnectionString != null && !string.IsNullOrWhiteSpace(appConfigConnectionString.Value))
{
config.AddAzureAppConfiguration(options =>
{
options
.Connect(appConfigConnectionString.Value)
.ConfigureKeyVault(kv =>
{
if (isDevelopment)
{
///You WON'T need this if you are logged into Visual Studio and your account has been setup
///with access policy in the Key Vault you are trying to connect. You can just use the DefaultAzureCredential
///that is set in the else part.
var cred = new ClientSecretCredential(
settings.GetSection("DevCredential:TenantId").Value,
settings.GetSection("DevCredential:ClientId").Value,
settings.GetSection("DevCredential:ClientSecret").Value);
kv.SetCredential(cred);
}
else
{
kv.SetCredential(new DefaultAzureCredential());
}
})
.Select(KeyFilter.Any, LabelFilter.Null)
.Select(KeyFilter.Any, environment ?? LabelFilter.Null);
});
}
});
ここで、上記のコードについて説明します.これは、app - config接続文字列を読み込みます.JSONファイル
var appConfigConnectionString = settings.GetSection(AppConfigConnectionStringSection);
この接続文字列をaddAzureAppConfigurationメソッドで使用します.options
.Connect(appConfigConnectionString.Value)
さて、Config BuilderのキーVaultを設定し、その秘密をアプリケーションの設定に設定します..ConfigureKeyVault(kv => {
///Code removed for simplicity
})
私たちは開発において開発されていないとき、開発のためにADで我々の登録されたアイデンティティを使用しているキー保管庫とデフォルト資格証明書に接続しようとしています.次のセクションでこれについて詳しく見ていきます.アプリケーションの設定からデータを取得しながら、我々は実際にキーと値を環境に基づいてフィルタリングされます.
.Select(KeyFilter.Any, LabelFilter.Null)
.Select(KeyFilter.Any, environment ?? LabelFilter.Null)
上記のコードは、ラベルフィルターに基づいて値をフィルター処理しようとします.実際には、任意のラベルと、指定されたラベルを持つすべてのキーなしですべてのキーが含まれ、最終的に最初のフィルタの値を上書きします.ここでフィルタの順序が重要です.キーヴォルトにおけるアクセスポリシー
キーVaultのアクセスポリシーセクションは、Azure Active Directoryから作成されたマネージIDを使用してアプリケーションとユーザーのアクセス許可を割り当てる場所です.
ここでは、このセクションのスクリーンショットです.
Azure広告アイデンティティ
Azure App Servicesのシステム割り当てマネージIDまたはAzureアカウントのIDをキーVaultに接続するために使用できます.私はあなた自身のAzureアカウントを認証するために使用し、Visual Studioにログインして使用してキーVaultに接続することをお勧めします
kv.SetCredential(new DefaultAzureCredential());
あなたのAzureアカウントを使用したくない場合は、Azure広告でアプリを登録し、このアクセスポリシーでそのアイデンティティを使用する別の可能性があります.Azure広告のアプリ登録
フォローthis KAPLを構成している間、アプリケーションをAzure広告に登録して、資格情報をセットするためにそれから以下の詳細を得てください.
TenantId - This will be the common id for your azure tenant
ClientId - This will be the unique id for the registered app
ClientSecret - You have to create this secret after registering the app. This is covered in the below link
https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app#add-a-client-secret Azureアプリサービスシステム
Azure App Servicesのアイデンティティを使用するには、以下のように有効にする必要があります.
これが完了したら
kv.SetCredential(new DefaultAzureCredential());
自動的にアプリケーションのIDを使用して認証し、KVから値を取得してください.成功した認証を完了するには、校長としてKVの下にアクセスポリシーセクションで、この新しく登録されたアプリを追加し、秘密を読むにアクセスできます.
最後に、アプリケーションの設定から値を見て
上記の手順を完了したら、現在の設定でアクセスできます
key
名称ACDemo
私はアプリの設定で使用します.このデモのために、私はスタートアップの間、キーを読んで、彼らがすべての場所で注入されることができるように、シングルトンサービスにそれを加えました.var acDemo = new ACDemo();
builder.Configuration.Bind("ACDemo", acDemo);
builder.Services.AddSingleton(acDemo);
Reference
この問題について(どのようにAzureアプリの設定とキーVaultを設定するには.ネットコアプロジェクト), 我々は、より多くの情報をここで見つけました https://dev.to/vengi83644/how-to-setup-azure-app-configuration-and-key-vault-in-a-net-core-project-724テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol