この記事では、ロールベースのアクセス制御 (RBAC) で使用できる、Microsoft Entra のアプリケーションとサービス プリンシパルを作成する方法について説明します。 Microsoft Entra ID に新しいアプリケーションを登録すると、アプリの登録用にサービス プリンシパルが自動的に作成されます。 サービス プリンシパルは、Microsoft Entra テナント内のアプリの ID です。 リソースへのアクセスはサービス プリンシパルに割り当てられているロールによって制限されるため、どのリソースに、どのレベルでアクセスできるかを制御することができます。 セキュリティ上の理由から、自動化ツールにはユーザー ID でのサインインを許可するのではなく、常にサービス プリンシパルを使用することを推奨します。
この例は、1 つの組織内で使用される基幹業務アプリケーションに適用できます。 Azure PowerShell または Azure CLI を使用してサービス プリンシパルを作成することもできます。
重要
サービス プリンシパルを作成する代わりに、アプリケーション ID 用に Azure リソースのマネージド ID を使用することを検討します。 コードが、マネージド ID をサポートするサービス上で実行され、Microsoft Entra 認証をサポートするリソースにアクセスする場合、マネージド ID は優れた選択肢となります。 現在サポートされているサービスなど、Azure リソースのマネージド ID の詳細については、「 Azure リソースのマネージド ID とは」を参照してください。
アプリの登録、アプリケーション オブジェクト、およびサービス プリンシパル間の関係の詳細については、 Microsoft Entra ID のアプリケーション オブジェクトとサービス プリンシパル オブジェクトを参照してください。
前提条件
Microsoft Entra テナントにアプリケーションを登録するには、次のものが必要です。
- Microsoft Entra ユーザー アカウント。 アカウントをまだお持ちでない場合は、 無料でアカウントを作成できます。
- アプリケーションを Microsoft Entra テナントに登録し、Azure サブスクリプションでそのアプリケーションにロールを割り当てるために、十分なアクセス許可。 これらのタスクを完了するには、
Application.ReadWrite.All
アクセス許可が必要です。
Microsoft Entra ID にアプリケーションを登録し、サービス プリンシパルを作成する
Microsoft Entra 管理センターに、少なくともクラウド アプリケーション管理者としてサインインします。
Entra ID>App registrations に移動し、[新しい登録] を選択します。
アプリケーションに例アプリなどの名前を付けます。
[ サポートされているアカウントの種類] で、[この組織のディレクトリ内のアカウントのみ] を選択します。
[ リダイレクト URI] で、作成するアプリケーションの種類として [Web ] を選択します。 アクセス トークンの送信先の URI を入力します。
[ 登録] を選択します。
アプリケーションにロールを割り当てる
サブスクリプション内のリソースにアクセスするには、アプリケーションにロールを割り当てる必要があります。 これは、Azure portal を使用して行う必要があります。 どのロールがそのアプリケーションに適切なアクセス許可を提供するかを判断します。 使用可能なロールの詳細については、 Azure の組み込みロールに関するページを参照してください。
スコープは、サブスクリプション、リソース グループ、またはリソースのレベルで設定できます。 アクセス許可は、スコープの下位レベルに継承されます。
Azure portal にサインインします。
画面の上部にある検索バーで、[サブスクリプション] を検索して選択 します。
新しいウィンドウで、変更するサブスクリプションを選択します。 探しているサブスクリプションが表示されない場合は、 グローバル サブスクリプション フィルターを選択します。 必要なサブスクリプションがテナントで選択されていることを確認してください。
左側のウィンドウで、[ アクセス制御 (IAM)] を選択します。
[ 追加] を選択し、[ ロールの割り当ての追加] を選択します。
[ ロール ] タブで、一覧からアプリケーションに割り当てるロールを選択し、[ 次へ] を選択します。
[ メンバー ] タブの [ アクセスの割り当て] で、[ ユーザー、グループ、またはサービス プリンシパル] を選択します。
[ メンバーの選択] を選択します。 既定では、Microsoft Entra アプリケーションは、使用可能なオプションに表示されません。 アプリケーションを検索するには、名前で検索します。
[選択] ボタンを 選択 し、[ 確認と割り当て] を選択します。
サービス プリンシパルが設定されました。 それを使用してスクリプトまたはアプリの実行を開始できます。 サービス プリンシパル (アクセス許可、ユーザーが同意したアクセス許可、同意したユーザーの確認、アクセス許可の確認、サインイン情報の表示など) を管理するには、 エンタープライズ アプリケーションに移動します。
次のセクションでは、プログラムでサインインするときに必要な値を取得する方法を示します。
アプリケーションにサインインする
プログラムでサインインするときは、認証要求でディレクトリ (テナント) ID とアプリケーション (クライアント) ID を渡します。 証明書または認証キーも必要です。 ディレクトリ ID とアプリケーション ID を取得するには:
- Microsoft Entra 管理センターのホーム ページを開きます。
- Entra ID>App 登録に移動し、アプリケーションを選択します。
- アプリの [概要] ページで、ディレクトリ (テナント) ID 値をコピーし、アプリケーション コードに保存します。
- アプリケーション (クライアント) ID 値をコピーし、アプリケーション コードに保存します。
認証の設定
サービス プリンシパルで使用できる認証には、パスワードベースの認証 (アプリケーション シークレット) と証明書ベースの認証の 2 種類があります。 証明機関によって発行された信頼された証明書を使用することをお勧めしますが、アプリケーション シークレットを作成したり、テスト用に自己署名証明書を作成したりすることもできます。
オプション 1 (推奨): 証明機関によって発行された信頼された証明書をアップロードする
証明書ファイルをアップロードする。
- Entra ID>App 登録に移動し、アプリケーションを選択します。
- [証明書とシークレット] を選択します。
- [ 証明書] を選択し、[ 証明書のアップロード ] を選択し、アップロードする証明書ファイルを選択します。
- 追加を選択します。 証明書がアップロードされると、サムプリント、開始日、有効期限の値が表示されます。
アプリケーション登録ポータルでアプリケーションに証明書を登録した後、 機密クライアント アプリケーション コードで証明書を使用できるようにします。
オプション 2: テストのみ: 自己署名証明書を作成してアップロードする
必要に応じて、テスト目的でのみ自己署名証明書を作成できます。 自己署名証明書を作成するには、Windows PowerShell を開き、次のパラメーターを指定 して New-SelfSignedCertificate を実行して、コンピューター上のユーザー証明書ストアに証明書を作成します。
$cert=New-SelfSignedCertificate -Subject "CN=DaemonConsoleCert" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature
Windows コントロール パネルからアクセスできる ユーザー証明書の管理 MMC スナップインを使用して、この証明書をファイルにエクスポートします。
- [スタート] メニューから [実行] を選択し、「certmgr.msc」と入力します。 現在のユーザーの証明書マネージャー ツールが表示されます。
- 証明書を表示するには、左側のウィンドウの [ 証明書 - 現在のユーザー ] で、[ 個人用 ] ディレクトリを展開します。
- 作成した証明書を右クリックし、[ すべてのタスク- >Export] を選択します。
- 証明書のエクスポート ウィザードに従います。
証明書をアップロードするには、次の手順に従います。
- Entra ID>App 登録に移動し、アプリケーションを選択します。
- [証明書とシークレット] を選択します。
- [ 証明書] を選択し、[ 証明書のアップロード ] を選択し、証明書 (既存の証明書またはエクスポートした自己署名証明書) を選択します。
- 追加を選択します。
アプリケーション登録ポータルでアプリケーションに証明書を登録した後、 機密クライアント アプリケーション コードで証明書を使用できるようにします。
手順 3: 新しいクライアント シークレットを作成する
証明書を使わないことを選んだ場合は、新しいクライアント シークレットを作成できます。
- Entra ID>App 登録に移動し、アプリケーションを選択します。
- [証明書とシークレット] を選択します。
- [ クライアント シークレット] を選択し、[ 新しいクライアント シークレット] を選択します。
- シークレットの説明と期間を指定します。
- 追加を選択します。
クライアント シークレットを保存すると、クライアント シークレットの値が表示されます。 これは一度しか表示されないので、この値をコピーし、アプリケーションから取得できる場所 (通常、アプリケーションが clientId
や authority
のような値をソース コードに保持する場所) に格納してください。 アプリケーションとしてサインインするアプリケーションのクライアント ID と共にシークレット値を指定します。
リソースに対するアクセス ポリシーを構成する
アプリケーションからアクセスする必要があるリソースに対する追加のアクセス許可の構成が必要になる場合があります。 たとえば、 キー コンテナーのアクセス ポリシーを更新 して、アプリケーションがキー、シークレット、または証明書にアクセスできるようにする必要もあります。
アクセス ポリシーを構成するには:
Azure portal にサインインします。
キー コンテナーを選択し、[ アクセス ポリシー] を選択します。
[ アクセス ポリシーの追加] を選択し、アプリケーションに付与するキー、シークレット、証明書のアクセス許可を選択します。 以前に作成したサービス プリンシパルを選択します。
[ 追加] を選択してアクセス ポリシーを追加し、[ 保存] を選択します。
関連するコンテンツ
- Azure PowerShell または Azure CLI を使用してサービス プリンシパルを作成する方法について説明します。
- セキュリティ ポリシーの指定については、 Azure ロールベースのアクセス制御 (Azure RBAC) に関するページを参照してください。
- ユーザーに対して許可または拒否できる使用可能なアクションの一覧については、「 Azure Resource Manager リソース プロバイダーの操作」を参照してください。
- Microsoft Graph を使用したアプリ登録の操作については、Applications API リファレンスを参照してください。