mcpField
A
azure-identity-py

azure-identity-py

github.com/sickn33セキュリティ48.7k59 回インストール今日更新
リポジトリ

azure-identity-py について

azure-identity-py は、Microsoft Entra ID のトークンを使う Python Azure SDK クライアント向けの認証ライブラリです。複数の資格情報タイプと、設定可能なデフォルト資格情報チェーンを備えています。

主な機能

  1. 01デフォルト資格情報チェーン
  2. 02マネージド ID とサービスプリンシパル認証情報
  3. 03CLI・ブラウザー・デバイスコード認証
  4. 04カスタム資格情報チェーン
  5. 05同期・非同期クライアント対応

活用シーン

  1. 01Azure CLI によるローカル認証
  2. 02Azure 上のアプリでのトークン取得
  3. 03CI/CD のサービスプリンシパル認証設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill azure-identity-py

インストール後、Claude Code で/azure-identity-pyを入力して読み込まれたか確認します。

詳細

Azure Identity SDK for Python

Microsoft Entra ID(旧称 Azure AD)を使用して Azure SDK クライアントを認証するライブラリです。

インストール

pip install azure-identity

環境変数

# Service Principal (for production/CI)
AZURE_TENANT_ID=<your-tenant-id>
AZURE_CLIENT_ID=<your-client-id>
AZURE_CLIENT_SECRET=<your-client-secret>

# User-assigned Managed Identity (optional)
AZURE_CLIENT_ID=<managed-identity-client-id>

DefaultAzureCredential

開発環境や柔軟な環境で役立ちます。本番環境では、意図しない別のアカウントへのフォールバックを避けるため、明示的に意図した資格情報(ワークロード ID/マネージド ID など)を選択してください。以下のチェーンは説明用であり、バージョンや構成によって異なります。

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

# Works in local dev AND production without code changes
credential = DefaultAzureCredential()

client = BlobServiceClient(
    account_url="https://<account>.blob.core.windows.net",
    credential=credential
)
資格情報チェーンの順序
順序資格情報環境
1EnvironmentCredentialCI/CD、コンテナー
2WorkloadIdentityCredentialKubernetes
3ManagedIdentityCredentialAzure VM、App Service、Functions
4SharedTokenCacheCredentialWindows のみ
5VisualStudioCodeCredentialAzure 拡張機能を使用する VS Code
6AzureCliCredentialaz login
7AzurePowerShellCredentialConnect-AzAccount
8AzureDeveloperCliCredentialazd auth login
DefaultAzureCredential のカスタマイズ
# Exclude credentials you don't need
credential = DefaultAzureCredential(
    exclude_environment_credential=True,
    exclude_shared_token_cache_credential=True,
    managed_identity_client_id="<user-assigned-mi-client-id>"  # For user-assigned MI
)

# Enable interactive browser (disabled by default)
credential = DefaultAzureCredential(
    exclude_interactive_browser_credential=False
)

トークンを取得する前に、テナント、クライアント/プリンシパル、クラウド、必要なオーディエンス/スコープを確認してください。トークンは出力しないでください。リポジトリにコミットする dotenv の例や、シェルの履歴に貼り付ける内容にはシークレットを含めないでください。サポートされている場合は、マネージド ID/ワークロード ID を優先してください。失敗時の経路では、資格情報/クライアントを閉じてください。選択したパッケージに適用されるオプションのブローカー/開発者資格情報を含め、現在の資格情報チェーンのガイダンスを確認してください。

特定の資格情報の種類

ManagedIdentityCredential

Azure でホストされるリソース(VM、App Service、Functions、AKS)向けです。

from azure.identity import ManagedIdentityCredential

# System-assigned managed identity
credential = ManagedIdentityCredential()

# User-assigned managed identity
credential = ManagedIdentityCredential(
    client_id="<user-assigned-mi-client-id>"
)
ClientSecretCredential

シークレットを使用するサービスプリンシパル向けです。

import os
from azure.identity import ClientSecretCredential

credential = ClientSecretCredential(
    tenant_id=os.environ["AZURE_TENANT_ID"],
    client_id=os.environ["AZURE_CLIENT_ID"],
    client_secret=os.environ["AZURE_CLIENT_SECRET"]
)
AzureCliCredential

az login で使用するアカウントを使います。

from azure.identity import AzureCliCredential

credential = AzureCliCredential()
ChainedTokenCredential

カスタムの資格情報チェーンです。

from azure.identity import (
    ChainedTokenCredential,
    ManagedIdentityCredential,
    AzureCliCredential
)

# Try managed identity first, fall back to CLI
credential = ChainedTokenCredential(
    ManagedIdentityCredential(client_id="<user-assigned-mi-client-id>"),
    AzureCliCredential()
)

資格情報の種類の表

資格情報用途認証方法
DefaultAzureCredentialほとんどのシナリオ自動検出
ManagedIdentityCredentialAzure でホストされるアプリマネージド ID
ClientSecretCredentialサービスプリンシパルクライアントシークレット
ClientCertificateCredentialサービスプリンシパル証明書
AzureCliCredentialローカル開発Azure CLI
AzureDeveloperCliCredentialローカル開発Azure Developer CLI
InteractiveBrowserCredentialユーザーのサインインブラウザー OAuth
DeviceCodeCredentialヘッドレス/SSHデバイスコードフロー

トークンを直接取得する

from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()

# Get token for a specific scope
token = credential.get_token("https://management.azure.com/.default")
print(f"Token expires: {token.expires_on}")

# For Azure Database for PostgreSQL
token = credential.get_token("https://ossrdbms-aad.database.windows.net/.default")

非同期クライアント

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

async def main():
    credential = DefaultAzureCredential()
    
    async with BlobServiceClient(
        account_url="https://<account>.blob.core.windows.net",
        credential=credential
    ) as client:
        # ... async operations
        pass
    
    await credential.close()

ベストプラクティス

  1. ローカルと Azure の両方で実行するコードには DefaultAzureCredential を使用する
  2. 資格情報をハードコードしない — 環境変数またはマネージド ID を使用する
  3. 本番環境の Azure デプロイではマネージド ID を優先する
  4. カスタムの資格情報の順序が必要な場合は ChainedTokenCredential を使用する
  5. 非同期資格情報は明示的に閉じるか、コンテキストマネージャーを使用する
  6. ユーザー割り当てマネージド ID には AZURE_CLIENT_ID を設定する
  7. 使用しない資格情報を除外して、認証を高速化する

使用する場面

このスキルは、概要に記載されたワークフローまたはアクションを実行する場合に適用できます。

制限事項

  • 上記の説明にある範囲とタスクが明確に一致する場合にのみ、このスキルを使用してください。
  • 出力を、環境固有の検証、テスト、専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、権限、安全上の境界、成功基準が不足している場合は、作業を中断して確認を求めてください。

コメント