Back to controls

Ensure an exclusionary Device code flow policy is considered

Conditional Access Policies can be used to prevent the Device code authentication flow. Device code flow should be permitted only for users who regularly perform duties that explicitly require using Device Code to authenticate, such as utilizing Azure with PowerShell.

Category

Controls

Low

Applies to

Microsoft Entra ID

Coverage

null controls, 1 queries

Asset types

1 covered

Overview

Conditional Access Policies can be used to prevent the Device code authentication flow. Device code flow should be permitted only for users who regularly perform duties that explicitly require using Device Code to authenticate, such as utilizing Azure with PowerShell.

Rationale

Attackers use Device code flow in phishing attacks, which, if successful, results in the attacker gaining access tokens and refreshing tokens scoped to user_impersonation and can perform any action the user has permission to perform.

Impact

Microsoft Entra ID P1 or P2 is required.

This policy should be tested using the Report-only mode before implementation. Without a full and careful understanding of the accounts and personnel who require Device code authentication flow, implementing this policy can block authentication for users and devices who rely on Device code flow. More secure alternatives should be implemented wherever possible for users and devices that rely on device code flow authentication.

Default Value

No policies are configured by default.

Additional Information

These policies should be tested by using the What If tool in the References. Setting these can and will create issues with logging in for users until they use an MFA device linked to their accounts. Further testing can be done via the insights and reporting resource in References, which monitors Azure sign-ins.

Remediation guidance

From Azure Portal

Part 1 of 2 - Create the policy and enable it in Report-only mode.

  1. Open Conditional Access | Overview
  2. Click the + New policy button, then:
  3. Provide a name for the policy.
  4. Under Assignments, select Users then:
    • Under Include, select All users
    • Under Exclude, check Users and groups and only select emergency access accounts
  5. Under Target resources, select Cloud apps then:
    • Under Include, select All cloud apps
    • Leave Exclude blank unless you have a well-defined exception.
  6. Under Conditions, select Authentication Flows then:
    • Select Device code flow
    • Select Done
  7. Under Access Controls, select Grant and Confirm that Block Access is selected.
  8. Set Enable policy to Report-only.
  9. Click Create.

NOTE: The policy is not yet 'live' since Report-only is being used to audit its effect.

Part 2 of 2 - Confirm that the policy is not blocking access that should be granted, then toggle to On.

  1. With your policy now in report-only mode, return to the Microsoft Entra blade and click on Sign-in logs.
  2. Review the recent sign-in events - click an event, then review the event details (specifically the Report-only tab) to ensure:
    • The sign-in event you're reviewing occurred after turning on the policy in report-only mode.
    • The policy name from step 5 above is listed in the Policy Name column.
    • The Result column for the new policy shows that the policy was Not applied (indicating the device code authentication flow was not blocked).
  3. If the above conditions are present, navigate back to the policy name in Conditional Access and open it.
  4. Toggle the policy from Report-only to On.
  5. Click Save.

Multiple Remediation Paths

SERVICE-WIDE (RECOMMENDED when many resources are affected): Apply organization/tenant-level guardrails and baseline policies for the entire platform.

ASSET-LEVEL: Fix only the affected resources identified by this control.

PREVENTIVE: Add preventive policy checks to CI/CD and periodic posture scans.

References for Service-Wide Patterns

  • Platform policy/governance and preventive control patterns should be applied tenant-wide where supported.

Query logic

These are the stored checks tied to this control.

Entra Connectors Without Device Code Flow Exclusion Policy

Connectors

Microsoft Entra ID

Covered asset types

Connector

Expected check: eq []

{
  connectors(
    where: {
      conditionalAccessPolicies_NONE: {
        conditions: {
          includeUsers: ["All"]
          includeApplications: ["All"]
          clientAppTypes: ["all"]
          authenticationFlowsTransferMethods_INCLUDES: "deviceCodeFlow"
        }
        grantControls: { builtInControls: ["block"] }
      }
    }
  ) {
    ...AssetFragment
  }
}
Cyscale Logo
Cyscale is an agentless cloud-native application protection platform (CNAPP) that automates the contextual analysis of cloud misconfigurations, vulnerabilities, access, and data, to provide an accurate and actionable assessment of risk.

Stay connected

Receive new blog posts and product updates from Cyscale

By clicking Subscribe, I agree to Cyscale’s Privacy Policy


© 2026 Cyscale Limited

LinkedIn icon
Twitter icon
Facebook icon
crunch base icon
angel icon