Skip to content

User Risk Scoring

User Risk Scoring provides a composite risk score for every user in your organization, calculated from behavioral signals, security events, and access patterns. Scores range from 0 (lowest risk) to 100 (highest risk) and update continuously as new events occur. When a user’s score crosses a configurable threshold, Breeze can automatically assign security training, send notifications, and flag the user for access review.

This feature combines three related capabilities:

  • Risk scoring — numeric scores with factor breakdowns and trend tracking
  • Risk events — a timeline of security-relevant user activities
  • Access reviews — periodic certification of user permissions with automated revocation

Score RangeLevelDescription
0 - 39LowNormal user behavior, no action needed
40 - 69MediumSome risk indicators present, monitor closely
70 - 84HighElevated risk, consider intervention
85 - 100CriticalImmediate attention required

Each risk score includes a trend indicator showing how the score has changed over time.

TrendMeaning
upScore is increasing (risk is growing)
downScore is decreasing (risk is declining)
stableScore has remained steady
SeverityDescription
lowMinor event with minimal risk impact
mediumModerate event that contributes to risk
highSignificant event that notably increases risk
criticalSevere event requiring immediate investigation

Each risk score includes a factors object that breaks down the score by contributing category. The total score is a weighted sum of all factor scores. Both the individual factor scores and the weights are visible in the risk detail view.


Breeze evaluates eight distinct risk factors for every user. Each factor produces a score from 0 to 100, and the final composite score is a weighted average of all eight. The table below describes each factor, what data feeds it, and its default weight.

FactorWhat increases itDefault weight
MFA riskUser does not have MFA enabled (score jumps to 90 if MFA is off, 10 if on)14%
Auth failure riskFailed logins or denied access attempts in the last 30 days. Each failure adds 18 points20%
Session anomaly riskLogins from many distinct IP addresses, or an unusually high number of sessions in 30 days10%
Threat exposure riskActive security threats on devices the user is associated with. Critical threats contribute 35 points each, high 22, medium 12, low 520%
Software violation riskDevices with software compliance violations (e.g., unapproved or outdated software)15%
Device security riskLow security posture scores on the user’s associated devices (calculated from the latest security posture snapshot)10%
Stale access riskTime since the user last logged in. Less than 7 days = low risk; over 90 days = high risk6%
Recent impact riskCumulative score impact from risk events recorded in the last 14 days5%

Breeze matches users to devices using the last logged-in user reported by each device. The matching is case-insensitive and supports several identity formats: email address, username, DOMAIN\user notation, and name variants. A single user can be associated with multiple devices.

The score boundaries between risk levels are configurable:

ThresholdDefaultDescription
Medium50Score at or above this level is considered medium risk
High70Score at or above this level triggers high-risk notifications
Critical85Score at or above this level requires immediate attention
Spike delta15A score increase of this many points in one calculation cycle triggers a spike notification
Auto-assign training80Score at or above this level triggers automatic training assignment (if enabled)

To change these thresholds, navigate to Settings > User Risk > Policy and adjust the values under the Thresholds tab.


Navigate to the User Risk section in the Breeze dashboard to see a paginated list of all users ranked by their current risk score.

The scores list includes summary statistics:

MetricDescription
averageScoreMean score across the current result set
highRiskUsersCount of users with a score of 70 or above
criticalRiskUsersCount of users with a score of 85 or above
FilterTypeDescription
orgIdUUIDFilter by organization
siteIdUUIDFilter by site
minScoreNumber (0-100)Minimum score threshold
maxScoreNumber (0-100)Maximum score threshold
trendDirectionup, down, stableFilter by score trend
searchStringSearch by user name or email
pageNumberPage number (default: 1)
limitNumberResults per page (1-200, default: 25)

Click on any user to view their full risk profile, including:

  • Current score with factor breakdown
  • Score history and trend
  • Recent risk events
  • Organization membership details

Risk events are individual security-relevant activities associated with a user. Each event has a severity level and a scoreImpact value indicating how much it affects the user’s risk score.

FieldTypeDescription
eventTypeStringCategory of the event (max 60 chars)
severityEnumlow, medium, high, or critical
scoreImpactIntegerPoint value added to the user’s risk score
descriptionTextHuman-readable description of the event
detailsJSONStructured data about the event
occurredAtTimestampWhen the event occurred
FilterTypeDescription
orgIdUUIDFilter by organization
userIdUUIDFilter by specific user
eventTypeStringFilter by event type
severityEnumFilter by severity level
fromISO datetimeEvents on or after this time
toISO datetimeEvents on or before this time
pageNumberPage number (default: 1)
limitNumberResults per page (1-500, default: 50)

Each organization has a configurable risk policy that controls how scores are calculated, what thresholds trigger interventions, and what automated actions are taken.

Weights determine how much each risk factor contributes to the total score. They are expressed as a key-value map where keys are factor names and values are numeric multipliers.

{
"failedLogins": 2.5,
"unusualLocation": 3.0,
"privilegeEscalation": 5.0,
"policyViolation": 4.0,
"overdueTraining": 1.5,
"staleCredentials": 2.0
}

Higher weights mean that factor has a greater impact on the overall score.

  1. Navigate to Settings > User Risk > Policy.
  2. Adjust weights, thresholds, or intervention settings.
  3. Click Save. Changes take effect immediately for future score calculations.

When a user’s risk score exceeds the configured threshold, Breeze can automatically assign security training. You can also manually assign training to any user.

  1. Navigate to the user’s risk detail page.
  2. Click Assign Training.
  3. Optionally select a specific training module and provide a reason.
  4. Click Assign. The assignment is recorded as a risk event.
FieldRequiredDescription
userIdYesTarget user ID
orgIdNoOrganization ID (resolved from auth context if omitted)
moduleIdNoSpecific training module to assign
reasonNoReason for the assignment (max 500 chars)

If the same training module is already assigned to a user and has not been completed, the assignment is deduplicated. The API response includes a deduplicated: true flag to indicate this.


Access reviews provide a structured process for periodically certifying that users have the correct permissions. A reviewer examines each user’s role and permissions, then makes a decision to approve or revoke access. When the review is completed, revocations are automatically applied.

StatusDescription
pendingReview created, no decisions made yet
in_progressAt least one item has been reviewed
completedAll items decided and revocations applied
DecisionDescription
pendingNot yet reviewed
approvedAccess confirmed as appropriate
revokedAccess flagged for removal
  1. Navigate to Settings > Access Reviews.
  2. Click New Access Review.
  3. Provide a name, optional description, and due date.
  4. Optionally assign a reviewer (defaults to the current user).
  5. Click Create. Breeze automatically generates review items for every user in the current scope (partner or organization) with their current role assignments.
  1. Open the access review from the list.
  2. For each user, review their role, permissions, last login date, and email.
  3. Set the decision to Approved or Revoked. Optionally add notes.
  4. Repeat for all users.

Each review item shows:

  • User name and email
  • Assigned role name
  • Detailed permissions list (e.g., devices:read, scripts:execute)
  • Last active date
  • Current decision status
  1. Ensure all items have a decision (no pending items remain).
  2. Click Complete Review.
  3. Breeze automatically removes access for all revoked users:
    • Partner reviews: Revoked users are removed from partner_users
    • Organization reviews: Revoked users are removed from organization_users
  4. The review is marked as completed with a timestamp.

All endpoints require authentication with organization, partner, or system scope. Mounted at /api/v1/user-risk.

MethodPathPermissionDescription
GET/scoresusers:readList risk scores with filters and summary stats
GET/users/:userIdusers:readGet detailed risk profile for a specific user
GET/eventsusers:readList risk events with filters
GET/policyusers:readGet the current risk policy for the organization
PUT/policyusers:writeUpdate the risk policy (weights, thresholds, interventions)
POST/assign-trainingusers:writeAssign security training to a user

All endpoints require authentication. Mounted at /api/v1/access-reviews.

MethodPathPermissionDescription
GET/users:readList all access reviews for the current scope
POST/users:writeCreate a new access review with auto-generated items
GET/:idusers:readGet review details with all items, roles, and permissions
PATCH/:id/items/:itemIdusers:writeUpdate the decision on a review item
POST/:id/completeusers:writeComplete the review and apply revocations

”Organization context required” errors

Section titled “”Organization context required” errors”

Risk scoring endpoints require an organization context. If you are using a partner or system scope, include the orgId query parameter to specify which organization to query.

”User not found in accessible organizations” (404)

Section titled “”User not found in accessible organizations” (404)”

When viewing a user’s risk detail, the user must exist in at least one organization that your account has access to. If the user exists in multiple organizations, include the orgId parameter to specify which one.

Training assignment returns deduplicated: true

Section titled “Training assignment returns deduplicated: true”

This means the same training module was already assigned to the user and has not been completed. No duplicate assignment was created. This is expected behavior, not an error.

”Cannot complete review with pending items” (400)

Section titled “”Cannot complete review with pending items” (400)”

All review items must have a decision (approved or revoked) before the review can be completed. Review the items list and make decisions on any remaining pending entries.

”Cannot modify completed review” (400)

Section titled “”Cannot modify completed review” (400)”

Once a review is completed, its items cannot be changed. Create a new access review if additional changes are needed.

Risk scores are recalculated when new events occur. If scores appear stale, check that risk events are being generated correctly and that the risk policy has weights configured for the relevant factor types.

Access reviews generate items based on the users in the current scope at the time of creation. Users added after the review was created will not appear. Create a new review to include recently added users.