外部 ID プロバイダーを信頼するようにアプリを構成する
この記事では、Microsoft Entra ID でアプリケーションのフェデレーション ID 資格情報を管理する方法について説明します。 フェデレーション ID 資格情報は、アプリケーションと外部 ID プロバイダー (IdP) の間に信頼関係を作成します。
その後、外部 IdP からのトークンを Microsoft ID プラットフォームからのアクセス トークンと交換するように外部ソフトウェア ワークロードを構成できます。 外部ワークロードは、(サポートされているシナリオで) シークレットを管理しなくても、Microsoft Entra で保護されたリソースにアクセスできます。 トークン交換ワークフローの詳細については、ワークロード ID フェデレーション
この記事では、Microsoft Entra ID でアプリケーションのフェデレーション ID 資格情報を作成、一覧表示、削除する方法について説明します。
重要な考慮事項と制限事項
フェデレーション ID 資格情報を作成、更新、または削除するには、アクションを実行するアカウントに、
アプリケーションまたはユーザー割り当てマネージド ID には、最大 20 個のフェデレーション ID 資格情報を追加できます。
フェデレーション ID 資格情報を構成する場合、いくつかの重要な情報を提供する必要があります。
発行者 と サブジェクト は、信頼関係を設定するために必要な重要な情報です。
issuer
とsubject
の組み合わせは、アプリで一意である必要があります。 外部ソフトウェア ワークロードが外部トークンをアクセス トークンと交換するように Microsoft ID プラットフォームに要求すると、フェデレーション ID 資格情報の 発行者 と サブジェクト 値が、外部トークンで指定されたissuer
およびsubject
要求に対してチェックされます。 検証チェックに合格すると、Microsoft ID プラットフォームは外部ソフトウェア ワークロードにアクセス トークンを発行します。発行者 は外部 ID プロバイダーの URL であり、交換される外部トークンの
issuer
要求と一致する必要があります。 必須。issuer
要求の値に先頭または末尾の空白がある場合、トークン交換はブロックされます。 このフィールドの文字数は 600 文字です。サブジェクト は外部ソフトウェア ワークロードの識別子であり、交換される外部トークンの
sub
(subject
) 要求と一致する必要があります。 件名 は、各 IdP が独自の形式 (場合によっては GUID、コロンで区切られた識別子、場合によっては任意の文字列) を使用する場合があるため、固定形式ではありません。 このフィールドの文字数は 600 文字です。重要
サブジェクト 設定値は、GitHub ワークフロー構成の構成と完全に一致している必要があります。 それ以外の場合、Microsoft ID プラットフォームは受信した外部トークンを確認し、アクセス トークンの交換を拒否します。 エラーは発生しません。交換はエラーなしで失敗します。
重要
誤って サブジェクトに誤った外部ワークロード情報を追加した場合 フェデレーション ID 資格情報の設定はエラーなしで正常に作成されます。 このエラーは、トークン交換が失敗するまで明らかになりません。
対象ユーザー 外部トークンに表示できる対象ユーザーを一覧表示します。 必須。 1 つの対象ユーザー値 (600 文字の制限あり) を追加する必要があります。 推奨値は "api://AzureADTokenExchange" です。 受信トークンの
aud
要求で、Microsoft ID プラットフォームが受け入れる必要がある内容が記載されています。名前 は、フェデレーション ID 資格情報の一意の識別子です。 必須。 このフィールドには 3 ~ 120 文字の文字制限があり、URL フレンドリである必要があります。 英数字、ダッシュ、またはアンダースコア文字がサポートされています。最初の文字は英数字のみである必要があります。 作成後は変更できません。
説明 は、フェデレーション ID 資格情報のユーザー指定の説明です。 随意。 説明は、Microsoft Entra ID によって検証またはチェックされません。 このフィールドの文字数は 600 文字です。
フェデレーション ID 資格情報プロパティ値では、ワイルドカード文字はサポートされていません。
サポートされているリージョン、フェデレーション資格情報の更新、サポートされている発行者などを伝達する時間の詳細については、「フェデレーション ID 資格情報の重要な考慮事項と制限事項」を参照してください。
前提 条件
- Microsoft Entra ID でアプリ登録を作成するか、マネージド ID を作成する。 外部ソフトウェア ワークロードの対象となる Azure リソースへのアクセス権をアプリに付与します。
- 次の手順で必要な (アプリケーション (クライアント) ID ではなく) アプリのオブジェクト ID を見つけます。 アプリのオブジェクト ID は、Microsoft Entra 管理センターにあります。 アプリの登録の一覧に移動し、アプリの登録を選択します。 概要では、オブジェクト IDを見つけることができます。
- 次のステップで必要となる外部 IdP とソフトウェア ワークロードの
サブジェクトおよび 情報を取得してください。発行者の
アプリでフェデレーション ID 資格情報を構成する
GitHub Actions
GitHub アクションのフェデレーション ID を追加するには、次の手順に従います。
Microsoft Entra 管理センターのアプリ登録エクスペリエンスでアプリの登録を見つけます。 左側のナビゲーション ウィンドウで
証明書 & シークレットを選択し、[フェデレーション資格情報] タブ 選択し、[資格情報の追加] 選択します。 [フェデレーション資格情報シナリオ] ドロップダウン ボックスで、[Azure リソースをデプロイする GitHub Actions] を選択します。
GitHub Actions ワークフローの Organization と Repository を指定します。
エンティティの種類
、環境 、 ブランチ 、Pull request 、またはタグを選択し、値を指定します。 値は、GitHub ワークフローの構成と正確に一致している必要があります。 パターン マッチングは、ブランチとタグではサポートされていません。 プッシュ時ワークフローが多数のブランチまたはタグに対して実行される場合は、環境を指定します。 詳細については、の例を参照してください。 フェデレーション資格情報の [名前] を追加します。
発行者、対象ユーザー、および サブジェクト識別子 フィールドは、入力した値に基づいて自動的に入力されます。
[ の追加] を選択して、フェデレーション資格情報を構成します。
GitHub ワークフローには、Microsoft Entra アプリケーション登録の次の値を使用します。
AZURE_CLIENT_ID
: アプリケーション (クライアント) IDAZURE_TENANT_ID
: ディレクトリ (テナント) ID次のスクリーンショットは、アプリケーション ID とテナント ID をコピーする方法を示しています。
サブスクリプション ID を
AZURE_SUBSCRIPTION_ID
にしてください。 サブスクリプション ID を取得するには、Azure portal でサブスクリプション 開き、サブスクリプションを見つけます。 次に、サブスクリプション IDコピーします。
エンティティ型の例
ブランチの例
メイン ブランチのプッシュまたはプル要求イベントによってトリガーされるワークフローの場合:
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
Branch の エンティティ型の と、"main" の GitHub ブランチ名 指定します。
環境の例
"production" という名前の環境に関連付けられているジョブの場合:
on:
push:
branches:
- main
jobs:
deployment:
runs-on: ubuntu-latest
environment: production
steps:
- name: deploy
# ...deployment-specific steps
環境 の エンティティの種類 と、GitHub 環境名 "production" を指定します。
タグの例
たとえば、"v2" という名前のタグへのプッシュによってトリガーされるワークフローの場合は、次のようになります。
on:
push:
# Sequence of patterns matched against refs/heads
branches:
- main
- 'mona/octocat'
- 'releases/**'
# Sequence of patterns matched against refs/tags
tags:
- v2
- v1.*
タグ の エンティティ型 と、GitHub タグ名 "v2" を指定します。
Pull request の例
pull request イベントによってトリガーされるワークフローの場合は、pull request のエンティティ型を指定します
Kubernetes
Microsoft Entra 管理センターのアプリ登録エクスペリエンスでアプリの登録を見つけます。 左側のナビゲーション ウィンドウで
ドロップダウン メニューから、Azure リソース シナリオにアクセスする Kubernetes
クラスター発行者の URL、名前空間の、サービス アカウント名の、名前の フィールドを入力します。
- クラスター発行者 URL は、マネージド クラスターの OIDC 発行者 URL か、セルフマネージド クラスターの OIDC 発行者 URL です。
- サービス アカウント名 は、ポッドで実行されるプロセスの ID を提供する Kubernetes サービス アカウントの名前です。
- 名前空間 は、サービス アカウントの名前空間です。
- 名前 はフェデレーション資格情報の名前であり、後で変更することはできません。
その他の ID プロバイダー
Microsoft Entra 管理センターのアプリ登録エクスペリエンスでアプリの登録を見つけます。 左側のナビゲーション ウィンドウで
ドロップダウン メニューから その他の発行者 シナリオを選択します。
次のフィールドを指定します (例として Google Cloud で実行されているソフトウェア ワークロードを使用)。
- 名前 はフェデレーション資格情報の名前であり、後で変更することはできません。
- サブジェクト識別子: 外部 ID プロバイダーによって発行されたトークンの
sub
要求と一致する必要があります。 Google Cloud を使用するこの例では、サブジェクト は、使用する予定のサービス アカウントの一意の ID です。 - 発行者: 外部 ID プロバイダーによって発行されたトークンの
iss
要求と一致する必要があります。 OIDC Discovery 仕様に準拠する URL。Microsoft Entra ID では、この発行者 URL を使用して、トークンの検証に必要なキーをフェッチします。 Google Cloud の場合、発行者の はhttps://accounts.google.com
です。
アプリでフェデレーション ID 資格情報を一覧表示する
Microsoft Entra 管理センターのアプリ登録エクスペリエンスでアプリの登録を見つけます。 左側のナビゲーション ウィンドウで
アプリからフェデレーション ID 資格情報を削除する
Microsoft Entra 管理センターのアプリ登録エクスペリエンスでアプリの登録を見つけます。 左側のナビゲーション ウィンドウで
フェデレーション ID 資格情報を削除するには、資格情報の [削除] アイコン
フレキシブル フェデレーション ID 資格情報を設定する (プレビュー)
- Microsoft Entra ID に移動し、フェデレーション ID 資格情報を構成するアプリケーションを選択します。
- 左側のナビゲーション ウィンドウで、[証明書とシークレット] を選択します。
- [フェデレーション資格情報] タブで、[+ 資格情報の追加] を選択します。
- 表示される [資格情報の追加] ウィンドウで、[フェデレーション資格情報シナリオ] の横にあるドロップダウンメニューから、[その他の発行者] を選択します。
- 値のに、使用するクレーム照合式を入力してください。
前提 条件
- まだ Azure アカウントをお持ちでない場合は、続行する前に無料アカウント にサインアップ
。
Azure Cloud Shellで Bash 環境を使用します。 詳細については、「Azure Cloud Shellでの Bash のクイック スタート」を参照してください。
CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用している場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、「Azure CLIを使用したサインイン」を参照してください。
メッセージが表示されたら、最初に使用するときに Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、「Azure CLIで拡張機能を使用する」を参照してください。
az version
実行して、インストールされているバージョンと依存ライブラリを見つけます。 最新バージョンにアップグレードするには、az upgrade 実行します。
- Microsoft Entra ID でアプリ登録 を作成します。 外部ソフトウェア ワークロードの対象となる Azure リソースへのアクセス権をアプリに付与します。
- 次の手順で必要な、アプリのオブジェクト ID、アプリ (クライアント) ID、または識別子 URI を見つけます。 これらの値は、Microsoft Entra 管理センター
にあります。 登録済みアプリケーションの一覧に移動し、アプリの登録を選択します。 概要->Essentialsで、次の手順で必要な オブジェクト ID、アプリケーション (クライアント) ID、または アプリケーション ID URI 値を取得します。 - 必要な外部 IdP およびソフトウェアワークロードの サブジェクト情報、 および 発行者情報、 を次のステップで取得します。
アプリでフェデレーション ID 資格情報を構成する
az ad app federated-credential create コマンドを実行して、アプリに新しいフェデレーション ID 資格情報を作成します。
id
パラメーターは、アプリケーションの識別子 URI、アプリケーション ID、またはオブジェクト ID を指定します。 parameters
パラメーターは、フェデレーション ID 資格情報を作成するためのパラメーターを JSON 形式で指定します。
GitHub Actions の例
名 は、フェデレーション ID 資格情報の名前を指定します。
発行者 は、GitHub OIDC プロバイダー (https://token.actions.githubusercontent.com/
) へのパスを識別します。 この発行者は、Azure アプリケーションによって信頼されます。
サブジェクト は、GitHub Actions ワークフローの GitHub 組織、リポジトリ、環境を識別します。 GitHub Actions ワークフローが、GitHub トークンをアクセス トークンと交換するように Microsoft ID プラットフォームに要求すると、フェデレーション ID 資格情報の値が、指定された GitHub トークンに対してチェックされます。 Azure がアクセス トークンを付与する前に、要求はここで定義されている条件と一致している必要があります。
- 環境に関連付けられているジョブの場合:
repo:< Organization/Repository >:environment:< Name >
- 環境に関連付けられていないジョブの場合は、ワークフローのトリガーに使用される ref パスに基づいてブランチ/タグの ref パスを含めます:
repo:< Organization/Repository >:ref:< ref path>
。 たとえば、repo:n-username/ node_express:ref:refs/heads/my-branch
やrepo:n-username/ node_express:ref:refs/tags/my-tag
などです。 - pull request イベントによってトリガーされるワークフローの場合:
repo:< Organization/Repository >:pull-request
。
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "Testing",
"issuer": "https://token.actions.githubusercontent.com",
"subject": "repo:octo-org/octo-repo:environment:Production",
"description": "Testing",
"audiences": [
"api://AzureADTokenExchange"
]
}
Kubernetes の例
発行者 は、サービス アカウントの発行者 URL (マネージド クラスターの OIDC 発行者 URL またはセルフマネージド クラスターの OIDC 発行者 URL) です。
サブジェクト は、サービス アカウントに発行されたトークンのサブジェクト名です。 Kubernetes では、サブジェクト名に次の形式が使用されます: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
.
名 はフェデレーション資格情報の名前であり、後で変更することはできません。
対象ユーザー には、外部トークンに表示できる対象ユーザーが一覧表示されます。 このフィールドは必須です。 推奨値は api://AzureADTokenExchange
です。
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "Kubernetes-federated-credential",
"issuer": "https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
"subject": "system:serviceaccount:erp8asle:pod-identity-sa",
"description": "Kubernetes service account federated credential",
"audiences": [
"api://AzureADTokenExchange"
]
}
その他の ID プロバイダーの例
アプリでフェデレーション ID 資格情報を構成し、他の外部 ID プロバイダーとの信頼関係を作成できます。 次の例では、例として Google Cloud で実行されているソフトウェア ワークロードを使用します。
name
はフェデレーション資格情報の名前であり、後で変更することはできません。id
: アプリのオブジェクト ID、アプリケーション (クライアント) ID、または識別子 URI。subject
: 外部 ID プロバイダーによって発行されたトークン内のsub
要求と一致する必要があります。 Google Cloud を使用するこの例では、サブジェクト は、使用する予定のサービス アカウントの一意の ID です。issuer
: 外部 ID プロバイダーによって発行されたトークン内のiss
要求と一致する必要があります。 OIDC Discovery 仕様に準拠する URL。Microsoft Entra ID では、この発行者 URL を使用して、トークンの検証に必要なキーをフェッチします。 Google Cloud の場合、発行者の はhttps://accounts.google.com
です。audiences
: 外部トークンに表示できる対象ユーザーを一覧表示します。 このフィールドは必須です。 推奨値は "api://AzureADTokenExchange" です。
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "GcpFederation",
"issuer": "https://accounts.google.com",
"subject": "112633961854638529490",
"description": "Test GCP federation",
"audiences": [
"api://AzureADTokenExchange"
]
}
アプリでフェデレーション ID 資格情報を一覧表示する
az ad app federated-credential list コマンドを実行して、アプリのフェデレーション ID 資格情報を一覧表示します。
id
パラメーターは、アプリケーションの識別子 URI、アプリケーション ID、またはオブジェクト ID を指定します。
az ad app federated-credential list --id 00001111-aaaa-2222-bbbb-3333cccc4444
アプリでフェデレーション ID 資格情報を取得する
az ad app federated-credential show コマンドを実行して、アプリでフェデレーション ID 資格情報を取得します。
id
パラメーターは、アプリケーションの識別子 URI、アプリケーション ID、またはオブジェクト ID を指定します。
federated-credential-id
は、フェデレーション ID 資格情報の ID または名前を指定します。
az ad app federated-credential show --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
アプリからフェデレーション ID 資格情報を削除する
az ad app federated-credential delete コマンドを実行して、フェデレーション ID 資格情報をアプリから削除します。
id
パラメーターは、アプリケーションの識別子 URI、アプリケーション ID、またはオブジェクト ID を指定します。
federated-credential-id
は、フェデレーション ID 資格情報の ID または名前を指定します。
az ad app federated-credential delete --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
前提 条件
- サンプル スクリプトを実行するには、次の 2 つのオプションがあります。
- Azure Cloud Shell を使用します。これは、コード ブロックの右上隅にある [試してみる] ボタンから開くことができます。
- 次のセクションで説明するように、Azure PowerShell を使用してローカルでスクリプトを実行します。
- Microsoft Entra ID でアプリ登録 を作成します。 外部ソフトウェア ワークロードの対象となる Azure リソースへのアクセス権をアプリに付与します。
- 次の手順で必要な (アプリケーション (クライアント) ID ではなく) アプリのオブジェクト ID を見つけます。 アプリのオブジェクト ID は、Microsoft Entra 管理センターにあります。 登録済みアプリケーションの一覧に移動し、アプリの登録を選択します。 概要->Essentialsで、オブジェクト IDを見つけます。
- 外部 IdP とソフトウェア ワークロードに対して、次のステップで必要な
サブジェクトと および 情報を取得します。発行者の
Azure PowerShell をローカルで構成する
Cloud Shell を使用する代わりに、この記事で Azure PowerShell をローカルで使用するには:
Azure PowerShell の最新バージョン
まだインストールしていない場合はインストールします。 Azure にサインインします。
Connect-AzAccount
最新バージョンの PowerShellGetをインストールします。
Install-Module -Name PowerShellGet -AllowPrerelease
次の手順でこのコマンドを実行した後、現在の PowerShell セッションから
Exit
する必要がある場合があります。この記事のフェデレーション ID 資格情報操作を実行するには、
Az.Resources
モジュールのプレリリース バージョンをインストールします。Install-Module -Name Az.Resources -AllowPrerelease
アプリでフェデレーション ID 資格情報を構成する
New-AzADAppFederatedCredential コマンドレットを実行して、アプリケーションに新しいフェデレーション ID 資格情報を作成します。
GitHub Actions の例
- ApplicationObjectId: 以前に Microsoft Entra ID に登録したアプリケーション (クライアント) ID ではなく、アプリのオブジェクト ID。
- 発行者 は、GitHub を外部トークン発行者として識別します。
- サブジェクト は、GitHub Actions ワークフローの GitHub 組織、リポジトリ、環境を識別します。 GitHub Actions ワークフローが、GitHub トークンをアクセス トークンと交換するように Microsoft ID プラットフォームに要求すると、フェデレーション ID 資格情報の値が、指定された GitHub トークンに対してチェックされます。
- 環境に関連付けられているジョブの場合:
repo:< Organization/Repository >:environment:< Name >
- 環境に関連付けられていないジョブの場合は、ワークフローのトリガーに使用される ref パスに基づいてブランチ/タグの ref パスを含めます:
repo:< Organization/Repository >:ref:< ref path>
。 たとえば、repo:n-username/ node_express:ref:refs/heads/my-branch
やrepo:n-username/ node_express:ref:refs/tags/my-tag
などです。 - pull request イベントによってトリガーされるワークフローの場合:
repo:< Organization/Repository >:pull-request
。
- 環境に関連付けられているジョブの場合:
- 名前 はフェデレーション資格情報の名前であり、後で変更することはできません。
- 対象ユーザー には、外部トークンに表示できる対象ユーザーが一覧表示されます。 このフィールドは必須です。 推奨値は
api://AzureADTokenExchange
です。
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://token.actions.githubusercontent.com/' -Name 'GitHub-Actions-Test' -Subject 'repo:octo-org/octo-repo:environment:Production'
Kubernetes の例
- ApplicationObjectId: 以前に Microsoft Entra ID に登録したアプリケーション (クライアント) ID ではなく、アプリのオブジェクト ID。
- 発行者 は、サービス アカウントの発行者 URL (マネージド クラスターの OIDC 発行者 URL またはセルフマネージド クラスターの OIDC 発行者 URL) です。
- サブジェクト は、サービス アカウントに発行されたトークンのサブジェクト名です。 Kubernetes では、サブジェクト名に次の形式が使用されます:
system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
. - 名前 はフェデレーション資格情報の名前であり、後で変更することはできません。
- 対象ユーザー では、外部トークンの
aud
要求に含まれる可能性のある対象ユーザーが列挙されています。
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/' -Name 'Kubernetes-federated-credential' -Subject 'system:serviceaccount:erp8asle:pod-identity-sa'
その他の ID プロバイダーの例
次のパラメーターを指定します (例として Google Cloud で実行されているソフトウェア ワークロードを使用)。
- ObjectID: 以前に Microsoft Entra ID に登録したアプリのオブジェクト ID (アプリケーション (クライアント) ID ではありません)。
- 名前 はフェデレーション資格情報の名前であり、後で変更することはできません。
- サブジェクト: 外部 ID プロバイダーによって発行されたトークンの
sub
要求と一致する必要があります。 Google Cloud を使用するこの例では、サブジェクト は、使用する予定のサービス アカウントの一意の ID です。 - 発行者: 外部 ID プロバイダーによって発行されたトークンの
iss
要求と一致する必要があります。 OIDC Discovery 仕様に準拠する URL。Microsoft Entra ID では、この発行者 URL を使用して、トークンの検証に必要なキーをフェッチします。 Google Cloud の場合、発行者の はhttps://accounts.google.com
です。 - Audiences: 外部トークン内の
aud
要求と一致する必要があります。 セキュリティ上の理由から、Microsoft Entra ID 用のトークンに対して一意の値を選択する必要があります。 推奨値は "api://AzureADTokenExchange" です。
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://accounts.google.com' -Name 'GcpFederation' -Subject '112633961854638529490'
アプリでフェデレーション ID 資格情報を一覧表示する
Get-AzADAppFederatedCredential コマンドレットを実行して、アプリケーションのフェデレーション ID 資格情報を一覧表示します。
Get-AzADApplication -ObjectId $app | Get-AzADAppFederatedCredential
アプリでフェデレーション ID 資格情報を取得する
Get-AzADAppFederatedCredential コマンドレットを実行して、アプリケーションから ID によるフェデレーション ID 資格情報を取得します。
Get-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
アプリからフェデレーション ID 資格情報を削除する
Remove-AzADAppFederatedCredential コマンドレットを実行して、アプリケーションからフェデレーション ID 資格情報を削除します。
Remove-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
前提 条件
Microsoft Entra ID でアプリ登録 を作成します。 外部ソフトウェア ワークロードの対象となる Azure リソースへのアクセス権をアプリに付与します。
次の手順で必要な (アプリケーション (クライアント) ID ではなく) アプリのオブジェクト ID を見つけます。 アプリのオブジェクト ID は、Microsoft Entra 管理センターにあります。 登録済みアプリケーションの一覧に移動し、アプリの登録を選択します。 概要->Essentialsで、オブジェクト IDを見つけます。
次の手順で必要な外部 IdP とソフトウェア ワークロードのために、サブジェクト と 発行者 の情報を取得します。
Microsoft Graph エンドポイント (
アプリでフェデレーション ID 資格情報を構成する
GitHub Actions
次のメソッドを実行して、アプリ (アプリのオブジェクト ID で指定) の新しいフェデレーション ID 資格情報を作成します。 issuer
は、GitHub を外部トークン発行者として識別します。 subject
は、GitHub Actions ワークフローの GitHub 組織、リポジトリ、環境を識別します。 GitHub Actions ワークフローが、GitHub トークンをアクセス トークンと交換するように Microsoft ID プラットフォームに要求すると、フェデレーション ID 資格情報の値が、指定された GitHub トークンに対してチェックされます。
az rest --method POST --uri 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials' --body '{"name":"Testing","issuer":"https://token.actions.githubusercontent.com","subject":"repo:octo-org/octo-repo:environment:Production","description":"Testing","audiences":["api://AzureADTokenExchange"]}'
そして、あなたは応答を得ます:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
スニペットでは、パラメーターは次のとおりです。
name
: Azure アプリケーションの名前。issuer
: GitHub OIDC プロバイダーへのパス:https://token.actions.githubusercontent.com
。 この発行者は、Azure アプリケーションによって信頼されます。subject
: Azure がアクセス トークンを付与する前に、要求はここで定義されている条件と一致する必要があります。- 環境に関連付けられているジョブの場合:
repo:< Organization/Repository >:environment:< Name >
- 環境に関連付けられていないジョブの場合は、ワークフローのトリガーに使用される ref パスに基づいてブランチ/タグの ref パスを含めます:
repo:< Organization/Repository >:ref:< ref path>
。 たとえば、repo:n-username/ node_express:ref:refs/heads/my-branch
やrepo:n-username/ node_express:ref:refs/tags/my-tag
などです。 - pull request イベントによってトリガーされるワークフローの場合:
repo:< Organization/Repository >:pull-request
。
- 環境に関連付けられているジョブの場合:
audiences
外部トークンに表示できる対象ユーザーが一覧表示されます。 このフィールドは必須です。 推奨値は "api://AzureADTokenExchange" です。
Kubernetes の例
次の方法を実行して、アプリでフェデレーション ID 資格情報を構成し、Kubernetes サービス アカウントとの信頼関係を作成します。 次のパラメーターを指定します。
issuer
は、サービス アカウントの発行者 URL (マネージド クラスターの OIDC 発行者 URL またはセルフマネージド クラスターの OIDC 発行者 URL) です。subject
は、サービス アカウントに発行されたトークンのサブジェクト名です。 Kubernetes では、サブジェクト名に次の形式が使用されます:system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
.name
はフェデレーション資格情報の名前であり、後で変更することはできません。audiences
外部トークンに表示できる対象ユーザーが一覧表示されます。 このフィールドは必須です。 推奨値は "api://AzureADTokenExchange" です。
az rest --method POST --uri 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials' --body '{"name":"Kubernetes-federated-credential","issuer":"https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/","subject":"system:serviceaccount:erp8asle:pod-identity-sa","description":"Kubernetes service account federated credential","audiences":["api://AzureADTokenExchange"]}'
そして、あなたは応答を得ます:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Kubernetes service account federated credential",
"id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
"issuer": "https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
"name": "Kubernetes-federated-credential",
"subject": "system:serviceaccount:erp8asle:pod-identity-sa"
}
その他の ID プロバイダーの例
次のメソッドを実行して、アプリでフェデレーション ID 資格情報を構成し、外部 ID プロバイダーとの信頼関係を作成します。 次のパラメーターを指定します (例として Google Cloud で実行されているソフトウェア ワークロードを使用)。
- 名前 はフェデレーション資格情報の名前であり、後で変更することはできません。
- ObjectID: 以前に Microsoft Entra ID に登録したアプリのオブジェクト ID (アプリケーション (クライアント) ID ではありません)。
- サブジェクト: 外部 ID プロバイダーによって発行されたトークンの
sub
要求と一致する必要があります。 Google Cloud を使用するこの例では、サブジェクト は、使用する予定のサービス アカウントの一意の ID です。 - 発行者: 外部 ID プロバイダーによって発行されたトークンの
iss
要求と一致する必要があります。 OIDC Discovery 仕様に準拠する URL。Microsoft Entra ID では、この発行者 URL を使用して、トークンの検証に必要なキーをフェッチします。 Google Cloud の場合、発行者の は "https://accounts.google.com"" です。 - 対象ユーザー 外部トークンに表示できる対象ユーザーを一覧表示します。 このフィールドは必須です。 推奨値は "api://AzureADTokenExchange" です。
az rest --method POST --uri 'https://graph.microsoft.com/applications/<ObjectID>/federatedIdentityCredentials' --body '{"name":"GcpFederation","issuer":"https://accounts.google.com","subject":"112633961854638529490","description":"Testing","audiences":["api://AzureADTokenExchange"]}'
そして、あなたは応答を得ます:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
"issuer": "https://accounts.google.com"",
"name": "GcpFederation",
"subject": "112633961854638529490"
}
アプリでフェデレーション ID 資格情報を一覧表示する
次のメソッドを実行して、アプリのフェデレーション ID 資格情報 (アプリのオブジェクト ID で指定) を
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials'
次のような応答が表示されます。
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials",
"value": [
{
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com/",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
]
}
アプリでフェデレーション ID 資格情報を取得する
次のメソッドを 実行して、アプリのフェデレーション アイデンティティ資格 を取得します (アプリのオブジェクト ID によって指定)。
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444//federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
次のような応答が表示されます。
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials",
"value": {
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"@odata.id": "https://graph.microsoft.com/v2/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/directoryObjects/$/Microsoft.DirectoryServices.Application('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials('00001111-aaaa-2222-bbbb-3333cccc4444')/00001111-aaaa-2222-bbbb-3333cccc4444",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com/",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
}
アプリからフェデレーション ID 資格情報を削除する
次のメソッドを実行して、フェデレーション ID 資格情報 をアプリ (アプリのオブジェクト ID で指定) から
az rest -m DELETE -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
関連項目
- Kubernetes のワークロード ID フェデレーションを使用する方法については、オープン ソース プロジェクト Kubernetes 用の Microsoft Entra Workload ID
参照してください。 - GitHub Actions でワークロード ID フェデレーションを使用する方法については、「GitHub Actions ワークフローを構成してアクセス トークンを取得する」を参照してください。
- Microsoft ID プロバイダーからアクセス トークンを取得して Azure リソースにアクセスするように GitHub Actions ワークフローを構成する方法の詳細については、
GitHub Actions のドキュメントを参照してください。 - 詳細については、Microsoft Entra ID が OAuth 2.0 クライアント資格情報付与 と、別の IdP によって発行されたクライアント アサーションを使用してトークンを取得する方法について説明します。
- 外部 ID プロバイダーによって作成される JWT の必要な形式については、アサーション形式を参照してください。