次の方法で共有


開発者アカウントを使用したローカル開発時に Azure サービスに対して Python アプリを認証する

ローカル開発時に、アプリケーションは異なる Azure サービスを使用するために Azure に対して認証を行う必要があります。 次のいずれかの方法を使用してローカルで認証します。

この記事では、Azure Identity ライブラリでサポートされているツールを使用して開発者アカウントを使用して認証する方法について説明します。 以下のセクションでは、次のことを説明します。

  • Microsoft Entra グループを使用して、複数の開発者アカウントのアクセス許可を効率的に管理する方法。
  • 開発者アカウントにロールを割り当てて、アクセス権限の範囲を設定する方法。
  • サポートされているローカル開発ツールにサインインする方法。
  • アプリ コードから開発者アカウントを使用して認証する方法。

認証でサポートされている開発者ツール

開発者の Azure 資格情報を使用してローカル開発中にアプリが Azure に対して認証されるようにするには、開発者は次のいずれかの開発者ツールから Azure にサインインする必要があります。

  • Azure CLI
  • Azure Developer CLI
  • Azure PowerShell
  • Visual Studio Code

Azure Identity ライブラリは、開発者がこれらのツールのいずれかからサインインしていることを検出できます。 その後、ライブラリはツールを使用して Microsoft Entra アクセス トークンを取得し、サインインしているユーザーとして Azure に対してアプリを認証できます。

この方法では、開発者の既存の Azure アカウントを利用して認証プロセスを効率化します。 ただし、開発者のアカウントには、アプリが必要とするよりも多くのアクセス許可があるため、運用環境でアプリが実行するアクセス許可を超える可能性があります。 別の方法として、 ローカル開発時に使用するアプリケーション サービス プリンシパルを作成できます。このスコープは、アプリで必要なアクセス権のみを持つことができます。

ローカル開発用の Microsoft Entra グループを作成する

個々のサービス プリンシパル オブジェクトにロールを割り当てるのではなく、アプリがローカル開発で必要とするロール (アクセス許可) をカプセル化する Microsoft Entra グループを作成します。 この方法には、次の利点があります。

  • すべての開発者には、グループ レベルで同じロールが割り当てられます。
  • アプリに新しいロールが必要な場合は、アプリのグループにのみ追加する必要があります。
  • 新しい開発者がチームに参加すると、開発者用に新しいアプリケーション サービス プリンシパルが作成され、グループに追加され、開発者がアプリで作業するための適切なアクセス許可を持っている必要があります。
  1. Azure portal で Microsoft Entra ID の概要ページに移動します。

  2. 左側のメニューから [すべてのグループ ] を選択します。

  3. [ グループ ] ページで、[ 新しいグループ] を選択します。

  4. [ 新しいグループ ] ページで、次のフォーム フィールドに入力します。

    • グループの種類: セキュリティを選択します。
    • グループ名: アプリ名または環境名への参照を含むグループの名前を入力します。
    • グループの説明: グループの目的を説明する説明を入力します。

    Azure portal でグループを作成する方法を示すスクリーンショット。

  5. [メンバー] の下の [メンバーが選択されていません] リンクを選択して、グループにメンバーを追加します。

  6. 開いたポップアップ パネルで、先ほど作成したサービス プリンシパルを検索し、フィルター処理された結果から選択します。 パネルの下部にある [選択 ] ボタンを選択して、選択内容を確認します。

  7. [新しいグループ] ページの下部にある [作成] を選択してグループを作成し、[すべてのグループ] ページに戻ります。 新しいグループが表示されない場合は、しばらく待ってからページを更新してください。

グループにロールを割り当てる

次に、アプリで必要なリソースのロール (アクセス許可) を決定し、作成した Microsoft Entra グループにそれらのロールを割り当てます。 グループには、リソース、リソース グループ、またはサブスクリプション スコープでロールを割り当てることができます。 この例では、ほとんどのアプリがすべての Azure リソースを 1 つのリソース グループにグループ化するため、リソース グループ スコープでロールを割り当てる方法を示します。

  1. Azure portal で、アプリを含むリソース グループの [概要 ] ページに移動します。

  2. 左側のナビゲーションから アクセス制御 (IAM) を選択します。

  3. [ アクセス制御 (IAM)] ページで、[ + 追加 ] を選択し、ドロップダウン メニューから [ ロールの割り当ての追加 ] を選択します。 [ ロールの割り当ての追加] ページには、ロールを構成して割り当てるためのタブがいくつか用意されています。

  4. [ ロール ] タブで、検索ボックスを使用して、割り当てるロールを見つけます。 ロールを選択し、[ 次へ] を選択します。

  5. [メンバー] タブで、次の 手順 を実行します。

    • [ 値へのアクセスの割り当て] で、[ ユーザー、グループ、またはサービス プリンシパル ] を選択します。
    • [メンバー] の値で 、[+ メンバーの選択] を選択して、[メンバーの選択] ポップアップ パネルを開きます。
    • 先ほど作成した Microsoft Entra グループを検索し、フィルター処理された結果から選択します。 [ 選択 ] を選択してグループを選択し、ポップアップ パネルを閉じます。
    • [メンバー] タブの下部にある [確認と割り当て] を選択します。

    Microsoft Entra グループにロールを割り当てる方法を示すスクリーンショット。

  6. [ 校閲と割り当て ] タブで、ページの下部にある [校閲と割り当て ] を選択します。

開発者ツールを使用して Azure にサインインする

Azure アカウントで認証するには、次のいずれかの方法を選択します。

Visual Studio Code を使用する開発者は、ブローカーを介してエディターを介して開発者アカウントで直接認証できます。 DefaultAzureCredential または VisualStudioCodeCredential を使用するアプリは、このアカウントを使用して、シームレスなシングル サインオン エクスペリエンスを通じてアプリ要求を認証できます。

  1. Visual Studio Code で、[ 拡張機能 ] パネルに移動し、 Azure リソース 拡張機能をインストールします。 この拡張機能を使用すると、Visual Studio Code から直接 Azure リソースを表示および管理できます。 また、組み込みの Visual Studio Code Microsoft 認証プロバイダーを使用して Azure で認証します。

    Azure リソース拡張機能を示すスクリーンショット。

  2. Visual Studio Code でコマンド パレットを開き、[ Azure: サインイン] を検索して選択します。

    Visual Studio Code で Azure にサインインする方法を示すスクリーンショット。

    ヒント

    Windows/Linux または macOS のCtrl+Shift+PCmd+Shift+Pを使用してコマンド パレットを開きます。

  3. azure-identity-broker Python パッケージをアプリに追加します。

    pip install azure-identity-broker
    

アプリから Azure サービスに対して認証する

Azure Identity ライブラリには、さまざまなシナリオと Microsoft Entra 認証フローをサポートする TokenCredential の実装が用意されています。 この手順では、ユーザー アカウントをローカルで操作するときに DefaultAzureCredential または特定の開発ツールの資格情報を使用する方法を示します。

コードを実装する

  1. azure-identity パッケージをアプリケーションに追加します。

    pip install azure-identity
    

    VisualStudioCodeCredentialを使用する場合は、azure-identity-broker パッケージもインストールする必要があります。

    pip install azure-identity-broker
    

    import モジュールとアプリに必要な Azure サービス クライアント モジュールに必要なazure.identity ステートメントを追加します。

  2. シナリオに基づいて、資格情報の実装のいずれかを選択します。

開発ツールに固有の資格情報を使用する

特定の開発ツールに対応する TokenCredential インスタンスを、 AzureCliCredentialなどの Azure サービス クライアント コンストラクターに渡します。

from azure.identity import AzureCliCredential
from azure.storage.blob import BlobServiceClient

credential = AzureCliCredential()

blob_service_client = BlobServiceClient(
   account_url="https://<account-name>.blob.core.windows.net",
   credential=credential)

任意の開発ツールで使用できる資格情報を使用する

すべてのローカル開発ツール用に最適化された DefaultAzureCredential インスタンスを使用します。 この例では、環境変数AZURE_TOKEN_CREDENTIALSdevに設定する必要があります。 詳細については、「 資格情報の種類のカテゴリを除外する」を参照してください。

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient

credential = DefaultAzureCredential(require_envvar=True)

blob_service_client = BlobServiceClient(
   account_url="https://<account-name>.blob.core.windows.net",
   credential=credential)

ヒント

チームが複数の開発ツールを使用して Azure で認証する場合は、ツール固有の資格情報よりも DefaultAzureCredential を優先します。