Azure Active Directory グループのチームとの連携

Azure Active Directory (AAD) グループ チームは、オーナー チームと同様に、レコードを所有することができ、チームにセキュリティロールを割り当てることができます。 AAD グループ チームの詳細については、グループ チームを管理する を参照してください。

Just-In-Time の更新

Just-In-Time の更新とは、実行時にアクションが実行され、Azure Active Directory と Microsoft Dataverse からデータを同期する必要がなくなることを意味します。 これらのアクションには、AAD グループ チームの作成、AAD グループ チームからの AAD グループ メンバーの追加/削除、Dataverse へのユーザーの追加が含まれます。

  1. AAD グループ チームが存在せず、セキュリティ ロールが割り当てられているか、レコードが AAD グループに割り当てられている場合、AAD グループ チームは Just-In-Time で作成されます。

  2. AAD グループ メンバーが Dataverse に対話形式でアクセスするか、非対話型プロセスでユーザーの代わりに呼び出しを行うと、グループ メンバーは実行時に AAD グループ チームに追加されます。 同様に、AAD グループから削除されたメンバーが、対話形式または非対話型プロセス呼び出しで Dataverse にアクセスすると、グループ メンバーは AAD グループ チームから削除されます。

  3. AAD グループ メンバーが Dataverse に対話形式でアクセスするか、非対話型プロセスでユーザーの代わりに呼び出しを行うときに、ユーザーが Dataverse に存在しない場合、ユーザーは Dataverse に Just-In-Time で追加されます。

次のセクションでは、Web API を使用して AAD グループ チームと連携する方法について説明します。

AAD グループ チームの作成

AAD グループ チームは、セキュリティ ロールが AAD グループに割り当てられたとき、またはレコードが AAD グループに割り当てられたときに、API 呼び出しを (プログラムで) 行うか、Just-In-Time で Dataverse に作成できます。

プログラムで Microsoft Dataverse AAD グループ チームを作成する市民開発者は、以下のコマンドのように、既存の AAD グループのオブジェクト ID を指定することで作成できます。

要求

POST [Organization URI]/api/data/v9.0/teams
Accept: application/json

{
  "azureactivedirectoryobjectid":"<group object ID>",
  "membershiptype":0
}

ここで:

  • メンバーシップのタイプは、チームプロパティmembershiptype で定義されます
  • チームの名前は AAD グループの名前です
  • チームの種類は AAD グループの種類に基づきます - 例: "セキュリティ" または "Microsoft 365"

AAD グループ チームへにセキュリティ ロールを割り当てる

管理者は、AAD グループが AAD で作成された後、セキュリティ ロールを AAD グループ チームに割り当てることができます。 AAD グループ チームは、Dataverse に存在しない場合は自動的に Dataverse に作成されます。

要求

POST [Organization URI]/api/data/v9.0/teams(azureactivedirectoryobjectid=<group team ID>,membershiptype=0)/teamroles_association/$ref
Accept: application/json

{ 
  "@odata.id":"[Organization URI]/api/data/v9.0/roles(<role ID>)"
}

ユーザーへのセキュリティ ロールの割り当て

管理者は、AAD グループのユーザーにセキュリティ ロールを割り当てることができます。 ユーザーが Dataverse に存在せず、ロールがユーザーに直接割り当てられている場合、ユーザーは自動的に Dataverse に追加されます。

要求

POST [Organization URI]/api/data/v9.0/systemusers(azureactivedirectoryobjectid=<user object ID>)/systemuserroles_association/$ref
Accept: application/json

{ 
  "@odata.id":"[Organization URI]/api/data/v9.0/roles(<role ID>)"
}

AAD グループにレコードを割り当てる

管理者は、AAD グループにレコードを割り当てることができます。 AAD グループ チームは、Dataverse に存在しない場合は自動的に Dataverse に作成されます。

以下の例は、アカウント レコードを割り当てるための構文です。

要求

PATCH [Organization URI]/api/data/v9.0/accounts(<account ID>)
Accept: application/json

{ 
  "ownerid@odata.bind": "[Organization URI]/api/data/v9.0/teams(azureactivedirectoryobjectid=<group object ID>,membershiptype:0)"
}

AAD グループメンバーにレコードを割り当てる

管理者は、AAD グループのメンバーにレコードを割り当てることができます。 AAD グループ メンバーは、Dataverse にユーザーが存在しない場合、自動的に Dataverse に追加されます。

以下の例は、アカウント レコードを割り当てるための構文です。

要求

PATCH [Organization URI]/api/data/v9.0/accounts(<account ID>)
Accept: application/json

{ 
  "ownerid@odata.bind": "[Organization URI]/api/data/v9.0/systemusers(azureactivedirectoryobjectid=<user object ID>)"
}

ユーザーを取得する

Azure ユーザー オブジェクト識別子 (ID) を使用してユーザー行を取得できます。 ユーザーが Dataverse に存在しない場合、ユーザーが Dataverse に自動的に追加されます。

次の例は、ユーザー行を取得するための構文を示しています。

要求

GET [Organization URI]/api/data/v9.0/SystemUser(azureactivedirectoryobjectid=<user object ID>)

セキュリティ ロールおよび特権

AAD グループのメンバーは、以下のコマンドを使って、自分に直接または間接的に割り当てられているすべてのセキュリティ ロールを照会できます。

要求

GET [Organization URI]/api/data/v9.0/RetrieveAadUserRoles(DirectoryObjectId=<user object ID)?$select=_parentrootroleid_value,name

回答

{
  "@odata.context": "https://contoso.crm2.dynamics.com/api/data/v9.0/$metadata#roles",
  "value": [
    {
      "@odata.etag": "W/\"1649865\"",
      "name": "System Administrator",
      "roleid": "ae0daa93-e566-eb11-bb2b-000d3ac4c3f6",
      "_parentrootroleid_value": "ae0daa93-e566-eb11-bb2b-000d3ac4c3f6",
      "t_x002e_azureactivedirectoryobjectid": "e1341054-98ed-489b-a522-15e9e277b737",
      "t_x002e_membershiptype": 0,
      "t_x002e_teamid": "26e477f8-3f6a-eb11-bb2b-000d3af6caae",
      "t_x002e_name": "testgroup"
    }
  ]
}

AAD グループのメンバーは、以下のコマンドを使用することで、Dataverse のユーザーでなくても、自分のセキュリティ権限を確認することができます。

要求

GET [Organization URI]/api/data/v9.0/RetrieveAadUserPrivileges(DirectoryObjectId=<user object ID>)

回答

{
  "@odata.context": "https://contoso.crm2.dynamics.com/api/data/v9.0/$metadata#Microsoft.Dynamics.CRM.RetrieveAadUserPrivilegesResponse",
  "RolePrivileges": [
    {
      "Depth": "Global",
      "PrivilegeId": "0a620778-3e9f-46ec-9766-000624db57ba",
      "BusinessUnitId": "aa0daa93-e566-eb11-bb2b-000d3ac4c3f6",
      "PrivilegeName": "prvDeleteHierarchyRule"
    },
    …
   ]
}

テーブルに対するユーザーまたはチームのアクセス権の確認

サービス側でユーザーがテーブルへのアクセス権を持っているかどうかを確認する必要がある非対話型プロセスがある場合は、CallerID を指定することで、ユーザーの代わりに RetrievePrincipalAccess 関数 の呼び出しを行うことができます。

詳細情報: もう一方のユーザーの偽装

関連情報

Azure Active Directory グループを使用してアプリやリソースへのアクセスを管理する

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。