Visual Studio 接続済みサービスを使用して Web アプリケーションに Key Vault を追加する

このチュートリアルでは、Azure Key Vault を使用して Web プロジェクト用のシークレットを管理するために必要なもののすべてを、Visual Studio で簡単に追加する方法を学習します。使用するプロジェクトは、ASP.NET Core プロジェクトでも、その他の種類の ASP.NET プロジェクトでもかまいません。 Visual Studio の接続済みサービスの機能を使用することで、Azure 内の Key Vault に接続するために必要なすべての NuGet パッケージと構成設定の追加を Visual Studio に自動的に実行させることができます。

前提条件

Key Vault のサポートをプロジェクトに追加する

始める前に、Visual Studio にサインインしていることを確認してください。 Azure サブスクリプションに使用するものと同じアカウントでサインインします。 次に、ASP.NET 4.7.1 以降または ASP.NET Core Web プロジェクトを開き、次の手順を実行します。 示されている手順は、Visual Studio 2022 バージョン 17.4 用です。 他のバージョンの Visual Studio では、フローが若干異なる場合があります。

  1. ソリューション エクスプローラーで、Key Vault サポートを追加するプロジェクトを右クリックし、[追加]>[接続済みサービス] の順に選択するか、[接続済みサービス] ノードを右クリックして、[追加] を選択します。

    [接続済みサービス] ノードが表示されない場合は、[プロジェクト]>[接続済みサービス]>[追加] の順に選択します。

  2. [サービスの依存関係]+ アイコンを選択します。 [接続済みサービス] ページが開いて、プロジェクトに追加できるサービスが表示されます。

  3. 使用可能なサービスのメニューから、 [Azure Key Vault] を選択し、 [次へ] をクリックします。

    [接続済みサービス] 画面を示すスクリーンショット。Azure Key Vault を選択するオプションがあります。

  4. 使用するサブスクリプションを選択し、使用するキー コンテナーが既にある場合はそれを選択し、[次へ] をクリックします。

    [サブスクリプションの選択] を示すスクリーンショット。

  5. 既存の Key Vault がない場合、または既存の Key Vault とは異なるアクセス許可で設定できる Key Vault が必要な場合は、 [新しい Key Vault の作成]をクリックします。 リソース グループ、場所、SKU を指定するように求められます。

    [Azure Key Vault の作成] 画面のスクリーンショット。

  6. [Key Vault の構成] 画面では、Key Vault URI を参照する環境変数の名前を変更できます。 接続文字列はここには保存されません。 Key Vault に保存されます。

    [Connect to Azure Key Vault] (Azure Key Vault への接続) 画面のスクリーンショット。

    Note

    セキュリティを強化するために、Visual Studio 17.12 以降では、この手順によって接続設定名が作成されます。以前のバージョンでは、接続文字列が作成されます。 ローカルに格納されている接続文字列は、誤って公開された場合にセキュリティ 上のリスクにつながる可能性があります。

  7. 変更の概要が表示されるまで [次へをクリックし、 Finish

始める前に、Visual Studio にサインインしていることを確認してください。 Azure サブスクリプションに使用するものと同じアカウントでサインインします。 次に、ASP.NET 4.7.1 以降または ASP.NET Core Web プロジェクトを開き、次の手順を実行します。

  1. ソリューション エクスプローラーで、Key Vault サポートを追加するプロジェクトを右クリックし、[追加]>[接続済みサービス] の順に選択するか、[接続済みサービス] ノードを右クリックして、[追加] を選択します。

    [接続済みサービス] ノードが表示されない場合は、[プロジェクト]>[接続済みサービス]>[追加] の順に選択します。

  2. [サービスの依存関係]+ アイコンを選択します。 [接続済みサービス] ページが開いて、プロジェクトに追加できるサービスが表示されます。

  3. 使用可能なサービスのメニューから、 [Azure Key Vault] を選択し、 [次へ] をクリックします。

    [接続済みサービス] 画面と、Azure Key Vault を選択するオプションを示すスクリーンショット。

  4. 使用するサブスクリプションを選択し、使用するキー コンテナーが既にある場合はそれを選択し、[次へ] をクリックします。

    [サブスクリプションの選択] を示すスクリーンショット。

  5. 既存の Key Vault がない場合は、[新しい Key Vault の作成] をクリックします。 リソース グループ、場所、SKU を指定するように求められます。

    [Azure Key Vault の作成] 画面のスクリーンショット。

  6. [Key Vault の構成] 画面では、Key Vault URI を参照する環境変数の名前を変更できます。 接続文字列はここには保存されません。 Key Vault に保存されます。

    [Connect to Azure Key Vault] (Azure Key Vault への接続) 画面のスクリーンショット。

  7. [次へ] をクリックして変更の概要を確認し、[完了] をクリックします。

これで、Key Vault への接続が確立され、コードでシークレットにアクセスできるようになりました。 新しい Key Vault を作成した場合、コードで参照できるシークレットを作成してテストします。 シークレットは、Azure portalPowerShell、または Azure CLI を使用して作成できます。

.NET 用 Azure Key Vault シークレット クライアント ライブラリ - コード例に関する記事で、シークレットを操作するコードの例を参照してください。

キー コンテナーへのアクセスを構成する

Visual Studio 2022 バージョン 17.11 以前でこのチュートリアルに従った場合、Key Vault のアクセス許可は独自の Azure サブスクリプションで実行するように設定されていますが、運用環境のシナリオでは望ましくない可能性があります。 マネージド ID を作成して、アプリの Key Vault へのアクセスを管理できます。 Key Vault に対して認証を行う方法および Key Vault アクセス ポリシーの割り当てに関するページを参照してください。

キー コンテナーが、Visual Studio にサインインしているものとは異なる Microsoft アカウントで実行されている場合 (たとえば、キー コンテナーは仕事用アカウントで実行されているが、Visual Studio はプライベート アカウントを使用している)、次のエラーが発生します。 Program.cs ファイルを削除すると、Visual Studio がキー コンテナーにアクセスできなくなります。 この問題を解決するには、Azure portal に移動し、キー コンテナーを開き、アクセス制御 (IAM) を選択してアクセス許可を設定します。 「Azure のロールベースのアクセス制御を使用して Key Vault のキー、証明書、シークレットへのアクセス権を付与する」を参照してください。

Note

古いキー コンテナーでは、従来のアクセス ポリシー モデルが使用される場合があります。 Azure RBAC を使用するには、古いキー コンテナーを移行することをお勧めします。 「Azure ロールベースのアクセス制御 (RBAC) とアクセス ポリシー」を参照してください。

次のステップ

Key Vault の開発の詳細については、「Key Vault 開発者ガイド」を参照してください。

ASP.NET Core アプリの構成を Azure Key Vault に格納することが目的である場合は、ASP.NET Core の Azure Key Vault 構成プロバイダーを参照してください。