web-dev-qa-db-ja.com

AADアプリケーションをセキュリティグループのメンバーとして追加する

AADトークンを使用してサービス間認証を有効にしようとしています。私の計画は、トークン内の「グループ」クレームを検証して、呼び出し元が私たちが作成したセキュリティグループのメンバーであることを確認することです。

たとえば、リーダー用にgroup1、ライター用にgroup2を作成します。次に、「グループ」の主張に基づいて、適切なアクセスレベルを特定します。

私はAADアプリを使用して(ユーザーではなく)トークンを発行するため、そのアプリをセキュリティグループのメンバーにする必要があります。 Azure AD Powershellは、グループIDとしてアプリケーションIDを受け付けないようです。これを解決するには?発信者が別のAADアプリである場合、他に推奨されるパターンはありますか?

使用するコマンド: https://docs.Microsoft.com/en-us/powershell/module/azuread/Add-AzureADGroupMember?view=azureadps-2.

Error:  
Add-AzureADGroupMember : Error occurred while executing AddGroupMember
Code: Request_BadRequest
Message: An invalid operation was included in the following modified references: 'members'.
RequestId: 0441a156-3a34-484b-83d7-a7863d14654e
DateTimeStamp: Mon, 11 Dec 2017 21:50:41 GMT
HttpStatusCode: BadRequest
HttpStatusDescription: Bad Request
HttpResponseStatus: Completed
At line:1 char:1
+ Add-AzureADGroupMember -ObjectId "9c2cdf89-b8d6-4fb9-9116-7749adec85c ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Add-AzureADGroupMember], ApiException
    + FullyQualifiedErrorId : Microsoft.Open.AzureAD16.Client.ApiException,Microsoft.Open.AzureAD16.PowerShell.AddGroupMember
13
George Moussa
  1. 残念ながら、アプリケーションをAzure ADグループのメンバーとして追加することはできません。 PowershellコマンドレットAdd-AzureADGroupMemberの公式ドキュメントでは、アプリケーションのObjectIdRefObjectIdとして使用できないことが明確にされていませんが、絶対に使用することはできません。 Azure ADグループのメンバーとしてアプリケーションを追加することもできません。

    たとえば、リーダー用にgroup1、ライター用にgroup2を作成します。次に、「グループ」の主張に基づいて、適切なアクセスレベルを特定します。

  2. あなたのシナリオでは、今のところこれを達成することはできません。 これがなぜ必要なのか理解しています。あなたのリクエストによると、私の考えは からアプリケーションを割り当てることですグループまたはユーザー へのエンタープライズアプリケーションおよび異なるアクセス権を持つマネージャーユーザー。ただし、選択したグループにこれ以上の役割を選択することはできません。唯一の役割はデフォルトのアクセスですアプリにさらに役割を定義する場合は、 このドキュメント を参照してください。また、Azure AD RBACを使用して、テストアプリ用に新しい条件付きアクセスを作成しようとしましたが、すべてこの選択肢read onlyがありません。また、アイデアを Azureフィードバックフォーラム に入れると、Azureチームに表示されます。また、私はあなたの考えを賛成します。

更新:


現在、AADグループにサービスプリンシパルを追加できます。

例:

$spn = Get-AzureADServicePrincipal -SearchString "yourSpName"

$group = Get-AzureADGroup -SearchString "yourGroupName"

Add-AzureADGroupMember -ObjectId $($group.ObjectId) -RefObjectId $($spn.ObjectId)

更新された2:

最近、多くのユーザーがサービスプリンシパルにロールを割り当てて、サービスプリンシパルに、ロールを使用してアプリにアクセスするためのいくつかの権限を付与したいと考えています。

ここではっきりさせておきたい。役割ベースの許可は、アプリケーションではなくユーザーに使用する必要があります。そして、それはアプリケーションのために設計されていません。いくつかの異なるアクセス許可を与えたい場合は、代わりにアプリケーションのアクセス許可をサービスプリンシパルに割り当てることを検討してください。

アプリ登録のマニフェストを編集することで、Webアプリ/ APIをアプリケーション権限で公開できます。

Azureポータル> Azure Active Directory>アプリの登録>アプリを選択>マニフェストに移動します。

appRolesには、次のようなコンテンツを挿入できます。

  {
      "allowedMemberTypes": [
        "Application"
      ],
      "displayName": "Access to the settings data",
      "id": "c20e145e-5459-4a6c-a074-b942bbd4cfe1",
      "isEnabled": true,
      "description": "Administrators can access to the settings data in their tenant",
      "value": "Settingsdata.ReadWrite.All"
    },

次に、権限を付与したい別のアプリ登録に移動します>設定>権限が必要>追加>アクセスしたいアプリケーション名を検索>前に作成したアプリケーション権限を選択します。

したがって、spは、トークンクレームでそのアプリケーションのアクセス許可を持つトークンを取得できます。

また、リソースからの承認のために、Settingsdata.ReadWrite.Allクレームでそのトークンの制御ポリシーを提供するコードロジックを追加する必要があります。


アップデート3

現在、Azureポータルでサービスプリンシパルを1つのAADグループに直接追加できます。 enter image description here

18
Wayne Yang