チュートリアル: Python アプリで Key Vault 参照を使用する

このチュートリアルでは、App Configuration を使用して Python アプリケーションに Key Vault 参照を実装する方法について説明します。 これは、クイック スタートで導入された Web アプリに基づいています。 続行する前に、まず App Configuration を使用して Python アプリを作成する を完了してください。

このチュートリアルでは、以下の内容を学習します。

  • Key Vault に格納されている値を参照する App Configuration キーを作成する。
  • Python アプリケーションからこのキーの値にアクセスします。

前提条件

キー保管庫を作成する

  1. Azure ポータルにサインインしリソースの作成を選択します。

  2. 検索ボックスに「Key Vault」と入力します。 結果の一覧で、 Key Vault を選択します。

  3. [ Key Vault ] ページで、[ 作成] を選択します。

  4. [ キー コンテナーの作成 ] ページで、次の情報を入力します。

    • サブスクリプションの場合: サブスクリプションを選択します。
    • リソース グループの場合: 既存のリソース グループの名前を入力するか、[新規作成] を選択してリソース グループ名を入力します。
    • キー コンテナー名の場合: 一意の名前を入力します。
    • リージョンの場合: 場所を選択します。
  5. その他のオプションでは、既定値を使用します。

  6. [Review + create](レビュー + 作成) を選択します。

  7. システムが入力を検証して表示したら、[ 作成] を選択します。

この時点で、お使いの Azure アカウントが、この新しいコンテナーへのアクセスが承認されている唯一のアカウントになります。

Key Vault にシークレットを追加する

シークレットを Vault に追加して、Key Vault の取得をテストします。 シークレットは Message と呼ばれ、その値は "Hello from Key Vault" です。

  1. [Key Vault リソース] メニューの [ オブジェクト>Secrets] を選択します。

  2. 生成/インポート を選択します。

  3. [ シークレットの作成 ] ダイアログで、次の値を入力します。

    • [アップロード オプション] に「手動」と入力します。
    • [名前]:メッセージを入力します。
    • [シークレットの値] に「Hello from Key Vault」と入力します。
  4. その他のオプションでは、既定値を使用します。

  5. を選択してを作成します。

App Configuration に Key Vault 参照を追加する

  1. Azure portal にサインインする [すべてのリソース] を選択し、App Configuration ストアを選択します。

  2. [構成エクスプローラー] を選択します。

  3. [+ 作成]>キーボールト参照 を選択し、次の値を指定します。

    • キー: TestApp:Settings:KeyVaultMessage を入力します。
    • ラベル:この値は空白のままにしておきます。
    • サブスクリプションリソース グループおよびキー コンテナー: 前のセクションで作成したキー コンテナーに対応する値を入力します。
    • [シークレット] : 前のセクションで作成した、Message という名前のシークレットを選択します。

Key Vault へのアクセス許可をアプリに付与する

アプリケーションでは、 DefaultAzureCredential を使用して、App Configuration と Key Vault の両方に対する認証を行います。 この資格情報は、Azure のマネージド ID とローカルの開発者資格情報で自動的に機能します。

  1. Key Vault への ID アクセスを付与します。 Key Vault シークレット ユーザー ロールをユーザー アカウントまたはマネージド ID に割り当てます。

    az role assignment create --role "Key Vault Secrets User" --scope /subscriptions/<subscriptionId>/resourceGroups/<group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name> --assignee <your-azure-ad-user-or-managed-identity>
    
  2. ID に App Configuration へのアクセス権を付与します。 App Configuration データリーダー ロールを割り当てます。

    az role assignment create --role "App Configuration Data Reader" --scope /subscriptions/<subscriptionId>/resourceGroups/<group-name>/providers/Microsoft.AppConfiguration/configurationStores/<your-app-configuration-store> --assignee <your-azure-ad-user-or-managed-identity>
    

Key Vault 参照を使用するようコードを更新する

  1. 次のコマンドを実行して、必要なパッケージをインストールします。

    pip install azure-appconfiguration-provider azure-identity
    
  2. AZURE_APPCONFIG_ENDPOINTという環境変数を作成します。 その値を App Configuration ストアのエンドポイントに設定します。 エンドポイントは、Azure portal の [概要 ] ブレードで確認できます。

    setx AZURE_APPCONFIG_ENDPOINT "endpoint-of-your-app-configuration-store"
    

    変更を有効にするために、コマンド プロンプトを再起動します。

  3. Python アプリケーション ファイルを更新して、Key Vault 参照を読み込みます。 app.py という名前のファイルを作成または更新します。

    from azure.appconfiguration.provider import load
    from azure.identity import DefaultAzureCredential
    import os
    
    endpoint = os.environ.get("AZURE_APPCONFIG_ENDPOINT")
    credential = DefaultAzureCredential()
    
    # Connect to Azure App Configuration and resolve Key Vault references.
    config = load(
        endpoint=endpoint,
        credential=credential,
        keyvault_credential=credential,
    )
    
    # Access configuration values, including resolved Key Vault references.
    print(config["TestApp:Settings:KeyVaultMessage"])
    

    keyvault_credential パラメーターは、Key Vault 参照を解決するときに指定された資格情報を使用するようにプロバイダーに指示します。 App Configuration 認証と Key Vault 認証の両方に同じ DefaultAzureCredential インスタンスが使用されます。

    Key Vault 参照が、異なる資格情報を必要とする複数のキー コンテナーを指している場合は、代わりに keyvault_client_configs パラメーターを使用してコンテナーごとの資格情報を指定できます。 詳細については、 Python プロバイダーリファレンスを参照してください

  4. アプリケーションを実行します。

    python app.py
    

    [App Configuration]\(アプリ構成\) に入力したメッセージが表示されます。 Key Vault に入力したメッセージも、Key Vault リファレンスを通じて解決されます。

リソースをクリーンアップする

この記事で作成したリソースを継続して使用しない場合は、ここで作成したリソース グループを削除して課金されないようにしてください。

Important

リソース グループを削除すると、元に戻すことができません。 リソース グループとそのすべてのリソースは完全に削除されます。 間違ったリソース グループやリソースをうっかり削除しないようにしてください。 この記事のリソースを、保持したい他のリソースを含むリソース グループ内に作成した場合は、リソース グループを削除する代わりに、各リソースをそれぞれのペインから個別に削除します。

  1. Azure portal にサインインし、 [リソース グループ] を選択します。
  2. [名前でフィルター] ボックスにリソース グループの名前を入力します。
  3. 結果一覧でリソース グループ名を選択し、概要を表示します。
  4. [リソース グループの削除] を選択します。
  5. リソース グループの削除の確認を求めるメッセージが表示されます。 確認のためにリソース グループの名前を入力し、 [削除] を選択します。

しばらくすると、リソース グループとそのすべてのリソースが削除されます。

次のステップ

このチュートリアルでは、Key Vault に格納されている値を参照する App Configuration キーを作成しました。 Azure App Configuration の Python プロバイダーの詳細については、 Python プロバイダーのリファレンス ドキュメントを参照してください