1

私はアプリケーション開発に.NET Core 2.0とASP.NET Core 2.0を使用しています。 「テスト」アプリケーションは、.NETコアコンソールアプリケーションです。私が書いているコアコードはクラスライブラリです。一度適切なテスト。私はこれを(以前のASPNETコードに取って代わる)しばらく使ってはいけないので、これを行うことにしました。Azure VaultクライアントIDとクライアントシークレットを保存する

とにかく、さまざまなサービス用にたくさんのAPIキーを使用しなければならないため、Microsoft Azure Key Vaultを使用してキーを格納することにしました。私はこれをすべてセットアップし、これがどのように機能するかを理解しています。テストアプリケーションはテスト用のAzureアカウントを使用するため、重要ではありません。これは従来のコードに取って代わるものであり、それは幼少期にあるため、私は唯一の開発者です。

基本的に、私はこの問題に取り組んでいます。私が見ることのできるAzure Key Vaultに関する情報はそれほど多くありません。多くの例では、クライアントIDと秘密をjsonファイルののjsonファイル(たとえば、https://www.humankode.com/asp-net-core/how-to-store-secrets-in-azure-key-vault-using-net-core)に保存しています。私は本当にこれがいかに安全であるかを理解していません。誰かがそれらの鍵を手に入れれば、Azureの情報に簡単にアクセスできますよね?

Microsoft MSDNには、アクセス権を付与するpowershellコマンドがあります(これは私が見つけることができる最も近いものです:https://www.red-gate.com/simple-talk/cloud/platform-as-a-service/setting-up-and-configuring-an-azure-key-vault/)私の開発オペレーティングシステムはWindows 10で、私の主要なサーバーオペレーティングシステムはDebianです。

私はこれにどのようにアプローチしますか?

答えて

4

はい、そうです。プレーンテキストの設定ファイルは、本番用ではなく開発中にのみ使用できます。一般的に、利用可能なオプションは、アプリケーションのホスト場所と方法によって異なります。

あなたはAzureのWebアプリケーションを持っている場合は、少なくとも次の内蔵されているオプション(from the documentation):

  • Azureのポータル内のAppSettingsのためのClientIdのとClientSecret値を追加します。これにより、実際の値はweb.configにはなく、別個のアクセス制御機能を持つポータル経由で保護されます。これらの値は、web.configに入力した値で置き換えられます。名前が同じであることを確認してください。

  • Azure ADアプリケーションを認証するには、クライアントIDとクライアントシークレットの代わりにクライアントIDと証明書を使用します。

    • 証明書
    • を使用するようにWebアプリケーションにコードを追加しますAzureのADアプリケーションと
    • 准証明書の証明書を取得または作成します。以下は、AzureのWeb Appで証明書を使用する手順は、
    • あなたのWebアプリケーション

に証明書を追加

env変数を使用して資格情報を格納する方法もあります。これは、prodマシンでenv変数のスナップショットを実行できないことを保証できる場合にのみ、問題ありません。詳細はEnvironment Variables Considered Harmful for Your Secretsを参照してください。


そして最後に一つのこと:アイデアに基づいて技術もあり、ClientIdのアプリがあるマシン/コンテナの内容に基づいて構築されるべきであるあなたが保存する必要があることを/のみClientSecret値を渡します(例えば、ドッカーのコンテナID)。私はHashicorp VaultとAWSでホストされているAppの例を見つけましたが、一般的な考えは同じです:Secret management with Vault

関連する問題