Skip to main content

Understanding How Swif.ai Calculates Shadow IT Risk Scores

Swif.ai's Shadow IT Risk Score evaluates the security risk of each (employee, app) pair daily. The scoring model combines multiple dimensions — access frequency, privilege level, data sensitivity, anomalous behavior, and compliance — into a single bounded score from 0 to 100, giving security teams a clear, comparable risk view across the entire organization.


How the Daily Risk Score Works

Each day, Swif.ai calculates a risk score for every unique employee + application combination. The scoring pipeline has two stages:

  1. Activity gate — If a user had no access events for an app on a given day, the risk score is automatically 0. This eliminates false "ghost risk" from inactive accounts.

  2. Weighted score — If there is activity, the system evaluates five risk dimensions and combines them using weighted percentages.

Total Risk Score Formula

Daily Score = Activity Gate × (35% Frequency + 15% Privilege + 20% Sensitivity + 20% Anomaly + 10% Compliance)

The final daily score is stored as a whole number between 0 and 100.


Scoring Dimensions

1. Access Frequency Score (35% weight)

Purpose: Measures how heavily a user is accessing an app relative to what's normal.

Unlike a simple event count, the frequency score uses a bounded saturation curve — it rises quickly at first but flattens out as usage grows, preventing extremely high-traffic apps from dominating the risk score.

The system compares a user's daily access count against the 95th percentile of that app's usage across the organization over the past 28 days. This means the score reflects whether a user's behavior is unusual for that specific app, not just whether they accessed it a lot.

Access Pattern

Approximate Score Range

Minimal use (a few events)

0–20

Typical use

20–50

Heavy use (well above org norm)

50–80

Extreme use

80–100 (asymptotic)

2. Privilege Level Score (15% weight)

Purpose: Reflects the risk associated with the user's role within the app.

Privilege Level

Score

Admin

100

Standard

40

Unknown

20

Higher privilege levels carry more risk because admin-level access can cause greater damage if compromised.

3. Data Sensitivity Score (20% weight)

Purpose: Evaluates the sensitivity of the data the application handles.

Sensitivity Level

Score

Highly Sensitive

100

PII (Personally Identifiable Information)

80

Business Sensitive

60

Internal

40

Unknown

50

Public

20

4. Anomaly Score (20% weight)

Purpose: Flags unusual access patterns that may indicate compromised credentials, unauthorized access, or policy violations.

Anomalies are calculated as rates (proportion of anomalous events out of total events), not raw counts. This means a single suspicious event among few total events weighs more heavily than the same event buried in thousands of normal ones.

Anomaly Type

Max Contribution

How It's Detected

Night Access

35 points

Access events occurring before 5:00 AM or after 11:00 PM local time

IP Address Change

25 points

Consecutive events from different IP addresses for the same user + app

Geo Distance > 500 km

25 points

Access from locations more than 500 km apart for the same user + app

Cross-Country Access

15 points

Access from a different country than previously observed

Note: Since IP address is a required field, Cross-Country Access will always appear alongside IP Address Change when a country change is detected.

The total anomaly score is clamped to a maximum of 100.

5. Compliance Score (10% weight)

Purpose: Reflects the compliance posture of the application.

Compliance Status

Score

Non-Compliant

100

Partially Compliant

50

Fully Compliant

0


Weekly and App-Level Aggregation

User-App Weekly Score

The weekly score is a time-weighted average of the past 7 days of daily scores. More recent days carry slightly more weight than older days, so the score reflects current behavior while still smoothing out one-off spikes.

Days with no activity contribute a score of 0.

App-Level Score

The app-level risk score is calculated by combining:

  • 70% from the median weekly score across all users of that app

  • 30% from the 90th percentile weekly score across all users

This robust aggregation prevents a single outlier user from disproportionately inflating an app's overall risk rating.


Risk Level Mapping

Total Score

Risk Level

0–35

🟢 Low

36–55

🟡 Medium

56–75

🟠 High

76–100

🔴 Critical


System Service Exclusion

Automated system services (such as provisioning services, background sync agents, and service accounts) are classified separately from user-interactive applications. System-level services do not appear in user-facing risk scores or app risk rankings, since their high-volume, machine-driven traffic does not represent human security risk.


Example Risk Score Breakdown

Consider an employee accessing a Productivity app with the following characteristics:

  • Access frequency: 3 events in the day

  • Privilege: Unknown (score: 20)

  • Data sensitivity: PII (score: 80)

  • Anomalies: IP Changed + Cross-Country Access (anomaly score: 40)

  • Compliance: Fully Compliant (score: 0)

The system would compute:

  • Frequency score based on how 3 events compares to org norms for this app

  • Final score ≈ Activity Gate × (35% × Frequency + 15% × 20 + 20% × 80 + 20% × 40 + 10% × 0)

The result is a single integer score in the 0–100 range that security teams can use to prioritize investigation.


Key Design Principles

  • Bounded scoring: Every daily score falls within 0–100, making scores comparable across users and apps.

  • Rate-based anomaly detection: Anomaly severity is measured by the proportion of unusual events, not just the count — a few anomalous events in light usage is more concerning than the same number in heavy usage.

  • Noise-resistant aggregation: App-level scores use median + 90th percentile blending so that one high-risk user doesn't skew the entire app's rating.

  • Zero activity = zero risk: No access on a given day means no risk score for that day.


Did this answer your question?