の秘密マネージャの設定プロバイダー.ネットコア
あなたが十分にASPを走らせる勇気があるならば.Google CloudプラットフォームのNETコアアプリケーションは、遅かれ早かれ、どのようにセキュアな方法でアプリケーションの設定を格納するかに関する質問に遭遇します.Azureでは、その目的のためにキーVaultを持っています.NETコアのおかげで組み込みの設定プロバイダーに感謝します.GCPでは、対応するサービスをGoogle Secret Managerと呼ぶ.
Secret Managerは、APIキー、パスワード、証明書、および他の機密データのための安全で便利なストレージシステムであり、確かにアプリケーションの設定を格納する良い場所です.しかし、ASPとの統合はありません.ボックスのネットコア.
恐れるな!ASP .NETコアはCustom configuration providersをサポートしており、Google Secret Managerのために開発を試みます.
まず、IconfigurationSourceを実装するクラスを作成する必要があります.我々のカスタムプロバイダーのインスタンスを返す唯一の目的は、我々がまもなく開発する.
次に、ConfigurationProvider抽象クラスから継承する必要がある、主なコンポーネント、SecretManagerConfigurationProviderの作成を開始します.
どのように、我々はプロジェクトIDを得ることができますか?例えば、アプリケーション設定に置くことができます.しかし、実際には、Google APIを使用して実行時に簡単に取得できます.
最後に、簡単にASPに新しい構成プロバイダーを追加するための利便性拡張方法を追加しましょう.NETコアアプリケーション.
それ以上に、あなたはIB.Google.SecretManager.ConfigurationProvider NuGet packageをダウンロードして、プロジェクトで自由に使用できます
そして、それは基本的にカスタム構成プロバイダーを実装するために必要とされたすべてです.今、あなたはより安全な方法でアプリケーションの設定を格納するためにGoogle Secret Managerを使用して起動することができます別の段階からこれらの変数を削除することによって、あなたのCDパイプラインを簡素化し、それらの厄介な猫ハッカーの心配を停止します.
(画像信用:イリジウム/gettyイメージ)
Secret Managerは、APIキー、パスワード、証明書、および他の機密データのための安全で便利なストレージシステムであり、確かにアプリケーションの設定を格納する良い場所です.しかし、ASPとの統合はありません.ボックスのネットコア.
恐れるな!ASP .NETコアはCustom configuration providersをサポートしており、Google Secret Managerのために開発を試みます.
SecretManagerConfigurationSource
まず、IconfigurationSourceを実装するクラスを作成する必要があります.我々のカスタムプロバイダーのインスタンスを返す唯一の目的は、我々がまもなく開発する.
public class SecretManagerConfigurationSource : IConfigurationSource
{
public IConfigurationProvider Build(IConfigurationBuilder builder)
{
return new SecretManagerConfigurationProvider();
}
}
SecureManagerConfigurationProvider
次に、ConfigurationProvider抽象クラスから継承する必要がある、主なコンポーネント、SecretManagerConfigurationProviderの作成を開始します.
public class SecretManagerConfigurationProvider : ConfigurationProvider
秘密のマネージャーから秘密を取得するには、GoogleからSecretManagerServiceLientを使用することができます.クラウド.SecretManager.V 1 nugetパッケージ.また、Secret Managerが有効になっており、アプリケーションが実行されているGoogleプロジェクトIDが必要になります.どのように、我々はプロジェクトIDを得ることができますか?例えば、アプリケーション設定に置くことができます.しかし、実際には、Google APIを使用して実行時に簡単に取得できます.
public static string GetProjectId()
{
var instance = Google.Api.Gax.Platform.Instance();
var projectId = instance?.ProjectId;
if (string.IsNullOrEmpty(projectId))
{
return null;
}
return projectId;
}
設定プロバイダーに戻ると、コンストラクタで初期化する準備ができています.public SecretManagerConfigurationProvider()
{
_client = SecretManagerServiceClient.Create();
_projectId = GoogleProject.GetProjectId();
}
次のステップは、“Load”メソッドをオーバーロードし、親クラスでデータプロパティとして公開されているキー/値のペアの辞書を設定します.var secrets = _client.ListSecrets(new ProjectName(_projectId));
foreach (var secret in secrets)
{
var secretVersionName = new SecretVersionName(secret.SecretName.ProjectId, secret.SecretName.SecretId, "latest");
var secretVersion = _client.AccessSecretVersion(secretVersionName);
Set(secret.SecretName.SecretId, secretVersion.Payload.Data.ToStringUtf8());
}
ScreenManagerConfiguration
最後に、簡単にASPに新しい構成プロバイダーを追加するための利便性拡張方法を追加しましょう.NETコアアプリケーション.
public static IConfigurationBuilder AddGoogleSecretsManager(this IConfigurationBuilder configurationBuilder)
{
configurationBuilder.Add(new SecretManagerConfigurationSource());
return configurationBuilder;
}
通常、このメソッドをプログラムで使用します.csファイルpublic static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((_, config) => config.AddGoogleSecretsManager())
.ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup<Startup>());
Google Secret Managerの設定プロバイダーの完全なソースコードは、より多くのエラー処理、コメント、およびテストでこのgithub repoで見つけることができます.I - B 1 / GoogleScreerManagerConfigurationProvider
の設定マネージャ
それ以上に、あなたはIB.Google.SecretManager.ConfigurationProvider NuGet packageをダウンロードして、プロジェクトで自由に使用できます
そして、それは基本的にカスタム構成プロバイダーを実装するために必要とされたすべてです.今、あなたはより安全な方法でアプリケーションの設定を格納するためにGoogle Secret Managerを使用して起動することができます別の段階からこれらの変数を削除することによって、あなたのCDパイプラインを簡素化し、それらの厄介な猫ハッカーの心配を停止します.
(画像信用:イリジウム/gettyイメージ)
Reference
この問題について(の秘密マネージャの設定プロバイダー.ネットコア), 我々は、より多くの情報をここで見つけました https://dev.to/ib1/google-secret-manager-configuration-provider-for-asp-net-core-3gpkテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol