Microsoft Entra アクセス許可
- [アーティクル]
-
-
Microsoft Entra アプリを登録する際、そのアプリに、さまざまな API にアクセスするためのアクセス許可を付与します。 ニーズが変わるにつれて、これらのアクセス許可を調整することもできます。 この記事では、その方法について説明します。
Note
Microsoft Entra アプリのアクセス許可は、次のシナリオにのみ適用されます。
- 組織向けの埋め込み
- "マスター ユーザー" の認証方法を使用した "顧客向けの埋め込み"
Microsoft Entra アプリのアクセス許可設定を編集する
アクセス許可の変更は、プログラムまたは Azure portal で行うことができます。
Azure portal 上でアプリを表示し、そのアクセス許可を変更することができます。
サインイン、 Azure ポータルします。
ページの右上隅でお使いのアカウントを選択して、Microsoft Entra テナントを選択します。
[アプリの登録] を選択します。 このオプションが表示されない場合は、検索してください。
[Owned applications](所有しているアプリケーション) タブから、アプリを選択します。 [概要] タブにアプリケーションが開き、そこでアプリケーション ID を確認できます。
[API アクセス許可の表示] タブを選びます。
[アクセス許可の追加] を選択します。
アクセス許可を追加するには、次の手順のようにします (GCC アプリの場合、最初のステップが異なることに注意してください)。
[Microsoft API] タブで、[Power BI サービス] を選びます。
注意
GCC アプリの場合は、[所属する組織で使用している API] タブを選び、Microsoft Power BI Government Community Cloud または fc4979e5-0aa5-429f-b13a-5d1365be5566 を検索します。
[委任されたアクセス許可] を選択し、必要な特定のアクセス許可を追加または削除します。
完了したら、 [アクセス許可の追加] を選択して変更を保存します。
アクセス許可を削除するには、これらの手順に従います。
アクセス許可の右側にある省略記号 (...) を選択します。
[アクセス許可の削除] を選択します。
[アクセス許可の削除] ポップアップ ウィンドウで、 [はい、削除します] を選択します。
Microsoft Entra アプリのアクセス許可をプログラムで変更するには、テナント内の既存のサービス プリンシパル (ユーザー) を取得する必要があります。 その方法については、「servicePrincipal」を参照してください。
テナント内のすべてのサービス プリンシパルを取得するには、{ID}
を使用せずに Get servicePrincipal
API を呼び出します。
appId
プロパティとしてアプリのアプリケーション ID を使用してサービス プリンシパルを確認します。 (displayName
は省略可能です。)
Post https://graph.microsoft.com/v1.0/servicePrincipals HTTP/1.1
Authorization: Bearer ey..qw
Content-Type: application/json
{
"accountEnabled" : true,
"appId" : "{App_Client_ID}",
"displayName" : "{App_DisplayName}"
}
これらのいずれかの値を consentType
に割り当てて、アプリに Power BI アクセス許可を付与します。
Post https://graph.microsoft.com/v1.0/OAuth2PermissionGrants HTTP/1.1
Authorization: Bearer ey..qw
Content-Type: application/json
{
"clientId":"{Service_Plan_ID}",
"consentType":"AllPrincipals",
"resourceId":"c78a3685-1ce7-52cd-95f7-dc5aea8ec98e",
"scope":"Dataset.ReadWrite.All Dashboard.Read.All Report.Read.All Group.Read Group.Read.All Content.Create Metadata.View_Any Dataset.Read.All Data.Alter_Any",
"expiryTime":"2018-03-29T14:35:32.4943409+03:00",
"startTime":"2017-03-29T14:35:32.4933413+03:00"
}
Note
- マスター ユーザーを使用している場合、同意を求めるメッセージが Microsoft Entra ID によって表示されないようにするには、マスター アカウントにアクセス許可を付与する必要があります。
resourceId
c78a3685-1ce7-52cd-95f7-dc5aea8ec98e はテナントに依存し、ユニバーサルではありません。 この値は、Microsoft Entra ID 内の "Power BI サービス" アプリケーションの objectId です。 Azure portal からこの値を取得するには、[エンタープライズ アプリケーション] > [すべてのアプリケーション] に移動し、"Power BI サービス" を検索します。
consentType
に値を割り当てて、アプリのアクセス許可を Microsoft Entra ID に付与します。
Post https://graph.microsoft.com/v1.0/OAuth2PermissionGrants HTTP/1.1
Authorization: Bearer ey..qw
Content-Type: application/json
{
"clientId":"{Service_Plan_ID}",
"consentType":"AllPrincipals",
"resourceId":"61e57743-d5cf-41ba-bd1a-2b381390a3f1",
"scope":"User.Read Directory.AccessAsUser.All",
"expiryTime":"2018-03-29T14:35:32.4943409+03:00",
"startTime":"2017-03-29T14:35:32.4933413+03:00"
}
また、C# を使用して Microsoft Entra アプリのアクセス許可を変更することもできます。 詳細については、oAuth2PermissionGrant API に関するページを参照してください。 この方法は、プロセスの一部を自動化することを検討している場合に便利です。
var graphClient = GetGraphClient();
currentState.createdApp = await graphClient.Applications
.Request()
.AddAsync(application);
System.Threading.Thread.Sleep(2000);
var passwordCredential = new PasswordCredential
{
DisplayName = "Client Secret Created in C#"
};
currentState.createdSecret = await graphClient.Applications[currentState.createdApp.Id]
.AddPassword(passwordCredential)
.Request()
.PostAsync();
var servicePrincipal = new ServicePrincipal
{
AppId = currentState.createdApp.AppId
};
currentState.createdServicePrincipal = await graphClient.ServicePrincipals
.Request()
.AddAsync(servicePrincipal);
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
// Use oAuth2PermissionGrant to change permissions
var oAuth2PermissionGrant = await graphClient.Oauth2PermissionGrants["{id}"]
.Request()
.GetAsync();
関連するコンテンツ