リソースにアクセスできる Microsoft Entra アプリケーションとサービス プリンシパルを作成する

この記事では、ロールベースのアクセス制御で使用できる、Microsoft Entra のアプリケーションとサービス プリンシパルを作成する方法について説明します。 Microsoft Entra ID に新しいアプリケーションを登録すると、アプリの登録用にサービス プリンシパルが自動的に作成されます。 サービス プリンシパルは、Microsoft Entra テナント内のアプリの ID です。 リソースへのアクセスはサービス プリンシパルに割り当てられているロールによって制限されるため、どのリソースに、どのレベルでアクセスできるかを制御することができます。 セキュリティ上の理由から、自動化ツールにはユーザー ID でのサインインを許可するのではなく、常にサービス プリンシパルを使用することを推奨します。

この記事では、Azure portal でシングル テナント アプリケーションを作成します。 この例は、1 つの組織内で使用される基幹業務アプリケーションに適用できます。 Azure PowerShell または Azure CLI を使用して、サービス プリンシパルを作成することもできます。

重要

サービス プリンシパルを作成する代わりに、アプリケーション ID 用に Azure リソースのマネージド ID を使用することを検討します。 コードが、マネージド ID をサポートするサービス上で実行され、Microsoft Entra 認証をサポートするリソースにアクセスする場合、マネージド ID は優れた選択肢となります。 Azure リソースのマネージド ID の詳細 (どのサービスが現在マネージド ID をサポートしているかなど) については、「Azure リソースのマネージド ID とは」を参照してください。

アプリの登録、アプリケーション オブジェクト、サービス プリンシパルの関係について詳しくは、「Microsoft Entra ID のアプリケーション オブジェクトとサービス プリンシパル オブジェクト」を参照してください。

前提条件

Microsoft Entra テナントにアプリケーションを登録するには、次のものが必要です。

アプリの登録に必要なアクセス許可

アプリケーションを Microsoft Entra テナントに登録し、Azure サブスクリプションでそのアプリケーションにロールを割り当てるために、十分なアクセス許可を持っている必要があります。 これらのタスクを完了するには、Application.ReadWrite.All アクセス許可が必要です。

Microsoft Entra ID にアプリケーションを登録し、サービス プリンシパルを作成する

ヒント

この記事の手順は、開始するポータルによって若干異なる場合があります。

  1. クラウド アプリケーション管理者以上として Microsoft Entra 管理センターにサインインします。

  2. [ID][アプリケーション][アプリ登録] の順に進み、[新規登録] を選択します。

  3. アプリケーションに名前を付けます ("example-app" など)。

  4. サポートされているアカウントを選択します。これにより、アプリケーションを使用できるユーザーを決定します。

  5. [リダイレクト URI] で、作成するアプリケーションの種類で [Web] を選択します。 アクセス トークンの送信先の URI を入力します。

  6. [登録] を選択します。

    Type a name for your application.

Microsoft Entra アプリケーションとサービス プリンシパルが作成されました。

アプリケーションにロールを割り当てる

サブスクリプション内のリソースにアクセスするには、アプリケーションにロールを割り当てる必要があります。 どのロールがそのアプリケーションに適切なアクセス許可を提供するかを判断します。 利用できるロールの詳細については、「Azure 組み込みロール」を参照してください。

スコープは、サブスクリプション、リソース グループ、またはリソースのレベルで設定できます。 アクセス許可は、スコープの下位レベルに継承されます。

  1. Azure portal にサインインします。

  2. アプリケーションの割り当て先のスコープのレベルを選択します。 たとえば、サブスクリプション スコープでロールを割り当てるには、[サブスクリプション] を検索して選択します。 探しているサブスクリプションが表示されない場合は、グローバル サブスクリプション フィルターを選択します。 必要なサブスクリプションがテナントで選択されていることを確認してください。

  3. [アクセス制御 (IAM)] を選択します。

  4. [追加] を選択し、 [ロールの割り当ての追加] を選択します。

  5. [ロール] タブで、一覧からアプリケーションに割り当てるロールを選択します。 たとえば、インスタンスの再起動、開始、停止などのアクションをアプリケーションで実行できるようにするには、[共同作成者] ロールを選択します。

  6. [次へ] を選択します。

  7. [メンバー] タブの [アクセスの割り当て先] を選択し、[ユーザー、グループ、またはサービス プリンシパル] を選びます

  8. [メンバーの選択] を選びます。 既定では、Microsoft Entra アプリケーションは、使用可能なオプションに表示されません。 アプリケーションを検索するには、その名前で検索します。

  9. [選択] ボタンを選択し、[確認と割り当て] を選択します。

    Screenshot showing role assignment.

サービス プリンシパルが設定されました。 それを使用してスクリプトまたはアプリの実行を開始できます。 サービス プリンシパル (アクセス許可、ユーザーが承諾したアクセス許可、承諾したユーザーの確認、アクセス許可の確認、サイン イン情報の確認など) を管理するには、エンタープライズ アプリケーションに移動します。

次のセクションでは、プログラムでサインインするときに必要な値を取得する方法を示します。

アプリケーションにサインインする

プログラムでサインインするときは、認証要求でテナント ID とアプリケーション ID を渡します。 証明書または認証キーも必要です。 ディレクトリ (テナント) ID とアプリケーション ID を取得するには:

  1. [ID][アプリケーション][アプリ登録] の順に進み、アプリケーションを選択します。
  2. アプリの [概要] ページで、ディレクトリ (テナント) ID 値をコピーし、アプリケーション コードに保存します。
  3. アプリケーション (クライアント) ID 値をコピーし、アプリケーション コードに保存します。

認証の設定

サービス プリンシパルで使用できる認証には、パスワードベースの認証 (アプリケーション シークレット) と証明書ベースの認証の 2 種類があります。 証明機関によって発行された信頼された証明書を使用することをお勧めしますが、アプリケーション シークレットを作成したり、テスト用に自己署名証明書を作成したりすることもできます。

証明書ファイルをアップロードする。

  1. [ID][アプリケーション][アプリ登録] の順に進み、アプリケーションを選択します。
  2. [証明書とシークレット] を選択します。
  3. [証明書] を選択し、[証明書のアップロード] を選択し、アップロードする証明書ファイルを選択します。
  4. [追加] を選択します。 証明書がアップロードされると、サムプリント、開始日、有効期限の値が表示されます。

アプリケーション登録ポータルで証明書をアプリケーションに登録した後、機密クライアント アプリケーション コードで証明書を使用できるようにします。

オプション 2: テストのみ- 自己署名証明書を作成してアップロードする

必要に応じて、テスト目的でのみ自己署名証明書を作成できます。 自己署名証明書を作成するには、Windows PowerShell を開き、次のパラメーターを使用して New-SelfSignedCertificate を実行し、コンピューター上のユーザー証明書ストアに証明書を作成します。

$cert=New-SelfSignedCertificate -Subject "CN=DaemonConsoleCert" -CertStoreLocation "Cert:\CurrentUser\My"  -KeyExportPolicy Exportable -KeySpec Signature

Windows コントロール パネルからアクセスできる [Manage User Certificate]\(ユーザー証明書の管理) MMC スナップインを使用して、この証明書をファイルにエクスポートします。

  1. [スタート] メニューから [ファイル名を指定して実行] メニューを選択し、「certmgr.msc」と入力します。 現在のユーザーの証明書マネージャー ツールが表示されます。
  2. 証明書を表示するには、左ペインの [証明書 - 現在のユーザー] の下の [個人] ディレクトリを展開します。
  3. 作成した証明書を右クリックし、[すべてのタスク] -> [エクスポート] を選択します。
  4. 証明書のエクスポート ウィザードに従います。

証明書をアップロードするには、次の手順に従います。

  1. [ID][アプリケーション][アプリ登録] の順に進み、アプリケーションを選択します。
  2. [証明書とシークレット] を選択します。
  3. [証明書][証明書のアップロード] を選び、証明書 (既存の証明書、またはエクスポートした自己署名証明書) を選びます。
  4. [追加] を選択します。

アプリケーション登録ポータルで証明書をアプリケーションに登録した後、機密クライアント アプリケーション コードで証明書を使用できるようにします。

手順 3: 新しいクライアント シークレットを作成する

証明書を使わないことを選んだ場合は、新しいクライアント シークレットを作成できます。

  1. [ID][アプリケーション][アプリ登録] の順に進み、アプリケーションを選択します。
  2. [証明書とシークレット] を選択します。
  3. [クライアント シークレット] を選択してから、[新しいクライアント シークレット] を選択します。
  4. シークレットの説明と期間を指定します。
  5. [追加] を選択します。

クライアント シークレットを保存すると、クライアント シークレットの値が表示されます。 これは一度しか表示されないので、この値をコピーし、アプリケーションから取得できる場所 (通常、アプリケーションが clientIdauthoruty のような値をソース コードに保持する場所) に格納してください。 アプリケーションとしてサインインするには、アプリケーションのクライアント ID と共にこのシークレット値を指定します。

Screenshot showing the client secret.

リソースに対するアクセス ポリシーを構成する

アプリケーションからアクセスする必要があるリソースに対する追加のアクセス許可の構成が必要になる場合があります。 たとえば、キー、シークレット、または証明書へのアクセス権をアプリケーションに付与するには、キー コンテナーのアクセス ポリシーも更新する必要があります。

アクセス ポリシーを構成するには:

  1. Azure portal にサインインします。

  2. キー コンテナーを選択し、[アクセス ポリシー] を選択します。

  3. [アクセス ポリシーの追加] を選択し、アプリケーションに付与するキー、シークレット、証明書のアクセス許可を選択します。 以前に作成したサービス プリンシパルを選択します。

  4. [追加] を選択してアクセス ポリシーを追加します。

  5. 保存

    Add access policy

次のステップ