Azure サービスプリンシパルの使用
Azure サービスプリンシパル
Azure サービスプリンシパルは、ロールに基づいたアプリケーションベースの認証です。これは、認証がユーザーごとではなく、アプリケーションごとに行われることを意味します。 アプリで実行されるすべてのタスクは、デフォルトユーザーコンテキストなしで実行されます。 リソースへのアプリケーションのアクセスは、割り当てられたロールの権限によって制御されます。
Azure サービスプリンシパル認証を使用するには、以下を行います。
- 認証アプリケーションにロールを割り当てる機能を設定します。これには、カスタムOAuth アプリケーションの作成 で説明するように、カスタムOAuth AD アプリケーションを作成します。
- Azure AD テナントにアプリケーションを登録し、ロールベースのアクセス制御で使用できる新しいサービスプリンシパルを作成して、サブスクリプション内のリソースにアクセスします。
以下の手順に従います。
- カスタムOAuth アプリケーションの作成 での説明のとおりに、カスタムAzure AD アプリケーションを作成します。
- アプリケーションへのロールの割り当て:
- 検索バーを使用してサブスクリプションサービスを検索します。
- サブスクリプションページを開きます。
- アプリケーションを割り当てるサブスクリプションを選択します。
- アクセス制御(IAM)を開きます。
- 追加 -> ロールの割り当ての追加を選択します。Azure Data Catalog はロールの割り当ての追加ページを開きます。
- 作成したカスタムAzure AD アプリケーションに所有者ロールを割り当てます。
管理者の同意
管理者の同意は、Azure Active Directory テナントの管理者が、管理者の同意を明示的に必要とするカスタムアプリケーションに権限を付与する場合に行います。
Azure ポータルで新しいAzure AD アプリケーションを作成する場合には、アプリケーションに必要なアクセス許可を指定する必要があります。一部のアクセス許可には、「管理者の同意が必要」と記載されている場合があります。 例えば、すべてのグループのアクセス許可には管理者の同意が必要です。アプリケーションが管理者の同意を必要とする場合、方法は2つあります。
管理者の同意を付与する最も簡単な方法は、管理者がportal.azure.com にログインして、アプリの登録で作成したアプリケーションに移動することです。API のアクセス許可で、 同意の付与をクリックします。これにより、アプリケーションが作成されたテナントにアクセス権限が付与されます。
組織に複数のテナントがある場合、または組織外の他のテナントにアプリのアクセス許可を与える必要がある場合、GetAdminConsentURL ストアドプロシージャを使用してAdmin Authorization URL を生成します。GetOAuthAuthorizationURL ストアドプロシージャとは異なり、このエンドポイントから返される重要な情報はありません。代わりに、OAuth アプリケーションが正常に認可されると、アクセス権限が付与されたことを示すBoolean 値が返されます。
管理者がOAuth アプリケーションを承認後、認証を続行できます。
クライアントクレデンシャル
クライアント資格情報は、直接ユーザー認証が行われないOAuth のフローを指します。代わりに、クレデンシャルはアプリケーション自体のためだけに作成されます。アプリケーションで実行されるすべてのタスクは、デフォルトユーザーコンテキストなしで実行されます。そのため、認証フローが標準フローとは少し違ったものになります。クライアントOAuth フローに関連するすべてのアクセス許可には、管理者の同意が必要です。これは、CData Power BI Connector for Azure Data Catalog が埋め込まれたアプリケーションをクライアントOAuth フローでは使用できないことを意味します。クライアント資格情報を使用するには、独自のOAuth アプリケーションの作成が必要になります。詳しくは、カスタムOAuth アプリケーションの作成 を参照してください。
portal.azure.com の[アプリの登録]で[API のアクセス許可]に移動し、Microsoft Graph アクセス許可を選択します。アクセス許可には2つの異なるアクセス許可セットがあります。委任されたアクセス許可とアプリケーションの許可です。クライアントの資格情報認証時に使用されるアクセス許可は、[アプリケーションの許可]の下にあります。
インテグレーションに必要なアクセス許可を選択します。その後、次の接続プロパティを設定します。
- AuthScheme:AzureServicePrincipal。
- InitiateOAuth:GETANDREFRESH。InitiateOAuth を使うと、OAuth 交換の繰り返しや、手動でのOAuthAccessToken 設定を避けられます。
- AzureTenant:接続するテナント。
- OAuthGrantType:CLIENT。
- OAuthClientId:アプリケーション設定のクライアントId。
- OAuthClientSecret:アプリケーション設定のクライアントシークレット。
クライアント資格情報での認証は、他の接続同様に自動的に行われますが、ユーザーにプロンプトするウィンドウは表示されません。ユーザーコンテキストがないため、ブラウザのポップアップは必要ないからです。接続が行われ、内部的に処理されます。