Azure Key Vault 内の認証シークレットの保護

カスタム認証プロバイダーを構成する際に、Azure Key Vault に接続シークレットを格納することが望ましく思える場合があります。 この記事では、カスタム認証シークレットを取得するため、マネージド ID を使用して、Azure Static Web Apps に Key Vault へのアクセスを付与する方法を説明します。

Note

Azure Serverless Functions では、Azure Key Vault の直接統合はサポートされていません。 Azure Key Vault をマネージド関数アプリと統合する必要がある場合は、アプリのコードに Azure Key Vault アクセスを実装する必要があります。

セキュリティ シークレットを使用するには、次の項目を整える必要があります。

  • Static Web Apps インスタンスでシステム割り当て ID を作成する。
  • ID に Key Vault シークレットへのアクセス権を付与する。
  • Static Web Apps のアプリケーション設定から、その Key Vault シークレットを参照する。

この記事では、独自の関数アプリケーションを使用するために、これらの各項目を実稼働環境で設定する方法について説明します。

Key Vault 統合は以下では使用できません。

Note

マネージド ID は、Azure Static Web Apps Standard プランでのみ使用できます。

前提条件

  • 独自の関数を使用する Azure Static Web Apps サイト。
  • シークレット値が入った既存の Key Vault リソース。

ID の作成

  1. Azure portal で Static Web Apps サイトを開きます。

  2. [設定] メニューから、[ID] を選択します。

  3. [システム割り当て済み] タブを選択します。

  4. [状態] ラベルの [オン] を選択します。

  5. [保存] を選択します。

    Add system-assigned identity

  6. 確認のダイアログが表示されたら、[はい] を選択します。

    Confirm identity assignment.

これで、静的 Web アプリで Key Vault シークレットを読み取るためのアクセス ポリシーを追加できるようになりました。

Key Vault アクセス ポリシーを追加する

  1. Azure portal で、ご使用の Key Vault リソースを開きます。

  2. [設定] メニューから、[アクセス ポリシー] を選択します。

  3. [アクセス ポリシーの追加] リンクを選択します。

  4. [シークレットのアクセス許可] ドロップダウンから、[取得] を選択します。

  5. [プリンシパルの選択] ラベルの横にある [選択されていません] リンクを選択します。

  6. 検索ボックスで、お客様の Static Web Apps アプリケーション名を検索します。

  7. アプリケーション名に一致する一覧の項目を選択します。

  8. 選択 を選択します。

  9. 追加を選択します。

  10. [保存] を選択します。

    Save Key Vault access policy

これで、アクセス ポリシーが Key Vault に保存されます。 次に、静的 Web アプリを Key Vault リソースに関連付けるときに使用するシークレットの URI にアクセスします。

  1. [設定] メニューから、[シークレット] を選択します。

  2. 一覧から目的のシークレットを選択します。

  3. 一覧から目的のシークレットのバージョンを選択します。

  4. [シークレット識別子] テキスト ボックスの末尾にある[コピー] を選択して、シークレットの URI 値をクリップボードにコピーします。

  5. 後で使用できるように、この値をテキスト エディターに貼り付けます。

アプリケーション設定を追加する

  1. Azure portal で Static Web Apps サイトを開きます。

  2. [設定] メニューから、[構成] を選択します。

  3. [アプリケーション設定] セクションから、[追加] を選択します。

  4. "名前" フィールドのテキスト ボックスに名前を入力します。

  5. "" フィールドのテキスト ボックスでシークレット値を決定します。

    このシークレット値は、いくつかの異なる値を組み合わせたものです。 最終的にどのような文字列になるかを次のテンプレートに示します。

    @Microsoft.KeyVault(SecretUri=<YOUR-KEY-VAULT-SECRET-URI>)
    

    たとえば、最終的な文字列は次の例のようになります。

    @Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)
    

    あるいは:

    @Microsoft.KeyVault(VaultName=myvault;SecretName=mysecret)
    

    次の手順に従って、完全なシークレット値を作成します。

  6. 上のテンプレートをコピーして、テキスト エディターに貼り付けます。

  7. <YOUR-KEY-VAULT-SECRET-URI> を、前に準備しておいた Key Vault URI 値に置き換えます。

  8. 新しい完全な文字列値をコピーします。

  9. この値を、"" フィールドのテキスト ボックスに貼り付けます。

  10. [OK] を選択します。

  11. [アプリケーション設定] ツールバーの上部にある [保存] を選択します。

    Save application settings

これで、新しく作成されたアプリケーション設定がカスタム認証構成から参照されるときに、お客様の静的 Web アプリの ID を使用して Azure Key Vault からその値が抽出されることになります。

次のステップ