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

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

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

重要

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

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

前提条件

お使いの Azure AD テナントでアプリケーションを登録するには、次が必要です。

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

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

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

  1. Azure ポータルにサインインします。

  2. Azure Active Directory を検索して選択します。

  3. [アプリの登録] を選択し、[新規登録] を選択します。

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

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

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

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

    アプリケーションの名前を入力する。

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

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

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

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

  1. Azure ポータルにサインインします。

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

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

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

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

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

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

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

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

    ロールの割り当てを示すスクリーンショット。

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

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

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

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

  1. Azure Active Directory を検索して選択します。
  2. Azure AD の [アプリの登録] から、アプリケーションを選択します。
  3. アプリの [概要] ページで、ディレクトリ (テナント) ID 値をコピーし、アプリケーション コードに保存します。
  4. アプリケーション (クライアント) ID 値をコピーし、アプリケーション コードに保存します。

認証の設定

サービス プリンシパルで使用できる認証には、パスワードベースの認証 (アプリケーション シークレット) と証明書ベースの認証の 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. Azure Active Directory を検索して選択します。
  2. Azure AD の [アプリの登録] から、アプリケーションを選択します。
  3. [証明書とシークレット] を選択します。
  4. [証明書][証明書のアップロード] を選び、証明書 (既存の証明書、またはエクスポートした自己署名証明書) を選びます。
  5. [追加] を選択します。

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

オプション 2:新しいアプリケーション シークレットを作成する

証明書を使用しないことを選択した場合は、新しいアプリケーション シークレットを作成できます。

  1. Azure Active Directory を検索して選択します。
  2. [アプリの登録] を選択し、一覧からアプリケーションを選択します。
  3. [証明書とシークレット] を選択します。
  4. [クライアント シークレット] を選択してから、[新しいクライアント シークレット] を選択します。
  5. シークレットの説明と期間を指定します。
  6. [追加] を選択します。

クライアント シークレットを保存すると、クライアント シークレットの値が表示されます。 キーは後で取得できないため、この値をコピーしておきます。 キー値は、アプリケーションとしてサインインする際にアプリケーション ID と共に入力します。 アプリケーションが取得できる場所にキー値を保存します。

クライアント シークレットを示すスクリーンショット。

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

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

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

  1. Azure ポータルにサインインします。

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

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

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

  5. 保存

    アクセス ポリシーの追加

次のステップ