{
  "id": "CB-M365-DEVICE-004",
  "standard": "m365",
  "version": "main",
  "url": "https://baselines.cirsec.org/b/m365/CB-M365-DEVICE-004",
  "json": "https://baselines.cirsec.org/b/m365/CB-M365-DEVICE-004.json",
  "yaml": "https://baselines.cirsec.org/b/m365/CB-M365-DEVICE-004.yml",
  "profiles_effective": [
    "baseline",
    "hardened"
  ],
  "license": "Text CC BY 4.0, code Apache-2.0",
  "attribution": "CIRSEC Baselines, https://baselines.cirsec.org",
  "control": {
    "id": "CB-M365-DEVICE-004",
    "title": "Limit the number of devices each user can join or register",
    "finding": {
      "title": "Users can join or register a large number of devices",
      "description": "The per-user device quota is above the organization's limit, so a single account can add many device identities to the tenant."
    },
    "status": "active",
    "profiles": [
      "baseline"
    ],
    "risk": {
      "severity": "low"
    },
    "assessment": "manual",
    "tags": [
      "entra-id",
      "device-registration",
      "device-join",
      "quota"
    ],
    "description": "The device setting **Maximum number of devices per user** is set to `{{ max_devices_per_user }}`\nor less. The quota counts Microsoft Entra joined and Microsoft Entra registered devices owned by\neach user. It does not apply to Microsoft Entra hybrid joined devices.\n",
    "rationale": "Each device identity can hold a Primary Refresh Token and satisfy device-based Conditional\nAccess conditions. A low quota limits how many device objects a compromised account can create,\nfor persistence or to flood the directory, and keeps per-user inventories readable. Microsoft\nsets the default to 50, which is far above what a normal user needs.\n",
    "impact": "Users who reach the limit cannot register or join another device until an old device is removed.\nStaff who handle many devices (technicians, test accounts) should use a device enrollment manager\naccount or bulk provisioning instead of their own account. Combine with the cleanup of stale\ndevices so that retired devices do not use up the quota.\n",
    "notes": "Intune has a separate enrollment device limit (Devices > Device onboarding > Enrollment > Device\nlimit restriction, 1 to 15). It does not replace this Entra quota, which applies even without\nIntune.\n",
    "parameters": [
      {
        "name": "max_devices_per_user",
        "type": "integer",
        "description": "Highest accepted value of the Entra per-user device quota.",
        "default": 10,
        "minimum": 1,
        "maximum": 100
      }
    ],
    "setting": {
      "location": "Microsoft Entra admin center > Entra ID > Devices > Device settings > Maximum number of devices per user",
      "default_value": "50",
      "recommended_value": "{{ max_devices_per_user }} or less"
    },
    "audit": {
      "manual": "1. Sign in to the Microsoft Entra admin center (https://entra.microsoft.com) as at least a\n   Global Reader.\n2. Browse to **Entra ID** > **Devices** > **Device settings**.\n3. Read **Maximum number of devices per user**.\n4. Alternative, read only: `Invoke-MgGraphRequest -Method GET -Uri\n   https://graph.microsoft.com/beta/policies/deviceRegistrationPolicy` and read\n   `userDeviceQuota`.\n5. Fail if the value is greater than `{{ max_devices_per_user }}` or is **Unlimited**.\n"
    },
    "remediation": {
      "manual": "1. Find users above the target: in **Entra ID** > **Devices** > **All devices**, filter by\n   owner, or export the list with **Download devices** and count devices per owner. Remove\n   stale devices first.\n2. Browse to **Entra ID** > **Devices** > **Device settings**. Role: Cloud Device\n   Administrator.\n3. Set **Maximum number of devices per user** to `{{ max_devices_per_user }}` (or lower) and\n   save.\n4. Graph equivalent: `PUT https://graph.microsoft.com/beta/policies/deviceRegistrationPolicy`\n   with the full policy object and `userDeviceQuota` set to the target value.\n",
      "rollback": "Raise **Maximum number of devices per user** back to the previous value.\n"
    },
    "references": [
      {
        "title": "Manage devices in Microsoft Entra ID - Configure device settings",
        "url": "https://learn.microsoft.com/entra/identity/devices/manage-device-identities",
        "publisher": "Microsoft",
        "kind": "vendor-doc",
        "accessed": "2026-10-24"
      }
    ],
    "mappings": [
      {
        "framework": "nist-800-53r5",
        "framework_version": "5.1.1",
        "id": "AC-19",
        "relation": "related"
      },
      {
        "framework": "nist-800-53r5",
        "framework_version": "5.1.1",
        "id": "CM-8",
        "relation": "related"
      }
    ],
    "threats": [
      {
        "framework": "mitre-attack",
        "id": "T1098.005"
      }
    ],
    "related_controls": [
      {
        "id": "CB-M365-DEVICE-003",
        "type": "related"
      },
      {
        "id": "CB-M365-DEVICE-010",
        "type": "related"
      }
    ],
    "authors": [
      {
        "name": "Alice",
        "github": "Sn0wAlice"
      }
    ],
    "introduced_in": "0.1.0",
    "created": "2026-10-24",
    "updated": "2026-10-24"
  }
}