Azure Static Web Apps 用の 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 アクセスを実装する必要があります。
セキュリティ シークレットを使用するには、次の項目を整える必要があります。
- 静的 Web アプリでシステム割り当て ID を作成します。
- ID に Key Vault シークレットへのアクセス権を付与する。
- Static Web Apps のアプリケーション設定から、その Key Vault シークレットを参照する。
この記事では、独自の関数アプリケーションを使用するために、これらの各項目を実稼働環境で設定する方法について説明します。
Key Vault 統合は以下では使用できません。
- 静的 Web アプリのステージング バージョン。 Key Vault 統合は、実稼働環境でのみサポートされます。
- マネージド関数を使用する静的 Web アプリ。
Note
マネージド ID は、Azure Static Web Apps Standard プランでのみ使用できます。
前提条件
- 独自の関数を使用する Azure Static Web Apps サイト。
- シークレット値が入った既存の Key Vault リソース。
ID の作成
Azure portal で静的 Web アプリを開きます。
[設定] にある [ID] を選択します。
[システム割り当て済み] タブを選択します。
[状態] ラベルの [オン] を選択します。
[保存] を選択します。
確認のダイアログが表示されたら、[はい] を選択します。
これで、静的 Web アプリで Key Vault シークレットを読み取るためのアクセス ポリシーを追加できるようになりました。
Key Vault アクセス ポリシーを追加する
Azure portal で、ご使用の Key Vault リソースを開きます。
[設定] メニューから、[アクセス ポリシー] を選択します。
[アクセス ポリシーの追加] リンクを選択します。
[シークレットのアクセス許可] ドロップダウンから、[取得] を選択します。
[プリンシパルの選択] ラベルの横にある [選択されていません] リンクを選択します。
検索ボックスで、静的 Web アプリ名を検索します。
アプリケーション名に一致する一覧の項目を選択します。
選択 を選択します。
追加を選択します。
[保存] を選択します。
これで、アクセス ポリシーが Key Vault に保存されます。 次に、静的 Web アプリを Key Vault リソースに関連付けるときに使用するシークレットの URI にアクセスします。
[設定] メニューから、[シークレット] を選択します。
一覧から目的のシークレットを選択します。
一覧から目的のシークレットのバージョンを選択します。
[シークレット識別子] テキスト ボックスの末尾にある[コピー] を選択して、シークレットの URI 値をクリップボードにコピーします。
後で使用できるように、この値をテキスト エディターに貼り付けます。
アプリケーション設定を追加する
Azure portal で Static Web Apps サイトを開きます。
[設定] メニューから、[構成] を選択します。
[アプリケーション設定] セクションから、[追加] を選択します。
"名前" フィールドのテキスト ボックスに名前を入力します。
"値" フィールドのテキスト ボックスでシークレット値を決定します。
このシークレット値は、いくつかの異なる値を組み合わせたものです。 最終的にどのような文字列になるかを次のテンプレートに示します。
@Microsoft.KeyVault(SecretUri=<YOUR_KEY_VAULT_SECRET_URI>)
たとえば、最終的な文字列は次の例のようになります。
@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)
あるいは:
@Microsoft.KeyVault(VaultName=myvault;SecretName=mysecret)
次の手順に従って、完全なシークレット値を作成します。
上のテンプレートをコピーして、テキスト エディターに貼り付けます。
<YOUR_KEY_VAULT_SECRET_URI>
を、前に準備しておいた Key Vault URI 値に置き換えます。新しい完全な文字列値をコピーします。
この値を、"値" フィールドのテキスト ボックスに貼り付けます。
[OK] を選択します。
[アプリケーション設定] ツールバーの上部にある [保存] を選択します。
これで、新しく作成されたアプリケーション設定がカスタム認証構成から参照されるときに、お客様の静的 Web アプリの ID を使用して Azure Key Vault からその値が抽出されることになります。