mcpField
A
azure-identity-rust

azure-identity-rust

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

azure-identity-rust について

Azure SDKクライアント向けにEntra ID認証を設定するRust開発者向けのAzure Identity SDKガイドです。ローカル開発、マネージドID、ワークロードID、サービスプリンシパルを扱います。

主な機能

  1. 01開発ツールの認証チェーン
  2. 02マネージドIDとワークロードID
  3. 03クライアントシークレットと証明書の認証情報
  4. 04Azure CLIとAzure Pipelinesの認証情報
  5. 05認証情報インスタンスの再利用

活用シーン

  1. 01ローカルでAzure CLIを使って認証
  2. 02AzureホストリソースのIDを設定
  3. 03KubernetesのワークロードIDを設定
  4. 04CI用サービスプリンシパルの認証情報を設定

インストール

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

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

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

詳細

Rust 用 Azure Identity SDK

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

以下の例では、互換性を確認済みのクレートセットを使用し、すべてのリソースプレースホルダーを置き換える必要があります。デモ用の書き込みに本番データを使用しないでください。

インストール

cargo add azure_identity@=1.0.0 azure_core@=1.1.0

環境変数

# Service Principal (for production/CI)
export AZURE_TENANT_ID="<your-tenant-id>"
export AZURE_CLIENT_ID="<your-client-id>"
: "${AZURE_CLIENT_SECRET:?Inject through the approved host or CI secret manager}"
export AZURE_CLIENT_SECRET

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

DeveloperToolsCredential

ローカル開発に推奨される認証情報です。開発者ツール(Azure CLI、Azure Developer CLI)を順番に試します。

use azure_identity::DeveloperToolsCredential;
use azure_security_keyvault_secrets::SecretClient;

let credential = DeveloperToolsCredential::new(None)?;
let client = SecretClient::new(
    "https://my-vault.vault.azure.net/",
    credential.clone(),
    None,
)?;
認証情報チェーンの順序
順序認証情報環境
1AzureCliCredentialaz login
2AzureDeveloperCliCredentialazd auth login

認証情報の種類

認証情報用途
DeveloperToolsCredentialローカル開発 — CLI ツールを試します
ManagedIdentityCredentialAzure VM、App Service、Functions、AKS
WorkloadIdentityCredentialKubernetes ワークロード ID
ClientSecretCredentialシークレットを使用するサービスプリンシパル
ClientCertificateCredential証明書を使用するサービスプリンシパル
AzureCliCredentialAzure CLI による直接認証
AzureDeveloperCliCredentialazd CLI による直接認証
AzurePipelinesCredentialAzure Pipelines サービス接続
ClientAssertionCredentialカスタムアサーション(フェデレーション ID)

ManagedIdentityCredential

Azure でホストされるリソース向けです。

use azure_identity::{ManagedIdentityCredential, ManagedIdentityCredentialOptions, UserAssignedId};

// System-assigned managed identity
let credential = ManagedIdentityCredential::new(None)?;

// User-assigned managed identity
let options = ManagedIdentityCredentialOptions {
    user_assigned_id: Some(UserAssignedId::ClientId("<user-assigned-mi-client-id>".into())),
    ..Default::default()
};
let credential = ManagedIdentityCredential::new(Some(options))?;

ClientSecretCredential

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

use azure_identity::ClientSecretCredential;

let credential = ClientSecretCredential::new(
    "<tenant-id>".into(),
    "<client-id>".into(),
    "<client-secret>".into(),
    None,
)?;

ベストプラクティス

  1. ローカル開発では DeveloperToolsCredential を使用します — Azure CLI を自動的に検出します
  2. 本番環境では ManagedIdentityCredential を使用します — 管理するシークレットがありません
  3. 認証情報をクローンします — 認証情報は Arc でラップされており、低コストでクローンできます
  4. 認証情報インスタンスを再利用します — 同じ認証情報を複数のクライアントで使用できます
  5. 非同期ランタイムを用意します — アプリケーションに必要な機能を含む Tokio を追加してください。クレート固有の tokio 機能が存在すると想定しないでください

レビュー済みのサンプルセットでは、azure_identity 1.0.0 と互換性のある Azure core/認証情報クレートを使用しています。Cargo.lock を記録してコミットしてください。ソース/API のレビューは、コンパイルや実サービスを使用したテストではありません。

参考リンク

リソースリンク
API リファレンスhttps://docs.rs/azure_identity
ソースコードhttps://github.com/Azure/azure-sdk-for-rust/tree/main/sdk/identity/azure_identity
crates.iohttps://crates.io/crates/azure_identity

使用する場面

Rust Azure SDK クライアント向けに Entra ID 認証情報を選択または設定するときに使用します。ローカルの開発者ツール、マネージド ID/ワークロード ID、またはレビュー済みのサービスプリンシパルが対象です。

制限事項

  • 例は、互換性のある固定バージョンの Azure クレートと、必要な Tokio/Serde/Futures の依存関係を含む非同期アプリケーションコード内の断片です。使用前に、選択したバージョンの API を確認してください。公式ソース/リファレンスに照らしてレビューされていますが、ここではコンパイルもクラウドアカウントを使った実行も行っていません。
  • 最小権限の原則に従い、認可されたテナント、リソース、ID を使用してください。書き込み、上書き、削除、バックアップの取得、アカウントの変更には、対応するスコープが必要です。クリーンアップで削除できるのは、明示的に特定された破棄可能なリソースのみです。リクエスト、再試行、ダウンロードするバイト数に上限を設け、ペイロード、認証情報、シークレットの値をログに記録しないでください。
  • 出力を、環境に応じた検証、テスト、専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、権限、安全上の境界、または成功条件が不足している場合は、作業を中止して確認を求めてください。

コメント