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 を有効にするためにプロジェクト内で実行する変更について詳しくは、Key Vault 接続済みサービス - ASP.NET プロジェクトで何が起こるか、またはKey Vault 接続済みサービス - ASP.NET Core プロジェクトで何が起こるかに関する記事を参照してください。

前提条件

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

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

  1. ソリューション エクスプローラーで、キー コンテナーのサポートを追加するプロジェクトを右クリックし、[追加]、>[接続済みサービス] を選択します。 [サービスの依存関係]+ アイコンを選択します。 [接続済みサービス] ページが開いて、プロジェクトに追加できるサービスが表示されます。

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

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

    サブスクリプションの選択のスクリーンショット

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

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

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

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

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

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

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

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

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

Note

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

ASP.NET Core プロジェクトの変更

このセクションでは、Visual Studio を使用してキー コンテナー接続済みサービスを追加したときに、ASP.NET プロジェクトに対して行われる正確な変更内容を説明します。

ASP.NET Core の参照を追加しました

プロジェクト ファイルの .NET リファレンスと NuGet パッケージのリファレンスに影響します。

Type リファレンス
NuGet Microsoft.AspNetCore.AzureKeyVault.HostingStartup

ASP.NET Core のファイルを追加しました

  • ConnectedService.json を追加しました。このファイルには、接続済みサービス プロバイダー、バージョン、ドキュメントのリンクに関する情報が記録されます。

ASP.NET Core のプロジェクト ファイル変更

  • 接続済みサービスの ItemGroup と ConnectedServices.json ファイルを追加しました。

ASP.NET Core の launchsettings.json 変更

  • IIS Express プロファイルと、ご使用の Web プロジェクト名に一致するプロファイルの両方に、次の環境変数エントリが追加されます。

      "environmentVariables": {
        "ASPNETCORE_HOSTINGSTARTUP__KEYVAULT__CONFIGURATIONENABLED": "true",
        "ASPNETCORE_HOSTINGSTARTUP__KEYVAULT__CONFIGURATIONVAULT": "<your keyvault URL>"
      }
    

ASP.NET Core のための Azure 上の変更

  • リソース グループを作成します (または、既存のものを使用します)。
  • 指定したリソース グループにキー コンテナーが作成されます。

ASP.NET Framework プロジェクトの変更

このセクションでは、Visual Studio を使用してキー コンテナー接続済みサービスを追加したときに、ASP.NET プロジェクトに対して行われる正確な変更内容を説明します。

ASP.NET Framework の追加される参照

プロジェクト ファイル (.NET 参照) と packages.config (NuGet 参照) に影響します。

Type リファレンス
.NET; NuGet Azure.Identity
.NET; NuGet Azure.Security.KeyVault.Keys
.NET; NuGet Azure.Security.key vault.Secrets

重要

既定では、Azure.Identity 1.1.1 がインストールされます。これは、Visual Studio 資格情報をサポートしていません。 パッケージ参照を手動で 1.2+ に更新すると、Visual Studio 資格情報を使用することができます。

ASP.NET Framework の追加されるファイル

  • ConnectedService.json が追加されます。このファイルには、接続済みサービス プロバイダー、バージョン、ドキュメントのリンクに関する情報が記録されます。

ASP.NET Framework のプロジェクト ファイル変更

  • 接続済みサービスの ItemGroup と ConnectedServices.json ファイルが追加されます。
  • 追加された参照」セクションで説明されている .NET アセンブリへの参照。

次のステップ

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

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

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