azure-identity-rust について
Azure SDKクライアント向けにEntra ID認証を設定するRust開発者向けのAzure Identity SDKガイドです。ローカル開発、マネージドID、ワークロードID、サービスプリンシパルを扱います。
主な機能
- 01開発ツールの認証チェーン
- 02マネージドIDとワークロードID
- 03クライアントシークレットと証明書の認証情報
- 04Azure CLIとAzure Pipelinesの認証情報
- 05認証情報インスタンスの再利用
活用シーン
- 01ローカルでAzure CLIを使って認証
- 02AzureホストリソースのIDを設定
- 03KubernetesのワークロードIDを設定
- 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,
)?;
認証情報チェーンの順序
| 順序 | 認証情報 | 環境 |
|---|---|---|
| 1 | AzureCliCredential | az login |
| 2 | AzureDeveloperCliCredential | azd auth login |
認証情報の種類
| 認証情報 | 用途 |
|---|---|
DeveloperToolsCredential | ローカル開発 — CLI ツールを試します |
ManagedIdentityCredential | Azure VM、App Service、Functions、AKS |
WorkloadIdentityCredential | Kubernetes ワークロード ID |
ClientSecretCredential | シークレットを使用するサービスプリンシパル |
ClientCertificateCredential | 証明書を使用するサービスプリンシパル |
AzureCliCredential | Azure CLI による直接認証 |
AzureDeveloperCliCredential | azd CLI による直接認証 |
AzurePipelinesCredential | Azure 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,
)?;
ベストプラクティス
- ローカル開発では
DeveloperToolsCredentialを使用します — Azure CLI を自動的に検出します - 本番環境では
ManagedIdentityCredentialを使用します — 管理するシークレットがありません - 認証情報をクローンします — 認証情報は
Arcでラップされており、低コストでクローンできます - 認証情報インスタンスを再利用します — 同じ認証情報を複数のクライアントで使用できます
- 非同期ランタイムを用意します — アプリケーションに必要な機能を含む 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.io | https://crates.io/crates/azure_identity |
使用する場面
Rust Azure SDK クライアント向けに Entra ID 認証情報を選択または設定するときに使用します。ローカルの開発者ツール、マネージド ID/ワークロード ID、またはレビュー済みのサービスプリンシパルが対象です。
制限事項
- 例は、互換性のある固定バージョンの Azure クレートと、必要な Tokio/Serde/Futures の依存関係を含む非同期アプリケーションコード内の断片です。使用前に、選択したバージョンの API を確認してください。公式ソース/リファレンスに照らしてレビューされていますが、ここではコンパイルもクラウドアカウントを使った実行も行っていません。
- 最小権限の原則に従い、認可されたテナント、リソース、ID を使用してください。書き込み、上書き、削除、バックアップの取得、アカウントの変更には、対応するスコープが必要です。クリーンアップで削除できるのは、明示的に特定された破棄可能なリソースのみです。リクエスト、再試行、ダウンロードするバイト数に上限を設け、ペイロード、認証情報、シークレットの値をログに記録しないでください。
- 出力を、環境に応じた検証、テスト、専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全上の境界、または成功条件が不足している場合は、作業を中止して確認を求めてください。
コメント
Markdown 対応