# Home

Welcome to the Identity Intelligence Knowledge Base!

Start by searching for a specific topic or navigating to one of the following pages.

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td></td><td><strong>Glossary</strong></td><td></td><td><a href="/files/NxRFEH6hInTYCdYAqfPK">/files/NxRFEH6hInTYCdYAqfPK</a></td><td><a href="/pages/xvw7zKTWUnS0aS6gMSq9">/pages/xvw7zKTWUnS0aS6gMSq9</a></td></tr><tr><td></td><td><strong>Best Practices</strong></td><td></td><td><a href="/files/XegVphBSycP0uxrv00ix">/files/XegVphBSycP0uxrv00ix</a></td><td><a href="/pages/BCRoO5mK0AzWG8TL3YX7">/pages/BCRoO5mK0AzWG8TL3YX7</a></td></tr><tr><td></td><td><strong>How-To Guides</strong></td><td></td><td><a href="/files/drMznvfHd0BEeCxBinAb">/files/drMznvfHd0BEeCxBinAb</a></td><td><a href="/pages/IPY0FjFzOZ6ldX06xLVr">/pages/IPY0FjFzOZ6ldX06xLVr</a></td></tr><tr><td><strong>Insights</strong></td><td></td><td></td><td><a href="/files/Lvcc2B41HbeVsPtc6e4y">/files/Lvcc2B41HbeVsPtc6e4y</a></td><td><a href="/pages/Kh6tVv83yYj49rfcBJ3j">/pages/Kh6tVv83yYj49rfcBJ3j</a></td></tr><tr><td><strong>Integrations</strong></td><td></td><td></td><td><a href="/files/EfKDV7uWLxhE8fBhucGV">/files/EfKDV7uWLxhE8fBhucGV</a></td><td><a href="/pages/qxe3fIO0iHPwQkEqhMM6">/pages/qxe3fIO0iHPwQkEqhMM6</a></td></tr><tr><td><strong>Troubleshooting</strong></td><td></td><td></td><td><a href="/files/pbDqXD0nAXda7KDhKlWP">/files/pbDqXD0nAXda7KDhKlWP</a></td><td><a href="/pages/hH6wZXNyEL5uwNm7EpdQ">/pages/hH6wZXNyEL5uwNm7EpdQ</a></td></tr><tr><td><strong>Release Notes</strong></td><td></td><td></td><td><a href="/files/uaQmVhdSFsNgrQEFp1h6">/files/uaQmVhdSFsNgrQEFp1h6</a></td><td><a href="/pages/IIO1VGDL8y9SnyordatX">/pages/IIO1VGDL8y9SnyordatX</a></td></tr></tbody></table>


# Glossary

Oort's definitive guide to Identity Security terminology

## AD

Active Directory

## AAD

Azure Active Directory (Now [Microsoft Entra ID](/integrations/azure-active-directory-integration))

## CASB

Cloud Access Security Broker.

## CCPA

California Consumer Privacy Act of 2018 (CCPA

## CIAM

Customer identity and access management

## CIEM

Cloud Infrastructure Entitlements Management

## CNAPP

Cloud-native application protection platform

## CMMC

Cybersecurity Maturity Model Certification

## CPSM

Cloud Security Posture Management

## GDPR

General Data Protection Regulation

## EDR

Endpoint Detection and Response

## HRIS

Human resources information system

## IAM

Identity and Access Management

## IDaaS

Identity as a Service

## IdP

Identity provider

## IGA

Identity governance and administration (IGA)

## ITDR

Identity Threat Detection and Response (ITDR)

## MFA

Multi-Factor Authentication (MFA)

## NDR

Network Detection and Response

## OAuth

## OIE

Okta Identity Engine

## OTP

One Time Password

## PAM

Privileged Access Management (PAM)

## Passwordless

## RBAC

Role Based Access Control.

## SAML

Security Assertion Markup Language (SAML)

## SASE

Secure access service edge

## SCIM

System for Cross-domain Identity Management

## SIEM

Security information and event management

## SOAR

Security Orchestration, Automation, and Response

## SOX

Sarbanes-Oxley Act (SOX)

## SSPM

SaaS Security Posture Management

## TDIR

Threat detection, investigation and response (TDIR)

## TTP

Tactics, Techniques, and Procedures

## TOTP

Time-based One-Time Password

## XDR

Extended Detection and Response

## ZT

Zero Trust

## ZTNA

Zero Trust Network Architecture

###


# Dashboards

Identity Intelligence dashboards at a glance

The dashboards in the Identity Intelligence platform provide high-level views into different insights and focus areas with associated key metrics based on your connected identity platforms.\
\
This article provides definitions and information about functionality that exists across **all** of the various dashboard sections and tabs including:

* [What is a widget?](#what-is-a-widget)
* [Customizing Dashboards](#tailoring-your-dashboard)
* [Sharing and exporting dashboard data](#exporting-and-sharing)

For specific information about each dashboard section or page, such as particular widgets, refer to the relevant documentation links listed below for particular dashboard you are interested in.

#### How the different Dashboards are organized

Select **Dashboards** in the left hand menu to navigate to the Dashboards landing page. Once on the Dashboards page, you will notice that the Dashboard is organized in sections for each themed area, with some sections containing tabs with dashboards on more granular themes.\
\
Select the Dashboard header (as seen in the screenshot below) to navigate between the different themed areas:

<figure><img src="/files/Bc6XP2I0jVz2QY04qTsD" alt=""><figcaption></figcaption></figure>

Dashboards include:

* **Posture** Dashboards surface hygiene gaps across different entities within your environment that increase your org's exposure to risk. The Posture Dashboard section has various tabs that each represent a dashboard that highlights posture issues across a more granular topic including:
  * [Identities](/dashboard/posture/identities-dashboard) provides some high level metrics about your organization's identities and their overall posture
  * [Non-Human Identities](/non-human-identities-nhi) is similar to Identities, but focuses solely on non-human identities such as service accounts, mailboxes, break glass accounts, MCP Servers, etc.
  * [MFA](/dashboard/posture/mfa-dashboard) provides detailed metrics about your organization's adoption of multi-factor authentication methods and passwordless factors
  * [Devices](/dashboard/posture/devices-dashboard) surfaces insights into the health and posture of the devices that have been discovered in your organization's environment
  * [Applications](/dashboard/posture/applications-dashboard) gives you high level visibility into the Apps that exist within your org and their utilization, or lack thereof
* [Threats](/dashboard/threats) highlights risks or concerning user behavior that should be prioritized for investigation and remediation to keep your organization secure
* [Compliance](/dashboard/compliance) shares consolidated info about your organization's progress with check failures
* [**Operations**](/dashboard/operations) contains status info for your connected Sources, data on admin actions taken, and a quick launch into the [Onboarding Checklists](/dashboard/onboarding-checklists) that will walk you through how to quickly get up and running with Identity Intelligence
* [**ISA** **Reports**](/dashboard/identity-security-assessment-isa)

## What is a widget?

When reading about the different Dashboard elements, and even other Identity Intelligence pages, you will see that our documentation often refers to "Widgets". A widget refers to a specific element on a page that contains information and can be an individual piece of info or a group of related info. Examples of a widget include data visualizations (ex: bar graph, pie graph or other graphical element), numerical data with only one or multiple numbers, or other text.

Every widget is in a box and will have a slight outline around the information, regardless of the type or amount of information present (as seen in the screenshot below taken from the User 360)

<figure><img src="/files/sCtkMs2wZjyjogvJd05U" alt="" width="455"><figcaption></figcaption></figure>

Every widget within a Dashboard page can be customized to better align with your particular interests or active projects. Any changes made to a Dashboard page will only be reflected in your environment - other Identity Intelligence users will not see changes that you made. For more information on customizing the dashboard, please refer to the [Tailoring your Dashboards](#tailoring-your-dashboard) section below.

## Dashboard Functionality

The functionality described in this section of the article can be found on **all** of the Dashboard pages within Identity Intelligence.

### Tailoring your Dashboard

There are several ways that the Dashboards can be customized to meet your needs and highlight the data that is most relevant to your organization. Any customizations made will be respected within the [PDF Report Export](#exporting-and-sharing).

{% hint style="info" %}
Customizations made to any Dashboard tab are specific to the user and are only visible to the user who made the changes. We currently do not support customizations that are visible to all users tenant-wide.
{% endhint %}

To customize a given Dashboard page, navigate to the desired Dashboard and select the **Configure** button in the top right corner of the dashboard page. Once you select **Configure**, the available customization options (which are described in more detail below) will appear and can be used.

After you have finished making your customizations, be sure to select **Save Changes**. If you do not wish to retain the changes made, select **Cancel**.

<figure><img src="/files/1STOUejfcKUegeYs10YT" alt=""><figcaption></figcaption></figure>

#### Create Custom Counter Widgets

You can add a custom counter widget based on [Saved Filters](/understanding-your-users/users/saved-filters) that you have created on the Users or Applications pages.\
\
After selecting **Configure,** select the **+ Add counter** button on the upper right corner of the page and select the saved filter you would like to add to the ISA Report Dashboard. The custom counter will be added to the dashboard page (often at the bottom) and you can then [move it](#rearrange-widgets) to the desired location on the page.\
\
If your organization's tenant does not have any saved filters available, you will be prompted to create one. Please refer to our [Saved Filters](/understanding-your-users/users/saved-filters) documentation if you would like to learn more about using saved filters.

<figure><img src="/files/2oqXDaOER4gUQ759SWMR" alt=""><figcaption></figcaption></figure>

#### Add or Remove Default Widgets

You can select or deselect from a library of default widgets (visualizations and counters) to customize the data that is shown within your ISA Report.\
\
You can add or remove default items by selecting the **Configure** button in the top right corner of the dashboard page and then pressing **Select Widgets**.

<figure><img src="/files/ZswzKuX8ZWfrZ9o0IBB7" alt=""><figcaption></figcaption></figure>

You can also remove any widget by selecting the **X** in the right corner of any existing widget.

<figure><img src="/files/F4Uw2wepFdjuWLQHcpCn" alt="" width="454"><figcaption></figcaption></figure>

#### Rearrange Widgets

To reposition a widget or section header, click the six dot button located at the top right corner of each widget to drag and drop it to the desired location, allowing your dashboard to emphasize the most important or urgent information.

<figure><img src="/files/tk2sUI2IYtwmpTSLBOAM" alt="" width="563"><figcaption></figcaption></figure>

#### Resize Widgets

You can also make any widget bigger or smaller depending on your needs and preferences. Select the **arrow** button in the bottom right corner of any widget, then drag the corner until your widget reaches the desired size.

<figure><img src="/files/tpQc2Go6Pev2uNJx05Bx" alt=""><figcaption></figcaption></figure>

### Sharing and Exporting

Each Dashboard has 2 options to easily share the data presented - **Share** and **Download to PDF**. The buttons to complete both of these actions are located on the upper right side of the page.\
\
Select the **Share** icon button found at the top right corner to copy a link to that exact page that can be easily pasted, bookmarked or shared with anyone who has the appropriate access to your Identity Intelligence tenant so that they can quickly get to the same page in the platform.

<figure><img src="/files/CUmWaZ6xNmXd4ZON1BVx" alt="" width="68"><figcaption></figcaption></figure>

\
\
Select the **Download PDF Report** button, which is next to the **Share** icon button, to generate a PDF export of that full dashboard page, including any customizations or annotations made, to share with other members of your organization who do not have access to the platform.

<figure><img src="/files/0CPocMmlafcnD2lAxmqa" alt=""><figcaption></figcaption></figure>

Additionally, across the different Dashboard tabs, many of the visualizations seen in a widget can be exported into different formats by selecting the 3 line button in the top right corner of a specific widget. If the widget does not have this button, it means it cannot be exported; however, you can still screenshot the visualizations if you'd like to use them in presentations, etc.\
\
Downloading as a SVG or PNG will export an image, whereas downloading as a CSV will export the raw data for you in CSV format.

<figure><img src="/files/eywUHbaLRb8sJZ13yImI" alt="" width="177"><figcaption></figcaption></figure>


# Posture

Identity *posture* in cybersecurity means continuously assessing, monitoring, and optimizing an organization's digital identities to prevent unauthorized access and mitigate risks like credential theft, account takeovers, or privilege abuse.

For more information, see:

* [Identies Dashboard](/dashboard/posture/identities-dashboard)
* [Non-Human Identities Dashboard](/dashboard/posture/non-human-identities-dashboard)
* [MFA Dashboard](/dashboard/posture/mfa-dashboard)
* [Devices Dashboard](/dashboard/posture/devices-dashboard)
* [Applications Dashboard](/dashboard/posture/applications-dashboard)


# Identities Dashboard

The Identities dashboard provides a high-level view into your key metrics about the identities present in your connected Identity Sources. This article provides details on each of the sections or widgets in the Identities dashboard.

The Identities dashboard displays metrics and visualizations on areas of interest including:

* [Identity Posture Score](#identity-posture-score)
* [Identity Posture Trend](#identity-posture-trend)
* [User per Trust Level](#user-trust-level)
* [Risky Users Distribution Over Time](#risky-users-distribution-over-time)
* [Identities](#identities)
* [Administrators](#administrators)

## Identity Posture Score <a href="#identity-posture-score" id="identity-posture-score"></a>

The Identity Posture Score is a single score calculated for your organization to help you quickly and easily determine your organization's posture state, as well as highlight areas of focus to improve your organization's overall identity security hygiene. The score utilizes multiple variables, many of which are visualized elsewhere in the Dashboard, to calculate a score for your organization.

To learn more about the Identity Posture Score and its thresholds, or what factors are included in the calculation, how it is calculated, why identity posture matters, how to improve your score and more, see our documentation about the [Identity Posture Score.](https://docs.oort.io/identity-posture-score)

There are two widgets in the Dashboard related to Identity Posture score which are described below.

### Identity Posture Score <a href="#identity-posture-score-1" id="identity-posture-score-1"></a>

The first widget, Identity Posture Score, provides your organization's current Identity Posture Score. This widget shows you:

* the organization's current score and score threshold category
* the change (+ or -) to the score over the last 30 days
* the last day the score was calculated
* prioritized recommendations for how to improve your score, including
  * the number of users failing the check associated with the recommendation
  * the severity of the issue that is being recommended for remediation

The recommendations are ordered by impact to the posture score. This means that if the first recommendation in the list is fully remediated (0 failing users), you will see a bigger improvement in the score than if the second or third or last recommendation in the list was fully addressed, even though there may be more users associated with those other recommendations than with the first recommendation.

Select the number of users in the 'Failing Users' column to go to the Users page, pre-filtered for the users failing the selected check so that you can take action to improve your organization's identity posture score.

Additionally, other [elements](https://docs.oort.io/identity-posture-score#calculation-of-identity-posture-score) may contribute to your Identity Posture score. You may see 'Configure' in the 'Failing Users' column if the tenant does not have [HRIS data](https://docs.oort.io/integrations/workday) configured (via the native Workday integration or a manual upload). Selecting 'Configure' will take you to the [Integrations](https://docs.oort.io/integrations) page where you can connect your HRIS data.

If a check used as part of the posture score is either disabled, *or* fails on settings instead of users, the 'Failing Users' column will say 'View Check'. Selecting 'View Check' will navigate to the specific check so it can be re-enabled (using the toggle next to the check name) or to review the failure.

<figure><img src="/files/lZ7zAN9CAxMHsESx9LFp" alt="" width="563"><figcaption></figcaption></figure>

### Identity Posture Trend <a href="#identity-posture-trend" id="identity-posture-trend"></a>

The second widget, Identity Posture Trend, depicts changes to your organization's posture score over time so that you can see and report on your organization's progress, as well as better understand how different events may have impacted your organization's Identity Posture Score positively or negatively over time.

If you hover over a data point, which are marked by a dot on the trend line, you will see some explainability about why the score may have increased or decreased. The 3 attributes that contributed most to the score change will be displayed when you hover on a specific data point.

By default, this widget looks at the last 30 days; however, you can use the timeframe filter in the top right-hand corner of the widget to change the widget's timeframe to be longer or shorter depending on your needs.

<figure><img src="/files/eMq8m6XrZkOVCLor3EgV" alt="" width="563"><figcaption></figcaption></figure>

## User Trust Level

User Trust Level looks at different components that make up user risk, such as on a user's context, behavior and common tendencies, to calculate a single User Trust Level. Trust Levels allow you to quickly and easily pick the riskiest users out of the crowd, so that you can investigate with urgency and remediate the situation as quickly as possible, reducing the attack timeframe or even preventing an attack from happening in the first place.

To learn more about User Trust Levels, what factors are included in the calculation, how it is calculated, and more, see our documentation about [User Trust Levels](/user-trust-level).

There are two widgets in the Dashboard related to User Trust Levels which are described below.

### Users per Trust Level

The Users Per Trust Level widget displays the current breakdown of the number of identities in each Trust Levels across your organization.

Not only does this graph give you a sense of where your users are at today, but it is also a quick and easy way to find users for investigations. Selecting one of the bars in this visualization will take you to the Users page, pre-filtered for the Trust Levels selected, so you can see all users who currently have a particular Trust Level.

<figure><img src="/files/Dm1khzLfZz9XJsQAOnIg" alt="" width="563"><figcaption></figcaption></figure>

### Risky Users Distribution Over Time

The second widget, Risky Users Distribution Over Time, depicts fluctuations to the trust levels of the users in your organization over time. This widget can be useful to identify sudden spikes in User Trust Levels.

If you hover over a data point in this widget, which are marked by a dot on the trend line, you will see a tooltip with the count of users, segmented by Trust Level, for that given date.

By default, this widget looks at the last 30 days; however, you can use the timeframe filter in the top right-hand corner of the widget to change the widget's timeframe to be longer or shorter depending on your needs.

Selecting a value in the legend below the graph will remove the corresponding data points from the visualization.

<figure><img src="/files/jnzcwALQewtZX69lVHcV" alt=""><figcaption></figcaption></figure>

## Identities

**Purpose & Benefit**: Multiple Identity themed widgets to make it easy to quickly assess the size of your total identity estate, as well as recent trends in your identity hygiene and security posture.

### Identity Security Snapshot

The Identities widget provides total identities, protected population metrics, and key metrics around identity hygiene and threats, such as -

* Inactive Guest Accounts
* Never Logged In accounts
* Inactive Account Probing
* User Type Missing in user profile

You can select any of these numbers and it will take you to the corresponding Check details page or to a pre-filtered Users Page for further investigation.

<figure><img src="/files/aFcn2CKB0umVwrsbnKcX" alt=""><figcaption></figcaption></figure>

### Users per Source

The Users per Source widget further down the dashboard provides a breakdown of the number of identities in each connected identity platform.

Selecting one of the bars in this visualization will take you to the Users page, pre-filtered for the users derived from the selected integration.

<figure><img src="/files/oqs2SNhKQgPQXunsklEz" alt="" width="563"><figcaption></figcaption></figure>

### Monthly Sign-ins

This widget provides details on the total number of monthly sign-ins, including a breakdown of success, failure, and other types of sign-in events.

Trends can be analyzed for changes, such as a high spike in failures or overall sign-in events.

<figure><img src="/files/vph8hRxSiRxhnjLyvzK8" alt="" width="563"><figcaption></figcaption></figure>

## Administrators

**Purpose & Benefit:** Quickly answer an often difficult question for organizations - how many administrators do I have in each platform and where are they logging in from recently?

The Dashboard contains a couple widgets to highlight the administrators within your environment, as well as their recent activity, since these users have higher privileged access to your IDPs and present a higher security risk if their accounts were to be compromised.

### Administrators per Source

The Administrators per Source widget provides a breakdown of the number of Admin users in each connected identity platform.

Selecting any of the bars in this visualization will take you to the Users page, pre-filtered for administrators of that specific integration.

<figure><img src="/files/YhKzHKfYrGkcza5DyBoo" alt="" width="563"><figcaption></figcaption></figure>

### Administrator Logins

**Purpose & Benefit:** Quickly monitor activity and spot admin account logins from unexpected networks and locations, including ones that have been tagged with a poor IP reputation or other alerts.

The Administrators logins widget shows a log of each Administrators most recent log in activity, including the user's name, email address, the IP address for their last login and the IP location, any tags for that IP address, and the sign in result - Success, Failure, etc

Selecting the blank space of a row or the 'open in new tab' icon next to the Admin's name will open the Admin's User360 in the same window or a new tab, depending on what is selected.

<figure><img src="/files/IDz2iDKJ6f3h3VJBlNTP" alt="" width="563"><figcaption></figcaption></figure>


# Non-Human Identities Dashboard

2025.10.08

## Overview

This dashboard gives you a comprehensive view of your Non-Human Identities (NHIs), focusing on important areas like security, compliance, and operational efficiency. By checking these metrics regularly, you can quickly spot and fix potential risks, keep everything running smoothly, and make sure your NHIs are well managed.

To use the Non-Human Identities dashboard, simply open the Cisco Identity Intelligence dashboard and select the **Non-Human Identities** tab. Here, you will find easy-to-understand information about your NHIs, including their status, risks, usage, and activity, so you can keep your organization secure and organized.

<figure><img src="/files/QKFGB7E1IF9MLmTvUquN" alt=""><figcaption></figcaption></figure>

### Life Cycle (Past 30 days)

This section tracks the status of NHI accounts over the last 30 days.

<figure><img src="/files/qsO36iPnYfQt4QUydRcN" alt=""><figcaption></figcaption></figure>

* Newly created: This count shows how many new NHI accounts have been provisioned in the past month. In the example provided, zero NHIs were created in the last month. While this may indicate stability in the existing NHI infrastructure or a temporary pause in onboarding, an unexpected zero could also signal a potential process issue if new NHIs were anticipated.
* Active accounts: These are NHI accounts that have recorded activity within the past 30 days. Monitoring active accounts helps ensure they are functioning as intended and that their activity is legitimate. A large number of active NHIs may require increased management and oversight.
* Inactive accounts: These NHI accounts have not shown any activity in the past 30 days. Inactive NHIs can present a security risk if they still have access permissions, as they may be exploited without prompt detection. Regularly reviewing and deprovisioning inactive NHIs is essential to minimize potential security vulnerabilities.
* Accounts with expiring keys: This count represents the number of NHI accounts with keys that are nearing expiration. If these keys are not rotated in advance, it may result in service disruptions. Regular key rotation is considered the best practice for maintaining NHI security.

### NHI Risks (Over 30 days)

This section highlights potential security vulnerabilities and risky behaviors associated with NHIs. Selecting any of the numbers within this widget will take you to the relevant page, pre-filtered on the selection you made.

<figure><img src="/files/uSacaJ0xJBMV4yySAsTd" alt=""><figcaption></figcaption></figure>

* Accounts with vulnerabilities: This is a critical metric, as NHI accounts with vulnerabilities can serve as potential entry points for attackers. Such vulnerabilities may include misconfigurations, unpatched software, or weak credentials. Prompt investigation and remediation are essential to prevent security breaches.
* Access from dormant service accounts: This indicates that dormant service accounts have accessed resources, which is a high-risk situation. Dormant accounts are often overlooked but may still have extensive permissions. Any activity from these accounts should be validated to determine whether it is legitimate or a sign of potential compromise.
* Service accounts with password expiration failure: This indicates that service accounts have failed because their passwords expired. If not resolved, this can cause service outages and may highlight weaknesses in password management policies or automated rotation processes for these NHIs.
* Service accounts with directly assigned applications: Directly assigning applications to service accounts can result in NHIs with excessive privileges and complicated permission management. It is best practice for NHIs to receive access through roles or groups, following the principle of least privilege.
* Service accounts sharing authenticators: Sharing authenticators, such as API keys or certificates, between multiple NHIs or with human users creates a single point of failure and makes activity attribution challenging. This significantly increases security risks and should be avoided.
* Break-glass service account successful sign-in: A successful sign-in by a break-glass service account means that a highly privileged account has been used. While this may be necessary in certain situations, each use should be carefully audited and justified to ensure it was authorized and not a misuse or unauthorized attempt.

### NHI Inventory by Integration (Over 30 days)

This chart displays the distribution of different NHI types across various cloud and identity providers, offering a clear view of where NHIs are located and their functional roles. This inventory helps organizations understand their overall NHI footprint, spot potential shadow IT, and ensure consistent security policies are enforced across all platforms. It also highlights the prevalence of specific NHI types, such as "Agentic," which refers to applications that act on behalf of users or other systems.

<figure><img src="/files/cJ5mQbFi0epR3HUaVIZW" alt=""><figcaption></figcaption></figure>

### Top 10 Service Accounts with Activity (Over 30 days)

This chart highlights the NHI accounts with the highest activity over the past 30 days. High activity levels often indicate that these NHIs play a critical role in operations. Regularly monitoring these accounts for unusual spikes or changes in activity is important for identifying potential compromises or misconfigurations. Even low activity on critical accounts should be reviewed to confirm all usage is legitimate.

<figure><img src="/files/sIr63gOSyHLkNqD5et9f" alt=""><figcaption></figcaption></figure>

### Reports

The NHI dashboard includes a new feature that allows you to download reports directly from the dashboard, offering important insights for effective NHI management. Key reports include Human Use of Non-Human Identities, which uncovers security risks when people use NHI credentials, the Agentic Applications Presence Report, which monitors autonomous application activity for compliance with security policies, and Accounts Sharing Access Devices, which identifies potential credential sharing and access control concerns that need prompt attention.

<figure><img src="/files/acw7yue5cRe3uLSVm9NR" alt=""><figcaption></figcaption></figure>


# MFA Dashboard

It is often difficult for organizations to understand the full picture around their end users' Multi-factor (MFA) behavior. Collecting and analyzing MFA data across multiple identity sources to identify gaps in coverage, unintended user behaviors, and to report on internal MFA rollouts or initiatives can be a difficult process, that is sometimes needed on a recurring basis. Identity teams are then left gluing together different reports in a very time consuming and manual way, just to make simple reports and visualizations that can be used to share updates with different internal stakeholders.

The MFA tab in the Identity Intelligence Dashboard aims to make this type of tracking and reporting easier with some pre-made widgets that provide insight into the MFA and Passwordless enrollment and usage activity across your connected identity sources, allowing you to quickly identify gaps and trends in adoption, which can contribute to potential security risks.

The MFA Dashboard displays metrics and visualizations on areas of interest including:

* [MFA Hygiene and Threats](#mfa-metrics)
* [Factor Usage and Enrollment](#factor-usage-and-enrollment)
* [Passwordless Usage and Enrollment](#passwordless-usage-and-enrollment)

For information on functionality that exists across all Dashboard tabs, please refer back to our [Dashboard documentation](/dashboard).

## MFA Metrics

**Purpose & Benefit:** All organizations have an urgent need to understand their MFA posture across their various IAM platforms. These widgets provide current stats on coverage and trends of key MFA metrics.

There are 3 widgets, separated by them, that provide key metrics around MFA hygiene and threats

* **Priority Accounts** - allows you to better understand the MFA adoption gaps for critical accounts (Admins and VIPs) in your organization that should be addressed immediately. Read more about [priority accounts in our documentation](/identity-posture-score#calculation-of-identity-posture-score)
* **MFA Hygiene -** highlights key MFA posture issues across your entire environment to help you prioritize and identify users to take action on so that you can reduce the risk of account compromise
* **MFA Threats** - surfaces risky behavior related to MFA adoption that should be investigated and remediated

Selecting any of these numbers will take you to the corresponding Check Details page or to a pre-filtered Users page for further investigation on the specific users making up each value.

<figure><img src="/files/ABnhVCVt55dr1hesgt9D" alt=""><figcaption></figcaption></figure>

## Factor Usage and Enrollment

When it comes to MFA Adoption, it is crucial to understand both enrollment AND usage patterns within your organization to be able to tell the full story.

Enrollment is Step 1, but it is not enough for a user to simply enroll an MFA factor. They also need to get to Step 2 - using their factors regularly to ensure they are securely authenticating into your environment.

Many organizations can have near perfect MFA enrollment across their user base, but when they look into it, they see that the MFA usage numbers do not match. Other organizations will swear that they have completely blocked the use of weak MFA factors like SMS and Phone calls, but when they look into it, they see that there are still users actively utilizing these factors regularly. These examples, and many others like it, often indicate a configuration issue that must be addressed which is why it is important to look at the holistic picture of enrollment and usage to get the most accurate sense of an organization's MFA adoption.

The MFA Dashboard tab has a few widgets to help understand current usage, as well as enrollment trends over time.

### **Factor usage by NIST assurance levels**

This pie chart displays a breakdown of all factor usage per user, categorized by [NIST Assurance Level](https://pages.nist.gov/800-63-3-Implementation-Resources/63B/AAL/), over the last 30 days. For example, in the screenshot below, we can see that 29 users have used a Medium assurance factor at least 1 time over the last 30 days.

Hovering over a segment in the pie chart will display a tool tip with the given assurance level and the count of users making up that segment.

<figure><img src="/files/y59W9svfbTYJOyaNZzkG" alt=""><figcaption></figcaption></figure>

### MFA Enrollment

This bar graph provides a look into MFA Enrollment trends over time, categorized by[ NIST Assurance Level](https://pages.nist.gov/800-63-3-Implementation-Resources/63B/AAL/). A user must enroll an MFA method to be reflected in this graph.

Hovering over any item in the graph will display a tool tip with the month and the count of users who enrolled a factor for each assurance level.

By default, this graph will show the MFA Enrollment metrics for the last 6 months, but you can modify the timeframe to also look at the last 2, 3, or 12 months if needed. **Note**: you may see blank months in the past, which reflects that Identity Intelligence was not yet collecting data for these months (ex: newly created tenants or tenants that existed before this feature was released)

<figure><img src="/files/N7NrV5h5iPUD3WBvZOEd" alt=""><figcaption></figcaption></figure>

### MFA Factors: In Use vs Unused

**Purpose & Benefit:** Quickly assess and compare the status of enrolled and in-use MFA factors and track migrations to stronger factors or other MFA usage anomalies.

An **enabled** factor is one that is available on a user's account and *could* be used (ie: user has enrolled this factor in their account) but is not necessarily being used. **In use** factors are those that have been used in the last 30 days. **All In-use factors are enabled factors, but not all enabled factors are in use.**

The MFA Factors: In Use vs Unused graph provides a visualization of the total count of users per MFA Factor, broken down by factors enabled versus in use, and color coded by factor assurance level, to help you better understand which MFA factor types are most frequently configured and used across your organization, identify any unexpected behavior, and highlight users who could be utilizing more secure methods but are not.

Hovering over any item in the graph will display a tool tip with the factor name, assurance level, count of users using a given factor, count of users enabled but not using a given factor, and the total count of users enabled with this factor (ie: in use + unused users)\
\
Selecting a given segment (enabled but unused or in use) of one of the bars in this visualization will take you to the Users page, pre-filtered for that specific factor type and usage type.

By default, this widget is filtered to show In use ***and*** Enabled but unused Factor data. However, you can also use the available filter to change the graph to see either In Use factors *only* or Enabled but unused factors *only.* Selecting a value in the legend below the graph will remove the corresponding data points from the visualization entirely. Select the removed value in the legend to re-add it to the visualization.

## Passwordless Usage and Enrollment

The MFA Dashboard also has widgets that look specifically at passwordless Adoption trends to help organization's understand the progress made, as well as an areas that are lagging behind expected adoption levels. Passwordless MFA methods are considered the most secure method for authentication as they are much more difficult for bad actors to compromise.

Like with general MFA Adoption, for a successful passwordless rollout, organizations need to compare passwordless factor enrollment rates to passwordless usage rates to get a full understanding of their organization's adoption and progress. If users have enrolled these more secure factors but continue to utilize weaker factors to authenticate, the organization has not successfully deployed passwordless.

### Passwordless Enrollment

Similar to the general MFA Enrollment widget, the Passwordless Enrollment widget helps visualize the first step of any passwordless rollout project - user enrollment - and how the numbers change over time throughout the rollout. A user must enroll a passwordless authentication factor to be reflected in this graph.

Hovering over any item in the graph will display a tool tip with the month the count of users who enrolled a passwordless factor and the count of users who did not enroll a passwordless factor.

By default, this widget is filtered to show the number of users who have enrolled in *any* factor that is considered passwordless. However, you can also use the available filter to change the graph to see the enrollment numbers for specific passwordless factors that your users have enrolled in.

Selecting on a value in the legend below the graph will remove the corresponding data points from the visualization entirely. Select the removed value in the legend to re-add it to the visualization.

By default, this graph will show the Passwordless Enrollment metrics for the last 6 months, but you can modify the timeframe to also look at the last 2, 3, or 12 months if needed. **Note**: you may see blank months in the past, which reflects that Identity Intelligence was not yet collecting data for these months (ex: newly created tenants or tenants that existed before this feature was released)

<figure><img src="/files/Ho2sGIgoCG8ltci1l8Hn" alt=""><figcaption></figcaption></figure>

### Passwordless Adoption

The Passwordless Adoption widget helps visualize the second step of any passwordless rollout project - passwordless usage - and how the numbers change over time throughout the rollout. It is important to understand the volume of authentications that utilize a passwordless method compared to non-passwordless methods to identify if users are actually adopting the new, more secure methods, or if they continue to utilize old methods out of habit or because they are not being forced to move over.

Passwordless auths refer to **active** authentications done by an end user, utilizing a passwordless method. Non-Passwordless auths refer to all other **active** authentications done by an end user using other factors that are not passwordless. Non-active authentications done where the user is NOT prompted to authenticate are not included in either category (for ex: Auths via remembered devices or sessions)

Hovering over any item in the graph will display a tool tip with the month the percentage of active authentications that used a passwordless factor and the percentage of active authentications that used a non-passwordless factor.

Selecting on a value in the legend below the graph will remove the corresponding data points from the visualization entirely. Select the removed value in the legend to re-add it to the visualization.

By default, this graph will show the Passwordless Adoption metrics for the last 6 months, but you can modify the timeframe to also look at the last 2, 3, or 12 months if needed. **Note**: you may see months in the past which show 100% for non-passwordless auths, which may reflect that Identity Intelligence was not yet collecting data for these months (ex: newly created tenants or tenants that existed before this feature was released)

<figure><img src="/files/fM6eKE8sqCCjJ5VEsshn" alt=""><figcaption></figcaption></figure>

### Sensitive App Authentication

When going through passwordless deployments, many organizations choose to start by enforcing these factor methods on the applications that are most critical to the business to ensure that the applications are well protected.

With the Sensitive App Authentication widget, it is now much easier to understand how often these applications are being accessed using passwordless methods and how often they are not, so that you can track adoption progress and remediate any gaps that are allowing non-passwordless authentications.

{% hint style="info" %}
If you have not configured any sensitive applications for your organization, we recommend [reading our Sensitive Apps documentation](/applications#adding-sensitive-applications) so that you can add in important applications for your organization. Configuring your sensitive apps list is important as this info is re-used in many ways across Identity Intelligence and will impact the data and results the platform provides.
{% endhint %}

This widget shows authentication data for these apps over the last 30 days. It uses the same definitions for passwordless auths and non-passwordless auths as the Passwordless Adoption widget. Please refer to the documentation above for that widget to read the definitions.

Hovering over any item in the graph will display a tool tip with the application name, the count of active passwordless authentications and the count of active non-passwordless authentications.

Selecting on a value in the legend below the graph will remove the corresponding data points from the visualization entirely. Select the removed value in the legend to re-add it to the visualization.

**Note**: This widget only displays a maximum of 10 sensitive applications. If there are more than 10 sensitive apps configured for your organization, the widget will display the 10 applications that have the highest number of total authentications.

<figure><img src="/files/50mj1TeTBHbBg46cbJtg" alt=""><figcaption></figcaption></figure>


# Devices Dashboard

The Devices dashboard provides insights and key metrics about the devices present in your environment based on the data Identity Intelligence receives from your connected Identity Sources. This data can be used to identify device clean up opportunities, surface device hygiene gaps to address, provide insight into the impact of an organization wide policy change, and more.\
\
This article provides details on each of the sections or widgets, specifically available in the **Devices** dashboard.\
\
Please refer to the high-level [Dashboard](/dashboard) documentation for information on functionality that is available on every Dashboard pages, such as exporting widgets or raw data, customizing the dashboard pages, sharing links or PDFs, etc.

The Devices dashboard displays metrics and visualizations on areas of interest including:

* [Shared, orphan, and stale devices by Source](#shared-orphan-and-stale-devices-by-source)
* [Device Metrics](#metrics)
* [Devices by Source](#devices-by-source)
* [OS Status](#os-status)
* [Outdated Devices by Endpoint Type](#outdated-devices-by-endpoint-type)
* [Managed Devices Usage](#managed-devices-usage)
* [Stale Devices Count](#stale-devices-count)
* [Devices by Type](#devices-by-type)
* [Operating System Usage](#operating-system-usage)

### Shared, Orphan and Stale Devices by Source

These 3 pie charts display similar information and provide similar options. All pie charts show the total number of devices in the center with a breakdown of the number per identity source.

Definitions:

* Shared Devices by Source: Number of devices that are assigned to or used by more than one user as detected by each identity source
* Orphan Devices by Source: Number of devices not associated with any user detected by each identity source.
* Stale Devices by Source: Number of devices not associated with any user *and* 90 or more days inactive per identity source.

Example:

<figure><img src="/files/vRX0k8Bba9qj8rLd9mk3" alt=""><figcaption></figcaption></figure>

### Metrics

Provides high level counts and insights, including the total number of devices and the number of devices in the indicated categories. Select either the number or the text to navigate to the [Devices tab page](/devices) , pre-filtered on your selection, to view more details.

<figure><img src="/files/fDnZbb6XLsTjoEY2RhKU" alt=""><figcaption></figcaption></figure>

### Devices by Source

The current number of devices per identity source, divided into [managed and unmanaged devices](/devices#devices-table-elements).

Selecting any of the segments in the bars of this visualization will take you to the Devices page, pre-filtered for the Source and Device status (managed/unmanaged), so you can see all the devices that currently make up that segment and take action accordingly.

<figure><img src="/files/AGuyEl8HTY2EF4SJRW4l" alt=""><figcaption></figcaption></figure>

### OS Status

Devices that are running operating systems (OS) versions that are End of Life or Out of Date introduce risk to your organization as they can have security vulnerabilities that bad actors can take advantage of. You should contact the assigned users of these devices immediately to upgrade their OS, or remove the device record from your systems if it is not associated with any users. Your organization should also implement access policies to block the device from connecting to your organization's network or resources.\
\
This widget shows the total number of devices per current operating system status:

* End of Life: Operating system version that is longer supported, maintained, or patched by the vendor
* Out of Date: Operating system version that is missing critical patches
* Supported: Operating system version that is still maintained by the vendor
* Latest: Operating system version that is the most recently released by the vendor
* Unknown: Identity Intelligence couldn't determine the operating system version, and therefore the status\
  \
  Selecting one of the bars in this visualization will take you to the Devices page, pre-filtered for the chosen OS Status, so you can see all the devices that currently make up a particular segment and take action accordingly.

<figure><img src="/files/BY19giv2J2zpj61xYCmb" alt=""><figcaption></figcaption></figure>

### Outdated Devices by Endpoint Type

*Endpoint type* means either desktop or mobile. Managed is described in [Devices](/understanding-your-users/user-360/devices-tab#devices-table-elements).

Number of devices whose operating system is outdated according to the vendor, broken down and grouped by:

* End of Life Managed devices
* End of Life Unmanaged devices
* Outdated Managed devices
* Outdated Unmanaged devices

Selecting any of the segments in the bars of this visualization will take you to the Devices page, pre-filtered for the chosen OS Status, so you can see all the devices that currently make up a particular segment and take action accordingly.

<figure><img src="/files/ymo26JQBfBqZa6Zk2Kxm" alt=""><figcaption></figcaption></figure>

### Managed Devices Usage

If your organization is working on rolling out Managed Devices, enforcing managed device usage, or working on cleaning up unmanaged device access, this widget will make it easy to track adoption and visualize the progress made over time so that it is easier to understand and communicate the improvements made being made by this effort.

This widget looks at device usage to track the total number of managed devices compared to unmanaged devices, that have been used over time. To change the time period, select the timeframe filter in the top right corner of the widget and follow the prompts on your screen.

<figure><img src="/files/UoGXIqIwpIEdYuFZABbc" alt=""><figcaption></figcaption></figure>

### Stale Devices Count

Similar to the "Managed Devices Usage" widget, the Stale Devices count aims to help your organization understand and visualize the progress that is being made with cleaning up stale devices in your environment.

A *stale* device is not associated with any user *and* has been inactive for 90 or more days as determined by the identity source. Number of managed and unmanaged devices by day. To change the time period, click the list and follow the prompts on your screen.

This widget compares the total number of stale devices to active devices seen in your environment, over time. To change the time period, select the timeframe filter in the top right corner of the widget and follow the prompts on your screen.

<figure><img src="/files/RRFqJCqcdCNnXb6OoIJN" alt=""><figcaption></figcaption></figure>

### Devices by Type

The current number of managed and unmanaged devices broken down by Device Type:

* Access: Typically a computer.
* Authentication: Typically a mobile device that must be enrolled using an app like Duo Push.
* Access & Authentication: A device that can be used for both access and authentication, such as a laptop with a biometric, fingerprint scanner that is enrolled as an MFA factor

Selecting any of the segments in the bars of this visualization will take you to the Devices page, pre-filtered for the chosen Device Type and Managed Status, so you can see all the devices that currently make up a particular segment and take action accordingly.

<figure><img src="/files/dIBA7g1s1MnFgFXWbvR9" alt="" width="563"><figcaption></figcaption></figure>

### Operating System Usage

A comparison of used and unused devices, per type of operating system.

Selecting any of the segments in the bars of this visualization will take you to the Devices page, pre-filtered for the chosen OS Type and usage status, so you can see all the devices that currently make up a particular segment and take action accordingly.

<figure><img src="/files/1TUHbp9mBOt1fPnAvpOU" alt=""><figcaption></figcaption></figure>


# Applications Dashboard

The Applications Dashboard contains information focused on application usage within your environment. Removing user access from unused applications, especially for sensitive or critical business applications, can not only help your organization save on licensing costs, but also improves its security posture by reducing the "blast radius" associated with malicious access to unnecessary applications in the event of an account compromise.

The Applications Dashboard aggregates data from the Applications page to surface insights regarding your org's app hygiene. Refer to [Applications](/applications) for more details about the Apps page and the data displayed there.

### Life Cycle

This widget acts as a health check of the organization’s application inventory. Rather than serving as a simple count of apps, it helps show how much of the environment is actively governed, how much has been formally brought under visibility and review, and how much may be inactive or ready for cleanup.

Highlights whether application management is keeping pace with change. A healthy lifecycle picture supports stronger oversight, reduces the chance that forgotten or retired applications continue to create access risk, and helps teams focus review efforts on the parts of the application landscape that may need onboarding, validation, or deprovisioning.

Select any of the numbers in this widget to drill down into the relevant Applications.

Displays:

* Total number of applications
* Number of onboarded applications - Apps that have been newly brought into Identity Intelligence via your connected identity sources and are still in their early monitoring window
* Number of deactivated applications - Apps that have been deactivated at the identity source and can no longer be used
* Number of applications that have keys that are about to expire
* Number of applications with expired secrets

### Access & Entitlement

Shows how application access is being granted across your environment, and where that access might no longer match real usage. Rather than just counting applications, it helps surface patterns that matter for governance: applications that are broadly available, applications with explicit user assignments, and applications that appear assigned or available but are not being used.

Use this data to spot potential over-entitlement, stale access, weak access controls, or process and automations issues before they become security problems. It helps answer questions like: Which apps may be exposed more widely than intended? Where are users retaining access they do not need? In that sense, the graph supports least-privilege decisions, access reviews, and overall reduction of unnecessary risk.

Select any of the numbers in this widget to drill down into the relevant Applications.

Displays:

* [Not accessed applications](#not-accessed-applications-over-time) - Apps that have 0 activity over the last 30 days (by default). The inactivity threshold can be modified using the [custom detection settings](/understanding-check-failures/customizing-checks#custom-detection-settings) on the "Applications with Limited Adoption" check
* Applications with no assignment required - Access to these apps is not restricted to certain groups. These apps can be accessed by any user in your organization
* Assigned but unused applications - Apps that have been used by fewer than 90% of the assigned users within 30 days (by default). The usage threshold can be modified using the [custom detection settings](/understanding-check-failures/customizing-checks#custom-detection-settings) on the "Applications with Limited Adoption" check
* Applications with Limited Adoption
* Applications with [Directly Assigned Users](/understanding-check-failures/oort-insights/identity-posture-management-insights/user-has-directly-assigned-application)

### Application Utilization

This chart shows how assigned applications are being used in your organization in the last 30 days so you can easily visualize your org's current state as it relates to app usage. Its value is not just in showing activity levels, but in helping separate applications that are actively supporting the business from those that might be over-provisioned, neglected, or carrying access that no longer reflects real need and require remediation action.

Low-utilization or unused applications can indicate unnecessary entitlements, stale assignments, procedural issues with new account onboarding or lateral employee movement, or forgotten integrations. These apps can increase the attack surface without delivering much operational value. Use this data to help you prioritize where to review access, validate ownership, tighten application hygiene, and focus cleanup efforts on the applications most likely to present avoidable risk.

To restrict the visualization to only [sensitive application](#sensitive-applications-activity) data, slide the toggle above the chart to **Enabled**.

Hovering over a segment in the pie chart will display a tool tip with the given utilization level and the count of apps making up that segment. To see which apps make up a given utilization level, select either the desired "slice" from within the pie chart or select the desired utilization level from the chart's key to navigate to the App page pre-filtered on your selection

### Application Reports Available for Download

Download a report in CSV format that shows applications with multiple keys. This report can also be accessed and downloaded via the Reports page found in the left hand menu.

### Least Used Applications

Displays the applications that are widely assigned but seeing little real activity in the last 30 days, by comparing the number of accounts assigned vs utilized. At a high level, this widget surfaces your lowest adoption apps (largest deltas between utilized and assigned) so that they can be prioritized for removal so that you can reduce your org's attack surface and tighten access hygiene.\
\
Because of their incredibly low usage levels, and their high assignment levels, these apps are typically lower risk to remove because the change will not impact a large segment of users. They are also likely incurring high license costs that can be recovered by removing the app and ending the agreement with the vendor.

Selecting either segment - 'using the application' or 'not using the application' - of one of the bars in the visualization will take you to the Users page, pre-filtered for the selected application and accounts associated with your selection. Using this granular data can help inform the appropriate remediation action such as removing dormant accounts completely, revoking unused access, or confirming whether an entire application is still needed.

### Application Types by Source

Shows how the organization’s application footprint is distributed across your connected identity sources. Instead of viewing all applications as one undifferentiated inventory, this widget shows where different kinds of applications are coming from so you can spot how much of your environment is centrally managed versus being harder-to-govern or service-driven. It can also highlight possible configuration issues that allow end users to add unapproved apps to your environment, unintentionally introducing an additional data risk vector.

A source with a large share of unmanaged or service-oriented applications can indicate weaker visibility, less consistent governance, or more opportunities for non-human or indirect access to accumulate without review. You can use this graph to identify which sources deserve closer attention, prioritize cleanup and access reviews, harden IdP configuration settings, validate onboarding coverage, and focus security controls where application sprawl or governance gaps are most likely to create risk.

Selecting a given segment of one of the bars in this visualization will take you to the Apps page, pre-filtered for that specific source and app type. Selecting a value in the legend below the graph will remove the corresponding data points from the visualization entirely. Select the removed value in the legend again to add it back to the visualization.

### Application Access by Source

Helps you understand how application usage is distributed across your identity sources, not just how many applications exist in each. At a glance, it shows which sources are driving real user activity and which are mainly contributing stale, low-value, or potentially unnecessary application access.

This matters because application sprawl often hides in disconnected systems. By comparing access patterns across sources, an administrator can quickly identify where to focus cleanup, access reviews, and source validation efforts. In a security-conscious environment, that makes it easier to reduce unnecessary exposure, spot areas where access may be over-provisioned or poorly governed, and make better decisions about which sources and applications deserve closer attention.

Selecting a given segment of one of the bars in this visualization will take you to the Apps page, pre-filtered for that specific source and app type. Selecting a value in the legend below the graph will remove the corresponding data points from the visualization entirely. Select the removed value in the legend again to add it back to the visualization.

### Sensitive Applications Activity

**Purpose & Benefit:** Highlights users who could be deprovisioned from [sensitive applications](/applications#applications-table-elements), reducing the overall attack surface and the blast radius for a given account should it be compromised, while also reducing license costs for your organization.

The Sensitive Applications Activity widget provides a breakdown of the number of accounts who are assigned an application and are using that application compared to accounts not using the application.

To customize the list of sensitive applications to align with your organization's preferences, go to the Applications page within the platform. Documentation on how to configure your sensitive applications list can be found [in the Apps page documentation](/applications#adding-sensitive-applications).

Selecting either segment - 'using the application' or 'not using the application' - of one of the bars in the visualization will take you to the Users page, pre-filtered for the selected application and user segment. Selecting a value in the legend below the graph will remove the corresponding data points from the visualization entirely. Select the removed value in the legend again to add it back to the visualization.

<figure><img src="/files/fb78lWO5F850tZ9preoU" alt="" width="563"><figcaption></figcaption></figure>

### Risky Users Accessing Sensitive Applications

This widget depicts the number of users with neutral, questionable, and untrusted trust level that are accessing sensitive applications over time.

Users with [lower trust levels](/user-trust-level#calculation-of-trust-level) should be investigted if they have accessed [sensitive applications](/applications#applications-table-elements) because there are indicators of risky behavior associated with their accounts. For example, an `untrusted` user might have a compromised account. This user, in turn, might be leaking customer data, modifying employee personally identifiable information (PII), or downloading sensitive company info like financial records or intellectual property, from sensitive apps as part of their attack.

By default, this widget looks at the last 30 days; however, you can use the timeframe filter in the top righthand corner of the widget to change the widget's timeframe to be longer or shorter depending on your needs.

<figure><img src="/files/RuyyQ8Njf9ngPplbRsMj" alt=""><figcaption></figcaption></figure>

### Not Accessed Applications Over Time

Tracks the number of applications that remain assigned, connected, or visible in the environment but are no longer being actively used. You can use this trend to easily track and demonstrate your org's progress with removing applications that have not been accessed from its app inventory, as well as monitor if the number of unused apps is starting to increase again - warranting another clean up effort.\
\
This view is useful for improving both security hygiene and access governance. A rising or consistently high trend can signal opportunities to review whether applications should still be onboarded, assigned, or monitored as active parts of the environment. It helps you prioritize conversations about deprovisioning, ownership validation, licensing efficiency, and the removal of dormant access paths before they become overlooked risk rather than treating unused access as harmless clutter.

### Directly Assigned Applications Over Time

Tracks the number of users that are directly assigned to applications over time so you can track your org's progress with remediating this issue and monitor for sudden spikes or gradual increases that require attention. Use this data to identify growing access-management risk, prioritize cleanup toward group-based access, and watch whether exceptions are becoming more common, especially for sensitive applications.

It is best practice to manage app access using automated, scalable group or policy-based controls rather than one-off user assignments to reduce the manual overhead associated with off-boarding users, managing lateral org shifts or IT help desk tasks to grant user access. If your organization has automated workflows upon user termination, these will often fail when direct access to an app is granted, potentially leaving an unprotected, backdoor account open that bad actors can leverage access your environment.


# Threats

Identity Intelligence has built a **Threats** Dashboard to help you easily identify and monitor potential risky behavior occurring within your organization so that they can be prioritized for investigation and remediated before becoming a bigger issue.\
\
To access the Threats Dashboard, navigate to the **Dashboards** landing page via the left hand menu item. Once on the Dashboards page, select the Dashboard header on the page (Default is **Posture**) as shown in the screenshot below to open a drop down with the different available Dashboards and then select **Threats.**

<div align="center"><figure><img src="/files/1ICfbZ4K8XQA0V447zxb" alt="" width="86"><figcaption></figcaption></figure></div>

The Threats dashboard enables you to visualize a variety of potential threats, including:

* [Non-Human Identities Risks](#nhi-risks)
* [Service Account Authentications by NIST Assurance Level](#service-account-authentications-by-nist-assurance-level)
* [Factor Usage by NIST Assurance Levels](#factor-usage-by-nist-assurance-levels)
* [MFA Threats](#mfa-threats)
* [Users per Trust Level](#users-per-trust-level)
* [Risky Users Distribution Over Time](#risky-users-distribution-over-time)
* [Risky Users Accessing Sensitive Applications](#risky-users-accessing-sensitive-applications)
* [Sensitive Applications Activity](#sensitive-applications-activity)
* [Sensitive App Authentication](#sensitive-app-authentication)
* [Sign-In Attempts by Location Over the Past 30 Days](#sign-in-attempts-by-location-over-the-past-30-days)
* [Sign-In Attempts by Country](#sign-in-attempts-per-country)
* [Insights & Unusual Activity](#insights-and-unusual-activity)

### NHI Risks (Over 30 days)

Non-Human Identities (NHIs) are identities that do not represent humans within your organization, rather they are "digital" identities used, for example, to manage services, infrastructure, and IT entities. NHI risks include privilege elevation, data leakage, unsecure authentication, and others.

This section highlights potential security vulnerabilities and risky behaviors associated with NHIs. Refer to our [NHI Posture Dashboard documentation](/dashboard/posture/non-human-identities-dashboard#nhi-risks-over-30-days) for more detailed descriptions on each counter in this widget.

Selecting any of the numbers within this widget will take you to the relevant page, pre-filtered on the selection you made.

<figure><img src="/files/vJpJDVpduUvhGAWOUueJ" alt=""><figcaption></figcaption></figure>

### Service Account Authentications by NIST Assurance Level

This pie chart displays breakdown of all multi-factor authentication usage per Service Account over the last 30 days, categorized by National Institute for Standards and Technology (NIST) [assurance level](https://pages.nist.gov/800-63-3-Implementation-Resources/63B/AAL/). You can use this data to track how safely service accounts in your organization are used log in to work systems over time. Accounts that regularly use weak forms of MFA to access resources are more susceptible to getting hacked because those low assurance methods are easier to breach using simple techniques like MFA or push harassment, Adversary in the Middle (AitM) phishing attacks, social engineering, and so on.\
\
Hovering over a segment in the pie chart will display a small tooltip with the given assurance level and the count of service accounts making up that segment.

<figure><img src="/files/WhkaOYeUiHSO6lqASSHy" alt=""><figcaption></figcaption></figure>

### Factor Usage by NIST Assurance Levels

Pie chart that displays a breakdown of all multi-factor authentication usage per user over the last 30 days, categorized by National Institute for Standards and Technology (NIST) [assurance level](https://pages.nist.gov/800-63-3-Implementation-Resources/63B/AAL/). As you roll out more secure MFA, use this data to track trends over time. Users with weak forms of MFA are more susceptible to getting hacked because those low assurance methods are definitely very easy to breach using simple techniques like MFA or push harassment, adversary in the middle phishing attacks, social engineering, and so on.

Hovering over a segment in the pie chart will display a tooltip with the given assurance level and the count of users making up that segment.

For example, in the screenshot below, we can see that 48 users have used a Medium assurance factor at least 1 time over the last 30 days.

<figure><img src="/files/a1749k81Mowz08GATLr7" alt=""><figcaption></figcaption></figure>

### MFA Threats

This widget surfaces risky behavior related to MFA adoption that should be investigated and remediated. Selecting any of the numbers within this widget will take you to the relevant page, pre-filtered on the selection you made.\
\
Refer to our [MFA Posture Dashboard documentation](/dashboard/posture/mfa-dashboard#mfa-metrics) for more detailed descriptions on each counter in this widget.

### Users per Trust Level

The Users Per Trust Level widget displays the current breakdown of the number of identities in each Trust Levels across your organization.

Not only does this graph give you a sense of where your users are at today, but it is also a quick and easy way to find users that should be prioritized for investigations.\
\
Selecting one of the bars in this visualization will take you to the [Users](/understanding-your-users/users) page, pre-filtered for the Trust Levels selected, so you can see all users who currently have a particular Trust Level.

To learn more about User Trust Levels, what factors are included in the calculation, how it is calculated, and more, see our general documentation about [User Trust Levels](/user-trust-level).

<figure><img src="/files/2TCaPyHFQRyi11YuqUbR" alt=""><figcaption></figcaption></figure>

### Risky Users Distribution Over Time

Risky Users Distribution Over Time depicts fluctuations to the trust levels of the users in your organization over time. This widget can be useful to identify sudden spikes in User Trust Levels.

By default, this widget looks at the last 30 days; however, you can use the timeframe filter in the top right-hand corner of the widget to change the widget's timeframe to be longer or shorter depending on your needs.

If you hover over a data point in this widget, which are marked by a dot on the trend line, you will see a tooltip with the count of users, segmented by Trust Level, for that given date. Selecting a value in the legend below the graph will remove the corresponding data points from the visualization.

<figure><img src="/files/WXzRJqaLXCSf7xLW8jcz" alt=""><figcaption></figcaption></figure>

### Risky Users Accessing Sensitive Applications

This widget depicts the number of users with neutral, questionable, and untrusted trust level that are accessing sensitive applications over time.

Users with [lower trust levels](/user-trust-level#calculation-of-trust-level) should not be allowed to access [sensitive applications](/applications#applications-table-elements). For example, an `untrusted` user might have a compromised account. This user, in turn, might be leaking customer data, employee personally identifiable information (PII), or sensitive company info like financial records or intellectual property,

By default, this widget looks at the last 30 days; however, you can use the timeframe filter in the top right-hand corner of the widget to change the widget's timeframe to be longer or shorter depending on your needs.

<figure><img src="/files/RuyyQ8Njf9ngPplbRsMj" alt=""><figcaption></figcaption></figure>

### Sensitive Applications Activity

Bar graph that displays the number of accounts using a [sensitive application](/applications#applications-table-elements) and assigned but not using the application. Click any bar on the graph to go to the [Users](/understanding-your-users/users) page, filtered by that application.

<figure><img src="/files/sRQUzOUHtb1VmIkzCjac" alt=""><figcaption></figcaption></figure>

### Sensitive App Authentication

Bar graph that displays the number of password-using and passwordless authentications for [sensitive application](/applications#applications-table-elements).

Refer to our [MFA Dashboard documentation](/dashboard/posture/mfa-dashboard#sensitive-app-authentication) to learn more about how to use this widget.

<figure><img src="/files/afyufPUL7NMRVO9IDZwj" alt=""><figcaption></figcaption></figure>

### **Sign-In Attempts by Location Over the Past 30 Days**

This map displays the number of sign-in attempts per country over the past 30 days, which can help you verify recent sign-in attempts and or quickly identify and pivot to unusual or unexpected sign-in attempts using the map data only, or in conjunction with the Sign-In Attempts per Country widget.

<figure><img src="/files/V8OJTzMKicSAltP2WmWY" alt="" width="563"><figcaption></figcaption></figure>

The Circles on the map represent the number of sign in attempts from a given location, while the outline of the circle also signifies if the sign in attempts were predominantly from known (blue) or unknown IP addresses. In the example screenshot below, this circle indicates a location has had 100 sign-in attempts, and more than half of them were from known IP addresses.

<figure><img src="/files/TOe66QXUvmSxv99bNM8p" alt="" width="375"><figcaption></figcaption></figure>

* If you select a particular circle on the map, it will drill in more closely so you can see the specific locations that make up the sign in attempts from that circle
* Circles may turn to pins as the map automatically zooms in, with the color of the pin indicating if the majority of sign ins attempts were successful or if they failed, as defined in the key below the map
* You can also use the **+** or **-** buttons to manually zoom in or out on the map to see more detailed locations and pins. You may notice that the numbers in a location pin change as you zoom in or out as the aggregated data points within the circle turn to their own items
* Selecting or hovering over a given pin to see a breakdown of sign in attempts with the associated count of users for each sign in result type
  * Select the count to drill to the [Users](/understanding-your-users/users) page, filtered for those users with that sign in attempt result for that location

**Example: View the number of logins from a city**

In the Sign-In Attempts by Location map, select a circle within a country to get more detail on it, then zoom the map to a particular a city by selecting the **+** or scrolling the mouse wheel

<figure><img src="/files/nrSuf7wDuTDdUEqqE7cs" alt="" width="484"><figcaption></figcaption></figure>

Select or hover over a pin in the map to see more details about the login attempts for that particular location.

<figure><img src="/files/l1h8Y7hsHFxLepEJmUSz" alt="" width="260"><figcaption></figcaption></figure>

### Sign-in Attempts per Country

This widget provides the number of sign in attempts for each country over the last 30 days, broken down by the number of users who have attempted to sign in to each country, as well as the number of users per sign in result.\
Select a value from the row in the table to go to the [Users](/understanding-your-users/users) page, filtered on your selection.

* Click a column header to sort data in the table in ascending or descending order by that column.
* Toggle **Only new countries** in the top right corner to limit the table to countries that are newly seen in the last 7 days (meaning that it is the first access attempt for that location within the last 7 days, but not the first time this location has ever been seen before)

<figure><img src="/files/ddZk3tVcRiWwio6f3b00" alt="" width="563"><figcaption></figcaption></figure>

### Insights & Unusual Activity

This section of the dashboard centers on identifying suspicious activities associated with [user trust levels](/user-trust-level). Each check can be explored in detail to review failure criteria, recommended remediation steps, affected users, and additional context.\
\
By associating these checks with user trust levels, this data provides meaningful insight into active security risks, and the related security gaps, enabling you to prioritize and focus your efforts effectively. This approach helps clarify where vulnerabilities exist and guides targeted actions to proactively enhance the organization's identity security.

Select the check name or blank space of a row in the table to view detailed information about that check, such as detection logic, recommended remediation actions, failing users, etc, or select a particular trust level tag in a row to go to the Users page, pre-filtered for that trust level.\
\
Select **Configure Checks** to add checks to the table or remove checks from the table.

**Explanation of the Insights & Unusual Activity Table**

Data displayed in the table:

* Check column: Name of the check that caused the users to be displayed in the table.
* \# Failing column: Number of users failing the check and the percent change in the value over the last week and last month.
* Failing Users Trust Levels column: Number of users failing the given check per trust level.

<figure><img src="/files/nXUVtThGwxof3DaBFrZV" alt=""><figcaption></figcaption></figure>


# Compliance

### Top Failing Checks

List of prioritized failing checks. Example:

<figure><img src="/files/8kzASdIE5C0H6E9FuZMy" alt=""><figcaption></figcaption></figure>

Failing checks are listed in order of severity. The graphic next to the name of the failing check means:

Clicking any check provides ore information about it. Example:

<figure><img src="/files/d052s7saUZQZX7yDEeVT" alt=""><figcaption></figcaption></figure>

The percentage of users *passing* the check is displayed as a number.

The colored semicircle indicates the severity:

* Red: 50% or fewer users passing.
* Amber: 50% or more users passing.
* Green: No users are failing the check.

### Compliance Reports Available for Download

Click ![](/files/nUiEISP2DPdZ11Z9lhn4) to download `check-compliance-report-<todays-date>.csv` for analysis.


# Operations

## Setup Progress

Easily access the [onboarding checklists](/dashboard/onboarding-checklists) and monitor your team's completion progress for each checklist.

<figure><img src="/files/hytc6LiZaJUnNJ8y8brp" alt=""><figcaption></figcaption></figure>

## Integration Status

**Purpose & Benefit:** Quickly see the status and approximate traffic from each integrationconfigured in your Identity Intelligence tenant.

The connected integrations are grouped by type, including Providers, Ticketing systems, Notification targets, SIEM platforms, etc

For identity sources like Azure AD, Okta, Duo, etc, the last collection status (ex: "<mark style="color:green;">Success</mark>") and average traffic metric is shown. Hover over the tool tip next to "Last Data Collection" on the left side of the widget to see the data and time of the last data collection for each connected identity source.

*Note: Full admins in Identity Intelligence can also get more details on the integration status from the* [*Integrations*](/integrations) *page in the left hand menu bar*

<figure><img src="/files/txUkcpOfDRULqltAdODj" alt=""><figcaption></figcaption></figure>

## Check actions taken over last 30 days

The Check Actions widget was developed to provide Identity Intelligence platform admins and other users insights into the different actions that other colleagues are taking in the platform on user check failures over the last 30 days. The metrics displayed in this widget include:

* User activity marked as normal behavior
* User activity marked as interesting
* Users excluded or re-included in a check

Selecting any of the metrics in this widget will take you to the System Logs, pre-filtered on the action selected, where you can see more detailed information on the date the action was taken, who took the action, and which user account and check failure the action was taken on.

<figure><img src="/files/RaJ38q7Vq3rcfuvufLAR" alt=""><figcaption></figcaption></figure>


# Identity Security Assessment (ISA)

Cisco Identity Intelligence's Identity Security Assessment (ISA) rapidly delivers unmatched visibility across all identities within your organization. The ISA is designed to quickly identify identity risks across critical infrastructure and consolidate key areas of focus into an easy to consume export. The assessment leverages API-based [integrations](/integrations) with selected providers from your identity stack to ensure there is no impact on production systems and requires no agent deployment.

The pre-defined ISA Dashboard information is incredibly useful as you begin your journey with Identity Intelligence, but also serves as a valuable point of reference to compare progress as you continue to leverage the platform and take action on the various insights presented.

{% hint style="info" %}
Note: collecting and analyzing historical data may take some time depending on the size of your identity environment. After successful integration, Cisco Identity Intelligence may need up to 14 days to fully stabilize the data.
{% endhint %}

To access the ISA Reports Dashboard, navigate to the **Dashboards** landing page via the left hand menu item. Once on the Dashboards page, select the Dashboard header on the page (Default is **Posture**) as shown in the screenshot below to open a drop down with the different available Dashboards and then select **ISA Reports.**

<figure><img src="/files/ySt3CP91MueWRzZyYDgt" alt="" width="86"><figcaption></figcaption></figure>

The ISA Reports Dashboard aggregates data from all the connected sources in your tenant and organizes it by focus area into 3 sections:

* [Identity and Access Management (IAM) Hygiene](#iam-hygiene)
* [Multi-factor (MFA) Analysis](#mfa-analysis)
* [Threat Insights & Unusual Activity](#threats-insights-and-unusual-activity)

You can drill into the value in any of the counters and certain visualizations to see more details, such as the list of impacted users, by clicking into the item of interest. You can either use the default ISA Reports Dashboard or you can [tailor it to your preferences](#customize-your-isa-report-view).

### IAM Hygiene

This section emphasizes the critical role of maintaining strong Identity and Access Management (IAM) practices to enhance your organization's identity security and proactively combat threats. This includes managing user access effectively, auditing permissions regularly, and removing dormant accounts to reduce security risks and prevent unauthorized access.

You can select values from certain

<figure><img src="/files/WWIFLTBMNtKS17bfW539" alt=""><figcaption></figcaption></figure>

### MFA Analysis

This section provides an overview of your organization's Multi-Factor Authentication (MFA) adoption and assesses the effectiveness of the MFA methods in use, based on the NIST guidelines. It offers a clear evaluation of the security strength of each authentication method, helping organizations understand the robustness and reliability of their MFA implementation, while also surfacing any gaps or areas to improve.

<figure><img src="/files/prMpsiA6Q6KP4UlKhBfu" alt=""><figcaption></figcaption></figure>

### Threats Insights & Unusual Activity

This section of the dashboard centers on identifying suspicious activities associated with [user trust levels](/user-trust-level). Each check can be explored in detail to review failure criteria, recommended remediation steps, affected users, and additional context.\
\
By associating these checks with user trust levels, this data provides meaningful insight into active security risks, and the related security gaps, enabling you to prioritize and focus your efforts effectively. This approach helps clarify where vulnerabilities exist and guides targeted actions to proactively enhance the organization's identity security.

<figure><img src="/files/xzUtIn87RKqQGFFsOFZV" alt=""><figcaption></figcaption></figure>

### Customizing and Sharing Your ISA Report

Like the other Dashboard tabs, the ISA Reports Dashboard can be customized to meet your needs, and exported for easy sharing. Please refer to our [Dashboard overview article](/dashboard#dashboard-functionality) for more info.


# Onboarding Checklists

The Onboarding Checklist provides a short list of easy to follow steps to help you set up your Identity Intelligence tenant, while also explaining critical features and functionality available in the platform, so that you can get the value from the platform as soon as possible.

<figure><img src="/files/dXkVdMrcsMGOTxsyusGS" alt=""><figcaption></figcaption></figure>

### How to access the Onboarding Journeys

The onboarding journeys can be accessed from a couples places within Identity Intelligence.

The simplest way is using the 🚀 **Setup** button in the top menu bar, to the right of the search bar. Select **Setup** to immediately navigate to the Checklist.

<figure><img src="/files/CB3HGhHoHQo8C3MDL9x0" alt=""><figcaption></figcaption></figure>

The second way is via the **Setup Progress** widget within the [**Operations** Dashboard](/dashboard). Select **Resume** to navigate to the Checklist.

<figure><img src="/files/2OTx9x5UxMJk8hIUpveB" alt=""><figcaption></figcaption></figure>

#### Who can access the Onboarding Journeys?

Currently, only Admins can access the Identity Intelligence Onboarding Journeys.

[Users with lower permissions](/oort-tenant-settings-overview/role-based-access-and-access-logs#roles) are not able to complete the actions in the checklist and therefore, the Setup button and Dashboard widget are not visible to them at this time. This may change in the future when additional checklists are added.

### How to use the Onboarding Journeys

Each Onboarding Journey has multiple steps that should be completed. Some steps may be dependent on or build upon previous steps in the journey, so it is typically best to follow the steps as written to ensure everything runs smoothly.

***Note**: Today there is only one journey available (Get Started) but others will be added in the future!*

Each step has at least one task associated to it. Select the task text to get taken to the relevant page within Identity Intelligence to complete the task.

When a task is not complete, you will see a blank circle next to the task. When a task is complete, the blank circle will either turn into a checked circle for you automatically, or will need to be manually completed using the "**Mark as Complete**" button.

### What should we do after we complete the Get Started journey?

Today there is only one Onboarding Journey available - the "Get Started" journey - but in the future we will be adding more journeys for specific product areas.

In the meantime, once you have completed all the steps in the Get Started journey, we highly recommend reading [this documentation](/best-practices/whats-next-how-to-use-identity-intelligence-effectively) that details next steps to help you understand where to start with the data, how to leverage other features to help with different tasks, and how to start operationalizing the data Identity Intelligence provides to make it part of your team's day to day processes.


# Understanding your users

Cisco Identity Intelligence allows you to gain full visibility over all your identities. This is accomplished by bringing in a vast amount of data on identities from a range of sources including traditional identity sources like Entra ID (formerly Azure AD), Duo, and Okta, non-traditional sources like Github, Google, or Salesforce, and HR systems, such as Workday.\
\
We go deep into each configured integration to understand everything we can about each and every identity - from static entitlement data, to dynamic behavioral data about the identity- and then merge user accounts across all of these different identity providers to provide a single source of truth for each identity.

{% hint style="info" %}
See [Integrations](/integrations) to learn more about the integrations available and how to configure them
{% endhint %}

Within Cisco Identity Intelligence, there are two primary areas where you can see information on the identities in your environment:

* [Users ](/understanding-your-users/users)page which is accessed when selecting **Users** from the left hand navigation menu
* [User 360 ](/understanding-your-users/user-360)which is accessed by selecting a specific user from the Users page, or anywhere you see a user's name (ie: failing checks, etc)

The [Users](/understanding-your-users/users) page shows you a table of all the user identities in your environment, along with several filters to slice and dice the information. From the Users page, you can select n a specific user to navigate to the [User 360](/understanding-your-users/user-360) where you will find the full rich insight about that particular identity.\
\
Use the links above to read more detailed information about each area and the respective features and functionality.


# Users

### Overview

The Users page provides high level information on all the user identities in your environment, along with several filters and sortable columns, so that you can better understand, analyze and share user population data based on a variety of useful parameters. By default, the table on the Users page is sorted by User Name, and excludes user accounts that have been deleted, deprovisioned, or disabled.

<div align="center"><figure><img src="/files/prHwRt4nbCLN80v5xXya" alt=""><figcaption></figcaption></figure></div>

This section covers:

* [Definitions of the elements in the table](#user-list-elements)
* [Users page actions](#users-tab-general-actions) such as searching, exporting results, etc
* [Basic Filters](#apply-basic-filters) and [Advanced Query Mode](/understanding-your-users/users/advanced-query-mode)
* [Pivoting on IP address](#pivot-on-ip-address)

### Users table elements

The section below details the fields that appear in the table by default, as well as the definition of each field:

<table><thead><tr><th width="168">Element</th><th>Description</th></tr></thead><tbody><tr><td>User</td><td>The user's display name and their corresponding email or username</td></tr><tr><td>Trust Level</td><td>The user's current <a href="/pages/atYQ1IVzlcahrg2tO95G">Trust Level</a></td></tr><tr><td>Checks</td><td>The total number of <a href="/pages/Kh6tVv83yYj49rfcBJ3j">checks</a> a user is failing.<br><br>A 🚫 icon in this column indicates that the corresponding user is not part of the protected population and checks are not being evaluated against this user</td></tr><tr><td># IPs</td><td>The total number of IP addresses associated with a user's activity across all providers</td></tr><tr><td># Logins</td><td>The total number of attempted logins across all providers, regardless of result (success, failure, challenge, other)</td></tr><tr><td>Last Seen (UTC)</td><td>The date and time of the last login attempt, regardless of outcome, for a user across all providers</td></tr><tr><td>Last IP Address</td><td>The IP address associated with the last successful <strong>or</strong> failed login attempt for a user across all providers<br><br><a href="#pivot-on-ip-address">Read more below</a> about how to pivot on the last IP address</td></tr><tr><td>Last Location</td><td>The location associated with the last successful <strong>or</strong> failed login attempt for a user across all providers</td></tr><tr><td>MFA</td><td><img src="/files/sPmuy5coWR7XJlqJdDwr" alt="">= MFA configured<br><img src="/files/gOInvG6QEZGa25RqDi70" alt="">= MFA not configured</td></tr><tr><td>Providers</td><td><p>The logo icon(s) for the corresponding identity data sources where a user's account has been associated<br><br>Hovering over a source will show you the integration name and user's status as gathered from the identity data source</p><p><img src="/files/ktqXnWaAparS6Pu2rNb7" alt="" data-size="original"></p></td></tr><tr><td>Status</td><td>The user's <a href="/pages/BpLbHPpgE68GpsgKAL5U">Identity Intelligence Status</a> and Lifecycle Event tag, if applicable. Lifecycle events highlight recent, notable events that have occurred on a user's account that can be beneficial to know about during an investigation. Lifecycle event badges are displayed for 7 days after the event is noted<br><br><strong>Status</strong><br>- <strong>Active</strong> (green badge): This account is enabled in an identity data source and has successfully logged in over the last X days. The number of days is consistent with the value set on the Inactive Users and Inactive Guest Users checks (default setting is 30 days)<br>- <strong>Inactive</strong> (Grey badge): This account is enabled in an identity data source, but has not successfully logged in over the last X days. The number of days is consistent with the value set on the Inactive Users and Inactive Guest Users checks. (default setting is 30 days)<br>- <strong>Deprovisioned</strong> (Grey badge): This account is no longer enabled in an identity data source and cannot be signed into<br>- <strong>Inconsistent</strong> (red badge): This account has been flagged because there are account status discrepancies that may pose a significant security threat. See <mark style="color:red;">Inconsistent Users</mark> to learn about what factors contribute to a user being marked as inconsistent<br><br><strong>Lifecycle Events (yellow badge)</strong><br><strong>- New Account:</strong> indicates that this account was recently created. Includes the date the account was created<br><strong>Significant Change:</strong> indicates that an uncommon, but important, activity has recently happened on this account (for ex: MFA factor added, admin privileges granted, sensitive app assigned, etc). You can query for specific Significant change events using <a href="/pages/IrfOK9Eg0LtxmfH96xfo">Advanced Query </a>mode</td></tr><tr><td>Compiled Status</td><td>Compiled status combines provider user types (ie: internal, external, service accounts, etc) and the user's <a href="/pages/BpLbHPpgE68GpsgKAL5U">Identity Intelligence Status</a></td></tr></tbody></table>

Additional columns can be added to the table view using the **Columns** button:

<table><thead><tr><th width="161">Element</th><th>Description</th></tr></thead><tbody><tr><td>Created Date (UTC)</td><td>The date a user's account was created. Uses the first creation date available across all configured providers</td></tr><tr><td>Employee ID</td><td>The employee ID, gathered from the provider if available</td></tr><tr><td>Manager Login</td><td>The user's manager's email address, gathered from the provider if available</td></tr><tr><td>Title</td><td>The user's job title, gathered from the provider(s) if available</td></tr><tr><td>Department</td><td>The department a user belongs to, gathered from the provider(s) if available</td></tr><tr><td>Registered Location</td><td>The location a user is supposed to be working from based on hiring agreements, if available from the HRIS or the IdP. If the user has multiple registered locations that differ, the HRIS data always takes precedence. If HR information is not available for a user, then the data comes from the IdP</td></tr><tr><td>Inconsistency Severity</td><td>The severity of the inconsistency noted for a user with <a href="/pages/BpLbHPpgE68GpsgKAL5U#inconsistent-users">Inconsistent</a> status</td></tr><tr><td>User Type</td><td>The Identity Intelligence user type assigned based on compiled identity data source user types</td></tr></tbody></table>

### Users page general actions

There are several general actions that can be performed on the Users page:

* Search
* Sort, add or remove columns
* Download results
* Share results
* Refresh

Navigate through the tabs below to read more about how to utilize each action.

{% tabs %}
{% tab title="Search" %}

#### **Search**

Use the search bar to search based on users, names, group, applications and IPs. When searching, you do not need to provide an exact value. Typing a piece of the word will return results.

If you have searched on a particular parameter, the search criteria is retained as you navigate between different tabs within the platform.

To clear the search bar, select the **X** on the right most side of the search bar, next to the **Advanced** button.
{% endtab %}

{% tab title="Sort Columns" %}
**Sort Columns**

Sort columns within the table by selecting the column header you'd like to sort by. Select once to sort in ascending order, select again to sort in descending order.

Multi-column sorting is **not** currently supported.
{% endtab %}

{% tab title="Add/remove columns" %}

#### **Add or remove columns**

Columns can be added or removed from the table using the **Columns** button in the top right of the table, above the column headers. Select this button to choose the columns you'd like to display in the UI.\
To return to the default settings, select **Restore Default** at the bottom of the list when you open the **Columns** button.

<figure><img src="/files/AHSIktuU1cZ9wMrV35AQ" alt=""><figcaption></figcaption></figure>

The Download feature (next tab) respects the visible columns.
{% endtab %}

{% tab title="Download results" %}
**Download results**

You can download tabular data from the table to a CSV using the **Download** icon button on the right after the search bar. All columns displayed and filters applied are included in the CSV output.

If there are no results in the table, the CSV export will contain only headers and no user data\
\
Note: The CSV download has a limit of 2,000 rows. If you need to download more than 2,000 rows, select the download button and follow the prompts to get the export sent via a download link.

<figure><img src="/files/bFnv1DzwxR4k3c3G5uUo" alt="" width="77"><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Share URL" %}
**Share URL**

The **Share** button (on the right side of the Search bar) copies a link to this page, with the applied filters and selected columns, that can be easily pasted, bookmarked or shared with anyone who has the appropriate access to your Identity Intelligence tenant

<figure><img src="/files/CUmWaZ6xNmXd4ZON1BVx" alt="" width="68"><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Refresh" %}
**Refresh**

Use the **Refresh** button on the right side of the search bar to refresh user data and filter counts in the table after making changes (ex: linking users, excluding a user from a check).

![](/files/LaIWEFvLlMe4BbcfjPsO)
{% endtab %}
{% endtabs %}

### Filters

The Users table is filterable by a number of attributes, enabling you to slice and dice your user population based on the parameters that are important to you.

There are two types of filters that can be used on the Users table - [basic filters](#applying-basic-filters), which can be found to the left of the Users table and [Advanced Query mode](/understanding-your-users/users/advanced-query-mode), which can be enabled via the search bar above the users table. Check out our documentation on to [how to use Advanced Query Mode](/understanding-your-users/users/advanced-query-mode#entering-advanced-mode-and-adding-filters) to learn more.

Filtered results derived from both basic filters, as well as advanced queries, can be saved to access later or share with teammates. To learn more about how to save filters, see [Saved Filters](/understanding-your-users/users/saved-filters) to learn more.

#### Applying basic filters

You can see all the available basic filters on the left hand side of the Users page.

To enable a filter, select the check box for the attribute you would like to filter by. The applied filters will be added to the search bar, as seen in the screenshot below. The number of users that you are currently viewing, based on the filters and searches used, will appear in the top left corner of the Users table above the column headers.

To remove a filter, you can either deselect the attribute from the filters list on left hand side of the Users table, or select the **X** on the right hand side of the filter box that is in the search bar. To remove all filters besides the default filter, select the **X** located next to the **Advanced** Filter button in the search bar.

After you have selected your filters, the filters are retained as you navigate between different areas within the platform.

<figure><img src="/files/pArvZWga5tFTzWQ2pPrR" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
By default, the Users Table excludes user accounts that have been deleted, deprovisioned, or disabled. To include these accounts in the results, select the **X** on the right side of the 'NOT Status' filter box in the search bar.
{% endhint %}

Distinct filters are separated by an **AND** operator. For example, if you select the `Duo` value from the `Sources` filter and the `No` value for `MFA Configured` filter, the table will display all users in `Duo` who have `No MFA Configured`.

For most filters, you can select more than one value to filter by. Within a given filter, selecting more than one value will separate the values with an **OR** operator by default. For example, if you select the values `Okta` and `Duo` for the `Sources` filter, users with accounts in **either** `Okta` **OR** `Duo` will be displayed.

However, within a given filter, if you would like to filter for users with accounts in both `Okta` **AND** `Duo`, you can select the **OR** operator found in the filter box in the search bar or in the left hand filter menu (screenshots below), to switch it to **AND**. Doing this will allow you to see users that are in both `Okta` **AND** `Duo`.

Filters that use radio buttons cannot have more than one value selected at once (for ex: `Is Admin`)

<figure><img src="/files/i4KFDvlCVzrYsXMySYwV" alt=""><figcaption></figcaption></figure>

Specific values can also be excluded from the results for most filters, except for those that cannot have more than one value selected at once. To exclude a value from filtered results (ie: `NOT`), you can select the 🚫 icon in either the filter box in the search bar or the left hand filter menu.

<figure><img src="/files/f35lYsW8u1qF6tnl9V4R" alt=""><figcaption></figcaption></figure>

Similarly, you can 'include all' filter values in the results, except for filters that cannot have more than one value selected at once. To select all values within a given filter, select `All` next to the filter value title.

<figure><img src="/files/4Cz2gQW4QChWRNP5BqYm" alt=""><figcaption></figcaption></figure>

### **Pivot on IP address**

The IP address in the table has a few actions associated with it that can be useful to learn more about an IP address and the associated activity.

The actions menu will pop up when left-clicking on a specific IP address in a user row. The actions are:

* **Find user activity -** Takes you to the [Activity](/understanding-your-users/user-360/activity-tab) tab of the User 360 for the respective user, with the selected IP address added as a filter, so you can see all the user's activity associated with this particular IP address
* **Find users who attempted to sign in from X.X.X.X -** Adds the selected IP address as a search parameter on the [Users](/understanding-your-users/users) page so you can see any other users who have activity associated with this particular IP address
* **See IP info -** Takes you to the [Networks](broken://pages/4mj5ohYSFvXpCP97qCgh) tab of the User 360 for the respective user, with the selected IP address added as a filter, and opens the slide panel so you can see more detailed information about that IP address for this user
* **Copy to clipboard -** Copies the IP address to your clipboard so that you can paste it within Identity Intelligence or another tool

<figure><img src="/files/dTRLKxHOhovliBzcNLwt" alt=""><figcaption></figcaption></figure>


# Saved Filters

The Identity Intelligence Users page includes a wide variety of filters, whether in [Basic](/understanding-your-users/users#applying-basic-filters) filter mode or [Advanced Query Mode](/understanding-your-users/users/advanced-query-mode) using the KQL query language. Often a specific data set is needed repeatedly as you work through a project with your team or for long term monitoring of specific users/issues, and it can be cumbersome to continuously re-apply the same set of filters or rebuild the same advanced queries over and over again to get the data you need.

To make it easier to quickly access sets of filters that you are frequently referencing, Identity Intelligence allows you to create Saved Filters. These Saved Filters can also be modified and deleted as needed.

<mark style="color:red;">NOTE:</mark> **ALL** users in the console can see and utilize **ALL** existing saved filters. Identity Intelligence users with the Help Desk role and full Admin role can create, update, and delete **ANY** filters.\
There are also no user permissions associated with individual filters and no private or per-user filters at this time.

### Create Saved Filter

1. To create a Saved Filter, craft the query in Basic or [Advanced mode](/understanding-your-users/users/advanced-query-mode) that provides you with the data set needed
2. Select the **Save** icon on the left of the search bar

<figure><img src="/files/hUzS9vekjv5dp1qnF3iu" alt=""><figcaption></figcaption></figure>

3. A small modal will open. Give the filter an easy to identify name and select the blue **Save** button within the modal to save your filter

<figure><img src="/files/hfkyiwyTRiTJOaa0vHZj" alt=""><figcaption></figcaption></figure>

4. The Saved Filter will then be available in the dropdown list of the Filters area, towards the top left of the Users page

<figure><img src="/files/Hd5RaQFF58JI6zmS7DBx" alt=""><figcaption></figcaption></figure>

### Modifying an existing Saved Filter

To modify an existing Saved Filter, simply select the desired filter from your list of Saved Filters. The Saved Filter attributes will automatically be added to the search bar. From here, you can modify the search parameters in the search bar. Select the **Save** icon next to the search bar again to re-save it.

### Deleting a Saved Filter

To delete an existing Saved Filter, select the desired Saved Filter, then select the **Trash** icon next to it's name.

<figure><img src="/files/uS2h20cbbDqxaTUZLlW5" alt=""><figcaption></figcaption></figure>

### Sharing a Saved Filter

As noted above, Saved Filters are available to all users with access to your Identity Intelligence tenant. To share a link outside of the console, for instance via email, Webex, Teams, or Slack channels or direct message:

1. Select the Saved Filter you want to share
2. Select the **Share** icon on the righthand side of the Search bar to copy a direct link to your clipboard
3. Paste the link where desired to share the data with other team members who have access to your Identity Intelligence tenant

<figure><img src="/files/igiSXbqd17WyurrbHjaL" alt=""><figcaption></figcaption></figure>


# Basic Search & Advanced Query Mode

09/2024

## Overview

Identity Intelligence enables users to create simple but powerful searches with basic filters and also advanced queries that answer critical questions about your identity population. When in Advanced Query mode, you will be able to use Kibana Query Language to form more complex queries to find specific information that you may need that is not available in our Basic filters.

<figure><img src="/files/Vqg0eha7tvE0aoeKEY0T" alt=""><figcaption></figcaption></figure>

## Basic Search Mode

The default search mode within the UI allows for point-and-select combination of filters on the lefthand menu bar of the Users page.

The same type of select-to-filter functionality is available in the [Activity](/understanding-your-users/user-360/activity-tab) tab of the [User 360](/understanding-your-users/user-360) page.

### Important Notes

1. By default, accounts that are disabled, deleted, or deprovisioned are filtered OUT of the Users page results. Clear this filter to see those accounts in your search results.
2. In Basic mode, searching with a leading wildcard, such as `*<some term>`, is not supported.

## Entering Advanced Mode & Adding Filters

1. From the Users tab, press the **Advanced** button on the right side within the search bar
   1. Alternatively, if you select a Basic filter from the left hand side of the Users table, it will add a chip for the selected filter in Basic mode to the Search bar. Select that chip in the search bar to convert that filter to an Advanced attribute, which enables you to edit that attribute
2. Additional filters can be added and edited to the existing search string
3. At any point, you can convert back to the Basic filter mode by pressing the **Advanced** button and confirming that you'd like to switch back to Basic mode. Please note that converting back will remove anything written into the search string

## Available Attributes & Auto-complete

The user records in Identity Intelligence contain a large number of attributes or fields that can be queried in Advanced search mode. The Attribute List is constantly being updated as new functionality and integrations are added.

The best way to find a particular attribute is by selecting the **Advanced** button, which will open the list of available attributes that can be used to create queries. Start typing your desired attribute into the search bar to trigger the auto-complete functionality, which allows you to see what attributes exist that include your keywords, or scroll through the alphabetized list of attributes to see everything that exists!\
\
There are also hints frozen to the "bottom" of the attribute list that can help guide you when crafting more complex queries.

<figure><img src="/files/RyMQaTbwZ7oHM5NS7YVz" alt=""><figcaption></figcaption></figure>

## Operators

The Advanced search follows the convention operators of KQL ([reference article](https://www.elastic.co/guide/en/kibana/current/kuery-query.html)), including -

* AND
* OR
* NOT
* `_exists_`
* `!_exists_`

## Examples

This section provides several examples for building queries within the Advanced search bar.

#### Example 1 - Complex query with AND

To find users with the following set of parameters -

* users in the GSuite
* Admins group
* no MFA enabled
* recently logged in
* subject of an IP threat from a VPN or Tor proxy

The query would look like:

```
groupNames.keyword:"sg-gsuite-admins" AND mfaEnabled:false AND lastActive:{now-7d TO now-1d} AND ipAddressDetails.ipTags.name:(VPN OR TOR_Proxy)
```

#### Example 2 - IP Activity from a Specific Country

To find users with recent IP activity from a particular Country, such as China, the advanced query would look like:

```
ipAddressDetails.location.country.keyword:"CN"
```

#### Example 3 - Accounts with no Employee ID attribute

To list user accounts without an `Employee ID` attribute value, it would look like:

```
!_exists_:employeeId.keyword
```

#### Example 4 - Inactive users with specific naming convention

To find inactive users who's accounts start with "sa." and contain the word "company", the query would look like:

```
sa.*company* AND checkResults.checkId.keyword:inactive-users
```

<mark style="color:red;">Note:</mark> free text search will look in all indexed fields within the user profile, for example email address, UPN, etc.

#### Example 5 - Find admin accounts for a specific IDP

Identity Intelligence attempts to determine admin privileges or roles granted to accounts. To search for the admin accounts associated with only one specific IDP, the query would look like one of the following, depending on the IDP desired:

```
integrationInstanceDetails.providerAdmin.keyword:"OKTA__true"

integrationInstanceDetails.providerAdmin.keyword:"AZURE_AD__true"

integrationInstanceDetails.providerAdmin.keyword:"G_SUITE__true"
```

#### Example 6 - Query for Microsoft License Types

Identity Intelligence is able to collect assigned Microsoft license types through the Azure Graph API. This information is displayed in the Azure tile of the Overview tab for a user account.

To query for a specific license type, the search string would look like:

```
adActiveLicenses.keyword:("Azure Active Directory Premium P2")
```

Note<mark style="color:red;">:</mark> the License name value is a translation from the license UID provided through the Graph API.

#### Example 7 - MFA Factors

A common query is to search for the users who have a particular type of MFA factor enrolled, such as push notification, hardware security keys, etc.

Use the `userFactors.factorType.keyword`attribute to search for different enrolled factor types, as shown:

```
userFactors.factorType.keyword:"push"
```

The available factor types and names will vary based on which IAM platforms are connected to Identity Intelligence. Some common factor names include:

```
webauthn 
google_otp
push
okta_verify
okta_password
password
signed_nonce	
okta_email
Security_key
```

A comprehensive list of factor types seen so far is below in the [#factor-list](#factor-list "mention") section.

#### Example 8 - Application Assignment and Usage

It is frequently useful to look for both which users have an application assigned and which users are actually using the application.

For example, to look for users who have application `Salesforce SAML` assigned, but not in use in their last 30 days of activity, the query would look like:

```
assignedAppNames.keyword:"Salesforce SAML" AND (NOT appNames.keyword:"Salesforce SAML")
```

<mark style="color:red;">Note:</mark> Sensitive applications can be seen in the [Dashboard](/dashboard) tab and all applications that are integrated via an IDP or directly can be seen in a User's Applications tab. Sensitive Applications can be configured through [Tenant Settings](/oort-tenant-settings-overview#sensitive-applications)

#### Example 9 - Device Usage

If looking for users with sign-in activity from a particular user-agent string or device type, for instance iPhones, the search string might look like:

```
lastSignIn.rawUserAgent.keyword:"Mozilla/5.0 (iPhone; CPU iPhone OS 15_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.6.1 Mobile/15E148 Safari/604.1"
```

#### Example 10 - Find a user by Duo Security alias

To find a user account by an alias in Duo Security, use this format:

```
integrationInstanceDetails.userKey.keyword:/.*kheuck*./
```

## Factor List

Across the different IDPs, factors may have a variety of different names, which may change or grow over time. The list below provides examples of factor names that Identity Intelligence has seen so far.

```
okta_verify
okta_email
Passkey
Platform_authenticator_(passwordless)
webauthn
web
microsoftAuthenticatorPasswordless
Security_Key
Other
token:hotp
duo_mobile_passcode
windowsHelloForBusiness
yk
d1
Security_key
password
microsoftAuthenticator
duo
softwareOath
token:software:totp
webauthn-roaming
yubikey_token
okta_password
totp
sms
Touch_ID
token
phone
fido2
signed_nonce
phone_number
bypass_code
push
duo_push
google_otp
question
claims_provider
WebAuthn_Chrome_Touch_ID
u2ftoken
QR code
sms_passcode
email
phone_call
security_question
webauthn-platform
call
token:hardware
otp
custom_otp
509 Certificate
```


# User 360

### **Overview**

With Identity Intelligence's User 360 View, you get rich insight across distinct data sources about each and every identity in your user population. The User 360 profile consolidates a user's static entitlement data with dynamic behavior and user event logs to create a single source of truth across all sources (Entra ID, Duo, Github, Workday, etc) for any given identity.

All of this information is gathered from each source where the same user email has been associated and is then displayed across various areas of the User 360 to provide you with deep context on a particular identity.<br>

<figure><img src="/files/6L6HCTSN9nhA93SMPxVw" alt=""><figcaption></figcaption></figure>

To get to a User 360, select a specific user's name from the [Users](/understanding-your-users/users) page, the failing users on a specific [Check](/understanding-check-failures) page, the [System Logs](/oort-tenant-settings-overview/systems-logs), etc - basically anywhere in the platform where you see a user's email in a blue hyperlink! To open the User 360 in a new tab, use the grey button next to the user's email.

<figure><img src="/files/Zotck6wdIcLjf73HVAWX" alt="" width="240"><figcaption></figcaption></figure>

The User 360 is broken down into multiple tabs. To learn more about what information and functionality is available in each tab, use the respective link for each page below:

* [Overview](/understanding-your-users/user-360/overview-tab) tab
* [Activity](/understanding-your-users/user-360/activity-tab) tab
* [Networks](/understanding-your-users/user-360/networks-tab) tab
* [Devices](/understanding-your-users/user-360/devices-tab) tab
* [Applications](/understanding-your-users/user-360/applications-and-groups-tabs) tab
* [Groups](/understanding-your-users/user-360/applications-and-groups-tabs) tab
* [Checks](/understanding-your-users/user-360/checks-tab) tab

Some information and functionality persists across all tabs of the User 360. Some of these fields can be seen in the screenshot below. The full list of fields that you may see in this section are:

* User's display name - Top left corner
* User's email - Top left corner, under display name
* User's registered location, if present in the IdP or HRIS - Blue tag next to display name and email
* \# of Linked users, if present - Blue tag next to display name and email, and registered location tag, if present
* User's [Identity Intelligence Status](/understanding-your-users/user-statuses) - Tag (color depending on user's status) next to display name and email, and registered location tag, if present
* User Lifecycle events, if applicable - Yellow tag next to display name and email, and registered location tag, if present. For users with a Significant Event tag, hover over the tag to see a tooltip with the event types. See [Overview](/understanding-your-users/user-360/overview-tab) tab for more information about the different lifecycle events

Functionality that persists across all tabs are:

* **Actions** button - [Read the linked documentation to learn more about remediation actions](/understanding-your-users/remediation-actions#remediation-actions)
* **Share** button - Use the **Share** button on the right side of the page, after all the tabs to copy a link to the exact page that can be easily pasted, bookmarked or shared with anyone who has the appropriate access to your Identity Intelligence tenant.

<figure><img src="/files/LfPGgiWiFg158gscMwR6" alt=""><figcaption></figcaption></figure>

{% embed url="<https://youtu.be/MqeXDi3eZi0>" %}


# Overview Tab

Overview

The purpose of the Overview tab is to provide you with high level context on who a user is. Identity Intelligence will consolidate a user's information across sources (Entra ID, Duo, Salesforce, Github, Workday, etc) where the same email address has been associated, so that you can see all the information about one identity in one view.

The Overview tab is the first tab of the User 360. You will land on this tab upon selecting a user from the [Users](/understanding-your-users/users) page.

In this article, we will describe the purpose and data of each widget of the Overview tab in detail.

<figure><img src="/files/6L6HCTSN9nhA93SMPxVw" alt=""><figcaption></figcaption></figure>

### Summary

The Summary widget displays high level context about a user that has been gathered across the different sources associated with an identity. The Summary widget is the first widget on the left hand side of the Overview tab. It is immediately below the user's display name and email.

<figure><img src="/files/CFRXmbwlqthQmCl6hmBv" alt="" width="397"><figcaption></figcaption></figure>

Hovering over any icon in the Summary widget will display a tooltip indicating the information being shown alongside the respective icon. Below are the elements visible in the Summary widget, and the corresponding definitions:

<table><thead><tr><th width="173">Element</th><th>Definition</th></tr></thead><tbody><tr><td>User Type</td><td><p>Combines IdP Status, Identity Intelligence Status, and HRIS status if available, to provide more context on this user's current state</p><p><br>To learn more about this status, check out <a href="/pages/BpLbHPpgE68GpsgKAL5U">User Statuses</a></p></td></tr><tr><td>Title</td><td><p>The user's current job title</p><p><br>This information must be available in the IdP or HRIS for this field to populate. If it is not available, it will show as N/A</p></td></tr><tr><td>Department</td><td><p>The department the user belongs to</p><p><br>This information must be available in the IdP or HRIS for this field to populate. If it is not available, it will show as N/A</p></td></tr><tr><td>Organization</td><td><p>The organization the user belongs to</p><p><br>This information must be available in the IdP or HRIS for this field to populate. If it is not available, it will show as N/A</p></td></tr><tr><td>Registered Location</td><td><p>The user's registered working location</p><p><br>This information must be available in the IdP or HRIS for this field to populate. If it is not available, it will show as N/A</p></td></tr><tr><td>MFA Status</td><td><p>Whether this user has any forms of MFA configured on an account</p><p><br>If yes = MFA Configured<br>If no = MFA Missing</p></td></tr><tr><td>Last Successful Login</td><td>The last <em>successful</em> login date, time (UTC), and days elapsed, recorded for this user</td></tr><tr><td>User Manager</td><td><p>The user's manager's name</p><p><br>This information must be available in the IdP or HRIS for this field to populate. If it is not available, it will show as N/A</p><p>This field can be updated directly in Identity Intelligence using the pencil icon; however, updating this field will not modify any data within the IdP. It will only change how the information is presented within Identity Intelligence. This action can always be undo later on</p></td></tr><tr><td>Lifecycle Events</td><td><p>Highlights recent, notable events that have occurred on this user's account that can be beneficial to know about during an investigation. Lifecycle events are displayed here for 7 days after the event is noted, though this value can be customized <a href="/pages/QaZ4GRyZBXmOfjC9KFnI#lifecycle-events">via Tenant Settings</a> if needed<br><br><strong>New Account</strong> badge - indicates that this account was recently created. Includes the date the account was created<br><strong>Significant Change</strong> badge - indicates that an uncommon, but important, activity has recently happened on this account (for ex: MFA factor added, admin privileges granted, sensitive app assigned, etc). Describes the event type(s) and the date(s) associated with the event</p><p><br>If this field is not visible, it means there have been no recent lifecycle events associated with this user in the last 7 days</p></td></tr></tbody></table>

### User Trust Level

The User Trust Level provides an overview of the user's current Trust Level. This widget shows what the user's current trust level is, as well as what factors contributed to the user's particular Trust Level. The User Trust Level widget is the first widget in the middle of the Overview tab, immediately below the tab names.\
From this widget, you can dive deeper into the user's events to investigate the details of a unique event or the events that happened in the 48 hours before and after the user's Trust Level changed.

More detailed information about this widget and the User Trust Level can be found in the [User Trust Level docs](/user-trust-level).

<figure><img src="/files/zFK9laoaw44383hMIT9I" alt=""><figcaption></figcaption></figure>

### **Last Login Attempt**

The last log in attempt widget shows you information about the last log in attempt recorded for this user, *regardless of result.* The Last Login Attempt widget is on the left hand side of the Overview tab, directly below the Summary widget.

It will surface:

* Last log in attempt result - ex. success, failure, challenge, etc
* If there is a failure, it will also include the reason for the failure - ex. invalid credentials, etc
* Date and time of last attempt (in UTC)
* Location of last attempt
* IP Address of last attempt

Selecting the **View more data** button at the bottom of this widget will take you to the [Activity](/understanding-your-users/user-360/activity-tab) Tab, filtered by the event associated with the last log in attempt.

<figure><img src="/files/eqpqRl6dMHxdRufGpFI6" alt=""><figcaption></figcaption></figure>

### Login Attempt visualizations

Both Login Attempt visualizations can be found directly beneath the Failed Checks widget.

**Attempted Logins**

A pie chart breaking down the login attempts by result (success, failure, etc) for the user. This visualization is based on the user's history since the user has been monitored by Identity Intelligence (ie: all time)

To export this visualization to a PNG, SVG, or get the raw data in a CSV, select the 3-line button in the top right corner of the widget.

**Records per day**

A bar graph visualization breaking down the login attempts per day by result. By default, this timeline visualization looks across 30 days of activity. However, to see the same data over a smaller or larger timeframe, you can press the **+** or **-** buttons in the top right.

If the user is **Inactive,** this widget will still be visible but blank with a message stating "No records found".

To export this visualization to a PNG, SVG, or get the raw data in a CSV, select the 3-line button in the top right corner of the widget.

### Source Cards

Because Identity Intelligence merges accounts across data sources based on email address into one user record, it is common for one user record to have accounts across multiple data sources. The Source Cards help you see the data sources where this user has an account that exists, and the different information coming from each source. On the left hand side of the Overview tab, there will be a source card for each data source that contains an account for the given user. Active source cards are always visible, while deleted or deprovisioned sources for a user are collapsed together and can be expanded for more information.\
\
The information in each source card will vary depending on the data source itself, as well as what information is available for a given user in the data source. For example, if Okta is your IdP and the fields for a specific user's registered location, job title, manager, etc, have not been populated for this user, those fields will not be displayed. You may see this information on another user in your environment, however, if those fields were filled out for that user in Okta.

All of the information in the source cards is coming directly from the source itself, except for the field called **Identity Intelligence Type**. The Identity Intelligence Type is assigned by Identity Intelligence based on a variety of different factors, such as IdP type, job title, department, etc.

<figure><img src="/files/29C1J8CMJn3wyRM5oVKG" alt="" width="375"><figcaption></figcaption></figure>

### Activity Flow visualization

The Activity Flow widget provides a visual representation of a user’s activities including locations visited, applications accessed, and related events, so that you can quickly identify anomalies and investigate specific user activities more effectively. The Activity Flow visualization widget can be found directly below the Login Attempt Visualizations.

The activity flow widget defaults to showing the user's activity over a 30 day window. This can be customized using the date picker in the top right corner of the widget.\
If you would like to full screen the flow, press the **Expand** icon in the bottom left corner of the widget. To save a PNG of the flow, select on the **Camera** icon in the bottom left corner of the widget, next to the Expand icon.

Selecting any of the colored bars within the visualization will take you to the user's [Activity](/understanding-your-users/user-360/activity-tab) tab, pre-filtered on all events associated with your selection.

If the user is **Inactive,** this widget will still be visible but blank with a message stating "No records found".

<figure><img src="/files/GtHviab93chW9IUlt4SF" alt="" width="563"><figcaption></figcaption></figure>

### Authentication Factors

The Authentication Factors widget displays all the authentication factors associated with a particular user, across all sources associated with that user. The Authentication Factors widget is below the Activity Flow visualization. However, if there is no MFA configured on a user's account, this widget will not be visible.

Read our [MFA Factors FAQ](/how-to-guides/mfa-factors-faq) for more information

<figure><img src="/files/W6qnE9ZflH00iP4Aa3Xv" alt="" width="563"><figcaption></figcaption></figure>

All columns in this widget, except Factor, can also be sorted by ascending or descending values, by selecting the arrows next to each column header.

By default, the Authentication Factors widget contains the following information:

<table><thead><tr><th width="210">Element</th><th>Definition</th></tr></thead><tbody><tr><td>Factor</td><td><ul><li>Factor type (ie: Password, SMS, Push, etc)</li><li>Source associated with the factor</li><li>Factor ID<br></li></ul><p>If the factor is new or weak, a tag indicator will be displayed next to the Factor Type</p></td></tr><tr><td>Assurance Level</td><td>Assigned by Identity Intelligence to make it easier to identify the posture of a specific factor. <a href="/pages/is3VKEd1j8PhlpZ8dAAs">Read more about factor assurance levels in our MFA FAQ doc</a><br><br>Possible values: High, Medium, Low, Unknown</td></tr><tr><td>Status</td><td><p>The enrollment status of a given factor. Note: not all statuses are available with all data sources</p><p><strong>Active</strong> - Factor is enabled and can be utilized</p><p><strong>Disabled -</strong> Factor was reset or disabled and cannot be utilized<br><strong>Pending</strong> - Factor configuration process was started but not completed (ex: MFA Application is on device, but was not enabled for MFA)</p></td></tr><tr><td># Changes</td><td>The number of changes that have been made to the factor</td></tr><tr><td>Usage Count</td><td>The number of times the factor has been utilized by the user</td></tr><tr><td>Device</td><td>The name of the device associated with the factor</td></tr><tr><td>Phone Number</td><td>The phone number associated with the factor, if relevant</td></tr><tr><td>Last Used (UTC)</td><td>The date and time the factor was last used successfully</td></tr></tbody></table>

Similar to the Users Table, columns can be added or removed from this table by selecting the **Columns** button on the upper right of the table. Factor Type and usage count cannot be removed. To restore the default, select **Restore Default** after selecting the **Columns** button.

The columns that are **not** included by default are:

<table><thead><tr><th width="194">Element</th><th>Definition</th></tr></thead><tbody><tr><td>Last Updated (UTC)</td><td><p>The date and time of the factor was last changed</p><p>To see more details about changes to a factor, press the down arrow on the left of Factor to expand the details and see last updated date, created date, and any factor change information.</p></td></tr><tr><td>Created (UTC)</td><td>The date and time that the factor was set up</td></tr></tbody></table>

### Groups and Application information

These four widgets, below the Authentication Factors table, show a quick snapshot of groups and application usage for a user.

<figure><img src="/files/SgOZv6vOYrPpB6Uya85P" alt="" width="563"><figcaption></figcaption></figure>

**Groups**

Total number of groups this user is part of.

To see more details about a user's groups, select the **View All** button to navigate to the [**Groups**](/understanding-your-users/user-360/applications-and-groups-tabs)[ ](/understanding-your-users/user-360/applications-and-groups-tabs)tab or navigate to the Groups tab directly yourself.

**Applications Allowed**

Total number of applications assigned to this user.

To see more details about a user's applications, select the **View All Applications** button to navigate to the [**Applications**](/understanding-your-users/user-360/applications-and-groups-tabs) tab or navigate to the Applications tab directly yourself.

**Unused Applications**

Total number of applications assigned, but not in use, for this user.

To see more details about a user's applications, select the **View All Applications** button to navigate to the [**Applications**](/understanding-your-users/user-360/applications-and-groups-tabs) tab or navigate to the Applications tab directly yourself.

**Most frequently used applications**

This bar graph visualization shows you the Top 10 most frequently used applications for a user, along with the usage count for each application. If the user is **Inactive,** this widget will still be visible but blank with a message stating "No records found".\
\
Selecting one of the bars in this visualization will bring you to the [Activity](/understanding-your-users/user-360/activity-tab)[ ](/understanding-your-users/user-360/activity-tab)tab, pre-filtered on all events associated with the selected application.\
\
To export this visualization to a PNG, SVG, or get the raw data in a CSV, use the 3-line button in the top right corner of the widget.

### Tickets

If you have a [ticketing service integration](/integrations) set up, you can open tickets for a user directly via the [**Actions**](/understanding-your-users/remediation-actions) button in Identity Intelligence. Once you have opened a ticket for a user, a table will populate in this widget, which is below the Group and Application widgets. If there are no tickets associated with a use&#x72;**,** this widget will still be visible but blank with a message stating "No records found".

<mark style="color:red;">**Note**</mark>: If you do not have a ticketing service integration set up, you will not see this widget.

Below is a table with the different fields visible in the table:

<table><thead><tr><th width="228">Element</th><th>Definition</th></tr></thead><tbody><tr><td>Name</td><td>User's name + name given to a ticket when it was opened<br>ex. John Smith: Ticket Test</td></tr><tr><td>State</td><td>Ticket's state as set in the Ticketing System</td></tr><tr><td>Priority</td><td>Ticket's priority as set in the Ticketing System</td></tr><tr><td>Urgency</td><td>Ticket's urgency as set in the Ticketing System</td></tr><tr><td>Ticket Opened (UTC)</td><td>The date and time the ticket was created</td></tr><tr><td>Last Updated (UTC)</td><td>The date and time the ticket was most recently updated</td></tr></tbody></table>

### Linked Users

Sometimes a user might have more than one account in your system, under different email addresses. We recommend linking these accounts for hygiene purposes. To learn more about the importance of linking users, how to add/remove linkages or filter on linked users, [read more here](/understanding-your-users/linking-user-accounts).

Below the Tickets widget, is the Linked Users widget, which will show you all the linked users associated with a user. If there are no linked users associated with a use&#x72;**,** this widget will still be visible but blank with a message stating "No records found" and a button to add linked users.

<figure><img src="/files/X0IuJSN5O6cg1gwv5q0P" alt=""><figcaption></figcaption></figure>

Once you have linked a user to another user, a table will populate with information on the current user, and all associated linked users. The following fields are available in the table for each linked user:

<table><thead><tr><th width="185">Element</th><th>Definition</th></tr></thead><tbody><tr><td>User</td><td><p>User's display name and user's email address</p><p>The first user in the table is always the user who's User 360 you are currently on</p></td></tr><tr><td>Status</td><td>The user's<a href="/pages/BpLbHPpgE68GpsgKAL5U"> Identity Intelligence Status</a> and lifecycle events, if present</td></tr><tr><td>Identity Intelligence Type</td><td>The Identity Intelligence user type assigned based on compiled identity data source user types</td></tr><tr><td>Last Seen (UTC)</td><td>Last login attempt for a user, regardless of result</td></tr><tr><td>Last Location</td><td>Last login attempt location for a user, regardless of result</td></tr><tr><td>MFA Configured</td><td><img src="/files/sPmuy5coWR7XJlqJdDwr" alt=""> = MFA Configured<br><img src="/files/gOInvG6QEZGa25RqDi70" alt=""> = MFA Not Configured</td></tr><tr><td>Providers</td><td>Logo icon for each source associated where the user's email was associated<br><br>Hovering over a logo displays the name given to each source during the Integration setup (link to integrations)</td></tr></tbody></table>


# Activity Tab

### Overview

The Activity tab's purpose is to show a detailed view of all activities, across all sources, associated with a given identity over time in one view. Without having to jump across different tools and platforms to piece together bits of a user's activity, the Activity tab can save you time and is incredibly valuable when investigating a user.

The Activity tab is the second tab of the User 360. This article will describe the different information and functionality available on the Activity tab in detail.

<figure><img src="/files/Ojof82TcwhwwyTbws9fX" alt=""><figcaption></figcaption></figure>

### Activity table elements

The Activity table contains all the detailed event information for a particular user. Above the column headers on the left, you can see the total number of events for the selected timeframe, and on the right, the last data collection timestamp for each source, if you hover over "Last data collection".

The section below details the fields that appear in the table by default, as well as the definition of each field:

<table><thead><tr><th width="170">Element</th><th>Definition</th></tr></thead><tbody><tr><td>Date (UTC)</td><td>The date and time the event/action happened</td></tr><tr><td>Source</td><td>The identity source associated with the event/action</td></tr><tr><td>Event</td><td>What the event/action taken by the user was</td></tr><tr><td>Initiator</td><td>Who initiated the event/action and a session ID for the event, if available</td></tr><tr><td>Target</td><td>What the target of the event/action taken by the user was</td></tr><tr><td>Result</td><td>The result of the event/action taken by the user</td></tr><tr><td>Geo IP</td><td>The IP address and respective location for the associated event/action</td></tr><tr><td>Tags</td><td>Tags associated with the event and/or the IP address<br><br>Hover over each tag to see a tooltip with the source of the tag (ex: Okta: Password Spray, IP info: Hosting, etc). If no source, it is an Identity Intelligence tag (ex: New ISP)</td></tr><tr><td>OS</td><td><p>The operating system associated with an event/action<br></p><p>Hover over the icon in this column to see a tooltip with the OS name</p></td></tr><tr><td>Browser</td><td><p>The browser associated with an event/action</p><p>Hover over the icon in this column to see a tooltip with the browser name</p></td></tr><tr><td>Device Type</td><td>The device type associated with an event/action</td></tr></tbody></table>

### Diving deeper into an event

To see more information on an event in the Activity table, select any blank space in the row related to the specific event you'd like to dig into.

<figure><img src="/files/gW0j3ZPS7cJ7xgyBZgOk" alt=""><figcaption></figcaption></figure>

This will open a slide panel from the right side of the page, that has 2 tabs - Event Attributes and Raw data. The event attributes themselves and raw data will vary depending on the relevant information for the event/action you are looking at.

* Event attributes shows you more detailed information on the attributes related to the event
* Raw data shows you the raw data for a given event

To close the slide panel, select the **X** in the top right corner, or select anywhere outside of slide panel.

<figure><img src="/files/QrStScUm4XonO84TY2JT" alt=""><figcaption><p>Events Attributes Tab</p></figcaption></figure>

<figure><img src="/files/qzcZHQtSxwuaXY1WnbFA" alt=""><figcaption><p>Raw Data Tab</p></figcaption></figure>

### Activity Tab general actions

This section describes the high level actions you can perform on the Activity tab. Navigate through the tabs below to learn more about how to utilize each feature.

{% tabs %}
{% tab title="Search" %}

#### **Search issues**

Use the search bar above the Activity table to search based on various items such as a specific IP address, session ID, application name, source, location, etc. When searching, you do not need to provide an exact value. Typing part of a word will return relevant results.

If you have searched on a particular parameter, the search criteria is retained as you navigate between different tabs within the platform.

To clear the search bar select the **X** on the right most side of the search bar, next to the **Advanced** button.
{% endtab %}

{% tab title="Adjust timeframe" %}

#### Adjust timeframe

By default, the Activity tab is filtered to show all events over the last 30 days. If you would like to see a larger or smaller window, you can customize your view with the date selector, which can be found directly to the right of the search bar.

Press anywhere in the box to open a dropdown where you can select from preset timeframes (ex: Last 4 hours, Last day, Last 7 days, etc), a custom period, or 'View All', based on your needs.

<figure><img src="/files/sWBUk1mEfbX9rPzZ3uql" alt="" width="563"><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Download results" %}
**Download results**

You can download tabular data from the table to a CSV using the **Download** icon button on the right after the timeframe filter. All filters applied are included in the CSV output. If there are no results in the table, the CSV export will contain only headers and no user data.\
\
Note: The CSV output has a limit of 2,000 rows.

<figure><img src="/files/bFnv1DzwxR4k3c3G5uUo" alt="" width="77"><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

### Timeline visualization

The Activity tab has a timeline widget which displays a given user's total number of events per day, color coded by result type (ie: success, failure, challenge, etc). Hovering over a segment of the bar will display a tooltip with the date, the result, and the count of events for that result.\
\
By default, the view is set for 30 days but this can be adjusted to see a wider or smaller window of time using the **+** and **-** buttons in the top right corner of the timeline widget.

To export this visualization, press on the 3-line button in the top right corner of the widget. Downloading as a SVG or PNG will export an image, whereas downloading as a CSV will export the raw data for you in CSV format.

<figure><img src="/files/uScaoM3mKwJH6UYFAqIV" alt=""><figcaption></figcaption></figure>

If you would like to hide this widget to get more space for the Activity table, press the **Graph** icon button next to the timeframe filter. To get the widget back, press the **Graph** icon button again.

### Filters

Like the Users table, the Activity table is filterable by multiple attributes, enabling you to slice and dice the activity based on the parameters that are important to you.

There are several ways to filter the results of the Activity table - [basic filters](#basic-filters), [directly from attributes](#filtering-via-event-attributes) in the table or slide panel, and [Advanced Query mode](/understanding-your-users/users/advanced-query-mode), which can be enabled via the search bar above the Activity table. [Read more about how to use Advanced Query Mode](/understanding-your-users/users/advanced-query-mode).

#### **Basic filters**

To access the basic filters, select the **Filter** button that is to the left of the search bar, above the Activity table. This will open a slide panel from the left side of the page with the available filters.

<figure><img src="/files/so4MKU9pAtsGh54fTrhh" alt=""><figcaption></figcaption></figure>

The filter categories available via the slide panel are **Result** and **Event**. You can enable a filter by selecting the check box for the attribute you would like to filter by. The applied filters will be added to the search bar. The number of events that you are currently viewing, based on any filters and searches used, will appear in the top left corner of the Activity table, above the column headers.

{% hint style="info" %}
Filter attributes will vary user to user based on the results and events available for a particular user
{% endhint %}

<figure><img src="/files/yzhrQThr29IcCSKDJtlo" alt=""><figcaption></figcaption></figure>

Like on the Users tab, you can also **select all** attributes or **exclude** an attribute. To select all values within a given filter, hover over a filter value and select `All`. To exclude a value from filtered results (ie: NOT), you can select the 🚫 icon in either the filter box in the search bar or the left hand filter menu.\
\
To remove a filter, you can either deselect a filter attribute from the filters list on left hand side of the Activity table, or select the **X** on the right hand side of the filter box that is in the search bar. To remove all filters, select the **X** located next to the **Advanced** Filter button in the search bar.

Once you have chosen your filters, the filters are retained as you navigate between different tabs within the platform.

#### **Filtering via event attributes**

Another way to filter in the Activity table is by selecting an event attribute in the table or in the slide panel, which will add it to the search bar as a filter. The elements that can be filtered on via the table elements are:

* Source
* Event
* Session ID (in Initiator column if present)
* Target application (in Target column if relevant)
* Result
* OS and Browser (only works on icons, not free text)

Additionally, if you open the slide panel and select any of the attributes in the Event Attribute tab, the attribute will be added as a filter.

<figure><img src="/files/qc4IraDJqRDOVbedup7N" alt=""><figcaption></figcaption></figure>

### **Pivot on IP address**

The IP address in the table or in the slide panel has a few actions associated with it that can be useful to learn more about an IP address and the associated activity.

The actions menu will pop up when left-clicking on a specific IP address in the Activity table. The actions are:

* **Find user activity -** Adds the selected IP address as a filter on the given user's Activity tab so you can see all the user's activity associated with this particular IP address
* **Find users who attempted to sign in from X.X.X.X -** Adds the selected IP address as a search parameter on the [Users](/understanding-your-users/users) page so you can see any other users who have activity associated with this particular IP address
* **See IP info -** Add the selected IP address as a filter on the given user's Networks tab and opens the slide panel so you can see more detailed information about that IP address
* **Copy to clipboard -** Copies the IP address to your clipboard so that you can paste it within Identity Intelligence or another tool

<figure><img src="/files/N43havDSFBuaD76AbKV2" alt=""><figcaption></figcaption></figure>


# Networks Tab

### Overview

Within the User 360 profile, the **Networks** tab provides context on IP addresses associated with each user. When you’re responding to an incident or trying to get to the bottom of some anomalous activity, this context is critical.

The Networks tab is the third tab of the User 360. This article and video below on [#using-the-networks-tab](#using-the-networks-tab "mention") provides information on the different data available on the Networks tab and instructions on how to obtain the most value from this feature within Identity Intelligence.

<figure><img src="/files/dRsFrprW135Nad5eo14j" alt=""><figcaption></figcaption></figure>

### Networks table elements

The Networks table contains all the detailed event information for a particular network. Above the column headers on the left, you can see the total number of IP addresses associated with a user for the selected timeframe.

The section below details the fields that appear in the table, as well as the definition of each field:

<table><thead><tr><th width="207">Element</th><th>Definition</th></tr></thead><tbody><tr><td>IP Address</td><td>The IP address<br><br>Left-click on an IP address to <a href="#pivot-on-ip-address">perform additional actions</a> related to this IP address</td></tr><tr><td>Last Access (UTC)</td><td>The date and time the IP address was last seen</td></tr><tr><td>Hit Count</td><td>The number of events associated with this user and the IP address, regardless of result</td></tr><tr><td>Successful Events</td><td>The number of successful events associated with this user and the IP address</td></tr><tr><td>Failed Events</td><td>The number of failed events associated with this user and the IP address</td></tr><tr><td>Other Events</td><td>The number of other events (neither success nor failure) associated with this user and the IP address<br><br>Hover over the number to see the sum of events for each result type</td></tr><tr><td>Tags</td><td>Tags associated with the IP Address<br><br>Hover over each tag to see a tooltip with the source of the tag (ex: IP info: Hosting, etc). If no source, it is an Identity Intelligence tag (ex: New ISP)</td></tr><tr><td>Location</td><td>The location associated with the IP Address</td></tr><tr><td>Carrier</td><td>The carrier associated with the IP Address</td></tr><tr><td>Source</td><td><p>The identity sources associated with any activity from the IP Address</p><p><br>Hover over the icon in this column to see a tooltip with the integration name</p></td></tr><tr><td>Same IP Users</td><td>The number of users in your environment associated with the IP Address</td></tr></tbody></table>

### Diving deeper into an IP Address

Like in the Activity table, select the blank space in a given row will show you more information on a particular IP address.

<figure><img src="/files/ybMvLJQZ8KvtR1X33Ufw" alt=""><figcaption></figcaption></figure>

This will open a slide panel from the right side of the page, that has 2 tabs - IP Data and IP Activity.

* IP Data shows you IP address data summary (including ASN details)
* IP Activity shows you the user's associated activity types (types, activity counts, results) and which applications were accessed (app names, hit counts, results) for the selected IP address

To close the slide panel, select the **X** in the top right corner, or select anywhere outside of slide panel.

<figure><img src="/files/J1jLub2K0WvhM8vlDXqS" alt=""><figcaption></figcaption></figure>

### Networks Tab general actions

The Networks table offers multiple high level features that are similar to what can be found elsewhere in the platform. Navigate through the tabs below to learn more about how to utilize each feature.

{% tabs %}
{% tab title="Search IP Addresses" %}

#### **Search IP Addresses**

Use the search bar above the Networks table to search based on various items such as a specific IP address, activity types, applications, ASN and location. When searching, you do not need to provide an exact value. Typing a piece of the word will return results.\
\
If you have searched on a particular parameter, the search criteria is retained as you navigate between different tabs within the platform.

To clear the search bar, press the **X** on the right most side of the search bar.
{% endtab %}

{% tab title="Adjust timeframe" %}

#### Adjust timeframe

By default, the Networks tab is filtered to show all events over the last 30 days. If you would like to see a larger or smaller window, you can customize your view with the date selector, which can be found directly to the right of the search bar.

<figure><img src="/files/w8CbdDEujep9eQzTrWD4" alt=""><figcaption></figcaption></figure>

Press anywhere in the box to open a dropdown where you can select from preset timeframes (ex: Last 4 hours, Last day, Last 7 days, etc), a custom period, or 'View All', based on your needs.
{% endtab %}

{% tab title="Sort columns" %}

#### Sorting columns

By default, the Networks tab is sorted in descending order (highest to lowest) on Hit Count. To sort by a specific column value, select the arrow next to the column header to switch between ascending and descending order.\
If there is no arrow available, it means this column cannot be sorted.
{% endtab %}

{% tab title="Download results" %}
**Download results**

You can download tabular data from the table to a CSV using the **Download** icon button on the right after the timeframe filter.\
Note: The CSV output has a limit of 2,000 rows

<figure><img src="/files/bFnv1DzwxR4k3c3G5uUo" alt="" width="77"><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

### Geolocation visualization

The Networks tab has a geolocation widget, which is collapsed by default, that displays a given user's IP Address location history on a map for easy scanning.\
\
Hovering over a specific dot will pop up information on the total number of unique IP address activities associated with this area, as well as a cumulative hit count.

Selecting a specific dot will take you to the [Activity](/understanding-your-users/user-360/activity-tab) tab, pre-filtered on the IP Addresses associated with the chosen location.

<figure><img src="/files/cvR4rNZaX38NOjxif7A0" alt="" width="563"><figcaption></figcaption></figure>

If you would like to open this widget, press the **Map** icon button next to the timeframe filter. To remove the widget, press the **Map** icon button again.

### Pivot on IP Address

A key feature of the Networks tab is the ability to drill down into the detailed activity for the current user OR search for traffic from that IP for ***other users.***\
\
The actions menu will pop up when left-clicking on a specific IP address in the Networks table. The actions are:

* **Find user activity -** Adds the selected IP address as a filter on the given user's [Activity](/understanding-your-users/user-360/activity-tab) tab so you can see all the user's activity associated with this particular IP address
* **Find users who attempted to sign in from X.X.X.X -** Adds the selected IP address as a search parameter on the [Users](/understanding-your-users/users) page so you can see any other users who have activity associated with this particular IP address
  * <mark style="color:orange;">**Note:**</mark> the Same IP Users column on the far right of the Networks tab will indicate if the tenant has other users with IP traffic from this IP address
* **See IP info -** Add the selected IP address as a filter on the given user's Networks tab and opens the slide panel so you can see more detailed information about that IP address
* **Copy to clipboard -** Copies the IP address to your clipboard so that you can paste it within Identity Intelligence or another tool

The ability to pivot on an IP Address is available virtually everywhere that an IP address is visible throughout Identity Intelligence, such as the [Activity](/understanding-your-users/user-360/activity-tab) tab, [Users](/understanding-your-users/users) page, [Check](/understanding-your-users/user-360/checks-tab) explainability, etc, and can be accessed with a left-click on an IP address.

<figure><img src="/files/3caQ0nTneViBsnvIPSxm" alt=""><figcaption></figcaption></figure>

## Using the Networks Tab

The following video provides valuable information on common use cases for the Networks tab

{% embed url="<https://youtu.be/3Lai9OCaZB8>" %}


# Devices Tab

### Overview

Within the User 360 profile, the **Devices** tab provides context on authentication and/or access devices associated with each user. Similar to the [Networks](/understanding-your-users/user-360/networks-tab) tab, the Devices tab can be useful context on a user, or the person impersonating a user, during an incident or investigation into anomalous activity. Additionally, it is a great way to see information into devices that are no longer in use and can be cleaned up.\
\
The Devices tab is the fourth tab of the User 360. This article will detail the different information and functionality available on the Devices tab.

The User 360 Devices tab is different than the **Devices** entity page. Refer to our [Devices](/devices) page documentation to learn more about that page or how you can leverage it see if a particular device has been associated with or used by any other end users in the organization.

<figure><img src="/files/amlsc3ZlwXwP7FnDzNSO" alt=""><figcaption></figcaption></figure>

### Devices table elements

The Devices table contains detailed information for 3 different device types:

* Access and Authentication Devices
* Access devices
* Authentication devices

Individual devices are grouped by Device type in the table. If there are no devices of a particular type associated with a given user, that device type will not appear in the table.

Above the column headers on the left, you can see the total number of devices associated with a given user.

The section below details the fields that appear in the table, as well as the definition of each field:

<table><thead><tr><th width="167">Element</th><th>Definition</th></tr></thead><tbody><tr><td>Device</td><td>The device name. If available, model and serial number are also displayed in this column under the device name</td></tr><tr><td>Source</td><td>The identity source associated with a particular device</td></tr><tr><td>OS</td><td>The operating system and version of a particular device<br><br>An exclamation mark is displayed next to the operating system to indicate it is either out of date or end of life.<br><br>A red background indicates the device's OS is end of life; a yellow background indicates it is out of date. Hover over the icon to see the device's current OS version and status</td></tr><tr><td>Managed</td><td><img src="/files/sPmuy5coWR7XJlqJdDwr" alt="">= Device is managed by organization, based on data collected from identity source<br><img src="/files/gOInvG6QEZGa25RqDi70" alt=""> = Device is not managed by organization, based on data collected from identity source</td></tr><tr><td>Registered</td><td><img src="/files/sPmuy5coWR7XJlqJdDwr" alt=""> = Device is registered, based on data collected from identity source<br><img src="/files/gOInvG6QEZGa25RqDi70" alt=""> = Device is not registered, based on data collected from identity source</td></tr><tr><td>Usage Count</td><td>The total number of times a given user has used a particular device</td></tr><tr><td>Enrolled (UTC)</td><td>The date and time that a particular device was enrolled as an authentication device</td></tr><tr><td>Last Seen (UTC)</td><td>The date and time of the last login attempt made with a particular device, regardless of outcome</td></tr><tr><td>Last Sync (UTC)</td><td>The date and time a particular device was last synced to the identity source</td></tr></tbody></table>

### Diving deeper into a Device

Like in the Activity or Networks table, clicking on the blank space in a given row will show you more information on a particular device

<figure><img src="/files/mWUXGRipFdWGGYmkBkvS" alt=""><figcaption></figcaption></figure>

This will open a slide panel from the right side of the page, that has 6 tabs:

* **Overview** shows you more detailed information and context about a particular device
* **Activity** shows the activity log for all events that originated from a particular device for a given user
* **IPs** shows detailed information for all the IP addresses associated with the activity from a particular device for a given user
* **Applications** shows detailed information for all the applications accessed from a particular device by a given user
* **Factors** shows detailed information on the factors associated with a particular **Authentication** device for a given user
* **Raw Data** shows the raw data for a particular device

To close the slide panel, click the in the top right corner, or click anywhere outside of slide panel.

### Devices Tab general actions

The Devices table offers multiple high level features that are similar to what can be found elsewhere in the platform. Click through the tabs below to learn more about how to utilize each feature.

{% tabs %}
{% tab title="View Activity" %}
**View Activity**

Click the 3-dot button to the right of the last column, to find the **View Activity** action. This will take you to the user's [Activity](/understanding-your-users/user-360/activity-tab) tab, pre-filtered on the Device ID, so that you can see all of the activity/events associated with a particular device for a given user.

<figure><img src="/files/qz3yzNULvvo5hlAgYdP4" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="View Networks" %}
**View Networks**

Click the 3-dot button to the right of the last column, to find the **View Networks** action. This will take you to the user's [Networks](/understanding-your-users/user-360/networks-tab) tab, pre-filtered on the Device ID, so that you can see all of the IP Addresses associated with a particular device for a given user.

<figure><img src="/files/qz3yzNULvvo5hlAgYdP4" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Find users with the same device" %}
**Find users with the same device**

Click the 3-dot button to the right of the last column, to find the **Find users with the same device** action. This will take you to the [Users](/understanding-your-users/users) page, pre-filtered on the Device ID, so that you can see any other users in your environment who are associated with a particular device.

<figure><img src="/files/qz3yzNULvvo5hlAgYdP4" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Download results" %}
**Download results**

You can download tabular data from the table to a CSV using the **Download** icon button on the right of the table, above the column headers\
\
Note: The CSV output has a limit of 2,000 rows

<figure><img src="/files/bFnv1DzwxR4k3c3G5uUo" alt="" width="77"><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}


# Applications and Groups Tabs

### Overview

The Applications and Groups tabs in the User 360 profile can show you a user's static entitlement data, providing a better understanding of what a user has access to, and how they have access to it.

The [Applications](#applications) and [Groups](#groups) tab are the fifth and sixth tabs, respectively, of the User 360. Below we'll dive into the specific data and functionality for each tab.

### Applications

On the Applications tab, you will see a table of the applications assigned to a given user, as well as a few visualizations related to the user's application usage.

<figure><img src="/files/PRejUuzUW6Y87pdde8eM" alt=""><figcaption></figcaption></figure>

#### Applications table elements

The section below details the fields that appear in the Applications table, as well as the definition of each field:

<table><thead><tr><th width="174">Element</th><th>Definition</th></tr></thead><tbody><tr><td>Name</td><td>The application name and application user ID associated with the application for the user<br><br>If an application is on your <a href="/pages/QaZ4GRyZBXmOfjC9KFnI#sensitive-applications">Sensitive Applications</a> list, there will be a 'Sensitive Applications' tag next to the application name</td></tr><tr><td>Source</td><td>The identity source associated with the application assignment</td></tr><tr><td>Status</td><td><strong>Only available for Okta</strong><br>The Okta application status</td></tr><tr><td>Assignments</td><td>The group membership that allows a user to have access to a particular application. Users can gain access to an application without a group (blank or 'directly assigned application') or via more than one group, where you'd see multiple group names in this column</td></tr><tr><td>Owners</td><td><strong>Only available for Entra</strong><br>The individual listed as the application's owner in Entra</td></tr><tr><td>Usage Count</td><td><p>The number of times a user has used a particular application</p><p><br>By default, the table is sorted on usage count in descending order (most frequently used to least frequently)</p></td></tr><tr><td>Last Access (UTC)</td><td>The last date and time the user accessed an application</td></tr><tr><td>Result</td><td>The result associated with the user's last access attempt for an application</td></tr></tbody></table>

#### Applications tab general actions

The Applications table offers multiple high level features that are similar to what can be found elsewhere in the platform. Click through the tabs below to learn more about how to utilize each feature.

{% tabs %}
{% tab title="View Activity" %}
**View Activity**

Click the 3 dot button to the right of the last column, to find the **View Activity** action. This will take you to the user's [Activity](/understanding-your-users/user-360/activity-tab) tab, pre-filtered on the application name, so that you can see all of a given user's activity/events for a particular application.

<figure><img src="/files/uieGJfvlab1KUXH7z2JU" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="View Users" %}
**View Users**

Click the 3 dot button to the right of the last column, to find the **View Users** action. This will take you to the [Users](/understanding-your-users/users) page, pre-filtered on the application name, so that you can see all the users in your environment who have this application assigned to them.
{% endtab %}

{% tab title="Sort columns" %}

#### Sort columns

All columns, except 'Assignments' and 'Owners', can be sorted in ascending or descending order on the Applications table. To sort by a specific column value, click the column header to switch between ascending and descending.\
\
By default, the Applications tab is sorted in descending order (highest to lowest) on Usage Count.

<figure><img src="/files/uieGJfvlab1KUXH7z2JU" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Add more rows to table" %}
**Add more rows**

By default, the Applications table will show 12 rows at a time. To see 24 or 48 rows in one view, click on the **Rows per page** button on the bottom right of the Applications table

If there are more than 48 applications assigned to a user, use the left and right arrows to navigate to other pages.

<figure><img src="/files/CaCrdtEhmdUoxFohpP0y" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

#### **Application usage visualizations**

The Applications tab has 3 widgets that display data about a user's application assignment and usage trends.

* **Applications usage** - Total number of applications assigned to the user, broken down by used applications and unused applications
  * Hovering over a segment of the pie chart will display a tool tip with the application count
* **Applications usage over time** - A given user's total application usage count per day, color coded by application
  * Hovering over a segment of a given bar will display a tool tip with the date, application name and usage count. By default the view is set for 30 days, but this can be adjusted to see a wider or smaller window of time using the + and - buttons in the top right corner of the widget
* **Median apps per user** - Compares the median number of applications a particular user has assigned to them versus all users in the organization, other users in their department and other users reporting to the same manager (if department and manager data is available for the given user)
  * Hovering over a bar will display the median application count per user for each category

To export any of the visualizations, click on the 3 line button in the top right corner of the desired widget. Downloading as a SVG or PNG will export an image, whereas downloading as a CSV will export the raw data for you in CSV format.

<figure><img src="/files/eywUHbaLRb8sJZ13yImI" alt="" width="177"><figcaption></figcaption></figure>

### Groups

Similar to the Applications tab, the Groups tab also shows you static entitlement data related to a given user's group assignments.

If there have not been recent changes to a user's groups, the changelog widget to the left of the Groups table will not be visible.

<figure><img src="/files/PiKtUPHJncTON0nLiBL2" alt=""><figcaption></figcaption></figure>

#### Group table elements

The section below details the fields that appear in the Groups table, as well as the definition of each field:

<table><thead><tr><th width="143">Element</th><th>Definition</th></tr></thead><tbody><tr><td>Name</td><td><p>The name of a particular group the given user is part of. If available from the source, it will also display a description of the group and the date the user was added to this group<br></p><p>Clicking on a group name will take you to the <a href="/pages/cHLnm7PFMns2XvphnQFs">Users</a> page, pre-filtered on the group name to show you other users that are part of a particular group<br>Hover over the group name or description to see a tooltip with the full details</p></td></tr><tr><td>Type</td><td>A given user's role type or group type for a specific group within the identity source<br><br>Note: Certain role (ex: <code>PIM Admin</code>) or group (ex: <code>Microsoft365</code>) types are only available for certain identity source</td></tr><tr><td>Source</td><td>The identity source associated with the group</td></tr><tr><td>Added By</td><td>The email address of the user who added a given user to the group</td></tr><tr><td>Applications</td><td>The number of applications members of the group have access to</td></tr><tr><td>Users</td><td>The total number of users assigned to the group</td></tr><tr><td>Visibility</td><td>Only compatible with Entra groups. Used to manage and control access to applications. Possible values as <a href="https://learn.microsoft.com/en-us/graph/api/resources/group?view=graph-rest-1.0&#x26;preserve-view=true#group-visibility-options">defined by Entra</a>:<br>- Public<br>- Private<br>- Hidden</td></tr><tr><td></td><td></td></tr></tbody></table>

#### Groups tab general actions

The Groups table offers multiple high level features that are similar to what can be found elsewhere in the platform. Click through the tabs below to learn more about how to utilize each feature.

{% tabs %}
{% tab title="Search" %}

#### **Search issues**

Use the search bar above the Groups table to search based on various fields such as group name, description or associated application names. When searching, you do not need to provide an exact value. Typing a piece of the word will return results.

You can also add a value from the Type or Source column as a search parameter by clicking the value in the table (ex: Role or Okta).

If you have searched on a particular parameter, the search criteria is retained as you navigate between different tabs within the platform.

To clear the search bar click the **X** on the right most side of the search bar.
{% endtab %}

{% tab title="Sort columns" %}

#### Sort columns

All columns, except 'Added by' and 'Applications', can be sorted in ascending or descending order on the Groups table. To sort by a specific column value, click the column header to switch between ascending and descending.\
\
By default, the Groups tab is sorted in descending order (A-Z) on Name.
{% endtab %}

{% tab title="See more Group data" %}
**See more Group data**

Like in the [Activity](/understanding-your-users/user-360/activity-tab) and [Networks](/understanding-your-users/user-360/networks-tab) table, clicking on the blank space in a given row will show you more information on a particular group.

<figure><img src="/files/LJpiGFueMnSqzqqdbyuD" alt=""><figcaption></figcaption></figure>

This will open a slide panel from the right side of the page, that has 2 tabs - Applications and Changelog

* Applications shows you the names of the applications associated with a given group
  * Clicking on **View Activity** for a particular application will take you to the user's [Activity](/understanding-your-users/user-360/activity-tab) tab, pre-filtered on events associated with the selected application
  * Clicking on the **Application** name will take you to the [Users](/understanding-your-users/users) page, pre-filtered on the Application name so you can see all other users who have been assigned the selected application
* Changelog shows you changes associated with a given group, including the name of the group, the user who made the change, the date and time of the change, and what the change was (added, removed, etc). The same information can be found in the Changelog widget to the left of the table if there has been any activity for the give user
  * Clicking on a **Group** name in either the slide panel or the Changelog widget will take you to the [Users](/understanding-your-users/users) page, pre-filtered on the Group name so you can see other users associated with the selected group

To close the slide panel, click the in the top right corner, or click anywhere outside of slide panel.
{% endtab %}
{% endtabs %}

#### Group visualizations

The Groups tab has 2 widgets that display data about a user's group assignments and group changes.

* **Group changes over time** - A given user's total number of group changes per day, color coded by change type (added or removed)
  * Hovering over a segment of a given bar will display a tool tip with the date, change type, and event count. By default the view is set for 30 days, but this can be adjusted to see a wider or smaller window of time using the + and - buttons in the top right corner of the widget
* **Median Groups per user** - Compares the median number of groups a particular user is assigned to them versus all users in the organization, other users in their department and other users reporting to the same manager (if department and manager data is available for the given user)
  * Hovering over a bar will display the median number of groups per user for each category

To export any of the visualizations, click on the 3 line button in the top right corner of the desired widget. Downloading as a SVG or PNG will export an image, whereas downloading as a CSV will export the raw data for you in CSV format.

<figure><img src="/files/eywUHbaLRb8sJZ13yImI" alt="" width="177"><figcaption></figcaption></figure>


# Checks Tab

### Overview

The Checks tab in the User 360 shows a detailed view of all of a user's current check failures/observations, the reasons a user has failed a particular check, and other information related to the user's check history. Understanding the various checks a user is failing at once, or in close succession, can make it more obvious to identify an active attack or possible compromise on a given user's account.\
\
The Checks tab is the last tab of the User 360. You can also see the number of checks a given user is currently failing next to the tab name. In this article, we will go through the data and functionality available on the Checks tab including:

* [Different types of Checks](#different-types-of-checks)
* [The elements in the Failing Checks table and Resolved checks table](#checks-table-elements)
* [How to access a check failure's explainability](#diving-deeper-into-a-check-failure)
* [How to triage a check failure](#how-to-triage-checks)

{% hint style="info" %}
The Checks tab is not visible if a given user is **not** part of the protected population.
{% endhint %}

<figure><img src="/files/SuUHqfoLg8qoWdnSeP7F" alt=""><figcaption></figcaption></figure>

### Different Types of Checks

When looking at the available checks in the platform, you may notice that some checks are marked as Identity **Posture** Insight checks, while others are marked as Identity **Threat** Insight checks. Behind the scenes, Identity Intelligence also categorizes checks as either **state based** or **event based** to retain and display a user's check history.

State based checks and event based checks have different [triaging](#how-to-triage-checks) capabilities, but also slightly different interaction experiences within the Checks tab of the User 360 because event based checks store **Observations**, or a history of check failures for a specific check for a given user.

To learn more about the different types of checks within Identity Intelligence in general, refer to our [Understanding Check failures ](/understanding-check-failures)documentation. More information about the Observations UI and functionality specifically within the User 360 Checks tab can be found below throughout this article.

### Checks table elements

On the Checks tab, there are 2 different tables - the first table displays the checks that a given user is currently failing. The second table shows the given user's resolved checks, which are checks that the user is no longer failing. If the user does not have any resolved checks you will only see the Failing Checks table. If the user is not currently failing any checks, you will only see the Resolved Checks table.

Below, we will explain the fields that appear in each table, as well as the definition of each field.

### **Failing Checks**

<table><thead><tr><th width="201">Element</th><th>Definition</th></tr></thead><tbody><tr><td>Name</td><td>The name of the failed check</td></tr><tr><td>Result</td><td>Failed check status. Always listed as <code>Failure</code></td></tr><tr><td>Times Excluded</td><td>The total number of times a given user has been excluded from a particular check</td></tr><tr><td>First Reported (UTC)</td><td>The date and time of the first failed observation for a particular check for a given user</td></tr><tr><td>Last Reported (UTC)</td><td>The most recent date and time of a failed observation for a particular check for a given user</td></tr><tr><td>User/Manager Notified</td><td>The number of times a given user or their manager has been notified about a particular check failure, and an icon representing the method used to notify (Email, Slack, Teams, etc)<br><br>If a notification target is <em>not</em> set for a particular check, a message prompting you to configure the notification is shown in this column<br><br><strong>Note</strong>: Only some checks support notifying end users or managers. For checks that <strong>do not</strong> support notifying end users or managers, this column will say 'Not Supported'. If notifications are supported, but have not been sent to end users or managers, the column will say 'Not Notified'</td></tr><tr><td>Admin Notified</td><td>The number of times an admin has been notified about a given user failing a particular check, and an icon representing the method used to notify<br><br>If a notification target is <em>not</em> set for a particular check, a message prompting you to configure the notification is shown in this column</td></tr></tbody></table>

#### Failing Check Observations

If there has been more than one observation for a check failure, the row can be expanded using the arrow to the left of the check name, so that you can see the history of observations.

Up to 5 observations will be displayed by default, but you can click the 'See More' button under the last observation to see additional events if they exist. Observations are displayed in order from newest (top) to oldest (bottom).

<figure><img src="/files/dUohl5tCjALQS8ICy3Jo" alt=""><figcaption></figcaption></figure>

The fields available for observations are:

<table><thead><tr><th width="195">Element</th><th>Definition</th></tr></thead><tbody><tr><td>Observed At</td><td>The date and time a given observation was recorded</td></tr><tr><td>Source</td><td>The identity source associated with a given failing observation</td></tr><tr><td>Feedback provided</td><td>The user who provided feedback on a given observation, if applicable. If there has been no feedback, the value is N/A.</td></tr><tr><td>Feedback date</td><td>The day and time a user provided feedback on a given observation, if applicable. If there has been no feedback, the value is N/A.</td></tr></tbody></table>

### **Resolved Checks**

The fields available in the Resolved Checks table are:

<table><thead><tr><th width="207">Element</th><th>Definition</th></tr></thead><tbody><tr><td>Name</td><td>The name of the resolved check</td></tr><tr><td>Result</td><td>Resolved check status<br><code>Expired</code><br><code>Mitigated</code><br><code>Excluded</code> - includes email of Identity Intelligence User who excluded and comment, if present</td></tr><tr><td>Total Handling Time</td><td>The number of days elapsed between the first date a check/observation failed and the date it was resolved</td></tr><tr><td>Resolved Date (UTC)</td><td>The date and time that a check/observation was no longer failing for a given user</td></tr></tbody></table>

#### Resolved Check Observations

Similarly to failed check observations, if there has been more than one resolved observation for a check failure, the row can be expanded using the arrow to the left of the check name, so that you can see the history of resolved observations.

Up to 5 observations will be displayed by default, but you can click the 'See More' button under the last observation to see additional events if they exist. Observations are displayed in order from newest (top) to oldest (bottom).

<figure><img src="/files/slY7GOYVg5t2Clbkr5ng" alt="" width="563"><figcaption></figcaption></figure>

#### **Resolved check widgets**

Under or next to the two checks tables are also two small widgets with the number of mitigated checks a given user has, the number of checks a given user has been excluded from, and the median count per user for your tenant.

<figure><img src="/files/3I427myU9iaUALbY5Nq7" alt="" width="322"><figcaption></figcaption></figure>

### Diving deeper into a check failure

For each failing check, you can click in and view more information about that particular failing check, along with the most important context, such as the actions that contributed to the user failing a given check and high level context about that user. This is called the 'check explainability'.

To review the check explainability, click on any blank space in the row related to the specific check or observation you'd like to dig into. This will open a slide panel from the right side of the page.\
\
To access an observation's explainability, you can also click the button on the right side of the observation row, outlined in blue in the screenshot below. To close the slide panel, click the X in the top right corner of the panel, or click anywhere outside of slide panel.

<figure><img src="/files/E5j8ov0Iwu4Fc2QS86JQ" alt=""><figcaption></figcaption></figure>

The explainability available will vary from check to check based on what information or context is most relevant for a particular check, and can include information such as such as user title, failing data source, factor type, application accessed, IP address used, etc.

For event based checks, within the explainability panel you can get more information from the given user's [Activity](/understanding-your-users/user-360/activity-tab) tab by either clicking the **View in Activity** button to navigate to the Activity tab pre-filtered on all events related to that check failure, or clicking on a **See in Context** button which takes you to the Activity tab pre-filtered on events that occurred in the hour directly before and after the check failure.

**Resolved check explainability**

Resolved checks also have explainability if the check failure was **observed** **7 days ago or less**. If the check is less than 7 days old, you can access the explainability in the same was as actively failing checks - by clicking in the blank space.\
\
If the check failure was **observed more than 7 days ago**, the slide panel will appear with the recommended actions only. You can still access the check failure explainability of these older observations by clicking the 3-dot button on the right hand side of the row, and selecting **View Logs.** This will take you to the User's [Activity](/understanding-your-users/user-360/activity-tab) tab, pre-filtered on the check failure. Then, find the desired failing 'Observation Added' event and click the blank space of that row to open the side panel with the check explainability.

### How to triage a user's check failure

Once you have looked into a user's failing check(s) to understand more about the user and/or complete an investigation, you can then take action in a few different ways. To learn more about the available actions, how to use the different actions, or any additional permissions needed to use certain remediation actions, read our [Remediation Actions](/understanding-your-users/remediation-actions) documentation\
\
To respond to a specific check failure for a specific user, you can use the 3-dot button on the right hand side of each row, you can submit [feedback](/understanding-your-users/remediation-actions) for each unique observation:

* **Exclude a user** - Removes the user from the list of check failures and stops them from being evaluated against a given check for a specified time frame. You can also leave a comment explaining why this user has been excluded from this check for that amount of time. Check will appear in **Resolved Checks** table in Checks tab of User 360
* **Mark as Normal Behavior** - Note: O*nly available for event based checks.* Remediates the failed check for that occurrence and moves it to the Resolved table in the User360 Checks tab. User is not evaluated against this check for the specific context that caused the given observation for 30 days. If Identity Intelligence notes that user has the same exact behavior again tomorrow, the user will not fail the check again, *unless* an observation is logged for that check with new context (new IP address, device, etc). Read more about this on the [Triaging Alerts and Remediation Actions](/understanding-your-users/remediation-actions) docs
  * Identity Intelligence team compiles this data to determine if customers find the detection accurate or not, so logic improvements can be made if needed
* **Mark as Suspicious** - Note: O*nly available for event based checks.* Remediates the failed check for that occurrence and moves it to the Resolved section of the User360 Checks tab. User is not evaluated against this check for the specific context that caused the given observation for 30 days. If Identity Intelligence notes that user has the same exact behavior again tomorrow, the user will not fail the check again, *unless* an observation is logged for that check with new context (new IP address, device, etc).
  * Identity Intelligence team compiles this data to determine if customers find the detection accurate or not, so logic improvements can be made if needed

There are also additional remediation actions, such as **Reset MFA**, **Log out User**, **Delete User**, **Quarantine,** etc, that can be taken on a given user's account, depending on the sources associated with a given user and the permissions configured at the data source.

These actions can be found in the **Actions** button to the right of the User360 Tab names for a given user. The [Remediation Actions](/understanding-your-users/remediation-actions) documentation has more information about the different actions available, the permissions needed, compatible sources and how to use them.


# Triaging Alerts and Remediation Actions

2026.05.08

## Overview

Cisco Identity Intelligence provides the ability to triage check failures and take action to remediate problems or identity security threats within your connected identity platforms, such as Okta, Azure, Google, or Duo.

This article provides an overview of each triage option and remediation action, its intended use cases, how to use it, and platform compatibility.

## Triage Actions vs Remediation Actions

#### Triage Actions

Check failures can be triaged so that a given user will no longer fail a given check. Once a failing user has been triaged, they will no longer appear in the list of failing users for a given check.

The **triage actions** available are:

* [Exclude from Check](#exclude-user-from-check)
* [Mark as suspicious](#mark-as-interesting-mark-as-normal-behavior)
* [Mark as normal behavior](#mark-as-interesting-mark-as-normal-behavior)

Triage Actions are accessed through check failures - either on the page of failing users for a given check or on the [User 360 Checks](/understanding-your-users/user-360/checks-tab) tab. You may notice that not all checks contain all the triage actions listed above. That is because [State based checks](/understanding-check-failures#different-types-of-checks) cannot be marked as suspicious/normal.

No additional permissions or set up are required to utilize the Triage Actions.

#### Remediation Actions

Remediation actions are available for a wide variety of scenarios. Most remediation actions are typically utilized once an investigation into a given user's behavior has concluded to protect a user's account if it has been, or is suspected to be, compromised or is under attack. However, there are other remediation actions available that can be used to clean up an environment, to track an investigation, validate a user's identity, etc.

The **remediation actions** available are:

* [Send Push Notification](#send-push-notification)
* [Delete Guest User](#delete-guest-user)
* [Reset MFA](#reset-mfa)
* [Log Out User](#log-user-out-of-active-sessions)
* [Quarantine User](#quarantine-user)

Remediation Actions can be found under the **Action** button, which is available across all tabs of a given user's User 360.

Additional permissions or set up are required to utilize all Remediation Actions. More information on what is needed for each data source can be found in the [Technical Requirements](#technical-requirements) section below.

#### **Other Actions**

Under the **Actions** button there are a few additional actions that are neither remediation actions nor triage actions. Those actions are:

* [Open Ticket](#open-ticket)
* [Link User](#link-user)
* [Update User Type](#update-user-type)
* [Refresh User Data](#refresh-user-data)

Another action available, outside of the **Actions** button, is Update User Type. This action also requires [additional permissions](#technical-requirements) which you can read more about below.

## RBAC Role Permissions

All of the triage and remediation actions listed in this article are available to both **full admin** users and also **help desk role** users.

Actions reserved for full administrators, such as changing tenant settings, checks settings, or integration configuration, are discussed in the [RBAC and Access Logs article](/oort-tenant-settings-overview/role-based-access-and-access-logs).

## Technical Requirements

To take Remediation Actions beyond simply read-only data collection in identity platforms, Identity Intelligence requires specific API or token write permissions/scopes within the data source platforms so that it can talk back to the source and execute the remediation action there.

The specific API or token permissions are outlined in the integration guide for the respective data source. Please see the following articles for more details:

* [Azure AD](/integrations/azure-active-directory-integration)
* [Okta](/integrations/okta-data-integration)
* [Duo](/integrations/duo-security-integration)
* [Google](/integrations/google-workspace-integration)

## Triage Actions

### Exclude User from Check

For both [event-based and state-based](/understanding-check-failures#different-types-of-checks) Checks, you can exclude a given user from that particular check. Excluding a user from a check can be customized to exclude for a specific timeframe, or made permanent with an indefinite timeframe.

Once you have identified a user to exclude from a particular check

1. Use the 3-dot menu at the end of the corresponding row and click **Exclude from check**.<br>

   <figure><img src="/files/pqhsXpu4dOBfi6yB1QZc" alt="" width="219"><figcaption></figcaption></figure>
2. Select the desired timeframe from the drop down - either **Indefinitely,** which will result in a permanent exclusion, or one of the default timeframes. If your desired timeframe is not available, you can use the **Custom** option in the drop down to set your own timeframe, up to 180 days. We highly recommend NOT ignoring users from checks indefinitely whenever possible and would instead recommend setting up a longer exclusion timeframe.

<figure><img src="/files/5p6ojGRIqGIvD5P5GCAz" alt="" width="239"><figcaption></figcaption></figure>

3. Include a **Reason** for why this user will be excluded for this timeframe so that you and/or other members of the team can refer back to this historical context if needed. While entering a Reason is not required, it is highly recommended for record keeping purposes
4. Once the user has been excluded, this particular check will move to the [Resolved Checks ](/understanding-your-users/user-360/checks-tab#resolved-checks)section of the given user's User 360 Checks tab, with Result as **Excluded**. It will also include information on who excluded the user and display the Reason, if one was provided.<br>

   <figure><img src="/files/5guaR1K9gERw1oY5YDL4" alt="" width="563"><figcaption></figcaption></figure>

If needed, a user can be re-included in a Check by selecting **Include in Check** under the 3-dot menu in the Resolved Checks section.

<figure><img src="/files/DuKAYQvwn1FmNWw8GuAW" alt="" width="563"><figcaption></figcaption></figure>

### Mark as Suspicious / Mark as Normal Behavior

For [event-based identity](/understanding-check-failures#different-types-of-checks) threat detections, after you have investigated a check failure, you should then triage the failed check or observation for that user with the <mark style="color:orange;">**Mark as suspicious**</mark> or <mark style="color:green;">**Mark as normal behavior**</mark> buttons so that they are no longer failing a given check. It is recommended to leave a brief comment with the triage result of your investigation for record keeping and historical purposes.

Marking a user's check failure or observation as either suspicious or normal behavior will mitigate the failed check/observation for that user and move it to the [Resolved](/understanding-your-users/user-360/checks-tab#resolved-checks) section of the given user's User 360 Checks tab and will not alert on observations with the same context for the next 30 days.

These triage actions are available under the 3-dot menu in two places

* the table of failing users on a given[ Failing Check page](/understanding-check-failures/reviewing-check-results)
* a given user's [User 360 Checks](/understanding-your-users/user-360/checks-tab) tab

Marking a user as suspicious or interesting from a given Failing check page will apply that feedback to ALL observations for the given user; however, on the [User 360 Checks](/understanding-your-users/user-360/checks-tab) tab you can review each individual observation and mark each accordingly. This is important because if a user has multiple observations, each with different context, the observations should be reviewed individually and triaged appropriately via the User 360 Checks tab, otherwise you may miss future check failures for a user.

As mentioned above, when using either Mark as <mark style="color:orange;">Suspicious</mark> or Mark as <mark style="color:green;">Normal</mark>, the given user's observation(s) that was triaged is then "snoozed" for 30 days. As Identity Intelligence continuously analyzes user data, if a new observation is noted for the same user with the same context as the "snoozed" observation, then it will **NOT** log a new observation and will not trigger a check failure for that user; however, if a new observation is noted for the same user with *different* context than the "snoozed" observation, then it **WILL** log a new observation and will trigger a check failure for that user.

Context is usually information that can be found in the failing check's explainability, such as IP address info, device info, factor info, etc and will vary by check based on what is relevant to that check. For example, for the Personal VPN Usage check, the context is the VPN service used. For the Rare Browser Activity check, it is the browser user, etc.

<figure><img src="/files/ovPZ9es6KhPYJk5IJqwM" alt=""><figcaption></figcaption></figure>

If needed, feedback options can be reset by selecting **Reset Feedback** under the 3-dot menu in the Resolved Checks section for a given user.

### When to use each triage action

**Exclude from Check** should be used in cases where you are certain a user does not need to be evaluated against this check for a desired amount of time under ANY circumstances

<mark style="color:orange;">**Mark as suspicious**</mark> should be used in cases where a check failure was accurate in some way such as behavior that could risky or concerning, a possible compromise, a confirmed compromise, etc.

<mark style="color:green;">**Mark as normal behavior**</mark> should be used in cases where a check failure was accurate but is expected behavior or is simply not risky or concerning behavior, or if the check failure was not accurate (false positive).

<mark style="color:red;">**Note**</mark> - All roles, including **Read Only**, can provide triage user check failures with these options.

<figure><img src="/files/6qaZzXdXYPvWJO0twc1s" alt="" width="329"><figcaption></figcaption></figure>

Additionally, when you triage a check failure or observation using mark as suspicious or mark as normal behavior, you help the Identity Intelligence data science team gather data on ways to improve the check failure logic moving forward.

<figure><img src="/files/8GFVqiyyYHBs6aSXIuUu" alt=""><figcaption></figcaption></figure>

## Remediation Actions

{% hint style="info" %}
You may not see all Remediation Actions available across all users in your tenant!\
Identity Intelligence only shows the remediation actions that are compatible with the data sources that have a record for a given user\
\
For ex: You have a given user with accounts in both Azure and Duo. You will not see the Q**uarantine** action for this user, since this action is only compatible with Okta and this user does not have an Okta account
{% endhint %}

### Send Push Notification

*Supported platforms: Duo Security **for end users*** ***only**, Okta*

In certain scenarios, such as verifying a user's identity when calling into the help desk or support team, it is extremely useful to be able to send the user a one-time push notification to their enrolled mobile device and have them confirm it as part of the identity verification process.

#### Okta Implementation Details

To enable this functionality for Okta integrations, simply deploy the Cisco Identity Intelligence app from the Okta Integration Network (OIN). See [Okta Data Integration](/integrations/okta-data-integration) for more details.

#### Duo Implementation Details

The Send Push Notification action only works on Duo end users. It is not compatible with Duo Admin accounts.

To enable this functionality for Duo, **requires the Duo Security Auth API security token** to be configured in your Duo integration as mentioned in the [Duo Security](/integrations/duo-security-integration) article. As mentioned there, the Duo Auth API app name should be created with something the end user will recognize as having sent the push to them, such as "Company ABC IT Support Team".

#### How to Send a Push Notification

1. Click the **Actions** button on any tab within a selected user's [User360 ](/understanding-your-users/user-360)and then select **Send push notification**<br>

   <figure><img src="/files/66kfdyyhMkiniC6BId8x" alt="" width="525"><figcaption></figcaption></figure>
2. A verification dialog box will open. If there are both Duo Security and Okta integrations in your Identity Intelligence tenant, you'll be asked to select which one you want to use

<figure><img src="/files/JhvnJYk4vxDW1F1D3biZ" alt="" width="375"><figcaption></figcaption></figure>

<mark style="color:red;">**Note**</mark> - If a user has multiple devices enrolled for an integration, you will be given a choice to select the desired device. If a user has NO devices for an integration, you will see the message below

<figure><img src="/files/o3aFg158MrkwzJcR9rHq" alt=""><figcaption></figcaption></figure>

3. Click **Confirm** to send the push notification
4. A Remediation status bar will appear above the User Overview page<br>

   <figure><img src="/files/h5vlbECQjge7yW2Tz9tx" alt="" width="473"><figcaption></figcaption></figure>
5. The API operation is asynchronous, so you may need to hit the refresh button within the remediation status bar to update the status<br>

   <figure><img src="/files/jVzzhNow37pBrm14vFG0" alt="" width="200"><figcaption></figcaption></figure>
6. If the user receives and accepts the push, the status will be `SUCCESS`. Otherwise it will report `FAILURE`
7. These actions will also show up as events in the user's [Activity](/understanding-your-users/user-360/activity-tab) tab

<mark style="color:red;">**NOTE!**</mark> - Because the push notification is sent from Identity Intelligence to the Identity provider via API and originates from a specific AWS region, then the geolocation details in the request will show it coming from an AWS region (AWS US East 2 in Columbus, Ohio for most Identity Intelligence customers).

<figure><img src="/files/twbyafFysP6V2Efw5hvu" alt="" width="375"><figcaption></figcaption></figure>

### Delete Guest User

*Supported IDP: Azure AD*

Microsoft 365 productivity applications like Teams, SharePoint, and OneDrive provide powerful mechanism for sharing resources, data, and chat functions outside of an organizations internal user base. However, this frequently leads to a build-up of guest accounts, especially ones that are inactive or never used, in Azure AD, which functions as the primary identity directory for many Microsoft 365 environments.

With the correct API permissions noted above, Identity Intelligence admin and help desk roles can delete these accounts directly from Identity Intelligence, cleaning up the environment and reducing identity attack surface, while reducing the need to pivot back to Azure to complete this task once a user has been identified for deletion.

There are two requirements -

1. The account must be of type `guest` in Azure AD
2. The account must be within the configured Protected Population within Identity Intelligence (not excluded from all Checks)

To identify delete guest accounts for deletion, you can use the Users table page and the filters to find external users. Some ways you can find external users are:

* Filter on **User Type** only and select **External**
* Filter on failing checks > Select the **Inactive Guest User** check and select an individual user to review
* Filter on failing checks > Select the **Never Logged In** check > Find the **User Type** filter and select **External** and select an individual user to review

Once you have identified a user to delete:

1. Click on the desired guest user to open their User360 [Overview](/understanding-your-users/user-360/overview-tab) tab
2. Click **Actions** -> **Delete User**<br>

   <figure><img src="/files/31MJ6xxtN0MLs8QLZcDA" alt="" width="257"><figcaption></figcaption></figure>
3. A Remediation status bar will be displayed with the status of the operation in Azure AD
4. If you delete a user and the status bar displays a **Failed** message, it may be an indicator that the necessary API permissions are not configured

If you do not see the Delete User remediation action, ensure that the user is a **Guest** user in **Azure AD**. If the user is not, this remediation action will not be visible.

### Reset MFA

*Supported IDPs: Okta, Azure AD, Duo, Google*

In certain scenarios, such as a lost phone or OTP soft token, you may need to reset a user's MFA factors in one or more IDP systems.

You can do this in Identity Intelligence via the **Reset MFA** action under the **Actions** button on any tab of a given user's [User360](/understanding-your-users/user-360).

<figure><img src="/files/JmQF6pRtqEq8TYJbjedg" alt="" width="489"><figcaption></figcaption></figure>

Select **Reset MFA.** This will prompt you to confirm this action. Once you select **Confirm, the reset is effective across ALL connected IDPs for the user.**\ <mark style="color:red;">**Note**</mark> - The Reset MFA action only works on Duo end users. It is not compatible with Duo Admin accounts.

<figure><img src="/files/t8Y7dCDgI1jD3bRqJ6GK" alt="" width="372"><figcaption></figcaption></figure>

### Log User Out of Active Sessions

*Supported IDPs: Okta, Azure AD, Google*

In the event of a identity security threat, you may need to log a user out of any active sessions in one or more IDP systems.

You can do this in Identity Intelligence via the **Log Out User** action under the **Actions** button on any tab of a given user's [User360](/understanding-your-users/user-360).

As with other options, this remediation action will be effective on all platforms where a given user has an account. You will be prompted to **confirm** the action before it executes.

The status will be displayed in the remediation status bar in the [Overview](/understanding-your-users/user-360/overview-tab) tab of the user360 for the selected user.

<figure><img src="/files/v8DvNILLPwSABigLv1m7" alt="" width="373"><figcaption></figcaption></figure>

### Quarantine User

*Supported IDPs: Okta*

If suspicious or potentially malicious events have occurred with a user's account, you may want to place the account into a quarantine group within the IDP that severely restricts their access to data and applications until further investigation or incident response procedures can be performed.

To use this option, the following steps must be taken:

1. A group called `Quarantine` **must exist** in the primary IDP, Okta, for the user account. If a different group name is required, please coordinate with your Identity Intelligence technical representative
2. The group must be associated with polices and rules that take precedence over normal auth policies and restrict the user from accessing applications and data. Several use cases for this exist:
   1. The user's account may be compromised, so the Quarantine group allows them to only access the user help desk portal and nothing else
   2. The user has failed some other security policy or training, and so the account can only access the security training application until the issue is remediated

Under the **Actions** button for a given user, the **Quarantine** option will perform this action for the connected IDP(s).

<figure><img src="/files/IYvb3xohQCIEz4pIRge6" alt="" width="349"><figcaption></figcaption></figure>

<mark style="color:red;">Note</mark> - Once a user has been placed in the Quarantine group, they can only be removed from the Quarantine group through the IdP Platform, e.g. Okta

## Additional Actions

### Open Ticket

*Supported platforms: ServiceNOW, Jira*

Via integrations with [ServiceNOW](/integrations/servicenow-integration) and [Jira](/integrations/jira-integration), Identity Intelligence is able to open tickets in those platforms in several scenarios. A ticketing service integration must be configured to use this action.

#### Open a ticket for a specific user:

1. Click the **Actions** button on the top right of any tab of the given user's [User 360](/understanding-your-users/user-360) and select the **Open Ticket** action to pen a ticket for that user<br>

   <figure><img src="/files/1outVRYWfTKla0JrXZv3" alt="" width="349"><figcaption></figcaption></figure>
2. Enter a **Subject** and click **Confirm** to open the ticket in your Ticketing System. Specify if it is a general issue or a request<br>

   <figure><img src="/files/UbmciNclfG1W2LNeJ3V8" alt="" width="391"><figcaption></figcaption></figure>

#### **Open a ticket for a specific check failure for a specific user:**

1. Select **Open ticket for check,** which can be found under the 3-dot button on either the[ User360 Checks tab](/understanding-your-users/user-360/checks-tab) or on the list of users failing a given check, to open a ticket

<figure><img src="/files/N6AKZiykIrSY33gm5qdI" alt="" width="563"><figcaption></figcaption></figure>

2. Select the desired platform (if more than one is connected) and click **Confirm**.

Any tickets opened via Identity Intelligence and their status will be visible at the bottom of the [User360 Overview tab](/understanding-your-users/user-360/overview-tab#tickets).<br>

<figure><img src="/files/v2mpOUyX6BG8hor1nl3a" alt="" width="563"><figcaption></figcaption></figure>

### Link User

Many scenarios exist where the same human user has access to multiple discrete users accounts, either within the same IDP or across different IDPs. In these cases, we recommend creating a link between these users to make account clean up and investigations easier and faster.

Under the **Actions** button on a given user's User360, there is an option to **Link User.** There are also other ways to link users. [Click here to see our documentation about the Linked Users functionality](/understanding-your-users/linking-user-accounts), which includes information on when, why and how to use it.

### Update User Type

*Supported IDPs: Okta, Azure AD*

Several primary IDP types provide an attribute of `User Type`, but this user account attribute may not be populated or properly sync'd with a source of truth, such as an HR system.

In this case, an admin or help desk role may want to manually set the user type attribute in the IDP from the Identity Intelligence console. This is especially true if the account is a service account or a 3rd party/external user, such as a contractor or consultant.

1. To do so, click **Assign**

<figure><img src="/files/RlSlaUdi2834AjEjEvgW" alt="" width="310"><figcaption></figcaption></figure>

2. Type in your desired value and click **Save Changes**

<figure><img src="/files/hAswFrJA21ERP8c4hOb8" alt="" width="330"><figcaption></figcaption></figure>

3. At the top of the User Overview page, you will see a Status bar noting that the action has been triggered. When complete, the status will update.

<figure><img src="/files/qf5e0EI1YhlrnZQsBjhK" alt="" width="375"><figcaption></figcaption></figure>

If there are any issues with the remediation action, you can see the details in the [System Logs](/oort-tenant-settings-overview/systems-logs) page under the tenant options menu in the top right corner.

<figure><img src="/files/sB7c9ufr4G9SB3kzYwjf" alt="" width="563"><figcaption></figcaption></figure>

### Refresh User Data

*Supported IDPs: Okta, Azure AD, Google, Duo, Salesforce*

For most IDP connections, Identity Intelligence will pull changes to static user account information and activity once every 24 hours. *(Note: See this* [*article*](/how-to-guides/can-identity-intelligence-analyze-behavior-and-fail-checks-more-frequently) *for more information on data collection cycles)*

You can see the most recent full data collection for a user in the Activity tab by hovering over the **Last data collection** link in the middle right side, about the events table.

<figure><img src="/files/1Ls4PJSshJKst5K6r6GI" alt="" width="563"><figcaption></figcaption></figure>

To obtain the latest data set for an individual user across all connected platforms, click **Actions -> Refresh User Data**

**NOTE:** Refresh the user data will collect the latest events, including activity logs, from available sources, display them in the Activity tab, and process some checks; however, it does **NOT** process ALL event driven checks for a user. For that, a manual refresh of the particular integration (e.g. Duo) must be triggered from the Integrations page.

<figure><img src="/files/fvjcSilyCq8bW0QBq4Wp" alt="" width="489"><figcaption></figcaption></figure>

The status will be available in a bar at the top of the User Overview tab.

<figure><img src="/files/52rkSmVjv0uZgf5QbqcO" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="info" %}
Because of a limitation on the Microsoft side, Identity Intelligence typically gets users' [configured factor information](/understanding-your-users/user-360/overview-tab#authentication-factors) on a monthly cycle. Use the **Refresh User Data** action to pull the current factor info for a given user if needed
{% endhint %}


# Linking User Accounts

8/2024

## Overview

Many scenarios exist where the same human user has access to multiple discrete users accounts, either within the same IDP or across different IDPs -

* Admins with both a regular user account and one or more privilege accounts, including across multiple Active Directory domains in an AD forest
* Users with separate accounts in non-federated IDPs, perhaps due to a recent M\&A event
* Users with both a individual account and access to or ownership of a shared account

In these cases, it's extremely important to maintain a link between these accounts, both for user lifecycle events (deprovisioning ALL users accounts when a user leaves the org) and during security investigations or incident response. For more details around the importance of this concept, please see our [Release Notes](https://docs.oort.io/release-notes/week-23-2023#introducing-the-link-user-capability) for this feature.

There are two ways to link users in Identity Intelligence - [manually](#how-to-link-user-accounts-in-oort) or through [linkage suggestions](#how-to-link-users). The video below provides instructions on how to use the manual aspect of this feature.

Instructions for how to link users manually and through linkage suggestions can also be found below.

{% embed url="<https://www.youtube.com/watch?v=RXzYVcQUiY4>" %}

## How to Manually Link User Accounts

1. Navigate to one of the accounts for a user that has multiple accounts
2. Scroll to the bottom of the User's Overview tab, to the Linked Users tile. You can also click the **Actions** button and select **Link User** from the dropdown, which will jump you to the same widget<br>

   <figure><img src="/files/RAa04ZDZVwFSHRcvLbDF" alt="" width="563"><figcaption></figcaption></figure>
3. Click **Add** and search for another account to link to this user. Click **Add** to link the accounts<br>

   <figure><img src="/files/vWMO9vXSuzJxl9Bui3Ni" alt="" width="563"><figcaption></figcaption></figure>
4. Note that the account(s) are now linked in both the tile and the dropdown under the User's name in the top right<br>

   <figure><img src="/files/GQX2QEoNCSl5WlzRtq5e" alt="" width="563"><figcaption></figcaption></figure>

## How to Review and Accept User Linkage Suggestions

User Linkage Suggestions are determined based on an **exact match of either the user name or employee ID** (ex: John Doe and John Doe).

There are two places to review User Linkage Suggestions - via [the Users Table](#via-the-users-table) or via[ a specific User's Overview Tab](#via-a-specific-users-overview-tab)

#### **Via the Users Table**

1. To review suggestions across all users in your tenant, navigate to the **Users Table** tab and click the **Link Tips** icon to the right of the search bar

<figure><img src="/files/u82CsXmfb6PkltWggMDo" alt="" width="563"><figcaption></figcaption></figure>

2. Clicking the **Link Tips** icon will open a modal with a handful of accounts across your tenant that may possibly be the same user because these users have either the same **exact user name** or **employee ID**

<figure><img src="/files/Vss9Ovpqu7L27cpLqd69" alt="" width="563"><figcaption></figcaption></figure>

3. In the modal, review the user linkage suggestions to determine if the suggestions should be accepted. If the users suggested are indeed the same person, select **Link** to link the specified users to each other
4. If the suggested users are *not* the same person, select **Reject** and the specific suggestion will never re-appear. If you are *unsure* if the users are the same person, or just want to review the suggestion later, select **Skip for now** which will snooze the suggestion for a few days so it can be re-reviewed at a later date.
   1. If you want to look more closely at a user to determine if it may be the same person, select the **Open in New Tab** icon next to each user's user name
5. Click **Confirm Linkage** to save your selections
6. Once you have linked a set of users, the linkages will appear in the **Linked Users** widget at the bottom of the User360 Overview tab for a specified user, You can review existing linkages or [remove linkages](#removing-account-linkages) from this view

<figure><img src="/files/gQqnMoWkSxPIrbXzTQ2L" alt="" width="563"><figcaption></figcaption></figure>

7. You can also see the number of users linked to a specific user in the tag next to the user's name on the Overview Tab and in the dropdown under the User's name in the top right

<figure><img src="/files/UBRvXDX03FKW7nJEUmNk" alt=""><figcaption></figcaption></figure>

#### **Via a specific User's Overview Tab**

1. Navigate to a specific user's User360 Overview Tab. If there are user linkage suggestions available for the selected user, you will see a yellow banner indicating that there are user linkage suggestions to review. *If there is no banner* for the selected user it means there are *no* linkage suggestions available for this user

<figure><img src="/files/Ds4UWOvbFnHRX5ebVEpf" alt=""><figcaption></figcaption></figure>

2. Click **Review** to open the modal where you can review the linkage suggestions for the selected user, or click **Dismiss** to remove the banner for the duration of your session
3. In the modal, review the user linkage suggestions to determine if the suggestions should be accepted. If the users suggested are indeed the same person, select **Link** to link the specified users to each other

<figure><img src="/files/Rlx9LV9DDJ8wGfCPvYck" alt=""><figcaption></figcaption></figure>

4. If the suggested users are *not* the same person, select **Reject** and the specific suggestion will never re-appear. If you are *unsure* if the users are the same person, or just want to review the suggestion later, select **Skip for now** which will snooze the suggestion for a few days so it can be re-reviewed at a later date.
   1. If you want to look more closely at a user to determine if it may be the same person, select the **Open in New Tab** icon next to each user's user name
5. Click **Confirm Linkage** to save your selections
6. Once you have linked a set of users, the linkages will appear in the **Linked Users** widget at the bottom of the User360 Overview tab for that user (See Step 6 above in [Via the Users Table](#via-the-users-table) for screenshot). You can review existing linkages or [remove linkages](#removing-account-linkages) from this view
7. You can also see the number of users linked to a specific user in the tag next to the user's name on the Overview Tab and in the dropdown under the User's name in the top right (see Step 7 above in [Via the Users Table](#via-the-users-table) for screenshot)

## Removing Account Linkages

Accounts can be unlinked from the Linked Users tile on one of the user's account Overview tab. Click the **. . .** button on the right of the row for the user you want to unlink, and select **Unlink from all** to remove the user in that row from its link to the user who's page you are on

<figure><img src="/files/KqDAZ11EBFfJ0vGfelIV" alt=""><figcaption></figcaption></figure>

## Filtering for Linked Accounts

In the main Users page, you can use the Linked Users filter on the left bar to find just users with an existing account linkage.

Note: a small Link icon also appears next to the names of users who have been linked to other users

<figure><img src="/files/2FyFjI0mBzFPvoV0iTN2" alt=""><figcaption></figcaption></figure>


# User Statuses

### Overview

User Statuses are broken down into two categories: the [Identity Provider (IdP) Status](#idp-status) and an [Identity Intelligence Status](#identity-intelligence-status). Read on to learn the differences between the two statuses, how each status is compiled and what the definition of each status is.

### Identity Provider (IdP) Status

The Identity Provider (IdP) Status is a status that is gathered directly from what is configured on the data source for a particular user.\
\
You can see the respective IdP Status for each data source associated with a user in the right top corner of each source card on the User 360 [Overview](/understanding-your-users/user-360/overview-tab) tab.

<figure><img src="/files/7CtroRfGn8tBqDOFi4AC" alt="" width="375"><figcaption></figcaption></figure>

### Statuses and definitions

To learn what statuses are possible and what each IdP status means, please refer to the data source's documentation on user statuses. Examples: [Okta](https://help.okta.com/en-us/content/topics/users-groups-profiles/usgp-end-user-states.htm), [Duo](https://help.duo.com/s/article/6965?language=en_US)

## Identity Intelligence Status

The Identity Intelligence status is a status that combines all of the user's [IdP status](#identity-provider-idp-status)[es](#identity-provider-idp-status) with observability information based on a user's activity. If you have an HRIS system configured, then it will also include the user's employment status from the HRIS system.

A high level Identity Intelligence status can be seen in the Status column on the [Users](/understanding-your-users/users) page

<figure><img src="/files/XhxwqwQdIRs4dFf4g69r" alt=""><figcaption></figcaption></figure>

Additionally, the high level Identity Intelligence status tag can be seen next to the User's name and email on every tab across the User 360.

A more detailed, compiled Identity Intelligence status can be seen on the User 360 [Overview](#overview) Tab, in the Summary widget, which is directly beneath the User's name and email. This compiled status combines the user types, taken directly from the IdP (ie: internal, external, service accounts, etc), and the Identity Intelligence status. If there is no user type in the IdP for that user, it will be marked as 'Missing'.

You can filter on `Compiled Status` as a basic filter on the [Users](/understanding-your-users/users) page and/or add the field to the table as an additional column.

<figure><img src="/files/5R3yTJ1CYQAROFLl0mLy" alt=""><figcaption></figcaption></figure>

### Statuses and definitions

If there is **no HRIS data integration available** for your tenant or a user, the detailed status is the user type taken from the IdP + high level Identity Intelligence status (ex: Internal, Active or External, Inactive).

Below are the statuses and definitions if **you do not have an HRIS data integration configured**:

<table><thead><tr><th width="228.5703125">Identity Intelligence Status</th><th width="162.25">Compiled Status</th><th>Definition</th></tr></thead><tbody><tr><td>Active</td><td>Active</td><td>User is authorized in the IdP and has had activity in an IdP in the last 30 days</td></tr><tr><td>Inactive</td><td>Inactive</td><td>User is authorized in the IdP, but has <em><strong>not</strong></em> had activity in an IdP in the last 30 days</td></tr><tr><td>Deprovisioned</td><td>Deprovisioned</td><td>User is unauthorized in the IdP and has not had activity in an IdP in the last 30 days</td></tr><tr><td><mark style="color:red;">Inconsistent</mark></td><td>Unauthorized</td><td><a href="#inconsistent-users"><em>See below</em></a></td></tr></tbody></table>

If a **HRIS data integration is available**, the detailed status is the user type taken from the IdP+ the compiled status listed below (ie: Internal, Active Employee or Service Account, Non-employee).<br>

Below are the statuses and definitions if you **have an HRIS data integration configured**:

<table><thead><tr><th width="251">Identity Intelligence Status</th><th width="155">Compiled status</th><th>Definition</th></tr></thead><tbody><tr><td>Active</td><td>Active Employee</td><td>User's HRIS employment account exists and is authorized. User is authorized in the IdP and has had activity in an IdP in the last 30 days</td></tr><tr><td>Active</td><td>Non-employee</td><td>User's HRIS Employment account does not exist and is unauthorized. User is authorized in the IdP and has had activity in an IdP in the last 30 days</td></tr><tr><td>Inactive</td><td>Inactive Employee</td><td>User's HRIS Employment account exists and is authorized. User is authorized in the IdP, but has <strong>not</strong> had activity in an IdP in the last 30 days</td></tr><tr><td>Inactive</td><td>Non-employee</td><td>User's HRIS Employment account does not exist and is unauthorized. User is authorized in an IdP, but has <em><strong>not</strong></em> had activity in an IdP in the last 30 days</td></tr><tr><td>Deprovisioned</td><td>Deprovisioned</td><td>User's HRIS Employment account exists, and the HRIS account and an IdP account are both unauthorized with no noted activity on an IdP<br><br><em>or</em><br><br>User's HRIS Employment account does not exist, and the HRIS account and the IdP account are both unauthorized with no noted activity on an IdP</td></tr><tr><td><mark style="color:red;">Inconsistent</mark></td><td>Non-employee</td><td>User's HRIS employment account does not exist, the user is unauthorized in both the HRIS and in an IdP, but there was activity noted on a data source after the user's IdP status changed</td></tr><tr><td><mark style="color:red;">Inconsistent</mark></td><td>Unauthorized Employee</td><td><a href="#inconsistent-users"><em>See below</em></a></td></tr></tbody></table>

### Inconsistent Users

Users will be marked as inconsistent if we noticed account status discrepancies that could pose significant security threats to your environment. Inconsistent Users can also highlight discrepancies that arose during user onboarding or offboarding. It is important to review Inconsistent Users regularly, because these users may still have access to internal systems that they are no longer supposed to have access to.\
\
Users can be flagged as inconsistent for a variety of reasons. Below is a table visualization that maps what factors lead to each possible status, the compiled status, and inconsistency severity, if applicable.

**If there is no HRIS data**, a user will be marked as `Inconsistent` if:

<figure><img src="/files/n7MP7hNOLOqdIa0TfJ5d" alt=""><figcaption></figcaption></figure>

* User is authorized in a non-IdP data source, but does **not** have an IdP account associated
  * Example: User only has a Github account but no associated account in Okta, Azure, or G-Suite
* User is unauthorized in the IdP, but has had activity in the IdP in the last 30 days
* User is authorized in the IdP, but has had no activity in the IdP in the last 30 days and their user type from the IdP is listed as an External account or a Service Account

**If there is** **HRIS data,** in addition to the reasons above, a user will be marked as `Inconsistent` if:

<figure><img src="/files/pv5ZYTiZXDj6xBIL8blw" alt="" width="563"><figcaption></figcaption></figure>

* User's HRIS account exists and is authorized, but the user is unauthorized in an IdP and there was activity noted on a data source after the user's IdP status changed
* User's HRIS account exists and is authorized, but the user is unauthorized in an IdP
  * Note: If it is a newly created user account, the account will not flag as inconsistent, unless the user remains unauthorized in an IdP after 7 days
* User's HRIS account exists but is not authorized, and the user is authorized in an IdP and ***has*** had activity in an IdP in the last 30 days
* User's HRIS account exists but is not authorized, and the user is authorized in an IdP but **has&#x20;*****not*** had activity in an IdP in the last 30 days
* User's HRIS account exists, the user is unauthorized in both the HRIS and an IdP, *but* there was activity noted on a data source after the user's IdP status changed
* User's HRIS account does not exist, the user is unauthorized in both the HRIS and an IdP, *but* there was activity noted on a data source after the user's IdP status changed
* User's HRIS account exists, the user is authorized in both the HRIS and an IdP, *but* the user type from the IdP is listed as an external account or a service account
  * Note: this is regardless of user's activity. The user may or may not have had activity in an IdP in the last 30 days.
* User's HRIS account does not exist and is not authorized, but the user is authorized in an IdP and the user type from the IdP is listed as Employee or Contingent/Contractor
  * Note: this is regardless of user's activity. The user may or may not have had activity in an IdP in the last 30 days


# Applications

### Overview

Organizations often have hundreds, or even thousands, of applications connected to their Identity Providers and available to their users; however, understanding what is in their environment, how it gets used, and who it gets used by is a challenging question for many organizations to answer because their applications are sprawled across multiple identity providers (IdPs). When it comes to reporting to answer licensing questions, or compliance and audit purposes, organizations spend countless hours trying to collect the information they can from each system, often painstakingly correlating data across spreadsheets manually, just to answer these simple questions as best they can - and the results often leave much to be desired.\
\
The **Applications** page of Identity Intelligence aims to ease the burden that comes with this sprawling data across disparate systems with a unified view into your organization's applications. Much like the [Users ](/understanding-your-users/users)page, which provides visibility into an organization's identities across the connected identity sources, the Applications page gives organizations cross-platform visibility into the different applications that exist within their ecosystem.

With this consolidated view, it is significantly faster and easier for organizations to get visibility into their app landscape, answer questions, create reports, and ultimately, take action on the applications within their environment to reduce the possible attack surface and improve their overall organizational security.

This article provides information about the different data and functionality that exists in the Applications page such as:

* [Definitions of the elements in the table](#application-table-elements)
* [Diving deeper into an app](#diving-deeper-into-an-application)
* [Customizing the Applications page](#customizing-the-applications-page) with sensitive apps and application utilization timeframes
* [General functionality](#users-page-general-actions) such as searching, exporting results, sharing, etc
* [Filtering](#filters)

<figure><img src="/files/4KRzytbJrVZL1lnCLKyx" alt=""><figcaption></figcaption></figure>

### Applications table elements

By default, the Applications table is sorted by the largest number of logins and only includes `managed` apps, which are apps that are managed by an identity source.\
\
The total number of Applications in the table is displayed above the column headers of the table itself.

The section below details the fields that appear in the table, as well as the definition of each field:

<table><thead><tr><th width="134.1875">Element</th><th>Description</th></tr></thead><tbody><tr><td>Name</td><td>The name given to the app and the assigned app ID from the identity source</td></tr><tr><td>Status</td><td>The current state of an app such as <code>active</code>, <code>deleted</code>, <code>deprovisioned</code>, etc</td></tr><tr><td>Sensitive</td><td><p>Applications that have been flagged as sensitive for your organization will have an enabled (blue) toggle. Applications that are not marked as sensitive will have a disabled (grey) toggle.<a href="#adding-sensitive-applications"> <em>Learn more about how to configure sensitive apps and why it is important</em></a></p><p><img src="/files/pw6TRdBiqgBihxSctxco" alt="" data-size="original"></p></td></tr><tr><td>Source</td><td>The identity source where a given application is connected</td></tr><tr><td>Tags</td><td>Identity Intelligence will apply tags to an application if it matches certain criteria, such as <code>Key Expires Soon</code> , <code>Password Expires Soon</code> or <code>No Assignment Required</code>, to highlight applications that may require action or clean up. If you hover over a tag regarding a password or key expiration, a tool tip with more information will appear<br><br>An application can have more than one tag applied to it. All the tags present in your environment are displayed in the relevant Tags <a href="#filters">filter</a></td></tr><tr><td>#Logins</td><td>The number of successful sign in events for a given application across all users in your environment</td></tr><tr><td>Assignees</td><td>The number of users who are assigned, or entitled to access a given application. Select the value in this column to go to the Users page, pre-filtered for the given app and its assigned users so that you can filter or investigate further, export the impacted users, etc.<br><br>If this column displays <code>N/A</code> for a given application it can indicate that there is no assignment required to access the application or that the data is not available from the source</td></tr><tr><td>Used</td><td>The number of users who have successfully signed in to a given application during the configured application utilization timeframe. Select the value in this column to go to the Users page, pre-filtered for the given app and the users who accessed the app, so that you can filter or investigate further, export the impacted users, etc.<br><br>By default, the utilization timeframe is set to 30 days but this can be modified if needed. <a href="#customizing-the-application-utilization-timeframe"><em>Learn more about how to configure the utilization timeframe</em></a></td></tr><tr><td>Unused</td><td>The number of users who have no successful sign in events to a given application during the configured application utilization timeframe. Select the value in this column to go to the Users page, pre-filtered for the given app and the users who have not accessed the app, so that you can filter or investigate further, export the impacted users, etc.<br><br>By default, the utilization timeframe is set to 30 days but this can be modified if needed. <a href="#customizing-the-application-utilization-timeframe"><em>Learn more about how to configure the utilization timeframe</em></a></td></tr><tr><td>Utilization</td><td><p>The percentage of users who have successfully signed in during the configured application utilization timeframe out of the total number of assigned users for a given application.</p><p>If this column displays <code>N/A</code> for a given application it can be because there are no assigned users. This column will also display 100% if there are more users utilizing the application, than users assigned to the application.</p><p>By default, the utilization timeframe is set to 30 days but this can be modified if needed. <a href="#customizing-the-application-utilization-timeframe"><em>Learn more about how to configure the utilization timeframe</em></a></p></td></tr></tbody></table>

### Diving deeper into an app

Like many pages within Identity Intelligence, such as the User 360 pages, selecting the name of an application, or anywhere in the row that is not a link, will open the slide panel from the right side of the page that contains more detailed information about a particular app.

The slide panel has 2 tabs - Summary and Additional Details.

* Summary shows you more detailed information about a given app such as created date, sign on mode, App Owners or Notes if available, as well as the Groups assigned to the app and the number of users associated with that group
  * Select the value associated with a given group to go to the Users page pre-filtered on that group
* Additional Details shows you the raw data collected about a given application from the source. The data available will vary from source to source, and even application to application.

To close the slide panel, select the **X** in the top right corner, or select anywhere outside of slide panel.

<figure><img src="/files/8iri8kWGhJcyR1KowPSZ" alt=""><figcaption></figcaption></figure>

### Customizing the Applications page

#### Adding Sensitive Applications

**The importance of configuring sensitive applications**

Identity Intelligence has the concept of **Sensitive Applications** to help customers indicate which applications are most important to their organization. Applications that are closely monitored because they have access to sensitive data, are critical to business operations, require regular audits, have high license costs, or any other similar reasons, are all good examples of applications that should be treated as sensitive.

It is critical that your organization's most critical and sensitive apps are flagged appropriately as this information is used in various ways throughout Identity Intelligence such as in [Dashboard](/dashboard) widgets, as a contributing factor of the [User Trust Level](/user-trust-level#how-user-trust-level-is-calculated) calculation, as a tag in the [Activity tab](/understanding-your-users/user-360/activity-tab#activity-table-elements) of the User 360, as check settings, and more. If your list of sensitive apps.

Having these applications marked accordingly allows Identity Intelligence to provide you with more accurate results and data, and allows you to easily identify your organization's sensitive apps so that you can more easily prioritize and focus on the most important applications when cleaning up or investigating issues.

**Sensitive Application Auto-Discovery Mode**

Identity Intelligence automatically configures sensitive apps for all newly created tenants using its list of "Recommended" sensitive applications, also known as **Auto-Discovery Mode**. These recommendations are based on apps that are known to typically host sensitive data or are commonly considered sensitive in customer environments. If new apps are added to your environment that match Identity Intelligence's list of recommendations, it will automatically be marked as sensitive.

If your organization *does not* maintain a list of critical apps, we suggest keeping auto-discovery mode enabled to keep the default list of sensitive applications configured.

However, we know that every organization is different. What may be a sensitive application to one organization may not be to another organization. Some organizations may have stricter regulations that govern revoking unused application access, while other organizations may be more lenient. Which is why Identity Intelligence allows customers the flexibility to customize certain aspects of their Applications view to better align with their organization's policies, processes and risk tolerance thresholds.

**Customizing Sensitive Apps**

If your organization maintains a list of critical applications, which is often needed for compliance and audit purposes, it is highly recommended that you customize your Identity Intelligence tenant to reflect that list of apps.\
\
To set your own list of customized sensitive applications:

1. Disable the default sensitive apps list by selecting the **cog ⚙️ icon** that is directly to the right of the "**Sensitive**" column header and toggling **off** **auto-discovery mode**\
   Note: you cannot have default list/auto-discovery mode enabled *AND* also select custom apps.

<figure><img src="/files/N4JmK2SAGLqERrciV2If" alt=""><figcaption><p>An example of a tenant that has disabled the default sensitive app list</p></figcaption></figure>

2. After you have disabled auto-discovery mode, you can flag applications as sensitive using the **toggle** in the Sensitive column as mentioned in the [Application table elements](#applications-table-elements) section of this article

<div align="center"><figure><img src="/files/7swfMxCJMdOp67XtcL7g" alt="" width="98"><figcaption><p>Top app is marked as sensitive<br>Bottom app is not sensitive</p></figcaption></figure></div>

#### Customizing the application utilization timeframe

As described above in the [Application table elements](#applications-table-elements) section of this article, the default timeframe utilized to determine whether an application is used or unused is 30 days. If you would like to adjust the default application utilization timeframe to be longer or shorter, you can do so via the [Custom Detection Settings](/understanding-check-failures/customizing-checks#custom-detection-settings) within the **Unused App by Many Users** check.

The text above the Application table column headers will reflect the timeframe setting that is configured on the check.

<figure><img src="/files/SGC6Y0hCPZC949DXLGqx" alt=""><figcaption></figcaption></figure>

### Applications page general functionality <a href="#users-page-general-actions" id="users-page-general-actions"></a>

There are several general actions that exist across the Identity Intelligence platform that are also available on the Applications page:

* Search
* Sort columns
* Download results
* Share

Navigate through the tabs below to read more about how to utilize each available action.

{% tabs %}
{% tab title="Search" %}
Use the search bar to search based on application name or ID, source, or status. When searching, you do not need to provide an exact value. Typing a piece of the word will return related results.

If you have searched on a particular parameter, the search criteria is retained as you navigate between different tabs within the platform.

To clear the search bar, select the **X** on the right most side of the search bar.
{% endtab %}

{% tab title="Sort columns" %}
Sort columns within the table by selecting the column header you'd like to sort by. Click once to sort in ascending order, select again to sort in descending order.

Multi-column sorting is **not** currently supported.
{% endtab %}

{% tab title="Download results" %}
You can download tabular data from the table to a CSV using the **Download** icon button on the right after the search bar. All columns displayed and filters applied are included in the CSV output.

If there are no results in the table, the CSV export will contain only headers and no app data.

<figure><img src="https://docs.oort.io/~gitbook/image?url=https%3A%2F%2F582105988-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FqPSBzsjxd7KYg9DNVZ4l%252Fuploads%252FjJdE9xB0EQNrRe80B0oC%252Fimage.png%3Falt%3Dmedia%26token%3D91ffc96c-2656-4cae-9ecc-9b81bc0e2772&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=14291f83&#x26;sv=2" alt="" width="375"><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Share" %}
The **Share** button (on the right of the search bar) copies a link, with the applied filters, that can be easily pasted, bookmarked or shared with anyone who has the appropriate access to your Identity Intelligence tenant.

<figure><img src="https://docs.oort.io/~gitbook/image?url=https%3A%2F%2F582105988-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FqPSBzsjxd7KYg9DNVZ4l%252Fuploads%252Fz7hHsVCBzsn5hRwwCwlN%252Fimage.png%3Falt%3Dmedia%26token%3D16340c7b-4595-4a3b-922e-6316d7dc0f28&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=1bfcbb2b&#x26;sv=2" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

### Filters

Much like the Users table, the Applications table is filterable by a number of attributes, enabling you to slice and dice your apps based on the parameters that are important to you.\
\
Filtered results can be saved to access later or share with teammates. To learn more about how to save filters, see [Saved Filters](https://docs.oort.io/understanding-your-users/users/saved-filters) to learn more.

{% hint style="info" %}
The Apps page currently only supports **Basic** filters and does not have Advanced Query mode available
{% endhint %}

**Applying filters**

You can see all the available filters on the left hand side of the Applications page. To enable additional filters, select the value(s) for the attribute you would like to filter by. The applied filters will be added to the search bar, as seen in the screenshot below.

The number of apps that you are currently viewing, based on the filters and searches used, will appear in the top left corner of the Apps table above the column headers.

To remove a filter, you can either deselect the attribute from the filters list on left hand side of the Applications table, or select the **X** on the right hand side of the filter box within the search bar. If you select the **X** on the right end of the Search bar, it will remove all filters and search inputs except for the default `Type` filter.

As mentioned above, the Applications table is pre-filtered by default to only include `managed` apps, which are apps that are managed by an identity source. If you want to remove this filter and include the other app types - `unmanaged` apps (appear in SSO events, but are not managed by the provider) or `service` apps (not directly managed by provider by used to access others apps) - you can do so in the same way as the other filters.

After you have selected your filters, the filters are retained as you navigate between different areas within the platform.

<figure><img src="/files/XKG1SmMa4T33qctA9Hfu" alt=""><figcaption></figcaption></figure>

#### Filter interactions

Distinct filters are separated by an **AND** operator. For example, if you select the `Duo` value from the `Sources` filter and the \`Yes\` value for the `Sensitive` filter, the table will display all `Duo` apps that are flagged as `Sensitive`.

For most filters, you can select more than one value to filter by. Within a given filter, selecting more than one value will separate the values with an **OR** operator by default. For example, if you select the values `Okta` and `Duo` for the `Sources` filter, apps coming from **either** `Okta` **OR** `Duo` will be displayed.

However, if you would like to filter for apps in both `Okta` **AND** `Duo`, you can select the **OR** operator found in the filter box within the search bar or in the left hand filter menu (screenshots below), to switch it to **AND**. Doing this will allow you to see users that are in both `Okta` **AND** `Duo`.

Filters that use radio buttons **cannot** have more than one value selected at once (for ex: `Sensitive`)

<figure><img src="/files/3ev4CIzYrgq59Ke530To" alt=""><figcaption></figcaption></figure>

Specific values can also be excluded from the results for most filters, except for those that cannot have more than one value selected at once. To exclude a value from filtered results (ie: `NOT`), you can click on the 🚫 icon in either the filter box in the search bar or the left hand filter menu.

<figure><img src="/files/igm4GTzVmSEZNzVTEwOL" alt=""><figcaption></figcaption></figure>

Similarly, you can 'include all' values in the results, except for filters that cannot have more than one value selected at once. To select all values within a given filter, click `All` next to the filter value title.

<figure><img src="/files/fNpT4gTqiu9zY4sutvWY" alt="" width="344"><figcaption></figcaption></figure>


# Devices

02/2026

Devices are often an important piece of the Identity puzzle. Knowing what devices exist in your organization can help answer questions to aid in investigations, like what users are associated with certain devices and which users are actually using that device, as well as in posture clean ups to reduce device related risks such as removing stale or abandoned devices, or blocking devices that run operating systems that are no longer supported. It can also help with policy making decisions such as understanding which devices have been used to access certain tools or resources in your organization so that you can determine the blast radius of a policy configuration change; however, finding the device data needed to answer these types questions can prove challenging for many organizations.

Similar to the [Users](/understanding-your-users/users) page or the [User 360 Devices](/understanding-your-users/user-360/devices-tab) tab, the **Devices** page in Identity Intelligence enables you to visualize all the mobile, desktop, laptop, and other types of devices discovered via your connected identity sources, such as Entra ID, Duo, or Okta, as well as Mobile Device Managers (MDMs) like as Jamf, to give you cross-platform insight across your organization.

The Devices page is different from the User 360 Devices tab, however, because the Devices page will aggregate the same device seen across multiple sources into one device "record" and will also display devices that are not associated with any users in your environment.

This aggregated view gives organizations visibility into their device landscape so they can quickly and easily find concerns, filter on certain issues or drill into particular use cases to answer their questions and enable them to take corrective action on the devices within their environment.

This article provides information about the different data and functionality that exists in the Devices page such as:

* [Definitions of the elements in the table](#devices-table-elements)
* [Diving deeper into a device](#diving-deeper-into-a-device)
* [Filtering](#filters)
* [General functionality](#devices-page-general-actions) such as searching, exporting results, sharing, etc

### Devices table elements

By default, devices are sorted by date of access (most recent first). There are no default filters applied on the Devices page.\
\
The total number of Devices in the table is displayed above the column headers of the table itself.

Example:

<figure><img src="/files/whTpsTAeekQx1blZ8xkQ" alt=""><figcaption></figcaption></figure>

The table below explains the meaning of the columns that appear in the table:

<table><thead><tr><th width="154.8046875">Column</th><th width="575.24609375">Meaning</th></tr></thead><tbody><tr><td>Name</td><td>Name and serial number (if available) of the device</td></tr><tr><td>Type</td><td><ul><li><strong>Access:</strong> Devices, such as a desktop computer, that can be used to connect or gain entry to your organization's systems.</li><li><strong>Authentication</strong>: Devices, such as a mobile phones, that can be used as a multi-factor authentication (MFA) method to validate a user's identity when signing in to a system. Typically these devices must be enrolled as a MFA device for a specific Identity Provider, such as Duo.</li><li><strong>Access &#x26; Authentication:</strong> Devices that can be used for both, such as a laptop (access) with a built-in fingerprint scanner that is enrolled for MFA (authentication).</li></ul></td></tr><tr><td>Sources</td><td><p>Identity sources associated with a given device.<br></p><p>If the same device can be associated across more than one source using a common, strong device identifier, such as a serial number, the devices are aggregated into one device record.</p></td></tr><tr><td>Managed</td><td><p>Managed devices are those are have been enrolled in an organization's centralized management system such as an MDM, Unified Endpoint Management (UEM) or IT Service Management tool. These devices are typically company owned and provided to its users with pre-installed MDM software. Devices are "managed" to meet compliance requirements or enforce security policies.</p><p>Typically, the user logs in to a managed device before being allowed to access network resources.<br><br>Example: A Duo<a href="https://duo.com/docs/trusted-endpoints"> trusted endpoint</a> or a device managed by Microsoft Intune.<br><br><img src="https://docs.oort.io/~gitbook/image?url=https%3A%2F%2F582105988-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FqPSBzsjxd7KYg9DNVZ4l%252Fuploads%252FkMnuLxUDGPa8AH3hdJ8R%252Fimage.png%3Falt%3Dmedia%26token%3Dafb0a95d-3161-4b25-a216-8d47d8d9a6c6&#x26;width=300&#x26;dpr=3&#x26;quality=100&#x26;sign=3f8316d1&#x26;sv=2" alt="">= Device is managed by an organization, as reported by identity source or MDM<br><img src="https://docs.oort.io/~gitbook/image?url=https%3A%2F%2F582105988-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FqPSBzsjxd7KYg9DNVZ4l%252Fuploads%252FIQliCFd41xRf1HNEcFnb%252Fimage.png%3Falt%3Dmedia%26token%3Dee330327-b6c3-4bc1-8fb3-e1b6f9cd4d79&#x26;width=300&#x26;dpr=3&#x26;quality=100&#x26;sign=5255dc52&#x26;sv=2" alt=""> = Device is not managed by an organization, as reported by from identity source or MDM</p></td></tr><tr><td>Registered</td><td><p>Sometimes referred to as <em>joined</em>, a device can be registered with your organization by logging in to the device and joining the work network. (The user can optionally download and install MDM software like Microsoft Intune.)</p><p>A registered device might be either provided by the organization or it might be a personal device.<br><br><img src="https://docs.oort.io/~gitbook/image?url=https%3A%2F%2F582105988-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FqPSBzsjxd7KYg9DNVZ4l%252Fuploads%252FUBBryqsmnJfBANflLXuj%252Fimage.png%3Falt%3Dmedia%26token%3D46d95dc2-2f23-4720-a26c-007de9db06d3&#x26;width=300&#x26;dpr=3&#x26;quality=100&#x26;sign=af7f7249&#x26;sv=2" alt=""> = Device is registered<br><img src="https://docs.oort.io/~gitbook/image?url=https%3A%2F%2F582105988-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FqPSBzsjxd7KYg9DNVZ4l%252Fuploads%252FmCd4Xan7cOTuJYpfNwIU%252Fimage.png%3Falt%3Dmedia%26token%3D6115b848-6c4a-477b-af32-75c2e4d134d4&#x26;width=300&#x26;dpr=3&#x26;quality=100&#x26;sign=25d046ed&#x26;sv=2" alt=""> = Device is not registered</p></td></tr><tr><td>OS</td><td>Name of the operating system.<br>An <img src="/files/NMwlQwtpA5mpAQRUmaYt" alt=""> icon will be displayed next to the operating system type to indicate if the device is either out of date or end of life.<br><br>A red background indicates the OS is <code>end of life</code>; a yellow background indicates <code>out of date</code>. Hover the mouse pointer over the icon to see the device's current OS version and status.</td></tr><tr><td>Tags</td><td><p>Identity Intelligence-assigned tags, including:</p><ul><li>Shared: More than one user logged into the device, which may indicate credential sharing. The Assigned Users column displays the number of users who share the device.</li><li>New: Device has been recently detected and has not been seen before</li><li>Encrypted: Device is encrypted</li></ul></td></tr><tr><td>Assigned Users</td><td>Number of users allocated to that device via the IdP or MDM. Devices that are <strong>not</strong> assigned to a user will still appear in the table<br><br>Hover over the number to view the user names (if the number is non-zero) or select the number to drill into the <a href="/pages/cHLnm7PFMns2XvphnQFs">Users</a> page, pre-filtered on the associated user(s)</td></tr><tr><td>Used By</td><td>Number of users with recent events using that device. Devices do <strong>not</strong> need to have recent usage to appear in the table<br><br>If the number is non-zero, hover over it to view the user names or select the number to view the <a href="/pages/cHLnm7PFMns2XvphnQFs">Users</a> page, pre-filtered on the associated users.</td></tr><tr><td>Last Seen (UTC)</td><td>Universal time code-formatted date and time the device was last seen by the identity source.</td></tr></tbody></table>

### Diving deeper into a device

Clicking the name of a device, or anywhere in the row that is not a link, opens a slide panel from the right side of the page that contains more detailed information about the device.\
\
The available attribute fields for each device will vary depending on the source reporting the device, based on what information that source is able to share with Identity Intelligence.\
\
You can use the search field to quickly locate certain attribute types or values on this page.\
\
To close the slide panel, select the **X** in the top right corner, or select anywhere outside the slide panel.

Example:

<figure><img src="/files/BspZptxW1nocfHdVCQRb" alt=""><figcaption></figcaption></figure>

### Filters

You can filter the Devices table by a number of attributes, enabling you to search for devices based on the parameters that are important to you or easily identify devices that may need to be remediated or removed.

There are two types of filters that can be used on the Devices table - [basic filters](https://docs.oort.io/understanding-your-users/users#applying-basic-filters), which can be found to the left of the Devices table and [Advanced Query mode](https://docs.oort.io/understanding-your-users/users/advanced-query-mode), which can be enabled via **<>** button next to the search bar above the Devices table. Check out our documentation on to [how to use Advanced Query Mode](https://docs.oort.io/understanding-your-users/users/advanced-query-mode#entering-advanced-mode-and-adding-filters) to learn more about this functionality.

### Devices page general actions

The Devices page includes several features that can be found elsewhere in the platform:

#### Search

Use the search bar to search based on device name, serial name, tags, sources and so on. When searching, you do not need to provide an exact value. Entering a piece of the word will return results.

If you have searched on a particular parameter, the search criteria is retained as you navigate between different tabs within the platform.

To clear the search bar, click the **X** on the right side.

#### Sort columns

Sort columns within the table by selecting the column header you'd like to sort by. Select once to sort in ascending order, select again to sort in descending order.

Multi-column sorting is *not* currently supported.

#### Download results

Download tabular data from the table to a CSV using the **Download** icon button found the right side above the table column headers.

If there are no results in the table, the CSV export contains only headers and no user data.

**Note**: The CSV download has a limit of 2,000 rows. If you need to download more than 2,000 rows, click the download button and follow the prompts to get the export sent using a download link.

<figure><img src="/files/nUiEISP2DPdZ11Z9lhn4" alt=""><figcaption></figcaption></figure>

#### Share results

The **Share** button (on the right side of the Search bar) copies a link to this page, with the applied filters and selected columns, that can be easily pasted, bookmarked or shared with anyone who has the appropriate access to your Identity Intelligence tenant.

<figure><img src="/files/Ffpf7xNOv35SqZeV5KQl" alt=""><figcaption></figcaption></figure>


# Non-Human Identities (NHI)

2025.10.21

## Overview

Non-Human Identities (NHI) are accounts or entities within a business that aren’t linked to a specific person but are important for tasks like automation, services, or device operations. Examples include service accounts, shared mailboxes, network devices, and other machine identities that help run applications or provide access to different services.

In many organizations, machine identities make up a large part of all digital identities, about 43% ([1](https://www.securitymagazine.com/articles/98401-machines-make-up-43-of-digital-identities-on-enterprise-networks)) on average. Service accounts, a common type of machine identity, are usually set up to help certain applications or services function smoothly. Because these accounts often have higher levels of access and can reach sensitive information, they are a common target for attackers. To keep these accounts secure, it’s important to assign clear ownership, ideally tying each account to one or more people. This ensures that someone is always responsible for the account, even if team members change.

When organizations have a single, organized view of all their Non-Human Identities, it becomes much easier and quicker to see what exists, answer questions, and take necessary actions. This helps reduce security risks and strengthens overall protection. This article explains the types of data and features available on the Non-Human Identities page.

<figure><img src="/files/M4gpTjmxs4AhxD5pwOIm" alt=""><figcaption></figcaption></figure>

The left-hand navigation panel lets you filter and organize non-human identities by different attributes. This makes it easier to see detailed information and gain a better understanding of the identities in the system.

## NHI table elements

The section below details the fields that appear in the table, as well as the definition of each field:

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top">Element</td><td valign="top">Description</td></tr><tr><td valign="top">Name</td><td valign="top">The name or ID given to a non-human identity</td></tr><tr><td valign="top">Type</td><td valign="top">The functional category of the identity such as service account, breakglass, Agentic</td></tr><tr><td valign="top">Source</td><td valign="top">The identity source where a given NHI is connected.</td></tr><tr><td valign="top">Status</td><td valign="top">The current state of an app such as active, inactive, deprovisioned, etc</td></tr><tr><td valign="top">Providers</td><td valign="top">The logo icon(s) for the corresponding identity data sources where a user's account has been associated.</td></tr><tr><td valign="top">Tags</td><td valign="top"><p>Identity Intelligence will apply tags to non-human identities if it matches certain criteria, such as Key Expires Soon, Password Expires Soon or No Assignment Required, to highlight applications that may require action or clean up.</p><p>NHI can have more than one tag applied to it. All the tags present in your environment are displayed in the relevant Tags filter</p></td></tr><tr><td valign="top">Created</td><td valign="top">The date and time when the non-human identity was initially created</td></tr><tr><td valign="top">Last Seen</td><td valign="top">The date and time of the last login attempt, regardless of outcome, for a non-human identity across all providers</td></tr></tbody></table>

## Diving Deeper into NHI

Like many pages within Identity Intelligence, such as the [User 360](https://docs.oort.io/understanding-your-users/user-360) and [Applications](https://docs.oort.io/applications#diving-deeper-into-an-app) pages, clicking on the name of a non-human identity in the table will take you to a dedicated page with more detailed information about that specific NHI.

<figure><img src="/files/e6MUHNde1cKHMD7Q3ujS" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/IRu886boH7esBUF4yP0Z" alt=""><figcaption></figcaption></figure>

### Filters

Similar to the Users and Applications tables, the Non-Human Identities table can be filtered by various attributes, allowing you to view NHIs based on the criteria that matter most to you. You can also save your filtered results for future use or share them with your team.

To learn more about how to save filters, see [Saved Filters](https://docs.oort.io/understanding-your-users/users/saved-filters)

#### Applying Filters

All available filters are listed on the left side of the Non-Human Identities page. To add more filters, simply choose the values for the attributes you want to use. Once applied, these filters will appear in the search bar, as shown in the screenshot below.

<figure><img src="/files/RL3oTeBlXA3lpbWLhzRP" alt=""><figcaption></figcaption></figure>

The number of NHIs that you are currently viewing, based on the filters and searches used, will appear in the top left corner of the NHI table above the column headers.

To remove a filter, you can either deselect the attribute from the filters list on left hand side of the Non-Human Identities table or select the X on the right-hand side of the filter box within the search bar. If you select the X on the right end of the Search bar, it will remove all filters and search inputs except for the default Type filter.

After you have selected your filters, the filters are retained as you navigate between different areas within the platform.

To learn more about filters, refer to [Filter Interactions](https://docs.oort.io/applications#filter-interactions)

## Non-Human Identities (NHI) Checks

The Checks page provides high-level information about all checks across all identities in your environment, along with several filters, to quickly understand the state of your environment and assess potential areas in need of attention. The Checks page shows the full list of checks that are compatible with the identity data sources that are connected to your tenant. The checks in the table are ordered by compliance, from lowest to highest compliance, starting with the checks that have the most users failing. Checks that are in full compliance can be found at the bottom of the list.

To access a specific check related to Non-Human Identities, select the Non-Human Identities topic to view all checks related to NHIs.

<figure><img src="/files/MhU0J9qJ1ZLXGtpIpZGo" alt=""><figcaption></figcaption></figure>

The full list of available checks can be found [here](https://docs.oort.io/understanding-check-failures/oort-insights). Read more about the information presented and actions available on the Check Results page [here](https://docs.oort.io/understanding-check-failures/reviewing-check-results)


# Configuring Integrations

SSO Setup, Identity Providers, Communications, and Ticketing Systems

Identity Intelligence integrates with a number of identity providers (IdPs), Human Resources Information (HRIS) platforms, or critical business applications to ingest data about the users, Non-human identities (NHIs), devices, and applications present in these sources.\
\
With this data, Identity Intelligence not only creates a singular place to gain visibility into all these entity types across all your connected sources, but it also generates [insights](https://docs.oort.io/understanding-check-failures/oort-insights) and alerts that can be sent to various messaging platforms, ticketing systems or SIEMs so that your team to consume this valuable info in the tools already used throughout their day.

Use the cards listed below, which are categorized by integration , to review the available integration options and to jump to the relevant setup guide. Some cards open an overview page with multiple setup methods. You can also refer to the sidebar menu navigation on the lefthand side of this page to navigate directly to the docs for an integration of interest.

### Accessing your Identity Intelligence tenant with Duo Single Sign-On

Access to Identity Intelligence tenant is managed with Duo Single Sign-On or via Cisco Security Cloud Control, depending on your product licensing.\
\
**For Duo Advantage or Premier customers**

Review the [Duo setup guide](https://duo.com/docs/identity-security#overview) for more information on how to enable and configure access to Identity Intelligence via your Duo Admin Panel.

**For all other customers** (including Duo Essentials or Free customers)

Review the documentation for the respective Cisco product (Firewall, Secure Access, XDR, etc.) that entitles you to [limited usage](https://securitydocs.cisco.com/docs/duo/everywhere/solution/160003.dita) of Identity Intelligence via Security Cloud Control. Follow the Identity Intelligence setup steps associated with your licensed product.

## Identity Sources

Identity Sources are the primary data sources that Identity Intelligence uses to build entity graphs and analyzes to generate interesting insights, reports, or detections - also known as Checks.\
\
Multiple providers can be configured per tenant. Multiple instances of a singular provider can also be configured if needed (ie: you can add 3 integrations for Salesforce if your org has multiple, separate Salesforce environments that it would like to monitor)

For details on specific provider sources, such as how to configure an integration, what permissions are needed, etc, locate the integration that you are interested among the cards listed below, or via the side menu navigation, and review the specific article for that source.\
\
If you want to learn about how Identity Intelligence generally handles data type collection, refer to our article on [Managed Integrations](/integrations/managed-integrations).

### Identity Providers (IdPs) & Directories

These integration sources provide Identity Intelligence with data regarding core identities, access events and sign-in events. Many of them also share data regarding NHIs, Apps, and Devices.

<table data-column-title-hidden data-view="cards"><thead><tr><th>Title</th><th></th><th data-hidden data-card-cover data-type="image">Cover</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><a href="/pages/v4ZNfN82ohsPVeBfocY5">Auth0</a></td><td></td><td><a href="/files/X3t8KgEIIsYqSML87Umb">/files/X3t8KgEIIsYqSML87Umb</a></td><td><a href="/pages/v4ZNfN82ohsPVeBfocY5">/pages/v4ZNfN82ohsPVeBfocY5</a></td></tr><tr><td><a href="/pages/dYOIeosLQF477RBdNTuv">Microsoft Active Directory</a></td><td><sub><em>On-Premise Active Directory</em></sub></td><td><a href="/files/9Yqw7IKVp0YUUbaeBTe5">/files/9Yqw7IKVp0YUUbaeBTe5</a></td><td><a href="/pages/dYOIeosLQF477RBdNTuv">/pages/dYOIeosLQF477RBdNTuv</a></td></tr><tr><td><a href="/pages/Dg59qXz72ANRb8N9koXB">Microsoft Entra ID Data Integration</a></td><td><sub><em>Formerly Microsoft Azure AD</em></sub></td><td data-object-fit="contain"><a href="/files/rPxDj502aivxyPDS9k7C">/files/rPxDj502aivxyPDS9k7C</a></td><td><a href="/pages/Dg59qXz72ANRb8N9koXB">/pages/Dg59qXz72ANRb8N9koXB</a></td></tr><tr><td><a href="/pages/hkwzGYhiwvderh6dDLzP">Azure Event Hub Log Streaming for Microsoft Entra ID</a></td><td></td><td data-object-fit="fill"><a href="/files/PRtZhcOY1vtmM18naiwu">/files/PRtZhcOY1vtmM18naiwu</a></td><td><a href="/pages/hkwzGYhiwvderh6dDLzP">/pages/hkwzGYhiwvderh6dDLzP</a></td></tr><tr><td><a href="/pages/RiXesthnHApNsevqxweK">AWS Identity Center</a></td><td></td><td><a href="/files/4qdl917gy1wWGER6xtFb">/files/4qdl917gy1wWGER6xtFb</a></td><td><a href="/pages/RiXesthnHApNsevqxweK">/pages/RiXesthnHApNsevqxweK</a></td></tr><tr><td><a href="/pages/wm3XZ6win2W5vAtxalvF">Duo Security</a></td><td></td><td><a href="/files/zADDbXLDWn2mIYgh0w4z">/files/zADDbXLDWn2mIYgh0w4z</a></td><td><a href="/pages/wm3XZ6win2W5vAtxalvF">/pages/wm3XZ6win2W5vAtxalvF</a></td></tr><tr><td><a href="/pages/LJzD5gvOaSohBKAaMJcH">Google</a></td><td><sub><em>Covers both Google Workspace &#x26; Cloud Platform (GCP)</em></sub></td><td><a href="/files/QZFWYABGhbbqMarNgNwp">/files/QZFWYABGhbbqMarNgNwp</a></td><td><a href="/pages/LJzD5gvOaSohBKAaMJcH">/pages/LJzD5gvOaSohBKAaMJcH</a></td></tr><tr><td><a href="/pages/BV4f1nNanW7OXGFbl7UB">Okta Data Integration</a></td><td></td><td><a href="/files/FpspnI56ZsIzgwJW2512">/files/FpspnI56ZsIzgwJW2512</a></td><td><a href="/pages/BV4f1nNanW7OXGFbl7UB">/pages/BV4f1nNanW7OXGFbl7UB</a></td></tr><tr><td><a href="/pages/XTCHH7dfkOOsufLegMKW">Okta Log Streaming AWS EventBridge</a></td><td></td><td><a href="/files/FpspnI56ZsIzgwJW2512">/files/FpspnI56ZsIzgwJW2512</a></td><td><a href="/pages/XTCHH7dfkOOsufLegMKW">/pages/XTCHH7dfkOOsufLegMKW</a></td></tr><tr><td><a href="/pages/UBE4SOYpfD1ldQIEearo">Okta Workflows</a></td><td></td><td><a href="/files/FpspnI56ZsIzgwJW2512">/files/FpspnI56ZsIzgwJW2512</a></td><td><a href="/pages/UBE4SOYpfD1ldQIEearo">/pages/UBE4SOYpfD1ldQIEearo</a></td></tr><tr><td><a href="/pages/aQEvqpXEPLuMLcG0oAhh">PingFederate</a></td><td></td><td><a href="/files/Aw5geQkNBcXSj3C5Q4H8">/files/Aw5geQkNBcXSj3C5Q4H8</a></td><td><a href="/pages/aQEvqpXEPLuMLcG0oAhh">/pages/aQEvqpXEPLuMLcG0oAhh</a></td></tr><tr><td><a href="/pages/oQickSHJRpwOvLqGxqLb">SCIM Provisioning</a></td><td></td><td data-object-fit="contain"><a href="/files/RL2xxxbCBdDU1pyqO1Gg">/files/RL2xxxbCBdDU1pyqO1Gg</a></td><td><a href="/pages/oQickSHJRpwOvLqGxqLb">/pages/oQickSHJRpwOvLqGxqLb</a></td></tr></tbody></table>

### HRIS

HR data often acts as the source of truth for identities in the workplace, making them valuable sources of information\
\
Leverage these integrations to sync workforce data alongside IdP and other SaaS app data within Identity Intelligence and uncover gaps or process issues with user lifecycle flows (joiners, movers and leavers), automated processing, etc. that introduce risk to your organization.

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="image">Cover</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><a href="/pages/x2r3ZqVisMFsG9GQHQZg">Workday (RaaS)</a></td><td><a href="/files/tXLDYSHe6JUcGDB9UdMV">/files/tXLDYSHe6JUcGDB9UdMV</a></td><td><a href="/pages/x2r3ZqVisMFsG9GQHQZg">/pages/x2r3ZqVisMFsG9GQHQZg</a></td></tr><tr><td><a href="/pages/ZWE4By6PPDXOW1RezbKw">UKG Pro (via SCIM)</a></td><td><a href="/files/GZe4kGksafkEAR5C10aO">/files/GZe4kGksafkEAR5C10aO</a></td><td><a href="/pages/ZWE4By6PPDXOW1RezbKw">/pages/ZWE4By6PPDXOW1RezbKw</a></td></tr><tr><td><a href="/pages/335eDcPIiqw4qSZzuo3x">Google Sheets</a></td><td data-object-fit="contain"><a href="/files/rw3V0ZyBwYvg8EfVsbuk">/files/rw3V0ZyBwYvg8EfVsbuk</a></td><td><a href="/pages/335eDcPIiqw4qSZzuo3x">/pages/335eDcPIiqw4qSZzuo3x</a></td></tr><tr><td><a href="/pages/oQickSHJRpwOvLqGxqLb">SCIM Provisioning</a></td><td data-object-fit="contain"><a href="/files/RL2xxxbCBdDU1pyqO1Gg">/files/RL2xxxbCBdDU1pyqO1Gg</a></td><td><a href="/pages/oQickSHJRpwOvLqGxqLb">/pages/oQickSHJRpwOvLqGxqLb</a></td></tr><tr><td><a href="/pages/OF6lz1teUzAK8C2qrYsS">Manual Import (CSV)</a></td><td data-object-fit="contain"><a href="/files/7s63ktRqXJo3wADCo0tf">/files/7s63ktRqXJo3wADCo0tf</a></td><td><a href="/pages/OF6lz1teUzAK8C2qrYsS">/pages/OF6lz1teUzAK8C2qrYsS</a></td></tr></tbody></table>

### Critical business applications & other security tools

Organizations typically host a variety of critical and sensitive company info and processes across multiple, disparate tools. This type of info can include protected customer data, mission-critical systems to run your org's products or services, intellectual property and more, and are often forgotten when thinking of a wider org's enterprise security, making them interesting targets for attackers.

Identity Intelligence can integrate with several commonly used and often sensitive SaaS applications, as well as other security products, to ingest this data and leverage it as additional sources of information about the users, NHIs, devices, and apps within your environment to further enrich your IdP/directory data with more context and generate different types of insights.

<table data-view="cards"><thead><tr><th>Title</th><th></th><th data-hidden data-card-cover data-type="image">Cover</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><a href="/pages/ysHYWs2Ih0kWqeHtbwqo">Bloodhound Enterprise</a></td><td></td><td data-object-fit="contain"><a href="/files/XIrPBerOQ7s8hAduE5K5">/files/XIrPBerOQ7s8hAduE5K5</a></td><td><a href="/pages/ysHYWs2Ih0kWqeHtbwqo">/pages/ysHYWs2Ih0kWqeHtbwqo</a></td></tr><tr><td><a href="/pages/mae5HcL7tx3TOfNeEv4w">Datadog</a></td><td></td><td data-object-fit="contain"><a href="/files/j8OeiuoBs2igPEHzACwO">/files/j8OeiuoBs2igPEHzACwO</a></td><td><a href="/pages/mae5HcL7tx3TOfNeEv4w">/pages/mae5HcL7tx3TOfNeEv4w</a></td></tr><tr><td><a href="/pages/DObwFtK9iB0DymDQGkXF">Github</a></td><td></td><td><a href="/files/UcR5u9ZYlPeAW6JNxXR2">/files/UcR5u9ZYlPeAW6JNxXR2</a></td><td><a href="/pages/DObwFtK9iB0DymDQGkXF">/pages/DObwFtK9iB0DymDQGkXF</a></td></tr><tr><td><a href="/pages/UC2pqlDyk8s0UvaRyBkb">Jamf</a></td><td></td><td><a href="/files/nFO41hPRHsJOjoWC6EIR">/files/nFO41hPRHsJOjoWC6EIR</a></td><td><a href="/pages/UC2pqlDyk8s0UvaRyBkb">/pages/UC2pqlDyk8s0UvaRyBkb</a></td></tr><tr><td><a href="/pages/zprumPvP0XopveIECrdv">OpenAI</a></td><td></td><td><a href="/files/etVgqtDa9ztbgS6r0kjF">/files/etVgqtDa9ztbgS6r0kjF</a></td><td><a href="/pages/zprumPvP0XopveIECrdv">/pages/zprumPvP0XopveIECrdv</a></td></tr><tr><td><a href="/pages/crC0hgDn6TywE2WiX7RL">Salesforce</a></td><td></td><td><a href="/files/nxYvOIPs5aaOBirZBex2">/files/nxYvOIPs5aaOBirZBex2</a></td><td><a href="/pages/crC0hgDn6TywE2WiX7RL">/pages/crC0hgDn6TywE2WiX7RL</a></td></tr><tr><td><a href="/pages/xyssPIcddU4fOiTaSaxD">Snowflake</a></td><td></td><td><a href="/files/1ab7w3DgOX8bN8DCkMf5">/files/1ab7w3DgOX8bN8DCkMf5</a></td><td><a href="/pages/xyssPIcddU4fOiTaSaxD">/pages/xyssPIcddU4fOiTaSaxD</a></td></tr><tr><td><a href="/pages/q520MJ5SSNbMqRJy30mW">Webex Directory</a></td><td><sub><em>Docs for Webex as a notification target for alerts are in</em></sub> <a href="#notifications-and-outbound-integrations"><sub><em>Notifications</em></sub></a> <sub><em>section</em></sub></td><td><a href="/files/004lcbWKjedNiSlRnw0c">/files/004lcbWKjedNiSlRnw0c</a></td><td><a href="/pages/q520MJ5SSNbMqRJy30mW">/pages/q520MJ5SSNbMqRJy30mW</a></td></tr><tr><td><a href="/pages/OjzANwA75m8zgBIOQYyU">Shared Signals Framework (SSF) and SSF Receivers</a></td><td></td><td><a href="/files/PcLbiQvss6fhlZBlxVhF">/files/PcLbiQvss6fhlZBlxVhF</a></td><td><a href="/pages/OjzANwA75m8zgBIOQYyU">/pages/OjzANwA75m8zgBIOQYyU</a></td></tr><tr><td><a href="/pages/IcRlU467KWzNeAU4cvkL">AppOmni (via SSF)</a></td><td></td><td><a href="/files/IAWWboKtFnS7PR9mT7EB">/files/IAWWboKtFnS7PR9mT7EB</a></td><td><a href="/pages/IcRlU467KWzNeAU4cvkL">/pages/IcRlU467KWzNeAU4cvkL</a></td></tr><tr><td></td><td></td><td></td><td></td></tr></tbody></table>

## Notifications and outbound integrations

Use these integrations to route alerts, notifications, and event streams out of Identity Intelligence.\
\
Notification Targets are configured to allow Identity Intelligence to communicate information regarding checks and other alerts to an external system. These alerts can be sent via email, or via messaging systems including Microsoft Teams, Slack and Webex.

Identity Intelligence also integrates with a couple email providers to allow customers to further customize the notifications Identity Intelligene sends - for example, to change the domain address of the email so it is sent from your org's own domain.

Additionally, you can configure Identity Intelligence use our Webhook system to send alerts to any external systems that can accept webhook events, even if there is no native integration supported, and to build automated processes using this info from Identity Intelligence.

<table data-view="cards"><thead><tr><th>Title</th><th data-hidden data-card-cover data-type="image">Cover</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><a href="/pages/o7aIgs7QSnPllzCLYcLL">Email Notifications</a></td><td><a href="/files/HC1kyB5QQWzoAvTIvZPq">/files/HC1kyB5QQWzoAvTIvZPq</a></td><td><a href="/pages/o7aIgs7QSnPllzCLYcLL">/pages/o7aIgs7QSnPllzCLYcLL</a></td></tr><tr><td><a href="/pages/jMJDKJoRye0trRV4e4qK">Microsoft Teams Notification</a></td><td><a href="/files/RtGwIwg9MkeYlgvfWuF9">/files/RtGwIwg9MkeYlgvfWuF9</a></td><td><a href="/pages/jMJDKJoRye0trRV4e4qK">/pages/jMJDKJoRye0trRV4e4qK</a></td></tr><tr><td><a href="/pages/XdFkcNoUdnt8cqHgdckA">Slack</a></td><td><a href="/files/nsQMSWBR1Y00KfA97w9h">/files/nsQMSWBR1Y00KfA97w9h</a></td><td><a href="/pages/XdFkcNoUdnt8cqHgdckA">/pages/XdFkcNoUdnt8cqHgdckA</a></td></tr><tr><td><a href="/pages/p1ZxtSQttYnQ5JJDhT3o">Webex Notification</a></td><td><a href="/files/004lcbWKjedNiSlRnw0c">/files/004lcbWKjedNiSlRnw0c</a></td><td><a href="/pages/p1ZxtSQttYnQ5JJDhT3o">/pages/p1ZxtSQttYnQ5JJDhT3o</a></td></tr><tr><td><a href="/pages/L4f0PRVp9E96I5PKdZil">Webhooks</a></td><td><a href="/files/fCH0bbxJkJCqUjJoTdhE">/files/fCH0bbxJkJCqUjJoTdhE</a></td><td><a href="/pages/L4f0PRVp9E96I5PKdZil">/pages/L4f0PRVp9E96I5PKdZil</a></td></tr><tr><td><a href="/pages/Kt0fSqNJf070htfPRwc9">Mailgun</a></td><td><a href="/files/vzRDJvgGlmmtFEn1H7dT">/files/vzRDJvgGlmmtFEn1H7dT</a></td><td><a href="/pages/Kt0fSqNJf070htfPRwc9">/pages/Kt0fSqNJf070htfPRwc9</a></td></tr><tr><td><a href="/pages/wIJxtAcokpO119KMHd2F">SendGrid</a></td><td><a href="/files/gZMqZMWe4Fv7nk59LAIo">/files/gZMqZMWe4Fv7nk59LAIo</a></td><td><a href="/pages/wIJxtAcokpO119KMHd2F">/pages/wIJxtAcokpO119KMHd2F</a></td></tr></tbody></table>

## SIEMs

Use these integrations to stream Identity Intelligence detections into your org's analytics and security operations platforms (SIEM/SOAR).

<table data-view="cards"><thead><tr><th>Title</th><th></th><th data-hidden data-card-cover data-type="image">Cover</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><a href="/pages/CDoB9iA6wJUt1YaXtV57">Azure Sentinel SIEM</a></td><td></td><td><a href="/files/bjioV3X6WwFeqxVqYf6g">/files/bjioV3X6WwFeqxVqYf6g</a></td><td><a href="/pages/CDoB9iA6wJUt1YaXtV57">/pages/CDoB9iA6wJUt1YaXtV57</a></td></tr><tr><td><a href="/pages/muutvLOz6OdtiOJIE9uY">Splunk</a></td><td></td><td><a href="/files/j0jqfvDuH9sxCMyn1D7r">/files/j0jqfvDuH9sxCMyn1D7r</a></td><td><a href="/pages/muutvLOz6OdtiOJIE9uY">/pages/muutvLOz6OdtiOJIE9uY</a></td></tr><tr><td><a href="/pages/L4f0PRVp9E96I5PKdZil">Webhooks</a></td><td></td><td><a href="/files/fCH0bbxJkJCqUjJoTdhE">/files/fCH0bbxJkJCqUjJoTdhE</a></td><td><a href="/pages/L4f0PRVp9E96I5PKdZil">/pages/L4f0PRVp9E96I5PKdZil</a></td></tr></tbody></table>

## Ticketing and response workflows

Use these integrations to open and manage response tasks in external ticketing systems that are part of your organization's workflows.

<table data-view="cards"><thead><tr><th>Title</th><th data-hidden data-card-cover data-type="files">Cover</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><a href="/pages/TXxUvoyimnMP8CIY4Bee">Jira</a></td><td><a href="/files/s4mNEFvQWrGAHcKYEeb1">/files/s4mNEFvQWrGAHcKYEeb1</a></td><td><a href="/pages/TXxUvoyimnMP8CIY4Bee">/pages/TXxUvoyimnMP8CIY4Bee</a></td></tr><tr><td><a href="/pages/9cnKm2JxNFcyhvJmVfq8">ServiceNOW</a></td><td><a href="/files/t84U3itPAnv57EWcFLoL">/files/t84U3itPAnv57EWcFLoL</a></td><td><a href="/pages/9cnKm2JxNFcyhvJmVfq8">/pages/9cnKm2JxNFcyhvJmVfq8</a></td></tr></tbody></table>


# Managed Integrations

For each Provider Data Integration, Cisco Identity Intelligence needs to collect various data types to surface specific user information or alert on certain checks. We are constantly adding new data types, which can be a burden for Admins to add manually and stay on top of. We developed Managed Integrations to automatically enable data types for your integrations so that you no longer need to continuously check your data integrations to enable newly added data types.\
\
This article will explain how managed data types appear when configuring a new integration, how to modifying an existing integration's data types, as well as the differences between having a managed or unmanaged integration, and required vs additional data types.

### Creating a new data integration with managed data types

To create a new data integration:

1. Navigate to the **Integrations** tab within Identity Intelligence and select the blue **+ Add Integration button** on the right side of the screen
2. Select the data integration type you would like to configure (Okta, Azure, etc)
3. Fill in the require fields displayed on the General Settings tab and click the blue **Connect** button on this page

   <mark style="color:red;">**Note**</mark>**:** For most integrations, initial setup steps are required on the data integration side to create keys, secrets, etc needed to fill in the fields of the General Settings page. To learn more about what steps are needed for each specific data integration, refer to the documentation for the [desired integration](/integrations)
4. Once you have clicked **Connect**, Identity Intelligence will test the connection to the integration to ensure the information provided is correct, and will read the licenses/permissions associated with that data integration to determine what data types are available
   1. The connectivity test can take a few minutes to run. All the information is saved, so you can leave this page and come back later if needed
5. <mark style="color:green;">**If the connectivity test is successful:**</mark> Your integration will be saved with the appropriate managed data types based on the licensing/permissions/etc detected for the integration. On the Integrations page, you will see **Connectivity: Successful** and **Collection Status: Success** in the table for the given integration.
6. <mark style="color:red;">**If the connectivity test fails:**</mark> If you did not navigate away from this page during the connectivity test, you will see an error message. Review the data that was entered for each field on the General Settings page to make sure there are no mistakes. If there are no errors, click **Keep and Continue** to save the integration. On the Integrations page, you will see **Connectivity: Disconnected** and **Collection Status: Disabled** in the table for the given integration
   1. Click **Edit Settings** for the given integration on the **Integrations** tab
   2. Go to the **Advanced Settings** tab to review the data types. Here you may see some questions regarding license types, permissions, API permissions, etc that have been filled out according to the integration data received during the connectivity test
   3. Adjusting the answer to any of these questions will change which managed data types are selected for the integration. If any answers are incorrect, fill in the correct answer and confirm the necessary permissions, etc are correctly configured on the data source side as well
   4. Click **Save**

**For how to modify an existing integration,** [**jump to the section below**](#modify-an-existing-integration)**.**

### Managed vs unmanaged data integrations

By default, all data integrations are managed integrations upon creation. You can determine if a data integration is managed or unmanaged by looking at the **Advanced Settings** page for that integration.

{% hint style="info" %}
We highly recommend keeping integrations in **managed** mode to save time and make sure you aren't missing out on any data!
{% endhint %}

If your integration is ***managed***, when Identity Intelligence adds a new data type for a specific integration, the data type will automatically be enabled and collected for you (assuming the integration has the necessary license, permissions, etc for this data type ).

If your integration is ***unmanaged***, when Identity Intelligence adds a new data type for a specific integration, the data type will NOT be automatically enabled and collected. You will need to go to the specific Integration, select **Edit Settings**, go to the **Advanced Settings** tab for the integration and manually select each new data type to start collecting that data. Since new data types are added continuously, you will need to return to each integration page regularly to review any new data types that have been added and enable them.

To change a data integration to managed or unmanaged, use the toggle found on the **Advanced Settings** tab of each data integration.

<figure><img src="/files/FrylW7fTaAwzOCAzs6Do" alt=""><figcaption></figcaption></figure>

### Required data types vs Additional data types

Within each data integration, there can be **required data types** and **additional data types*****.***

**Required data types** are greyed out and cannot be disabled regardless of if the integration is [managed or unmanaged](#managed-vs-unmanaged-data-integrations). These are data types that must be enabled for the data integration to be configured and working properly. Identity Intelligence may add or remove new data types to the required data types, if needed.

**Additional data types** are most often associated with the questions at the top of the **Advanced Settings** tab because the additional data types will vary depending on a given data source's licenses, permissions, etc. These questions are answered automatically based on the connectivity test results, but the responses can be modified if needed, which will impact which data types are collected automatically and visible on this page.

{% hint style="info" %}
If the integration is not licensed for or doesn't have the correct permissions for a selected data type, you may see errors on the Integrations page noting that the data collection for that integration was not fully successful. If a data type is incorrectly enabled, Identity Intelligence will fail the data collection for *only* that disallowed data type, but will still collect for all other allowed data types.
{% endhint %}

<figure><img src="/files/JuY3oo3hMLU2cdJj2sAo" alt="" width="563"><figcaption></figcaption></figure>

**Additional data types** will be greyed out and not editable if the integration is [managed](#managed-vs-unmanaged-data-integrations). If the integration is [unmanaged](#managed-vs-unmanaged-data-integrations), any additional data types will have a check box next to it, indicating that this data type can be modified.

Though it is possible to deselect additional data types, ***we highly recommend not removing additional data types to ensure you are collecting as much information as possible for each user and to not impact any checks that may rely on this data.***

<figure><img src="/files/qyLWwXU7XVnKw6RQzf6S" alt="" width="563"><figcaption></figcaption></figure>

### Modify an existing integration's data types

Existing integrations can be modified via the Advanced Settings in a few ways related to this topic:

* Change an integration from managed to unmanaged, or vice versa, by using the toggle on the Advanced Settings tab to change between managed and unmanaged
* Add or remove additional data types by changing answer(s) to the questions and/or change integration to unmanaged to select/deselect any non-required data types (Note: Required data types cannot be removed)


# Auth0


# Auth0 Data Integration

04/2023

{% hint style="info" %}
[Go Back to All Integrations](/integrations)
{% endhint %}

## Overview <a href="#overview" id="overview"></a>

The Oort identity security platform reads a variety of user account data and event data to build a full picture of the identity security posture of your Auth0 tenant.

### Goal <a href="#goal" id="goal"></a>

The goal of this document is to serve as a guide to set up Oort with a data integration to your Auth0 tenant.

**Note** - Once this initial integration has been configured, **Auth0 Log Streaming** via the Oort app on the Auth0 Marketplace can be configured for near-real time analysis of events and identity-based threats.

For more information, please see the [Auth0 Log Streaming & Marketplace App](/integrations/auth0/auth0-streaming-integration) article.

## Auth0 Data Integration <a href="#auth0-data-integration-1" id="auth0-data-integration-1"></a>

Auth0 data integration is configured using a read-only API token.

### Permission requirements <a href="#permission-requirements" id="permission-requirements"></a>

To add the necessary configuration in Auth0, you need the Admin role.

### Auth0 Configuration Steps <a href="#auth0-configuration-steps" id="auth0-configuration-steps"></a>

1. Create a [Machine to Machine Application in Auth0](https://auth0.com/docs/get-started/auth0-overview/create-applications/machine-to-machine-apps) for use with Oort using the steps in the Auth0 documentation.
2. Select the Auth0 Management API as the API (this exists by default)
3. Add the following permission scopes:<br>

   <table><thead><tr><th width="257.6666666666667">Scope</th><th>Description</th><th>Purpose</th></tr></thead><tbody><tr><td><code>read:users</code></td><td>Read Users</td><td>Get a list of Users</td></tr><tr><td><code>read:logs</code></td><td>Read Logs</td><td>Read Auth0 Event logs</td></tr><tr><td><code>read:logs_users</code></td><td>Read logs relating to users</td><td>Read Auth0 User logs</td></tr><tr><td><code>read:guardian_factors</code></td><td>Read Guardian factors configuration</td><td>Get a list of Users and Authenticator configurations</td></tr></tbody></table>

   <br>
4. From the Application Settings tab, collect the Domain, Client ID, and Client Secret

### Oort Console Configuration <a href="#oort-console-configuration" id="oort-console-configuration"></a>

The rest of the configuration is completed in the Oort console.

1. Login to your Oort tenant
2. From the Integrations tab, click Add Integration and select Auth0
3. Enter a display name, the Auth0 Domain URL, the Client ID and Client Secret from your Machine to Machine app created above.
4. Click Save.
5. On the Integrations screen, click the 3 dot menu and select Test Connectivity.
6. Once successfully verified, click the same menu again and click **Collect Now** to begin initial data collection.

**NOTE** - Due to Auth0 API rate limiting, the initial data collection, including historical log data, may take up to 24 hrs. Your Oort technical contact will assist with any questions in this process.

<br>


# Auth0 Log Streaming & Marketplace App

05/2023

## Overview <a href="#overview" id="overview"></a>

The Oort identity security platform integrates with Auth0 tenants to collect user account information, sign-on, and application activity.

To enable near-real time analysis of user activity and events, Oort can leverage **Auth0 log streaming to an AWS EventBridge** streaming model. Then the Oort platform can capture the events in real-time.

<mark style="color:blue;">UPDATE:</mark> The Oort log streaming functionality is now supported as an app in the Auth0 Marketplace. This enables even faster setup and time to value of the Oort near-real time analysis capabilities.

For more information, please see the [Oort Identity Security app on the Auth0 Marketplace](https://marketplace.auth0.com/integrations/oort).

### Prerequisites <a href="#prerequisites" id="prerequisites"></a>

You must already have an active Auth0 API-based integration configured in your Oort tenant setup. For more information, please see the [Auth0 Data Integration article](https://docs.oort.io/docs/auth0dataintegration).

## Auth0 Log Streaming Configuration <a href="#auth0-log-streaming-configuration" id="auth0-log-streaming-configuration"></a>

### Permission requirements <a href="#permission-requirements" id="permission-requirements"></a>

This document assumes that you have the **Admin** role, which is required to modify the Monitoring section configuration of your Auth0 tenant.

### Auth0 Setup Steps <a href="#setup-steps" id="setup-steps"></a>

These are the steps you need to go through to set up the Auth0 log streaming to Oort.

1. Navigate to the [Auth0 Marketplace entry for AWS EventBridge](https://marketplace.auth0.com/integrations/amazon-log-streaming) and add the integration.
2. Log in to your Auth0 Dashboard, if you have not already.
3. Navigate to **Monitoring -> Streams**
4. Click **+ Create Stream**
   1. Note - if you have reached the maximum number of streams for you Auth0 tenant, please contact Auth0 support to discuss options for adding additional streams.
5. Select Amazon EventBridge and enter a unique name for your new Amazon EventBridge Event Stream.
6. Create the AWS Event Source by providing your AWS Account ID and AWS Region.
   1. For Oort Production, the AWS Account ID is 988897525199
   2. For Oort Staging, the AWS Account ID is 909617834444
   3. If you are unsure which account ID to use, please open a support case
   4. All Oort environments are in AWS Region **US East (Ohio)**\
      \
      **Note -** this information can be viewed in your Oort tenant in step 1 [below](#oort-integration-steps).

<figure><img src="/files/br8iGEN2qiL5tletE6md" alt=""><figcaption></figcaption></figure>

7. Click Save. Auth0 provides you with an Event Source Name. **Make sure to save your Event Source Name value.**
8. Complete the Oort steps below.

### Oort Integration Steps

Within your Oort tenant where the existing Auth0 data connection resides, complete the following steps:

1. Navigate to Integrations -> Auth0 -> Edit Settings and click the Event Streaming tab\
   ![](/files/PIa7mfV0Hx1BaviCWIJm)
2. Enter your **Event Source Name** from the Auth0 configuration above.
3. Check the box to indicate that you've created the associated stream in Auth0.
4. Click **Save**.
5. Oort will complete the remaining configuration for your Oort tenant and inform you once the log streaming is in place and functioning.

<figure><img src="https://oort-docs-site.netlify.app/static/c840009697d4dd4a567430b8d47c0ff3/a1253/2023-02-05_20-34-15.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://docs.oort.io/static/c840009697d4dd4a567430b8d47c0ff3/a1253/2023-02-05_20-34-15.png" alt=""><figcaption></figcaption></figure>


# Microsoft Active Directory

2026.08.06

## Overview

Active Directory (AD) remains the cornerstone of identity management for the majority of enterprises and is a frequent target for identity-based attacks. Cisco Identity Intelligence (CII) provides unified visibility and actionable insights across on-premises and hybrid identity environments by integrating directly with your AD using a secure, open-source PowerShell script.

This document provides a high-level overview, architecture, and the main benefits of AD integration. Detailed setup and technical instructions are maintained in the official [GitHub README](https://github.com/cisco-open/cisco-cii-adsync/blob/main/README.md), which you should consult for the latest configuration steps.

### What Problem Does This Solve?

Traditional Active Directory environments often lack unified visibility with cloud or other identity providers, making it challenging to detect risky accounts, misconfigurations, and weak access controls. By integrating Cisco Identity Intelligence (CII) with AD, organizations are able to:

* Gain a comprehensive identity inventory by merging on-prem AD users and groups with identities from SaaS, cloud, or other directories, creating a single source of truth for identity management and security analytics.
* Detect risks and hygiene issues automatically such as stale accounts, guest accounts, and non-compliant or weak password practices, reducing attack surface and supporting regulatory compliance.
* Classify users flexibly (e.g., service accounts, administrators, executives) through customizable rules, which enhances monitoring, access control, and the enforcement of targeted security policies.

### High-Level Architecture

The integration is designed for simplicity, security, and scalability:

* Open-Source PowerShell Script: A lightweight script, maintained by Cisco, runs on a server with AD connectivity—no agent installation needed on domain controllers.
* Provisioning and Credential Security: A one-time script is used to securely encrypt your CII API credentials on the host machine. Credentials are encrypted and tied to the specific machine for enhanced security.
* Data Collection & Sync: The main script queries AD for user and group data, then transfers it securely to Cisco Identity Intelligence using the SCIM protocol.

### Setup and Deployment

1. Create a new integration in CII UI.\
   To get started, log in to Cisco Identity Intelligence, go to Integrations > Add Integration > Active Directory. Follow the on-screen steps to give the integration a name, add an optional description, and generate your credentials. Once the credentials are generated, download them by clicking the Download json button.
2. Download scripts and follow README guidance.\
   Next, visit the [Active Directory Integration GitHub repository](https://github.com/cisco-open/cisco-cii-adsync) to download the integration scripts and follow the README for detailed guidance on installation, configuration, and customization.

All installation, configuration, and customization steps are documented and updated in the [GitHub README](https://github.com/cisco-open/cisco-cii-adsync/blob/main/README.md).\
Please refer to the README for:

* Prerequisites and permissions
* Script download and credential provisioning
* Script execution and scheduling (e.g., with Windows Task Scheduler)
* Customization options (attribute filtering, user classification, etc.)
* Troubleshooting and FAQs

For security best practices, always follow the official guidance in the README regarding credential management and script updates.

### Appendix

* License: The AD integration scripts are open source, licensed under the Apache License 2.0.
* Support: For technical issues not covered in the README, please reach out to Cisco support.


# Azure Event Hub Log Streaming for Microsoft Entra ID

2025.11.25

## Overview <a href="#overview" id="overview"></a>

The Cisco identity security platform integrates with Azure AD tenants via the Graph API to collect user account information, device information, and sign-on and application activity.

The Microsoft Graph API is rate limited, meaning that platforms such as CII can only pull a certain amount of data in a given interval before the API stops responding.

In some larger environments, Graph API does not provide enough bandwidth for the initial capture of historical user activity data (prior 30 days) or even the on-going user event data.

The solution to this limitation is to convert the sign-on activity data to an **Azure Event Hub streaming model**. Then the CII platform can subscribe to that Hub and capture the events in that way. Enabling streaming also addresses one of the requirements for enabling more frequent notifications for event or behavioral based identity threats if desired.&#x20;

### What is an Azure Event Hub? <a href="#goal" id="goal"></a>

Per [Microsoft documentation](https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-about) -

“Azure Event Hubs is a Big Data streaming platform and event ingestion service that can receive and process millions of events per second. Event Hubs can process and store events, data, or telemetry produced by distributed software and devices. Data sent to an event hub can be transformed and stored using any real-time analytics provider or batching/storage adapters.”

From the [Microsoft Event Hubs overview page](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-about), the diagram below depicts the high-level architecture and data flow.

In this diagram, the Event Producer (green) on the left side would be the Azure AD tenant and the Event Receiver on the right side would be your unique CII cloud tenant.

<figure><img src="/files/ffaW7nMugn5wRnOZARa7" alt=""><figcaption></figcaption></figure>

## Deploy Event Hub Streaming from Azure Marketplace (Beta Release)

### Prerequisites

* A completed and functioning [Microsoft Entra ID Data Integration](/integrations/azure-active-directory-integration) in your CII tenant
* Azure admin role / permissions sufficient to create the objects below.
* An existing EMPTY resource group to deploy this Azure Marketplace application to (in case of any resource group-level policies that could cause issues or conflicts).
* [Microsoft Entra ID B2C](https://learn.microsoft.com/en-us/azure/active-directory-b2c/overview) is *not* supported.

### Event Hub Tier and Scaling

The Beta Marketplace app will create the Event Hub object with the Standard Tier. Standard tier provides a maximum of 40 [throughput units](https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-scalability#throughput-units). For very, very large enterprises, if you feel Standard tier is not sufficient and a higher tier like the Premium tier is required, follow the [#manual-azure-event-hub-setup-process](#manual-azure-event-hub-setup-process "mention") below to manually create the Event Hub Namespace and Event Hub object with that their.

For Azure Event Hub pricing, please contact your Microsoft representative or see this [article](https://azure.microsoft.com/en-us/pricing/details/event-hubs/).

### Install Azure Marketplace Application

When pre-requisites steps are in place, proceed to install the Entra ID integration package to Azure.

1. In Azure, click on Create a Resource.
2. Search for Cisco Identity Intelligence and select Log Streaming
3. Select the Free Plan option and Create it
4. Enter all the details into the input boxes as per the table and example screenshot below.\
   \ <mark style="color:$danger;">**NOTE:**</mark> As mentioned above, the Azure Resource group specified here to deploy Marketplace offer MUST be empty. (It cannot have other existing resources already contained within it.)

<table data-header-hidden><thead><tr><th valign="top">Input Field</th><th valign="top">Description</th></tr></thead><tbody><tr><td valign="top">Region/location</td><td valign="top">Which Azure region Deployment Script should be deployed</td></tr><tr><td valign="top">Event Hub Namespace Name</td><td valign="top">Name of Event Hub Namespace to be created</td></tr><tr><td valign="top">Event Hub Name</td><td valign="top">Name for Event Hub</td></tr><tr><td valign="top">Consumer Group Name</td><td valign="top">Name for Consumer Group inside the Event Hub (Using <code>$Default</code> is acceptable)</td></tr></tbody></table>

<figure><img src="/files/XqtIJId0fxN6ijnc2HbE" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/GkYjPDNyazolw1Z26gmO" alt=""><figcaption></figcaption></figure>

5. Click C**reate**
6. The following objects will have been created in the Azure environment:
   1. Event Hub Namespace
   2. Event Hub
   3. Consumer Group

### Configure Event Hub Settings

The Marketplace app will create the Event Hub object with the Standard Tier with 1 Throughput Unit.

Auto-infate is not enabled by default, **but it should be, as one TU will not be sufficient for most mid to large organizations**. See [Event Hub Scalability](https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-scalability) and [Automatically Scale-up Event Hub](https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-auto-inflate) for more information.

To do so:

1. Navigate to the Event Hub Namespace, expand the **Settings** menu, and select the **Scale** pane from the left hand menu.
2. Under Auto-Inflate, check the Enable box and set the max throughput units.
3. Click Save.
4. Optional: When you apply the auto inflate configuration to increase throughput units, the Event Hubs service emits diagnostic logs that give you information about why and when the throughput increased. To enable diagnostic logging for an event hub, select **Diagnostic settings** on the left menu on the Event Hub page in the Azure portal. For more information, see [Set up diagnostic logs for an Azure event hub](https://learn.microsoft.com/en-us/azure/event-hubs/monitor-event-hubs-reference#resource-logs).

<figure><img src="/files/Ft6WeTrelrX052yrXME6" alt=""><figcaption></figcaption></figure>

### Connect Entra ID logs to the Event Hub

Connect Entra ID logs to the Event Hub using the Microsoft [instructions in this link](https://docs.microsoft.com/en-us/azure/active-directory/reports-monitoring/tutorial-azure-monitor-stream-logs-to-event-hub).

High-level steps and important notes:

1. Select the following Event types to stream (screenshot below) and select the Event Hub namespace and Event Hub created in the steps above.
2. Also, use the RootManageSharedAccessKey or another key with write permissions to the event hub namespace

<figure><img src="/files/Rpb9tL6qu49Wex8e8uzZ" alt=""><figcaption></figcaption></figure>

3. Save and confirm that events after visible in the Event Hub after \~15 min

Proceed to the [#create-a-shared-access-key-policy](#create-a-shared-access-key-policy "mention")section to finish the setup Event Hub setup.

## Manual Azure Event Hub Setup Process

{% hint style="info" %}
*This section contains the manual steps required to setup the Event Hub object for event streaming. Please use the* [#deploy-event-hub-streaming-from-azure-marketplace-recommended](#deploy-event-hub-streaming-from-azure-marketplace-recommended "mention") *steps above unless you require a bespoke configuration, such as an Event Hub tier other than Standard tier.*
{% endhint %}

To configure an Azure Event Hub and integrate it with Azure AD involves the following high-level steps.

### Step 1 - Create an Event Hub in Azure

Open and follow these Microsoft instructions - [Event Hub setup](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-create) - to complete initial the initial setup of the Event Hub namespace and event hub object.

High-level steps and notes:

1. **Create a Resource Group in Azure.** A Resource Group is associated with a subscription in Azure. You may already have a Resource Group associated with Azure AD or identity security that you want to use for this purpose.
2. **Create an Event Hub namespace**. Within the Event Hub namespace create, you will choose the Resource Group and Subscription. You also need to choose the Pricing Tier and Throughput units.\
   \
   For test environments and smaller production environments, **Basic** will likely suffice.\
   \
   For larger production environments, **Standard** should be selected, with the Enable **Auto-Inflate** selected.\
   \
   See [Event Hub Scalability](https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-scalability) and [Automatically Scale-up Event Hub](https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-auto-inflate) for more information. For Azure Event Hub pricing, please contact your Microsoft representative or see this [article](https://azure.microsoft.com/en-us/pricing/details/event-hubs/).<br>

   <figure><img src="/files/X40fMIlaL9GD97HbAk0r" alt=""><figcaption></figcaption></figure>
3. **Create the Event Hub object**. The default number of partitions will suffice. For the Retention period, set the time to a higher value than the default 1 hr, up to 24 hrs for Basic tier event hub namespaces.\ <br>

   <figure><img src="/files/FIbfcTg5FXu5gdJddLhz" alt=""><figcaption></figcaption></figure>
4. **Create a** [**Consumer Group**](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-features#consumer-groups) **for the event hub**. For Basic tier event hubs, the **$Default** consumer group is created automatically and can be used. For Standard tier, different consumer groups can be created if desired.\
   \ <br>

   <figure><img src="/files/VlVltqsfhT5fioM6x8Wp" alt=""><figcaption></figcaption></figure>

   <figure><img src="/files/mNpDNNtxQ30y8hE5RJwe" alt=""><figcaption></figcaption></figure>

### Step 2 - Connect Azure AD logs to the Event Hub

Connect Azure AD logs to the Event Hub using the Microsoft [instructions in this link](https://docs.microsoft.com/en-us/azure/active-directory/reports-monitoring/tutorial-azure-monitor-stream-logs-to-event-hub).

High-level steps and important notes:

1. Configure Azure AD event logs to export to your new Event Hub
2. Select the following Event types to stream (screenshot below) and select the Event Hub namespace and Event Hub created in the steps above. Also, use the RootManageSharedAccessKey or another key with write permissions to the event hub namespace\ <br>

   <figure><img src="/files/1wCtkileRtn3cFkLyy3W" alt=""><figcaption></figcaption></figure>
3. Save and confirm that events after visible in the Event Hub after \~15 min

## Create a shared access key policy

Note that Shared Access Policies can be created at the Event Hub namespace level or the Event Hub object itself. In this example, we'll create a policy at the namespace level.

1. Within the Event Hub namespace, select **Shared Access Policies** and then click **Add**.<br>

   <figure><img src="/files/2Bfa173pPCUEvK83waS2" alt=""><figcaption></figcaption></figure>
2. Give the policy a name, select **Listen** permissions and click **Create**.<br>

   <figure><img src="/files/DnRF29yt1odvANdMCz7N" alt=""><figcaption></figcaption></figure>
3. Click on the new policy and note the **Primary key** for use in the next steps.<br>

   <figure><img src="/files/5PUFlUYFeVLtOQPucEGn" alt=""><figcaption></figcaption></figure>

## CII Tenant Configuration for Azure Event Hub

The next step is to connect the Event Hub to the CII tenant.

{% hint style="info" %} <mark style="color:$warning;">**Note -**</mark> this section assumes that the Entra ID [data integration](https://docs.oort.io/integrations/providers/azure-active-directory-integration) is already in place for your tenant. If it is not, complete that integration first.
{% endhint %}

1. In the CII console, under the existing Entra ID integration, select **Edit Settings** and navigate to the **Event Streaming** tab.\ <br>

   <figure><img src="/files/LNcre8JsmZP2EwE0o2nY" alt=""><figcaption></figcaption></figure>
2. Toggle the slider button to **Use EventHub for Logs Streaming** to ON.
3. Enter the required information -
   1. EventHub Name - **NOTE**: this field is NOT just a display name. This name needs to match the name of the Event Hub object created under your Event Hub Namespace in Azure. In the screenshot below, you would enter `dev-event-hub` if that was the specific object you had created and configured.

<figure><img src="/files/I5Ego4IyOgMqJ7STdsDo" alt=""><figcaption></figcaption></figure>

2. Consumer Group (if not using $Default group)
3. Endpoint FQDN - this is typically of the form `<namespace>.servicebus.windows.net`
4. Shared Access Policy Name
5. Shared Access Primary Key Value

Click <mark style="color:blue;">**Save**</mark> to save the configuration.

### Troubleshooting <a href="#audience" id="audience"></a>

In the event that the following error is received when trying to collect data from the Event Hub:

{% code overflow="wrap" %}

```
 [ERROR] CNT: Failed to receive event hub data MessagingError: The supplied sequence number '0' is invalid. The last sequence number in the system is '-1'
```

{% endcode %}

The quickest solution to at this time is to simply delete the Event Hub object (not the entire Event Hub namespace) and recreate it. We would suggest altering the Event Hub name slightly and updating the event streaming configuration in the CII Entra ID integration, just for easy identification between the previous and current hubs.


# Azure Sentinel SIEM

2023.03.23

## Overview <a href="#overview" id="overview"></a>

Oort’s platform can tie into existing Sentinel workflows often used by Security Teams. This document will walk you through the process of setting up the App Registration inside of Azure AD.

<figure><img src="/files/LHAEXwFYbOWtaRAyAD7o" alt="SIEM Integration - Azure Sentinel"><figcaption><p>SIEM Integration - Azure Sentinel</p></figcaption></figure>

For more information, see this short overview video -

{% embed url="<https://youtu.be/GxLD6Oea3zw>" %}

## Azure Sentinel Integration - High-level Steps <a href="#azure-a-d-sso-integration-1" id="azure-a-d-sso-integration-1"></a>

This article follows the Microsoft Azure Sentinel tutorial - [Send data to Azure Monitor Logs by using a REST API (Azure Portal)](https://learn.microsoft.com/en-us/azure/azure-monitor/logs/tutorial-logs-ingestion-portal?source=recommendations#configure-application).

The following items will be needed to complete the integration inside of the Oort Console:

* [ ] Name / Description - (What Azure Sentinel instance are you connecting to?)
* [ ] Directory (tenant) ID
* [ ] Application (client) ID
* [ ] Application (client) Secret
* [ ] Logs ingestion Endpoint URI
* [ ] Custom Log Table Name
* [ ] Data Collection Rule Immutable ID

The sections below go into more detail on each of the steps.

## Azure Sentinel Configuration

1. Configure Azure application registration to authenticate against the API, [follow the instructions](https://learn.microsoft.com/en-us/azure/azure-monitor/logs/tutorial-logs-ingestion-portal?source=recommendations#configure-application).\
   \
   Note the **Application (client) ID**, **Directory (tenant) ID** and **secret value** for further setup.<br>
2. Create data collection endpoint, [follow the instructions](https://learn.microsoft.com/en-us/azure/azure-monitor/logs/tutorial-logs-ingestion-portal?source=recommendations#create-data-collection-endpoint).\
   \
   Note the **Logs ingestion URI** for further setup.<br>
3. Add a custom log table, [follow the instructions](https://learn.microsoft.com/en-us/azure/azure-monitor/logs/tutorial-logs-ingestion-portal?source=recommendations#create-new-table-in-log-analytics-workspace). Note the **table name** for further setup and be aware that there is `_CL` added automatically to the table name. We will need the full name with the `_CL` suffix.<br>
4. After clicking **Next**, the next step is to parse and filter a sample data set. In the Schema and transformation screen, review the [Microsoft instructions](https://learn.microsoft.com/en-us/azure/azure-monitor/logs/tutorial-logs-ingestion-portal?source=recommendations#parse-and-filter-sample-data) as a ***reference*** and then complete the process **using the data and steps below**.\
   \ <mark style="color:orange;">**Do not use the sample data and transform code provided in the Microsoft article. Use the the steps below.**</mark>\
   \
   ![](/files/HUjQ8EQDd5LlmwcOgWjq)

   1. Save content of this block in a local file or download the sample\_data file linked below. NOTE - this step is done outside of the Azure console.

   ```
   [{
           "activity": "END_USER__CHECK_FAILED",
           "targetResourceIds": {
                   "checkId": "no-mfa",
                   "login": "ciuser-noreply+cnt-dev-1661195950711@oort.io",
                   "userIds": ["28a8cf1a-9ff8-457c-8049-1dee4caa3177"]
           },
           "lastModified": "2022-11-02T12:28:07.850Z"
   }]
   ```

{% file src="/files/6xrZaQR9zWQkGGUw66qZ" %}

2. Click Browse for files and use the content of the file from the previous step for that purpose.
3. Data from the sample file is displayed with a warning that a `TimeGenerated` is not in the data.\
   ![](/files/UHk5JoU36vKVnvkNG7ek)\
   \
   Click **Transformation editor** to open the transformation and paste content of the below block (note that `source` is already present in the editor UI):<br>

   ```
   source
   | extend TimeGenerated = todatetime(['lastModified'])
   | project-rename activityDate = lastModified
   ```

   \
   ![](/files/GAFUUh6SZEj9NeLVsOse)
4. Click **Run** to view the results, click **Apply** to save the transformation, **Next** to get to the Review tab, and click **Create** to save the custom log.\
   ![](/files/7xvJfBPr6rSFQyCumQ3N)\
   ![](/files/zIdvLE4ZkfK311rUdXIT)
5. To collect information from data collection rule (DCR), [follow the instructions](https://learn.microsoft.com/en-us/azure/azure-monitor/logs/tutorial-logs-ingestion-portal?source=recommendations#collect-information-from-the-dcr).\
   \
   Note **`immutableId`** for further setup.
6. Next to assign permissions to the DCR, [follow the instructions](https://learn.microsoft.com/en-us/azure/azure-monitor/logs/tutorial-logs-ingestion-portal?source=recommendations#assign-permissions-to-the-dcr).\
   ![](/files/tvPrtlnLAzbekBaxa6tg)\
   \
   In the end, you will see your App Registration as a Monitoring Metrics Publisher under the Role Assignments tab.\
   ![](/files/8DNBAhOkHBsxgfaR4vKl)

### Azure Configuration Summary

After the setup above, you will have the following components in your Azure tenant. These objects will be used to setup a corresponding Sentinel SIEM integration in Oort:

* App registration (client ID, client secret, tenant ID)
* Logs Ingestion Endpoint URI from the data collection endpoint (DCE) to receive data over HTTP
* Data collection rule (DCR) immutable Id
* Custom table name in Log Analytics workspace (including the \_CL suffix)

## Oort Tenant Configuration for Sentinel

Within your Oort console, follow these steps to configure your Sentinel integration.

1. On the Integrations page, click Add Integration and scroll to the bottom of the page to select Azure Sentinel.\
   ![](/files/fn0DJnqYYdvfqTm08Bna)
2. Enter the information collected as shown below -\
   ![](/files/ivrOAOgdtoMtAFAs9Qdh)
   1. Name - for display purposes only
   2. Description (optional)
   3. Azure directory (tenant) ID
   4. App (client) ID
   5. App (client) secret
   6. Logs Ingestion Endpoint URI - this is a property of the data collection endpoint (DCE) created above
   7. Custom log table name
   8. DCR Immutable ID - this is found in the **JSON View** of the DCR
3. Click Save
4. On the Integrations page, click the 3-dot menu for the Sentinel integration and select Test Connectivity.\
   ![](/files/UECBXhKu6x1J3fnLod0V)

## Viewing your Oort logs in Azure Sentinel

By default, your Oort tenant will send **all** new Check failures for all checks to your Azure Sentinel custom table once every 24 hours.

To calculate any new check failures since the last data collection and analysis, you may want to do the following:

1. From the Integrations page, manually run collection from your Azure data integration using the **Collect Now** option.\
   ![](/files/Wc3vVcfAN0qrPoGjBjuH)
2. After that completes, from the Checks page, select **Run Checks Now**\
   ![](/files/OCNP9OjV4a0bIAknFiGm)

To view your logs in Azure Sentinel, do the following -

1. Navigate to your Azure Sentinel instance that contains the configuration you created for this integration.
2. Select **Logs** in the left nav pane.
3. Under **Queries**, run a new query with the name of the custom table created for this purpose.\
   ![](/files/FWwFl87ndq0izlV0KN50)
4. The Results will show the most recent check failures from your Oort tenant.
5. Expand individual rows of the results table to see details for each item.\
   ![](/files/inXqTpSauGXuPw7I85VI)

<br>


# AWS Identity Center

02/2026

## Overview

**If your AWS integration was created before March 2025 and has an Access Key ID field in its setup page, see** [**AWS User-Based Access**](/integrations/aws-1)**.**

Cisco Identity Intelligence can connect directly to AWS environments that use [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) and collect data regarding user accounts, activity, and more.

## Requirements

This integration requires the following:

* AWS IAM Identity Center is the replacement for the former AWS Single Sign-on (SSO) functionality (see [article](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html#renamed)). <mark style="color:red;">**The use of AWS IAM Identity Center is a hard requirement for this integration.**</mark> User data will not be collected without it.
* IAM Identity Center is configured for your AWS enterprise account at a parent level (organization), with child AWS accounts managed by that IAM Identity Center instance (example shown below)
* If IAM Identity Center is configured separately or discretely with individual AWS account instances, then you will need to set up a CII AWS integration for each account.

<figure><img src="/files/R70UHtpLdgsqaPEgehKi" alt=""><figcaption></figcaption></figure>

## AWS Configuration

<mark style="color:orange;">**Note**</mark> - This connection method requires only a role and policy. For ease of deployment, these are provided as a CloudFormation template within the CII UI. If you are unable to apply CloudFormation templates in your environment, speak to your support representative about configuring the role and policy manually.

1. In Identity Intelligence, go to **Integrations**, click **Add Integration**, select **AWS**, and open the **Initial Setup** tab. Click **Generate External ID** and save the generated value.<br>

   <figure><img src="/files/KAuchQ50SignOmQ0mmA0" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/aHBeoBUdfq6xcoyqUGW7" alt=""><figcaption></figcaption></figure>

2. On the same **Initial Setup** tab, download the CloudFormation template. You will need this template to create the CII role and policy in your AWS account. You do not need to be signed in to CII during the AWS part of the setup process. When you get back to CII you can click to add an AWS integration and pick up where you left off.
3. Navigate to the AWS CloudFormation service in the parent AWS account that has SSO confgured. Make sure you are in the same region where IdentityCenter is configured.<br>

   <figure><img src="/files/4rHoYqpVlnOJHf7GJeoj" alt=""><figcaption></figcaption></figure>
4. At the top right, click "create stack" and choose "with new resources" from the dropdown. On the next page, select "Use an existing template" and "Upload a template file" and then use the "Choose file" button to select the template you downloaded from CII. Click Next.<br>

   <figure><img src="/files/zOg9Edcj8zB99KSmtcri" alt=""><figcaption></figcaption></figure>
5. On the next page, choose a descriptive name for your stack and enter the CII-generated External ID. You will need the same External ID when finishing the setup in CII.<br>

   <figure><img src="/files/qw6VpkufgbCdf5gqmhP1" alt=""><figcaption></figcaption></figure>
6. None of the options on the next page need to change. Check off the acknowledgement at the bottom of the page and click "Next."<br>

   <figure><img src="/files/RN6pHU5tdDPqferfX7fN" alt=""><figcaption></figcaption></figure>
7. None of the options on the next page need to change. Scroll to the bottom and click "Submit."<br>

   <figure><img src="/files/3OeDE4qikOZvuNMvaJDU" alt=""><figcaption></figcaption></figure>
8. Wait until the following page shows that the stack creation is complete<br>

   <figure><img src="/files/mGjOPRF2xp5100HqG6HN" alt=""><figcaption></figcaption></figure>

### (Recommended) Configure AWS CloudTrail Lake

We recommend utilizing [AWS CloudTrail Lake](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html) queries to overcome API rate limit issues when collecting CloudTrail SSO events using the CloudTrail Lookup API.

#### About CloudTrail Lake

Below are the reasons that we recommend using CloudTrail Lake:

* **Bypasses rate limits:** The CloudTrail LookupEvents API is subject to strict rate limits, which can result in incomplete event collection or delays—especially when monitoring at scale.
* **Provides continuous and reliable collections:** CloudTrail Lake is built for high-volume, scalable querying. With it, Identity Intelligence can collect all required events in near-time, without being blocked by API throttling.
* **Provides custom retention:** CloudTrail Lake allows you to choose how long to retain events (e.g., 1 year), aligning to your organization's compliance and audit needs.
* **Provides security and control:** You control exactly what is shared. Identity Intelligence will only receive the event types chosen within the eventDataStore you create for the purpose of this integration.

Note: AWS only charges for storage and bytes scanned during queries. For more info, refer to [AWS's CloudTrail pricing documentation](https://aws.amazon.com/cloudtrail/pricing/).

#### Configuration Steps

#### Set Up a CloudTrail Lake Event Data Store

1. Login to your AWS Console and go to **CloudTrail**.
2. In the left menu, select **Lake**.
3. Select **Data stores**, then select **Create**.
4. **Give your data store a name** (e.g., `CII-Integration-Events`).
5. **Choose the event types you would like to esnd to your data store:**
   * Under **Event types**, select **Management events (All)**.
   * Optionally, you can also add **Data events** or **Insights events** if you wish to include them.
6. **Set your retention period** (e.g., 1 year).
7. Select **Create**.

**Important:** Only events generated after the data store is created are included. Historical events prior to setup are not available in the new data store.

#### Configure the IAM Policy to Allow Access

You must create an IAM role for Identity Intelligence with cross-account access and attach a policy that lets Identity Intelligence query your CloudTrail Lake data store.

1. Go to **IAM** > **Roles** > **Create role**.
2. Choose **Another AWS account** and enter our AWS Account ID (provided by us).
3. If AWS asks for an External ID, use the same CII-generated External ID.
4. Attach the policy from the codeblock below. Be sure to replace the placeholders for `<region>`, `<your-account-id>`, and `<eventdatastore-id>` with your actual values.

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cloudtrail:StartQuery",
        "cloudtrail:GetQueryResults",
        "cloudtrail:ListQueries",
        "cloudtrail:DescribeQuery"
      ],
      "Resource": "arn:aws:cloudtrail:<region>:<your-account-id>:eventdatastore/<eventdatastore-id>"
    },
    {
      "Effect": "Allow",
      "Action": [
        "cloudtrail:ListEventDataStores",
        "cloudtrail:GetEventDataStore"
      ],
      "Resource": "*"
    }
  ]
}


```

5. Complete role creation and take note of the **Role ARN**

## Identity Intelligence Configuration

1. Log in to Identity Intelligence. Navigate to the Integrations page, select the **Add Integration** button, select **AWS**, and open the **General** tab.

<figure><img src="/files/jouarTL89FYCEzXJOzhp" alt=""><figcaption></figcaption></figure>

2. Enter a display name for the integration
3. Enter the AWS region where the CloudFormation stack was created, in `us-east-2` format
4. Enter the 12-digit account ID of the AWS account where you set up the CloudFormation template
5. Enter the CII-generated External ID used in the CloudFormation stack. If you need to confirm it, it is visible in the CloudFormation stack parameters.
6. If you set up [CloudTrail Lake](#recommended-configure-aws-cloudtrail-lake), enter the value of **eventDataStoreId.**
7. Select **Connect**

<figure><img src="/files/mk5a8sbwZm4IG4mVzsOY" alt=""><figcaption></figcaption></figure>

### Test Connectivity

Once saved, on the Integrations page, you can click the 3-dot menu on the right side for your AWS integration and click **Test Connectivity**.

If successful with a "Connected" message in the lower left of the screen, you can click the 3-dot menu again and select **Collect Now** to begin collection.

<figure><img src="/files/ErQkJnC6HXY36EkZMIQO" alt=""><figcaption></figcaption></figure>


# Bloodhound Enterprise

2026.07.28 - Learn how to prioritize investigation and remediation around identities that are positioned along high-risk paths.

{% hint style="info" %}

## This integration is currently in <mark style="color:$warning;">Beta</mark> release phase.

{% endhint %}

### Overview

Identity Intelligence integrates with BloodHound Enterprise to ingest attack path findings and related identity exposure insights. This enables Identity Intelligence to help identify users that appear on identity-based attack paths—paths that represent sequences of relationships and permissions an adversary could abuse to escalate privileges or reach high-value assets (for example, by chaining group memberships, delegated rights, and administrative roles).

### Requirements

To complete this integration, you must have Administrative access to BloodHound Enterprise to generate API credentials.

You must also have administrative access to your Identity Intelligence tenant.

### Get Your Bloodhound Domain

You can find your BloodHound Domain by:

* Checking your BloodHound Enterprise welcome email or onboarding documentation
* Contacting your BloodHound administrator
* Looking at the URL in your browser when logged into BloodHound Enterprise

### Create a BloodHound Enterprise API Token

In BloodHound Enterprise, navigate to Settings (gear icon) > Administration > Users > Manage Users.&#x20;

You can generate an API token under your own user account if you have admin privileges, or, as a best practice, create a dedicated service user account—such as "cii\_svc"—with admin rights specifically for integration with CII.&#x20;

To generate the token, locate the user account intended for integration, click the three-dot menu next to that user, select "Generate API Token," provide a name for the token, and copy the displayed Token ID and Token Key.&#x20;

For more detailed guidance, refer to the BloodHound Enterprise product documentation.

{% hint style="info" icon="exclamation" %}
The Token Key is shown only once. If you lose it, you must revoke the token and create a new one. Store these credentials in a secure location.
{% endhint %}

**Note**: For security, Cisco recommends using the least privileged token that still allows the integration to function.

### Configure the BloodHound Enterprise integration in Identity Intelligence

1. In Cisco Identity Intelligence, go to Integrations.
2. Click Add Integration.
3. For BloodHound Enterprise, click **Add Integration.**

<figure><img src="/files/Yn1rVSPpUU6MbpjwqVpp" alt=""><figcaption></figcaption></figure>

1. In General Settings, enter:
   1. **Name** for this integration instance.
   2. **BloodHound Domain**: Your BloodHound Enterprise domain name.
   3. **Token ID:** API token ID you found earlier.
   4. **Token Key**: API token key you found earlier.
2. Click **Connect**.
3. To verify the connection, open the integration’s 3-dot menu and click **Test Connectivity**. The message `Connected!` displays to indicate that everything is working.


# Datadog

2025.11.17

{% hint style="info" %}
This integration is currently in Beta.
{% endhint %}

## Overview

This article provides a step-by-step guide to setting up the integration between Cisco Identity Intelligence and Datadog, enabling enhanced identity security monitoring and analytics. Cisco Identity Intelligence aggregates identity data from multiple identity providers (IdPs) and applications to deliver comprehensive visibility into identity activity and risks. Integrating Identity Intelligence with Datadog allows organizations to forward identity-related events and alerts to Datadog for monitoring, correlation, and incident response.

### Datadog API Information

General information about Datadog API authentication can be found [here](https://docs.datadoghq.com/api/latest/authentication/).

More specifically, API and Application Keys information can be found in the Datadog docs [here](https://docs.datadoghq.com/account_management/api-app-keys/).

> **API keys**\
> API keys are unique to your organization. An [API key](https://app.datadoghq.com/organization-settings/api-keys) is required by the Datadog Agent to submit metrics and events to Datadog.
>
> **Application keys**\
> [Application keys](https://app.datadoghq.com/organization-settings/application-keys), in conjunction with your organization’s API key, give users access to Datadog’s programmatic API. Application keys are associated with the user account that created them and by default have the permissions of the user who created them.

## Datadog API Setup

#### Create an API key

1. Go to <https://app.datadoghq.com/organization-settings/api-keys>, OR\
   \
   search for "API Keys" in the global search ("search on the top of the right side drawer") and select API Keys, OR

   <figure><img src="/files/3wTHmjLz4fIHUVVNXWXL" alt=""><figcaption></figcaption></figure>

Hover on the username on the bottom right and select API Keys

<figure><img src="/files/jvHqc7K4REnKt7QOiEtz" alt=""><figcaption></figcaption></figure>

2. Then click "+ New Key", give it a name and click "Create Key"
3. Copy the value, save it somewhere secure and close.

<figure><img src="/files/S6YtRmCRkGCuhXkd7HG6" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/BCe054Eh2Mm65ApI2ZYK" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/QRo35pCESHPBrnOZ83u4" alt=""><figcaption></figcaption></figure>

#### Create the Application Key

Go to <https://app.datadoghq.com/organization-settings/application-keys>, or use any of the methods described above, such as:

<figure><img src="/files/4r29O48UTSKDEqh7TqaD" alt=""><figcaption></figcaption></figure>

Then click "+ New Key", give it a name and click "Create Key"

<figure><img src="https://private-user-images.githubusercontent.com/31853965/514068934-3082bba3-6489-4b95-9b13-77374c70e4aa.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjM0MTQ3OTAsIm5iZiI6MTc2MzQxNDQ5MCwicGF0aCI6Ii8zMTg1Mzk2NS81MTQwNjg5MzQtMzA4MmJiYTMtNjQ4OS00Yjk1LTliMTMtNzczNzRjNzBlNGFhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTExMTclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUxMTE3VDIxMjEzMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVkMWVlMzg0NDAyNGJlYTAxYTg2MDkzMjIyZGZkZTc0OTcwMGM3ZGNkZTJiMjk5ZTZjNDJhODQ3MDBiOGE5MDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.EHFUTzWyNjoA2Y5JHLzQPvrSWLQX1TawF96CUQ9NAB0" alt=""><figcaption></figcaption></figure>

Click "Edit" next to the "Scopes" section and check the scopes:

* `audit_logs_read`
* `events_read`
* `user_access_read`
* `api_keys_read`
* `org_app_keys_read`\
  (use the search bar to filter for these values)

<figure><img src="https://private-user-images.githubusercontent.com/31853965/514068137-94e48b25-21ea-4d1b-817e-d901df7f832b.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjM0MTQ3OTAsIm5iZiI6MTc2MzQxNDQ5MCwicGF0aCI6Ii8zMTg1Mzk2NS81MTQwNjgxMzctOTRlNDhiMjUtMjFlYS00ZDFiLTgxN2UtZDkwMWRmN2Y4MzJiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTExMTclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUxMTE3VDIxMjEzMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTcxYzI3OWY5MjUyMDIzZWY0YzM2Y2QwMjYxNmEzZmFmZWE5Y2Q4MGRiYmJhMDM4MmFjOTFmYzYxNDQ0MTMwNDgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.OHJbuYNhFLnN4Dz7eN6GWJES1-Ewmx22avcWyPHJW0M" alt=""><figcaption></figcaption></figure>

Copy the Key and save it to a secure location.

<figure><img src="/files/UN0KMVL5hotyjJFuVgpJ" alt=""><figcaption></figcaption></figure>

#### Datadog API URLs

The default value is `datadoghq.com`. You can consult [this page](https://docs.datadoghq.com/getting_started/site/) for other Datadog app or API URLs.

## Identity Intelligence Integration Setup

1. Under Integrations, select **Add Integration** in the top right corner
2. Select the **Datadog** integration<br>

   <figure><img src="/files/14lVZDVKHY09oQuqAJMp" alt=""><figcaption></figcaption></figure>
3. Provide a display name and enter both the API key and App key. Change the Site URL if your Datadog tenant is located under a different URL.<br>

   <figure><img src="/files/5GlFf7ieGpwHBIsXBe6l" alt=""><figcaption></figcaption></figure>
4. Select **Connect**


# Duo Security

## Overview <a href="#overview" id="overview"></a>

Identity Intelligence's platform can analyze authentication events in Duo Security to give insights into how users are accessing your applications and using MFA. In order to provide Insights, you have to set up an integration between Duo Security and Identity Intelligence for analysis. This document will walk you through the process of setting up API access to Duo and will also walk you through the complementary setup inside of the Identity Intelligence console.

{% hint style="info" %}
**Attention Duo Customers!!**\
This documentation should only be utilized if you are configuring an ***additional*** Duo integration, ***after*** you have provisioned your Identity Intelligence tenant via the Duo Admin Panel.\
\
For instructions on how to provision your Identity Intelligence tenant, which includes an autogenerated Duo integration, via the Duo Admin Panel, please refer to the [Duo documentation](https://duo.com/docs/identity-security#provision-your-cisco-identity-intelligence-tenant).
{% endhint %}

## Duo Security Integration <a href="#duo-security-integration-1" id="duo-security-integration-1"></a>

### Understanding Identity Intelligence admin API permissions <a href="#add-api-permissions" id="add-api-permissions"></a>

There are different types of API types of permissions sets that can be used with your Identity Intelligence tenant and Duo.

* **Read-only admin API** - this is generated using a read-only permission (shown below) and used for data ingestion and analysis only.
* **Read/write admin API permissions** - this adds the `Grant write resource` permission in order to take advantage of the defined list of Identity Intelligence's [Remediation Actions](/understanding-your-users/remediation-actions#remediation-actions)
* **Auth API permissions** - one of the Actions available for an individual user is to send a push notification to the user's Duo enrolled mobile device. The Duo Auth API requires a separate auth key, as outlined below.

Remediation actions can only be taken by administrator or help desk roles in Identity Intelligence and are limited to the list in the above article.

**Identity Intelligence recommends configuring all of the APIs documented below for full functionality and the best experience.**

### Duo Admin API Configuration <a href="#duo-admin-api-configuration" id="duo-admin-api-configuration"></a>

You need to have admin access in Duo Security to add the necessary configurations using the following steps:

1. From the Duo admin console, select **Applications**
2. In the top right corner, select **Protect an Application**
3. Search for **Admin API** and select **Protect**
4. Add the necessary API Permissions

For **read-only** functionality, the API Permissions required are:

* **Grant Administrators** - Read
* **Grant read information**
* **Grant read resource**
* **Grant read log**

For **read/write capabilities** associated with [Identity Intelligence Remediation Actions](/understanding-your-users/remediation-actions), add the `Grant Write resource` to the list of permissions

* **Grant Administrators** - Read AND Write
* **Grant read information**
* **Grant read log**
* **Grant read resource**
* **Grant write resource**

5. Select **Save Changes**

### Duo Auth API Configuration

A Duo Auth API key is required for the Send Push Notification functionality mentioned above.

In the Duo Admin panel\
1\. Select **Applications** and then select **Protect Auth API**

<figure><img src="/files/HHGxdxKPsdWyV9wr4bQP" alt=""><figcaption></figcaption></figure>

2. Copy the Integration key and secret key for use in the Identity Intelligence platform configuration
3. Scroll down and <mark style="color:red;">give the Auth API a name that will indicate to end users that the push is from your company</mark>

<figure><img src="/files/qwOag6oVxjSLVwYhPpil" alt=""><figcaption></figcaption></figure>

### Identity Intelligence Configuration <a href="#oort-configuration" id="oort-configuration"></a>

Follow the steps below to connect additional Duo integrations, other than the integration that was automatically created via Duo.

Navigate to **Integrations -> New Integration -> Duo**

Give the integration a display **name**.

Enter the **API hostname, Integration key, and secret key** into the Identity Intelligence console.

<mark style="color:red;">**NOTE**</mark> - the API hostname must not contain a prefix like `https://` - it should only be of the form\
`api-xxxxxxx.duosecurity.com`

![](/files/yGicdrgpGKn5GFHACkuJ)

Slide the button to enable Support Push Verification.

Enter the <mark style="color:green;">**Auth API**</mark>**&#x20;Integration Key** and **Secret Key.**

<figure><img src="/files/7LBRHbskcEGUsNiJxIlT" alt=""><figcaption></figcaption></figure>

On the Advanced Settings tab, review the [Managed Integration](/integrations/managed-integrations) info to ensure that you are collecting the relevant data types

Click **Save**.

### Test Connectivity and Start Collection

On the Integrations page, click the bar for the new Duo integration and select **Test Connectivity** from the menu.

![](/files/7z2gSrQxaCLbN0b1r242)

After testing successfully, click the **Collect Now** button to begin initial data collection immediately.

### Event Streaming

Event streaming can only be configured for Duo integrations for Identity Intelligence that were provisioned from the Duo Admin Panel. Enabling the event streaming is done on Step 2 of the wizard while provisioning, or it can be done after provisioning by going back to Step 2 of the wizard.

If you are creating a *second* Duo integration in Identity Intelligence (in addition to the one autogenerated upon tenant creation), event streaming is not currently supported for additional Duo integrations.


# Email Notifications

08/2024

Email notifications are one of the quickest and easiest ways to get started with outbound notifications for Cisco Identity Intelligence.

## Setup

Setting up an email notification target requires the full administrator role.

1. From the Integrations page, click Add Integration.
2. Select Add Email Target
3. Enter a target display name and description, if desired<br>

   <figure><img src="/files/TaX6i5NwD597zYjGxHaf" alt="" width="563"><figcaption></figcaption></figure>
4. Choose the desired notification types to send to the notification target. A notification target can be used for one or multiple purposes. There are 3 options available:

* Check Failures - Notification Target will be used to alert on check failures where the target is configured via the[ Check Settings](/understanding-check-failures/customizing-checks#notification-settings)
* Data Collection - Notification Target will be used to alert when errors are encountered when collecting data from the integrations or when an on-demand collection is finished (via "Collect Now" button for an integration)
* Communication - Notification Target will be used as the "Reply-To" header value to the address in the configured notification target instead of a generic no-reply Identity Intelligence email address. Learn more in the [Mailgun](/integrations/mailgun-integration) or [SendGrid](/integrations/sendgrid-integration) documentation

5. Enter the email address or distribution list, and any additional copy-to addresses. Use a comma-separated list to support multiple addresses

* **Select Checks Manually**: Check the box next to everything to check for. Use the search field to search for checks by name.\
  \
  When you're finished, click **Add Checks** and select the check box next to each check to add.
* **Select Checks by Category**: Check the box next to every Severity (or click **All** to select all severities), then check the box next to every **Topic** (or click **All** to select all topics).\
  \
  Example:

<figure><img src="/files/5fBKjt8U31TWy5zlrxOv" alt=""><figcaption></figcaption></figure>

5. Select **Save**
6. To test the new target from the Integrations page, select the 3-dot menu for it on the right and select **Test Connectivity**<br>

   <figure><img src="/files/KacdzW3pUKDQv3QM4yrN" alt=""><figcaption></figcaption></figure>

## Add the Email Target to One or More Checks

1. With the new email notification target in place, navigate to the Checks page.
2. Select the **Add +** button in the column and select one or more Checks where you would like email notifications for new failing users. You can also test the functionality from this point<br>

   <figure><img src="/files/zI843dVTCJTfcRrj252w" alt=""><figcaption></figcaption></figure>

## Notification Format and Frequency

Email notifications differ slightly from chat app notifications like [Slack](/integrations/slack-notification-integration) and [Microsoft Teams Notification](/integrations/microsoft-teams-notification-integration) in the following way:

1. By default, **one** email is sent per check per day, with a summary report of up to 20 users.
2. If more than 20 new users failed that particular check in a 24 hr period, then use the "See Report" link at the bottom of the email to view the list of users in the Identity Intelligence dashboard


# Microsoft Entra ID Data Integration

2026.07.20

## Overview <a href="#overview" id="overview"></a>

Identity Intelligence’s platform can analyze authentication events in Microsoft Entra ID (formerly Azure AD) to give insights into how users are accessing your applications. In order to provide Insights, you have to set up an integration between Microsoft Entra ID and Identity Intelligence for analysis. This document will walk you through the process of setting up API access inside of Entra ID and will also walk you through the complementary set up inside of the Identity Intelligence console.

### Important Notes <a href="#next-steps" id="next-steps"></a>

* <mark style="color:blue;">**UPDATE \[2026.07.20]**</mark> - Please note the updated API permissions required to collect Entra ID agent data types for non-Marketplace based integrations - see [#add-api-permissions-1](#add-api-permissions-1 "mention") section below. After adding the API permissions, review the Advanced settings tab of the integration and set the corresponding data type selection to `Yes`<br>

  <figure><img src="/files/jl0qnTmsYJwroBxC0qKD" alt=""><figcaption></figcaption></figure>
* <mark style="color:blue;">**UPDATE \[2025.08.20]**</mark> - Cisco Identity Intelligence now has Beta releases of Microsoft Azure Marketplace apps for both the primary Data Integration (this article, see [below](#azure-marketplace-app-data-integration-beta-release)) AND the [Azure Event Hub](/integrations/azure-active-directory-event-hub-streaming) streaming capability.
* <mark style="color:$warning;">**Microsoft Licensing**</mark> - Please see the [#azure-a-d-sign-in-log-availability](#azure-a-d-sign-in-log-availability "mention") section below for the implications of Microsoft product licensing on Identity Intelligence data collection for specific data types.
* [Microsoft Entra ID B2C](https://learn.microsoft.com/en-us/azure/active-directory-b2c/overview) is *not* supported.
* This integration is for Entra ID data collection. For SSO to your Identity Intelligence tenant using Entra ID, please use Duo SSO with Entra ID as an external authentication source ([article](https://duo.com/docs/sso#configure-the-duo-single-sign-on-app-in-entra-id)).
* If this is a brand new Microsoft Entra ID tenant, for instance a development environment, then make sure to enable a Microsoft Entra ID subscription and resource provider.

### Entra ID Integration <a href="#azure-a-d-integration" id="azure-a-d-integration"></a>

At a high-level, Entra ID has different activity log types which each contain different sets of information. Identity Intelligence will ingest the Sign-ins and audit logs, as well as the Directory data. Sign-in and audit logs are available through the Microsoft Entra ID portal.

* Sign-ins – Information about sign-ins and how your resources are used by your users.
* Directory - User and Group information from your Entra ID.

### Entra ID Sign-in Log Availability <a href="#azure-a-d-sign-in-log-availability" id="azure-a-d-sign-in-log-availability"></a>

Sign-in logs are available via Microsoft Graph API for 30 days inside Entra ID with a Premium subscription (P1 or P2).

*<mark style="color:red;">**Note**</mark>* - sign-in logs are NOT currently available via Graph API with non-P1 or P2 Entra ID subscriptions, e.g Microsoft Entra ID Free.

* Reference:
  * **Data Retention** - <https://docs.microsoft.com/en-us/azure/active-directory/reports-monitoring/reference-reports-data-retention>
  * **Sign-in Logs** - <https://docs.microsoft.com/en-us/azure/active-directory/reports-monitoring/concept-sign-ins>

Based on this 30 day retention, Identity Intelligence will start ingestion with the last 30 days of logs. On subsequent log collections, Identity Intelligence will ingest only the latest logs.

## Manual App Registration Setup Steps <a href="#setup-steps" id="setup-steps"></a>

This section details the manual process to create the Entra ID app registration for Identity Intelligence data collection.

{% hint style="info" %}
You do not need to complete this section if you prefer to use the [#azure-marketplace-app-data-integration-beta-release](#azure-marketplace-app-data-integration-beta-release "mention") method detailed below. Skip to that section.
{% endhint %}

There are 2 high-level steps you need to go through to set up your Microsoft Entra ID API key then connect it to Identity Intelligence.

1. Setup App registration with API permissions and create an app secret in Microsoft Entra ID
2. Add Entra ID API details to Identity Intelligence Dashboard

### Setup App and API secret in Microsoft Entra ID <a href="#setup-app-and-api-secret-in-azure-a-d" id="setup-app-and-api-secret-in-azure-a-d"></a>

Next, we will create the app in your Microsoft Entra ID tenant, assigning the correct permissions, and add an API secret.

Add an app in your Microsoft Entra ID tenant

1. Go to ***Microsoft Entra ID...App registrations***
2. Select ***New registration***

   <figure><img src="/files/M2oQab8xKf2p3YTbRnJD" alt=""><figcaption></figcaption></figure>
3. Fill in the details for the new app

   * Name this app "Identity Intelligence Data Integration" or something similar
   * Make sure to select “*Accounts in this organizational directory only (`Your Entra ID tenant name` only – Single Tenant)*”
   * **No redirect URI is required - leave these fields blank**

   <figure><img src="/files/n56YQ64HscpNzzVDh4jj" alt=""><figcaption></figcaption></figure>
4. Select ***Register***
5. Save the following information as it will get entered into the Identity Intelligence dashboard.
   * *Application (client) ID*
   * *Directory (tenant) ID*

<figure><img src="/files/8SXojw6E6IxCAgvFyIpj" alt="" width="563"><figcaption></figcaption></figure>

### Understanding Identity Intelligence API Permissions for Entra <a href="#add-api-permissions" id="add-api-permissions"></a>

There are two sets of API permissions that can be used with your Identity Intelligence tenant

* **Read-only** - used for data ingestion and analysis only
* **Read/write** (which includes the first set of read-only permissions) - read/write permissions are used for the defined list of Identity Intelligence [Remediation Actions](/understanding-your-users/remediation-actions).

Remediation actions can only be taken by administrator or help desk roles in Identity Intelligence and are limited to the list in the above article. This table outlines the relationship from remediation actions to the API permissions.

<table><thead><tr><th width="374">Write Permission</th><th>Associated Remediation Type</th></tr></thead><tbody><tr><td><code>User.ReadWrite.All, User.ManageIdentities.All, Directory.ReadWrite.All</code></td><td>Update User Type, Delete Guest User</td></tr><tr><td><code>User.ReadWrite.All, Directory.ReadWrite.All</code></td><td>User Log out</td></tr><tr><td><code>UserAuthenticationMethod.ReadWrite.All</code></td><td>Reset MFA</td></tr><tr><td><code>User.ReadWrite.All</code></td><td>Delete Guest User</td></tr></tbody></table>

### Add API Permissions

The instructions below are shown for full read/write capabilities. For a read-only model, please omit the read/write API permissions.

1. Go to ***API Permissions*** under your newly created Identity Intelligence Integration app
2. Select ***Add a permission***<br>

   <figure><img src="/files/3wilnaB7oCT3CSAEWvfE" alt=""><figcaption></figcaption></figure>
3. Select ***Microsoft Graph***<br>

   <figure><img src="/files/wJjYTPwmzrVQ6rf6gZJN" alt=""><figcaption></figcaption></figure>
4. Select ***Application Permissions***
   * NOTE - Permissions to be added below must <mark style="color:red;">**ALL**</mark> be of type **Application**
5. **Read-only permissions:** Please repeat steps 2 through 4 for all of the following permissions. See notes for details.
   * AgentCardManifest.Read.All
   * AgentIdentity.Read.All
   * AgentIdentityBlueprint.Read.All
   * AgentIdentityBlueprintPrincipal.Read.All
   * AgentInstance.Read.All
   * Application.Read.All
   * AuditLog.Read.All
   * DeviceManagementApps.Read.All (<mark style="color:red;">requires Intune license</mark>)
   * DeviceManagementConfiguration.Read.All (<mark style="color:red;">requires Intune license</mark>)
   * DeviceManagementManagedDevices.Read.All (<mark style="color:red;">requires Intune license</mark>)
   * Directory.Read.All
   * Group.Read.All
   * GroupMember.Read.All
   * IdentityRiskEvent.Read.All
   * IdentityRiskyAgent.Read.All (<mark style="color:red;">requires P2 license</mark>)
   * IdentityRiskyServicePrincipal.Read.All (<mark style="color:red;">requires P2 license</mark>)
   * IdentityRiskyUser.Read.All (<mark style="color:red;">requires P2 license</mark>)
   * MailboxSettings.Read
   * Policy.Read.All
   * Reports.Read.All
   * Synchronization.Read.All
   * User.Read.All
   * UserAuthenticationMethod.Read.All
6. **Read/write permissions** for Remediation Actions:
   * User.ReadWrite.All
   * User.ManageIdentities.All
   * Directory.ReadWrite.All
   * UserAuthenticationMethod.ReadWrite.All
7. Once added to the list, select ***Add Permissions,*** then select ***Grant admin consent**.* Then select ***Yes***<br>

   <figure><img src="/files/JCMbYqnG3t3ZKFHg9kyX" alt=""><figcaption></figcaption></figure>

### Create Client secret <a href="#create-api-secret" id="create-api-secret"></a>

1. Go to ***Certificates & Secrets*** under your Identity Intelligence Integration app
2. Select <mark style="color:blue;">**New client secret**</mark>
3. Fill in the description, such as "Identity Intelligence Integration", and the desired Expiration timeframe for the secret, (i.e. 12 months). Select ***Add***<br>

   <figure><img src="/files/BeOcmCo7fi34SC0sbcfQ" alt=""><figcaption></figcaption></figure>
4. Save the Secret ID and Secret Value, as these will be used later in the Identity Intelligence dashboard

   * Select the **copy** icon to copy and save both to a secure location
   * <mark style="color:$warning;">**Important**</mark><mark style="color:$warning;">:</mark> Once you leave this page you **WILL NOT** be able to get the secret value again. If lost, you will have to delete and create a new one

   <figure><img src="/files/cFWl3pYbqK6OS53K7iRo" alt=""><figcaption></figcaption></figure>
5. You can now proceed to the section [#add-azure-a-d-integration-to-oort-dashboard](#add-azure-a-d-integration-to-oort-dashboard "mention")\ <mark style="color:$warning;">Skip the subsequent section</mark> referencing the [#azure-marketplace-app-data-integration-betarelease](#azure-marketplace-app-data-integration-betarelease "mention")

### Assign Azure RBAC Roles

For Identity Intelligence to be able to monitor application access to your Azure Resources, improving its analysis and accuracy, the app also needs to be assigned an Azure Role. To do so, follow the steps below:&#x20;

1. Go to the Azure Portal and navigate to **Management Groups**
   1. **Note:** If you haven’t started working with Management Groups, select **Get Started with Management Groups** and wait a few minutes while Azure sets up your Root Management Group
2. Select **Tenant Root Group**

<figure><img src="/files/C7Z5kLdfUFGjkGYluqOm" alt="" width="563"><figcaption></figcaption></figure>

3. In the left panel, select **Access control (IAM)**

<figure><img src="/files/eENr70oltDb4txNXu7PO" alt="" width="563"><figcaption></figcaption></figure>

4. Select **Add** and then choose **Add role assignment**
5. Search for and choose the **API Management Service Reader Role** and select **Next**

<figure><img src="/files/q9qDHypfRiUGu8lvxGrl" alt="" width="563"><figcaption></figcaption></figure>

6. Pick **Assign access** to “User, group or service principal”, and in **+ Select**\
   **members**, select the name given to your Identity Intelligence integration app

<figure><img src="/files/8A59sLqv0Yqc0WQTfhyN" alt=""><figcaption></figcaption></figure>

7. Select **Review + assign**
8. Repeat steps 3-7 for the “Reader” role assignment

{% hint style="info" %}
**Note:** You may have to first elevate your permissions to be able to assign an\
Azure role to the Root Management group. \
\
If you get an error stating that you are not authorized to perform any of the above actions, please follow the instructions <mark style="color:$danger;">here</mark>, and then resume the instructions in this section from step 1 onwards
{% endhint %}

## Azure Marketplace App Data Integration (Beta release)

### Notes

At the present time, when the Azure Marketplace app is updated, for example to include new API permissions for new features and data collection, an existing instance of the application in your Entra tenant is <mark style="color:$warning;">not</mark> updated.

The app must be removed and reinstalled to obtain the latest version.

### Pre-requisites

* An <mark style="color:$warning;">Azure Subscription</mark> - this is separate from an Entra ID P1 or P2 license referenced above and is required for the creation of User-assigned Managed Identities and Resource Groups.
* Azure / Entra admin permissions sufficient to
  * Create a User-assigned Managed Identity
  * Add a role to a Managed Identity which allows it to create App Registrations and Service Principals - Application Administrator role contains the minimum permissions required
* Azure Resource group to deploy Azure Marketplace application. Consider creating or using an EMPTY resource group, in case of any resource group-level policies that may cause issues

### Create Managed Identity and assign Entra ID role

1. Go to portal.azure.com
2. Select ***Create a resource***<br>

   <figure><img src="/files/5UjipkHoVkgGOSlLaVvQ" alt=""><figcaption></figcaption></figure>
3. In the search box, enter “**user-assigned managed identity**” and select the resource to create it<br>

   <figure><img src="/files/2CadR6GjQkd8cOhujE6z" alt=""><figcaption></figcaption></figure>
4. On the creation screen, enter the following info: Subscription, Resource Group name for a new resource group, Identity name, and Region

<figure><img src="/files/7qr746oe4tfmux136ApX" alt=""><figcaption></figcaption></figure>

5. Proceed with ***Review and Create*** step. Create the managed identity
6. Go to Entra ID and navigate to roles<br>

   <figure><img src="/files/FNYgDhBOQYQM4RLA8K8C" alt=""><figcaption></figcaption></figure>
7. In All roles, find ***Application Administrator*** role and select the <mark style="color:blue;">number</mark> in ***Assignments*** column<br>

   <figure><img src="/files/hpHDS8rVhnTgQXyFS5BE" alt=""><figcaption></figcaption></figure>
8. Select ***Add assignments***. Locate your managed identity by name, and assign it to the role. Once you have completed these steps, proceed to the instructions in the next section of the documentation<br>

   <figure><img src="/files/lShDccgc79AMLBPBbPEH" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/NI45OgnKuXs16hoV7Lmo" alt="" width="550"><figcaption></figcaption></figure>

### Install Azure Marketplace Application

1. Within Azure or Entra ID portal, select ***Create a resource***
2. Search for "**Cisco Identity Intelligence**" and select ***Entra ID Data Integration***<br>

   <figure><img src="/files/BTQilWlD8v0KPlNLn7Pe" alt=""><figcaption></figcaption></figure>
3. Select the **Free Plan** option and Create it
4. Enter all the details into the relevant input boxes as per the table and example screenshot below\ <mark style="color:$danger;">**NOTE:**</mark> As mentioned above, the Azure Resource group specified here to deploy Marketplace offer *MUST* be empty. It cannot have other existing resources already contained within it.<br>

   <figure><img src="/files/vLhT0OJJmpjlQt5jpo8m" alt="" width="563"><figcaption></figcaption></figure>

   <figure><img src="/files/nPhiioeNPSqN9j6kyUfj" alt="" width="563"><figcaption></figcaption></figure>
5. Select **Next**
6. Enter or select the following fields accordingly, as shown in the screenshot and table below<br>

   <figure><img src="/files/jwDbVhAjWv7PZbpcRo8B" alt="" width="563"><figcaption></figcaption></figure>

<table data-header-hidden><thead><tr><th width="261" valign="top">Input Field</th><th valign="top">Description</th></tr></thead><tbody><tr><td valign="top"><strong>Region</strong></td><td valign="top">Which Azure region Deployment Script should be deployed</td></tr><tr><td valign="top"><strong>App Registration Name</strong></td><td valign="top">Name of App Registration for Data Integration</td></tr><tr><td valign="top"><strong>Assign write permissions</strong></td><td valign="top">Yes or No (Recommended: Yes)<br><br>Identity Intelligence does <strong>NOT</strong> take automated write actions. Selecting <strong>Yes</strong> grants Identity Intelligence a limited set of write permissions to Entra. If write permissions are granted, <a href="/pages/3VKjD0BCTdCDoTnXRrF4#roles">Admins or Helpdesk users</a> in Identity Intelligence can <strong>manually</strong> trigger certain remediation actions on Entra users, directly within the Identity Intelligence interface, instead of navigating back to Entra to complete the same task (e.g: log user out of active Entra sessions, reset user's MFA).<br><br>For more information on the actions available, see <a data-mention href="#add-api-permissions">#add-api-permissions</a> and <a data-mention href="/pages/qKAN2j0zanyuw7ewCvxi#remediation-actions">/pages/qKAN2j0zanyuw7ewCvxi#remediation-actions</a></td></tr><tr><td valign="top"><strong>Tenant has Intune License</strong></td><td valign="top">Yes or No<br>Select <strong>Yes</strong> if this Entra ID tenant has Intune Licenses. This grants Identity Intelligence <code>read</code> permissions to Device Management data.<br>Select <strong>No</strong> if this Entra ID tenant does <em>not</em> have Intune Licenses</td></tr><tr><td valign="top"><strong>Managed Identity Name</strong></td><td valign="top">User-Assigned Managed Identity name from previous section</td></tr><tr><td valign="top"><strong>Managed Identity Resource Group</strong></td><td valign="top">Resource Group name where Managed Identity is created</td></tr></tbody></table>

7. Select **Create**. The necessary App Registration and Service Principal will be created in Entra ID and corresponding Graph API permissions will be assigned to it

### Grant Admin Consent for Graph permissions

Now you need to grant Admin Consent to the permissions that were assigned to the app registration.

1. Navigate to Entra ID and go to ***App Registrations***
2. Select ***All Applications*** and enter the Identity Intelligence application name that you specified during the Marketplace app creation steps above<br>

   <figure><img src="/files/N6HC2hOSfidI0ruVz4bi" alt=""><figcaption></figcaption></figure>
3. Select ***App Registration*** and go to the API Permissions pane found in the left menu
4. Select the ***Grant admin consent*** button as shown in the screenshot below<br>

   <figure><img src="/files/awMN7Gv5yAuehjyaP8TY" alt=""><figcaption></figcaption></figure>
5. The **Status** column for all API permissions listed in the table should now be shown as **Granted**.\
   \
   Once you have confirmed all the API permissions have the correct status, proceed to the next section of the documentation and follow the steps listed to create a client secret for this application<br>

   <figure><img src="/files/UpSW9IGv463xHTqMZH9G" alt=""><figcaption></figcaption></figure>

### Create Client Secret

1. Go to the **Certificates & Secrets** pane in the left menu under your Identity Intelligence app registration
2. Select ***New client secret***<br>

   <figure><img src="/files/fDonjIsvlJmkBAgquod7" alt=""><figcaption></figcaption></figure>
3. Fill in the description using an easily recognizable and memorable name, such as "Identity Intelligence Integration". Then select the desired Expiration timeframe for the secret (recommended: 365 days/12 months) and select ***Add***
4. Select the **Copy** icon to copy both the **Secret Value** and **Secret ID** and paste this information somewhere safe, as this will be needed to complete later steps of the integration set up in Identity Intelligence\
   \ <mark style="color:$warning;">**Important**</mark><mark style="color:$warning;">:</mark> Once you leave this page you ***WILL NOT*** be able to generate the same key again. If the key is lost, you will need to delete the existing secret, create a new one and save that info

<figure><img src="/files/cFWl3pYbqK6OS53K7iRo" alt=""><figcaption></figcaption></figure>

5. After you have pasted the secret value and ID somewhere secure, proceed to the next section of the documentation to add the Entra ID integration to your Identity Intelligence tenant and complete the integration set up process

### Assign Azure RBAC Roles

For Identity Intelligence to be able to monitor application access to your Azure Resources, improving its analysis and accuracy, the app also needs to be assigned an Azure Role. To do so, follow the steps below:&#x20;

1. Go to the Azure Portal and navigate to **Management Groups**
   1. **Note:** If you haven’t started working with Management Groups, select **Get Started with Management Groups** and wait a few minutes while Azure sets up your Root Management Group
2. Select **Tenant Root Group**

<figure><img src="/files/C7Z5kLdfUFGjkGYluqOm" alt="" width="563"><figcaption></figcaption></figure>

3. In the left panel, select **Access control (IAM)**

<figure><img src="/files/eENr70oltDb4txNXu7PO" alt="" width="563"><figcaption></figcaption></figure>

4. Select **Add** and then choose **Add role assignment**
5. Search for and choose the **API Management Service Reader Role** and select **Next**

<figure><img src="/files/q9qDHypfRiUGu8lvxGrl" alt="" width="563"><figcaption></figcaption></figure>

6. Pick **Assign access** to “User, group or service principal”, and in **+ Select**\
   **members**, select the name given to your Identity Intelligence integration app

<figure><img src="/files/8A59sLqv0Yqc0WQTfhyN" alt=""><figcaption></figcaption></figure>

7. Select **Review + assign**
8. Repeat steps 3-7 for the “Reader” role assignment

{% hint style="info" %}
**Note:** You may have to first elevate your permissions to be able to assign an\
Azure role to the Root Management group. \
\
If you get an error stating that you are not authorized to perform any of the above actions, please follow the instructions <mark style="color:$danger;">here</mark>, and then resume the instructions in this section from step 1 onwards
{% endhint %}

## Create Microsoft Entra ID Integration in Identity Intelligence <a href="#add-azure-a-d-integration-to-oort-dashboard" id="add-azure-a-d-integration-to-oort-dashboard"></a>

Next, we will add the integration in the Identity Intelligence dashboard

1. Login to the Identity Intelligence Dashboard with an Identity Intelligence Admin role
2. Using the left hand menu bar, navigate to the **Integrations** page. Select the ***Add Integration*** button
3. Locate the Microsoft Entra ID integration tile and select the ***Add Integration*** button within that tile
4. Fill in the details for the Microsoft Entra ID Integration. Enter the values saved from earlier on in the Microsoft Entra ID setup for all fields except *Name*

   * *Name - The display name for the Entra Integration that will be used to recognize the integration throughout Identity Intelligence*
   * *Directory ID*
   * *Application ID*
   * *Secret ID*
   * *Secret VALUE*

   <figure><img src="/files/cOfuIBLE0gHxxJJIBXUf" alt=""><figcaption></figcaption></figure>
5. Select **Connect** to test the connectivity. This may take a few minutes to complete
6. Once the connectivity test is successful, if desired, you can then review the data types that will be collected. Otherwise, proceed to step 7
   1. Navigate to the **Advanced** tab and review the responses to the questions at the top of the page to confirm they are answered correctly based on your Entra Licensing and permissions. Adjust the responses to any questions as needed. We highly recommend keeping your integration set to **Managed** mode. To read more about managed data types, refer to our [Managed Integrations](/integrations/managed-integrations) documentation
7. Select **Save**. You will now see the integration listed on the Integrations page. Ensure that the integration's Connectivity Status is `Connected`
8. On the right hand side of the row for your Entra integration, select the **3-dot** button to open the pop-up menu. Select **Collect Now** to start the first data ingestion. You can also skip this step and it will happen automatically within the next 24 hours.
9. If you would like to enable real-time event streaming, please continue to the [Azure Event Hub Log Streaming for Microsoft Entra ID](/integrations/azure-active-directory-event-hub-streaming) article to follow the steps to create an Azure Event Hub integration
10. Congratulations, you have successfully set up the Microsoft Entra ID Integration!

## Update the Microsoft Entra ID API App (client) Secret

It is critical that your Entra ID Secret for the Identity Intelligence integration does not expire. If the secret expires before it can be refreshed, Identity Intelligence will not be able to collect data from Entra until a new secret is created. If too many days lapse before a new secret can be created and assigned, Identity Intelligence will not be able to collect all the historical data and logs generated in that period, which will create gaps in your org's Entra data set.\
\
You can proactively monitor the status of your Identity Intelligence Microsoft Entra ID integration secret via the **Identity Intelligence Client Secret Expiring Soon** check within Identity Intelligence.

The default setting for this check is configured to start alerting 90 days prior to the secret's expiration date. <mark style="color:$warning;">W</mark><mark style="color:$warning;">**e**</mark><mark style="color:$warning;">**&#x20;**</mark>*<mark style="color:$warning;">**highly**</mark>*<mark style="color:$warning;">**&#x20;**</mark><mark style="color:$warning;">**recommend**</mark> [<mark style="color:$warning;">**enabling notifications on this check**</mark>](/understanding-check-failures/customizing-checks#notification-settings) to send alerts to the channel of your choosing (email, messaging system, webhooks) so that you can be made aware of the upcoming expiration date with sufficient notice to take the appropriate steps.

If your app (client) secret is expiring or has expired, you must:

1. Navigate to Entra ID and **delete** the expiring/expired secret for the Identity Intelligence data integration app

* Having multiple secrets on the same app, even if expired, is not security best practice

2. Create a new app (client) secret and copy it somewhere secure as you will need it to complete later steps. Refer to the [Create Client Secret](#create-api-secret) section of this article for detailed instructions on how to make a new secret

<figure><img src="/files/cFWl3pYbqK6OS53K7iRo" alt="" width="563"><figcaption></figcaption></figure>

3. Navigate back to Identity Intelligence and go to the **Integrations** page. Locate the existing Entra integration that needs to have its app (client) secret updated
4. Select the **3-dot** menu button on the right side of the row for the desired Integration. Select **Edit Settings** from the pop up menu
   1. If you have more than one Entra integration, you can confirm which Microsoft Entra ID app registration is the correct one by comparing the Entra ID integration app (client) **ID** listed in Identity Intelligence console to the Client ID listed in Entra.
5. Select the **Reset Credentials** button to remove the previous secret from Identity Intelligence. **Note**: This does **not** delete the Secret in Entra. You must also delete the previous secret within Entra, which is the recommended best practice to avoid confusion about which secret is in use

<figure><img src="/files/GHSa3udYjnmsEmhbeAN1" alt="" width="563"><figcaption></figcaption></figure>

6. Paste the new **Secret ID** and **Secret Value** that were generated in Entra during earlier steps into the respective fields. Then select **Save**

<figure><img src="/files/cOfuIBLE0gHxxJJIBXUf" alt="" width="563"><figcaption></figcaption></figure>

7. Back on the **Integrations** page, select the **3-dot** menu button for the Microsoft Entra ID integration and select **Test Connectivity** to verify the new secret is working correctly. This may take a few minutes to complete. The **Connectivity** column in the table of Integrations will change to **Connected** once the test is successful.\
   \
   If it shows a status other than Connected, it means something was configured incorrectly and you will need to repeat the steps to resolve the error.

<figure><img src="/files/J8IR1sirZFELEg7nKiFF" alt=""><figcaption></figcaption></figure>


# Github

2025.11.17

{% hint style="warning" %}
Warning: The Identity Intelligence Github integration is currently being moved away from a classic PAT installation to a Github app installation and is currently in Alpha. New PAT installations have been disabled, and existing Github integration customers will soon be notified to start migrating to the new installation method. If you would like early access to this new installation path please contact your Duo Care team, Duo Support or open a Cisco TAC Case to enable it in your account.
{% endhint %}

## Overview <a href="#overview" id="overview"></a>

Identity Intelligence can connect to Github Enterprise tenants and provide insights into user identities and activity on that platform.

This document will walk you through the process of setting up access from Identity Intelligence to Github Enterprise.

### Requirements <a href="#next-steps" id="next-steps"></a>

The following requirements are necessary for the Github integration -

1. Github Enterprise subscription
2. A Github **Enterprise admin account** capable of creating and installing [Github Apps](https://docs.github.com/en/enterprise-cloud@latest/admin/managing-github-apps-for-your-enterprise/creating-github-apps-for-your-enterprise) on the enterprise.
3. SSO from your Identity Provider to **each** Github org is set to "Enforced" (mandatory) and **not** "Configured" (optional), otherwise Identity Intelligence cannot retrieve the emails for users in the "configured" org and they will not merge with their own record in the "enforced" org.

## Github API Permission Structure

### Enterprise vs. Org

Identity Intelligence has chosen to connect to Github environments at the Enterprise level rather than per Organization. This allows for the use of one Github app for an entire customer environment, instead of a Github app being required for each Org.

Therefore, an Enterprise Admin account or an Enterprise service account is required.

### Only Include Specific Github Orgs

Please see [Github Configuration Steps, step 8](#github-configuration-steps) to see how to configure Identity Intelligence to only collect the data for specific orgs under your enterprise.

### Compatible Checks

Currently, 17 security posture and threat detection Checks are compatible with the Github integration. Identity Intelligence is continuously adding to this list, based on customer requests and also new and emerging identity-based threats for Github.

<figure><img src="/files/AOv8co9347Ri0Qo6c2Lz" alt=""><figcaption></figcaption></figure>

## Github Configuration Steps <a href="#github-configuration-steps" id="github-configuration-steps"></a>

1. Login to Github with an **Enterprise admin account.** If you navigate to [Github.com/settings/enterprises](https://github.com/settings/enterprises), it should look something like the following:

   <figure><img src="/files/zqa4wq9hxiKbIVeEepU6" alt=""><figcaption></figcaption></figure>
2. Enable **displaying IP addresses in the Github Audit Log** for your enterprise tenant as described in [this article](https://docs.github.com/en/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/displaying-ip-addresses-in-the-audit-log-for-your-enterprise#enabling-display-of-ip-addresses-in-the-audit-log)
3. Follow the steps for registering a GitHub app as outlined in this [Github article](https://docs.github.com/en/enterprise-cloud@latest/apps/creating-github-apps/registering-a-github-app/registering-a-github-app)
   1. In step 2 make sure you follow the directions for apps owned by an enterprise.
   2. In step 7 enter the URL to your Identity Intelligence dashboard.
   3. Skip steps 8-13.
   4. Complete step 14 to disable the webhook.
   5. For step 18 configure the following permissions (note: all of these scopes are read-only unless otherwise mentioned):
      * Repository permissions:
        * Administration
        * Dependabot secrets
        * Secrets
      * Organization permissions:
        * Administration
        * Blocking users
        * Custom organization roles
        * Custom repository roles
        * GitHub Copilot Business
        * Members
        * Organization dependabot secrets
        * Personal access tokens
        * Secrets
      * Enterprise Permissions:
        * Custom enterprise roles
        * Enterprise AI controls
        * Enterprise custom organization roles
        * Enterprise organization installation repositories (**read and write** for automatic organization installation; otherwise optional)
        * Enterprise organization installations (**read and write** for automatic organization installation; otherwise optional)
        * Enterprise people
        * Enterprise single sign-on
4. Once you have registered your new app you will need to generate and save a private key. Once you generate the key the file should automatically be downloaded for you. You will need to input this private key into Identity Intelligence later.
5. Press **save changes** in the Github app screen. In the **general** page note the **app ID** at the top of the page, you will need this later.
6. Go to the **Install App** page inside your new app. Your screen should look something like this:

   <figure><img src="/files/YhBqQarHlLizyHmY6ooo" alt=""><figcaption></figcaption></figure>
7. Press **install** on your enterprise and accept the permissions that you configured in step 3.
8. Choose how the app is installed on organizations in your enterprise:
   * **Automatic installation:** The **Enterprise organization installation repositories** and **Enterprise organization installations** permissions must both be set to **Read and write**.
   * **Manual installation:** If you do not grant these read/write permissions, go back to the **Install App** screen in the Github app's settings and install it on every organization you would like Identity Intelligence to monitor.
9. Note the **slug** for your Enterprise Github tenant. This can be found under your enterprise profile tab.

   <figure><img src="/files/L9MMiSw0Ld4nZpbkTxnL" alt=""><figcaption></figcaption></figure>

## Identity Intelligence Configuration Steps

Sign in to your Identity Intelligence tenant and perform the following steps:

{% hint style="info" %}
If you installed your Github app on multiple **Github enterprises** you will have to repeat this section once per enterprise.
{% endhint %}

1. From the Integrations page, click **Add Integration** and select **Github**.
2. Enter a display name for the integration, such as *Github \<your enterprise name>*.
3. Enter the value of your Github Enterprise slug, obtained in Step 9 above.
4. If you are migrating to the app installation type, select **app** as the authentication type. Otherwise, this will automatically be done for you.
5. Enter the Github app's application ID from step 5 above.
6. Enter the Github app's secret value that was downloaded for you in step 4 above.

   <figure><img src="/files/CdoeoFFpHYF31sNCiJx5" alt=""><figcaption></figcaption></figure>
7. Once the configuration connection is successful, go back to the main **Integrations** page, click the 3-dot menu on the Github integration and select **Collect Now**. Collection may take some time, depending on the size of the environment.

   <figure><img src="/files/k5o6rK0CNCjtPIRAScNZ" alt=""><figcaption></figcaption></figure>

## Github Event Streaming (Beta) <a href="#github-event-streaming" id="github-event-streaming"></a>

{% hint style="warning" %}
GitHub has no plans to take audit log streaming out of private beta. So if you are not already in the beta program you will not be able to use this feature.
{% endhint %}

Github has the capability to [stream the audit log events](https://docs.github.com/en/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise). This is currently in Beta. If you do not see the option in your Github Enterprise tenant, contact your Github representative.

Note: The Github base configuration above must already be completed. This step is highly recommended.

1. Within CII, navigate to Integrations and click **Edit Settings** on the existing Github integration.
2. Click the **Event Streaming** tab.
3. Slide the button to **Use Audit Log Streaming**.
4. Note the **Domain**, **Path**, and **Port** information for use in the Github setup.
5. Create a strong value for the **Webhook Secret** and enter it in the config.

   <figure><img src="/files/1Lein4U1Q588da0fpJsu" alt=""><figcaption></figcaption></figure>
6. Within Github, navigate to **Settings** > **Audit Log** > **Settings**. Ensure that `Enable API Request Events` is checked.

   <figure><img src="/files/HmrrsObnjQauOcvN8O9N" alt=""><figcaption></figcaption></figure>
7. On the **Log Streaming** tab, select `HTTP Event Collector` from the **Configure stream** dropdown list.

   <figure><img src="/files/c1ZJIb7GyN8axv7epooE" alt=""><figcaption></figcaption></figure>
8. Enter the **Domain**, **Path**, **Port**, and **Token** (Webhook secret above).
9. Check the `Enable SSL verification` button.

   <figure><img src="/files/47aGf1khJuuqXHfSH36X" alt=""><figcaption></figcaption></figure>
10. Back in the CII integration settings, click the checkbox to confirm that you have configured Github streaming in that platform and then click `Save`.

    <figure><img src="/files/tin68EP4tBiMCDc05JaK" alt=""><figcaption></figcaption></figure>
11. Back on the Github streaming configuration page, click the `Check endpoint` button. Once successful, click `Save`.

    <figure><img src="/files/27nlTwPMsHTbeTei8fIT" alt=""><figcaption></figcaption></figure>
12. That's it. It should be all set.


# Google

11/2023

Cisco Identity Intelligence can analyze data from Google Workspace (formerly G Suite) and Google Cloud Platform (GCP) to provide insights into user identities and application activity. This document will walk you through the process of setting up the CII Google Workspace integration.

**Note**: This integration uses both a **Google Workspace admin user** (required for access to Google Workspace Admin APIs), and a **GCP service account** (required for access to view service accounts and logs in GCP). To avoid confusion, please note the bolded terms used throughout these instructions and make sure you're using the right one.

#### Overview <a href="#next-steps" id="next-steps"></a>

These are the steps to connect Identity Intelligence to your Google Workspace environment. The steps summarized here are explained in more detail in the linked sections below.

1. [Configure a **Google Workspace admin user**](#detailed-configuration-steps---google-cloud) and role for CII to use. This is required for directory access and Google Workspace audit logs.
2. [Configure a **GCP service account**](#configure-a-gcp-service-account) with Security Reviewer, Log Viewer, Private Log Viewer, and Browser roles at the org level. Configure Domain-Wide-delegation for this service account for the required scopes (documented below) so that it can access the **Google Workspace admin user** created in Step 1. Generate a key for this service account for CII to use. This allows CII to monitor service account activity within your google projects.
3. [Create a Google Workspace integration in your CII tenant](#detailed-configuration-steps---oort-platform) using your Google Workspace customer ID as well as the email of the **Google Workspace admin user** from step 1 and the **GCP service account** key from step 2.
4. [Configure GCP Audit Logging](#enable-gcp-audit-logging) at the project, folder, or organization level in GCP to start generating logs for CII to monitor.

If you are unsure, refer to the [configuration checklist](#configuration-checklist) at the end of this page.

### Configure a Google Workspace Admin User and Role <a href="#detailed-configuration-steps---google-cloud" id="detailed-configuration-steps---google-cloud"></a>

This is where you will set up the **Google Workspace admin user**. For this step you will need administrator access to your Google Workspace account.

1. In the [Google Workspace Admin console](https://admin.google.com/), create a new account for the Service account to impersonate. Save this user's email for use in the following steps and in the CII setup section. Use this user email whenever these instructions refer to the **Google Workspace admin user**.
2. In the Google Workspace Admin console, create a custom role:
   1. Navigate to Account > Admin roles > Create new role<br>

      <figure><img src="/files/7MTIJiRXzW1W1HZAExOF" alt="" width="563"><figcaption></figcaption></figure>
   2. Provide a name and description<br>

      <figure><img src="/files/H8grhRbpFLc8zEnZMF1r" alt="" width="563"><figcaption></figcaption></figure>
   3. Under `Admin console privileges` check the following privileges<br>

      ```
      Users > Read
      Services > Mobile Device Management > Manage Devices and Settings
      Services > Chrome Management > Settings > Manage Chrome OS Devices > Read
      ```
   4. Under `Admin API privileges` check the following privileges<br>

      ```
      Reports
      Organizational Units > Read
      Users > Read
      Groups > Read
      User Security Management
      ```
3. When all the permissions have been added, select **Create Role** to finish.

   <figure><img src="/files/CAh6SdmAn96qbxjFpGer" alt=""><figcaption></figcaption></figure>
4. Assign this role to the **Google Workspace admin user**.

### Configure a **GCP service account**

In this step you will configure the **GCP service account**. For this step you will need admin access to your GCP organization.

1. Login to the [GCP console](https://console.cloud.google.com/) for your organization. Using the project selector, choose or create a project to host the service account that CII will use for access.
2. Navigate to the APIs and Services tool under **Google Cloud -> APIs and Services -> Enable APIs and Services**<br>

   <figure><img src="/files/ApMZ46rjZJgXTkOoec5f" alt="" width="563"><figcaption></figcaption></figure>
3. Search for [**Admin API SDK**](https://console.cloud.google.com/apis/api/admin.googleapis.com/metrics) and select **Enable.**

<figure><img src="/files/NqLI3oi9qOBKe7rv6DWV" alt="" width="490"><figcaption></figcaption></figure>

5. Also enable the [Cloud Resource Manager API](https://console.cloud.google.com/apis/api/cloudresourcemanager.googleapis.com/metrics), the [Cloud Logging API](https://console.cloud.google.com/apis/api/logging.googleapis.com/metrics) and the [Identity and Access Management (IAM) API](https://console.cloud.google.com/apis/api/iam.googleapis.com/metrics).
6. Create a **GCP service account** for CII to use. Navigate to **IAM > Service Accounts > Create Service Account**.

<figure><img src="/files/Tj0Sj7hhmeNdsxrpr2jt" alt="" width="548"><figcaption></figcaption></figure>

7. Provide a name and description for the account

<figure><img src="/files/ZRqbAeAPwBuWcbPSSZd6" alt="" width="563"><figcaption></figcaption></figure>

8. Choose **Add Key > Create New Key** on the **GCP service account** you just made. Store the downloaded key file somewhere safe; you will need to upload it to CII when you set up the integration in CII.

<figure><img src="/files/QudARhNOwoKwnugIU2bC" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/G4XvF34uqOTvHD6qdKM1" alt="" width="563"><figcaption></figcaption></figure>

9. Note the Unique ID / OAuth2 client ID for use in the next section when you delegate domain authority for the Workspace API

   <figure><img src="/files/OZI8mOYzBLlNz7MsxKeQ" alt="" width="422"><figcaption></figcaption></figure>
10. Delegate domain-wide authority to the Google Cloud service account created in the [GCP section above](#detailed-configuration-steps---google-cloud), as explained in the following Google docs: <https://developers.google.com/identity/protocols/oauth2/service-account#delegatingauthority>\ <br>

    <figure><img src="/files/KR5clugXxUNOvJJtuoWe" alt=""><figcaption></figcaption></figure>
11. Click Add New<br>

    <figure><img src="/files/B4yLlBesISSK2hsXOSQR" alt="" width="561"><figcaption></figcaption></figure>
12. In the OAuth scopes (comma-delimited) field,

    1. Add the Client ID for the GCP service account created in the section above, which is tied to the JSON keys downloaded.
    2. Add the scopes in the code block below. Click **Authorize**.

    <pre data-overflow="wrap"><code>https://www.googleapis.com/auth/admin.directory.group.member.readonly,https://www.googleapis.com/auth/admin.directory.group.readonly,https://www.googleapis.com/auth/admin.directory.user.readonly,https://www.googleapis.com/auth/admin.directory.rolemanagement.readonly,https://www.googleapis.com/auth/admin.directory.orgunit.readonly,https://www.googleapis.com/auth/admin.directory.device.mobile.readonly,https://www.googleapis.com/auth/admin.reports.audit.readonly,https://www.googleapis.com/auth/admin.directory.device.chromeos.readonly,https://www.googleapis.com/auth/admin.directory.user.security,https://www.googleapis.com/auth/logging.read

    </code></pre>

Below are links for reference:

[https://www.googleapis.com/auth/admin.directory.group.member.readonly,\
https://www.googleapis.com/auth/admin.directory.group.readonly,\
https://www.googleapis.com/auth/admin.directory.user.readonly,\
https://www.googleapis.com/auth/admin.directory.rolemanagement.readonly,\
https://www.googleapis.com/auth/admin.directory.orgunit.readonly,\
https://www.googleapis.com/auth/admin.directory.device.mobile.readonly,\
https://www.googleapis.com/auth/admin.reports.audit.readonly,\
https://www.googleapis.com/auth/admin.directory.device.chromeos.readonly,\
https://www.googleapis.com/auth/admin.directory.user.security](https://www.googleapis.com/auth/admin.directory.group.member.readonly,https://www.googleapis.com/auth/admin.directory.group.readonly,https://www.googleapis.com/auth/admin.directory.user.readonly,https://www.googleapis.com/auth/admin.directory.rolemanagement.readonly,https://www.googleapis.com/auth/admin.directory.orgunit.readonly,https://www.googleapis.com/auth/admin.directory.device.mobile.readonly,https://www.googleapis.com/auth/admin.reports.audit.readonly,https://www.googleapis.com/auth/admin.directory.device.chromeos.readonlyhttps://www.googleapis.com/auth/admin.directory.user.security),\
<https://www.googleapis.com/auth/logging.read> (for collecting Logging data)\
\
Note that the `admin.directory.user.security` scope that is listed is required to use [Remediation Actions](/understanding-your-users/remediation-actions) for Google accounts within Identity Intelligence.

13. Navigate to the IAM panel on the sidebar, and use the project selector to select the organization (top-level) context. Note that on the project picker it says "Organization" in the **Type** column for the correct resource. When you are on the right page you should see that it says "Permissions for organization \<your organization>".<br>

<figure><img src="/files/DOWR0FkPpIvvrruU1RKk" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Jyt4K3qGppw989lGNi8S" alt=""><figcaption></figcaption></figure>

14. Click Grant Access at the top of the table.\
    ![](/files/f6uJtoAl3hRs8GF6qte1)
15. In the access form, enter the email address of the GCP service account in the New principals field, and assign the roles Logs Viewer, Private Logs Viewer, Security Reviewer and Browser. Click Save.\
    ![](/files/cknovhbTtwwjI93IgWht)

### Create a Google Workspace integration in your Identity Intelligence tenant <a href="#detailed-configuration-steps---oort-platform" id="detailed-configuration-steps---oort-platform"></a>

1. From the Integrations page, click **Add Integration** and select **Google Workspace**
2. Enter a name for the integration, such as *Google-customername*
3. Enter your unique Google Workspace or Cloud customer ID. Note - You can find this ID in your Admin console: Account > Account settings > Profile
4. Enter the email **Google Workspace admin user** that the service account is impersonating
5. Upload the JSON key file created for the **GCP service account.**
6. Select **Save**. This will trigger an initial connectivity test.

#### Test the Configuration <a href="#test-the-configuration" id="test-the-configuration"></a>

To test the configuration and start the initial data collection -

1. Click the 3 dots at the right of the new Google integration and select **Test Connectivity**
2. Once successful, click the 3 dot menu again and select **Collect Now**. Collection may take some time, depending on the size of the Google environment

### Enable GCP Audit Logging

Not all service account activity is logged by default in GCP. Refer to the [GCP documentation](https://cloud.google.com/logging/docs/audit/) to configure your audit logging according to your needs at the project, folder, or organization level. CII uses these logs as indicators of service account activity.

### Updating Google Service Account Keys <a href="#updating-google-service-account-keys" id="updating-google-service-account-keys"></a>

If desired, the JSON keys created for the service account can be rotated or updated.

1. Create new keys for the **GCP service account**.
2. In the Identity Intelligence console, select the 3 dot menu for the Google integration and select **Edit Settings**
3. Select **Reset Credentials**. Then upload the new JSON file and click **Save**
4. Test connectivity to ensure a successful connection

### Configuration Checklist

If you are not seeing data or account activity that you expect to see, these are the things to check:

#### GCP Service Account

1. The **GCP service account** has been created in a GCP project.
2. The **GCP service account** has been given the Security Reviewer, Browser, Private Logs Viewer, and Logs Viewer roles **at the organization level** in IAM in GCP.
3. The key for the **GCP service account** that CII is using is still present and enabled in GCP IAM for its project.
4. The **GCP service account** has been given Domain-Wide-Delegation with the scopes listed above.
5. The [Cloud Resource Manager API](https://console.cloud.google.com/apis/api/cloudresourcemanager.googleapis.com/metrics), the [Cloud Logging API](https://console.cloud.google.com/apis/api/logging.googleapis.com/metrics) and the [Identity and Access Management (IAM) API](https://console.cloud.google.com/apis/api/iam.googleapis.com/metrics) have been enabled in the project that hosts the **GCP service account**.

#### Google Workspace admin user

1. The **Google Workspace admin user** has been created.
2. The Google Workspace admin role has been created and has the permissions listed above.
3. The Google Workspace admin role has been assigned to the **Google Workspace admin user.**

#### **CII Configuration**

1. The [Google Customer ID](https://support.google.com/a/answer/10070793?hl=en) has been entered correctly. Note that there can only be one integration per Google Customer ID in a CII tenant.
2. The email of the **Google Workspace admin user** has been entered correctly and exactly matches the user currently intended.
3. The service account key for the **GCP service account** that CII is using is currently enabled in GCP. If in any doubt, generate a new key in the GCP console and upload it to CII.

#### GCP Audit Logging

1. [GCP Audit Logging](https://cloud.google.com/logging/docs/audit/) has been configured at the desired level of the GCP organizational hierarchy (organization, folder, or project) and at the desired level of detail.

#### Service Account collection from projects with VPC Service Controls

Google's [VPC Service Controls](https://cloud.google.com/vpc-service-controls/docs/overview) feature allows you to restrict the IPs from which GCP API calls — such as requests to list service accounts — can be made. CII will skip collection from projects in which VPC Service Controls prohibit the required API calls. The [VPC Service Controls docs in google](https://cloud.google.com/vpc-service-controls/docs/access-level-design) show how you can add an exception allowing our IPs to access the the IAM and Cloud Logging resources within the service perimeter. In the CII Add Integration dialog, you can see the list of IP addresses that CII uses to collect integration data. Note that these IPs depend on the region in which your tenant is deployed, so you should not rely on the specific values in this image.

<figure><img src="/files/Et19QidbtJ5PWB8CIAUX" alt=""><figcaption></figcaption></figure>


# Google Sheets

## Overview

The Cisco Identity Intelligence Integration for Google Sheets allows you to use a familiar spreadsheet interface to manage user identity data. This add-on, available on the Google Workspace Marketplace, lets you add or update user information directly in any Google Sheet, and the integration will automatically synchronize these changes to your Identity Intelligence tenant via SCIM.\
\
This approach provides a simple, auditable, and efficient way for administrators to manage user identities without needing direct access to the Identity Intelligence portal for every change.

<figure><img src="/files/Vf4BHEnt7eISFjZeNY2n" alt="" width="375"><figcaption></figcaption></figure>

#### Privacy Policy & Terms of Use

* For information on the Cisco Identity Intelligence Privacy Policy, please see this resource: <https://oort.io/company/product-privacy-policy/>
* For our Terms of Use, please see this resource: <https://oort.io/terms-of-use/>

### How the Google Sheets Integration works

The Google Sheets integration is an official Google Workspace Add-on that you install directly into your Google account. Once installed, it adds a custom option under the Extensions toolbar to any Google Sheet you open, allowing you to configure and manage the sync process. The add-on runs entirely within your Google environment, acting on your behalf to securely send user data from your sheet to the Identity Intelligence SCIM endpoint.

#### Permission Requirements within Google Sheets

The first time you run a function from the add-on menu, Google will require your permission for the add-on to work. This is a standard security procedure. You will be presented with a professional consent screen asking for a minimal set of permissions:

* **See, edit, create, and delete the current spreadsheet:** This scope is restricted to *only* the single spreadsheet you are working in. The add-on cannot see or access data within any other Google Sheets that do not have the add-on enabled
* **Display and run third-party web content in prompts and sidebars:** This allows the add-on to show the configuration menu
* **Connect to an external service:** This allows the add-on to send SCIM data to the secure Identity Intelligence API endpoint you configure
* **Allow this application to run when you are not present:** This permission is required for the "Enable Automatic Sync" feature to work, allowing the add-on to check for updates on a schedule even when the spreadsheet is closed.

## Configuration Steps

To set up the integration, perform the following steps:

#### Install the Add-on

1. Go to the "Cisco Identity Intelligence Sheets Extension" using this link [link](https://workspace.google.com/marketplace/app/cisco_identity_intelligence_sheets_exten/660927096123) and select **Install**
2. Follow the on-screen prompts to grant installation permissions for your account or domain.

#### Launch and Configure

1. Create a new, empty Google Sheet
2. Within that Google Sheet, navigate to the menu and select **Extensions** > **Cisco Identity Intelligence** > **1. Configure Credentials** which will open a configuration sidebar

<figure><img src="/files/qTO6YpI8wgdjEFFTdt11" alt=""><figcaption></figcaption></figure>

3. Login to Identity Intelligence and navigate to the **Integrations** menu item > **Add integration** > and select **SCIM integration**. Keep this page open because you will need to copy the credentials in the next step
4. In the Google Sheets sidebar, paste the Endpoint URL, Token URL, Client ID, and Client Secret from the Identity Intelligence SCIM integration set up page (Step 4) into the corresponding fields and select **Save**

<figure><img src="/files/U4mQqCse0eUApQlIU1gb" alt=""><figcaption></figcaption></figure>

5. Select your Google account. A professional consent screen will appear, showing the add-on name and the specific permissions requested
6. Review them and select **Allow**

#### Test Connection and Enable Sync

1. After you have successfully saved your credentials, the add-on will automatically add the required template headers and formatting to the empty sheet

   <mark style="color:$danger;">**NOTE:**</mark> This templating feature will only work if the sheet is completely empty. If your sheet contains any data, the save will fail with a warning
2. Within that Google Sheet, navigate to the menu and select **Extensions** > **Cisco Identity Intelligence > 2. Test Connection**
3. A pop-up will appear confirming if the connection to the Identity Intelligence API was successful
4. To enable the automatic sync, navigate to the **Extensions** menu again, select **Cisco Identity Intelligence > 3. Enable Automatic Sync.** This will set up a trigger that automatically runs the sync process once every hour
   1. If you need to push changes immediately, you can select **Run Manual Sync Now** from the Identity Intelligence Extensions menu at any time

### Adding and Editing Users in the Sheet

Once the integration and connection between Google Sheets and Identity Intelligence has been configured, adding and editing users in the sheet is simple.

#### Add a new user

Fill out a new row with the user's details - Username, First Name, Last Name, Email, Active.\
**Leave the** [**Sync Details columns**](#sync-details-columns) (Status, Sync Hash) **blank.**

The script will populate these fields automatically upon creation.

#### Update an Existing User

Change the desired value(s) in a given user's row. For ex: change the Active column from TRUE to FALSE.\
\
The script will detect the change and send an update request.

#### "Sync Details" Columns

The following columns are managed by the script and **SHOULD NOT** be edited manually:

* Status - Shows if a row was successfully synced or if an error occurred
* Sync Hash - A "digital fingerprint" of the row's data which is used to detect changes


# Cisco Identity Services Engine (ISE)

## Overview&#x20;

Cisco Identity Intelligence connects to Cisco Identity Services Engine (ISE) through a secure, on-premises agent to collect identity, device, network session, authentication, and deployment health data from ISE and provide visibility into connected users and devices, ISE infrastructure health, and authentication activity.\
\
The goal of this guide is to help you configure the integration between Identity Intelligence and your organization’s ISE environment, including deploying the agent, configuring pxGrid, verifying the connection, and troubleshooting common issues.

### Quick path&#x20;

1. Prepare ISE and the agent host. Enable the required ISE services and verify network connectivity.&#x20;
2. Create the ISE integration. In Cisco Identity Intelligence, open Integrations, choose Cisco ISE, and enter a meaningful name and optional description.&#x20;
3. Capture the one-time deployment material. Download the agent package or copy the one-line installation command before leaving the setup page.&#x20;
4. Run the installer on an on-premises host. Use a dedicated directory on a host that can reach ISE and the required outbound cloud endpoints.&#x20;
5. Enter and verify ISE credentials. Setup validates the required ISE APIs before saving credentials in an encrypted store.&#x20;
6. Configure required pxGrid access. The agent requires pxGrid for real-time session events.&#x20;
7. Approve a new pxGrid client. If the agent registers a new client, approve it in ISE Client Management.&#x20;
8. Verify a healthy startup. Confirm pxGrid is active, IoT Core is connected, collection has started, and a fresh heartbeat appears in the ISE dashboard.&#x20;

## 1. Prepare ISE and the agent host&#x20;

#### Agent host prerequisites&#x20;

* Docker with Compose, or Podman with podman compose or podman-compose.&#x20;
* Cisco ISE 3.3 or later with ERS, the required endpoint APIs, and pxGrid enabled.&#x20;
* Network access from the agent host to the configured ISE API port, which defaults to TCP 443 during setup.&#x20;
* Network access from the agent host to ISE pxGrid services on TCP 8910.&#x20;
* Outbound TCP 443 to the environment-specific IOT\_ENDPOINT in .env, GitHub release and GHCR endpoints, and signed S3 upload hosts.&#x20;
* If outbound access uses a proxy, the proxy must allow HTTP CONNECT on port 443. Enter it using an `http://` URL during credential setup.&#x20;
* Create a dedicated internal ISE administrator account for the agent with:
  * ERS Operator for the required ERS and endpoint API access
  * MnT Admin for Monitoring API access used by health and active-session checks
  * Use ERS Admin instead of ERS Operator if you would like to be able to perform write actions

#### ISE-side preparation&#x20;

* Enable pxGrid services and arrange for an ISE administrator to approve the agent client
* Ensure the selected ISE host is reachable from the agent host
* Ensure TCP 8910 is available between the agent host and the applicable pxGrid nodes
* Enable password-based pxGrid account creation
  * A Cisco ISE Super Admin or System Admin must navigate to **Administration** > **pxGrid Services** > **Settings**, then select "Allow password based account creation" and **Save**
  * This setting is disabled by default and is required for the agent to create its pxGrid account. It is separate from enabling the pxGrid service on an ISE deployment node

Cisco Identity Intelligence does not connect directly to the customer ISE environment. ISE communication originates from the on-premises agent.&#x20;

{% hint style="warning" %}
**Protect the deployment material:** The package and copied command contain a sensitive, one-time bootstrap token. Transfer them only to the intended agent host, do not paste them into tickets or chat, and restrict access to the installation directory. The agent private key is generated locally during setup.
{% endhint %}

### 2. Create the Cisco ISE integration within Identity Intelligence

<img src="/files/1eUBKiZEBfM9IvxWZbHd" alt="" height="285" width="609">

1. Using an Admin role in Cisco Identity Intelligence, navigate to **Integrations** and select **Cisco ISE**&#x20;
2. Enter a name and (optional) description into the form. Be sure to use a name that easily identifies the ISE cluster or location
3. Select **Generate ISE Agent Package.** Identity Intelligence will then provision the agent identity, and display the deployment package and copyable install command&#x20;
4. Save the deployment material *immediately*. Use **Download ISE Agent Package** or C**opy Command**. <mark style="color:$danger;">Note:</mark> You **must** save these credentials as they **cannot** be displayed again after leaving the setup page; if replacement material is generated and deployed, the running agent credentials are rotated.&#x20;

<img src="/files/cunXQaWTUdA0PeeghnFO" alt="" height="264" width="609">

### 3. Install the agent on premises&#x20;

Use a dedicated, access-controlled directory. **Do not** run the installer from a directory containing unrelated environment, certificate, Compose, or launcher files.

#### Option A — one-line install command&#x20;

```
mkdir -p ~/ise-agent 
cd ~/ise-agent 
# Paste the complete command copied from Cisco Identity Intelligence, then press Enter 
```

The installer downloads the released host tools, creates the deployment files, completes the one-time agent setup, and starts credential and pxGrid configuration in the terminal.&#x20;

**Do not edit** tenant IDs, agent IDs, the IoT endpoint, topic prefix, certificate, or private key

#### Option B — downloaded ZIP&#x20;

1. Copy the ZIP to the agent host using your organization-approved secure transfer method&#x20;
2. Extract it into a dedicated directory. Change into the directory that contains `.env`, `start.sh`, `docker-compose.yml`, and certs&#x20;
3. Restore executable permissions if necessary and start the agent

```
cd ~/ise-agent
chmod +x ./start.sh
./start.sh
```

<img src="/files/zQ8xWtcheRd2PdrgrVOe" alt="" height="349" width="609">

#### What the credential setup validates&#x20;

| ISE Host, Username, Password, Port | Saved in an encrypted credential store under certs. The password is not written to `.env`                          |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| HTTPS Proxy (optional)             | Used for AWS IoT Core and signed S3 egress. Leave blank for direct access and use an `http://` URL when configured |
| ERS API verified                   | The agent reached ISE and the account had access to the required ERS API                                           |
| Endpoints API verified             | The account had access to the endpoint information required by the integration                                     |
| HTTP 401                           | The username or password was rejected. Nothing is saved                                                            |
| HTTP 403                           | Authentication reached ISE, but the account lacks access to the identified API. Nothing is saved                   |
| Other HTTP error                   | ISE returned an unexpected response. Nothing is saved                                                              |
| Connection error or timeout        | The agent host cannot reach the configured ISE host and API port. Nothing is saved                                 |
| Proxy connection verified          | Setup established an authenticated connection to AWS IoT Core through the configured proxy                         |

### 4. Configure required pxGrid access&#x20;

pxGrid is required to ingest real-time session events and the complete session information expected by Cisco Identity Intelligence. First-run setup proceeds directly to pxGrid configuration. \
\
Ensure password-based pxGrid account create is enabled. See [ISE side preparations](#ise-side-preparation) section above for more info.

<img src="/files/gDBz8IaJgVIsDgk6PTte" alt="" height="349" width="609">

#### Register a new pxGrid client&#x20;

1. Choose a pxGrid node name. Accept `cii-agent` or enter a deployment-specific name
2. When asked whether you already have an approved pxGrid client, answer `N`&#x20;
3. Start the agent and note the client name shown in the logs
4. In ISE, go to **Administration** > **pxGrid Services** > **Client Management** > **Clients**&#x20;
5. Find and approve the displayed client
6. Follow the logs and confirm account activation, WebSocket connection, session synchronization, and session-topic subscription&#x20;

#### Use existing pxGrid credentials

1. Enter the approved pxGrid node name
2. Answer `Y` when asked whether approved credentials already exist
3. Enter the pxGrid password
4. Start the agent and verify successful activation and subscription&#x20;

#### Reconfigure pxGrid later &#x20;

```
./start.sh --enable-pxgrid 
```

This replaces the stored pxGrid configuration and restarts the deployment.

### 5. Verify the first connection&#x20;

1. Find the generated container name. Read the `container_name` line from `docker-compose.yml` . Do **NOT** assume a fixed suffix&#x20;
2. Confirm the container is running. Use the Compose or Podman status command for your runtime&#x20;
3. Follow agent logs. Look for the healthy markers below and investigate any errors before continuing&#x20;
4. Confirm IoT Core connectivity as well as pxGrid activation and session subscription. A heartbeat starts immediately and then repeats every 60 seconds by default. Verify Connected to Iot Core and Agent connected, pxGrid account activated and WebSocket connected, Last Heartbeat, ISE Reachable, agent version, nodes, and current session information synchronized
5. Complete the setup page by returning to the **Integrations** page within Identity Intelligence. Select the existing ISE integration and select **Agent is running** after the first heartbeat is visible&#x20;

```
grep 'container_name:' docker-compose.yml

# Docker 
docker compose ps 
docker logs --tail 200 -f <container_name>

# Podman 
podman ps 
podman logs --tail 200 -f <container_name>
```

<img src="/files/M9j1JoJQBWGMAY8Ntfhn" alt="" height="349" width="609">

\
You will now see something similar to the screenshot below when you navigate to the ISE menu item in Identity Intelligence:&#x20;

<img src="/files/iWZKzPoWwcqoDTReWE33" alt="" height="285" width="609">

### 6. Supported host commands&#x20;

<table data-header-hidden data-search="false"><thead><tr><th width="274.9296875"></th><th></th></tr></thead><tbody><tr><td><strong>Command</strong> </td><td><strong>Use</strong> </td></tr><tr><td><code>./start.sh</code> </td><td>Pull the released image once, run first-time setup when needed, and start the agent </td></tr><tr><td><code>./start.sh --reconfigure</code></td><td>Re-enter ISE credentials and the optional outbound proxy; restart with the new encrypted values </td></tr><tr><td><code>./start.sh --enable-pxgrid</code> </td><td>Configure or replace pxGrid state, then restart</td></tr><tr><td><code>./start.sh --update</code> </td><td>Pull ghcr.io/duosecurity/ise-agent:latest and restart the deployment</td></tr><tr><td><code>./start.sh --no-pull</code> </td><td>Start using an already-loaded local image. Use only for offline or explicitly preloaded-image environments</td></tr><tr><td><code>./start.sh --update --no-pull</code> </td><td>Skip the pull and restart the already-loaded local image</td></tr><tr><td><code>./start.sh --stop</code> </td><td>Stop and remove the Compose-managed agent container without deleting the installation files or encrypted credentials</td></tr></tbody></table>

#### Safely reconfigure ISE credentials&#x20;

Stop the running deployment before replacing ISE credentials or proxy settings.&#x20;

```
./start.sh --stop 
./start.sh --reconfigure 
```

{% hint style="info" %}
**COMMAND RULE** \
Use only one action flag at a time. `--no-pull` is the exception: it is a modifier that can accompany startup or `--update`.&#x20;
{% endhint %}

### 7. Troubleshooting workflow&#x20;

#### Step 1 — establish the local state&#x20;

```
pwd 
ls -la 
test -f .env && echo '.env present' 
test -f certs/certificate.pem.crt && echo 'certificate present' 
test -f certs/private.pem.key && echo 'private key present' 
grep 'container_name:' docker-compose.yml 
```

{% hint style="warning" %}
**DO NOT ATTACH SECRETS**\
Never include `.env`, `certs/private.pem.key`, certificate bundles, `.credentials.enc`, .`pxgrid.enc`, or the one-line bootstrap command in a support ticket. Be sure to always redact tenant IDs, agent IDs, hostnames, usernames, and IoT endpoint prefixes from logs when required by policy.&#x20;
{% endhint %}

#### Step 2 — inspect container status and logs&#x20;

```
# Docker 
docker compose ps 
docker logs --tail 200 <container_name> 
 
# Podman 
podman ps -a 
podman logs --tail 200 <container_name> 
```

<table data-header-hidden><thead><tr><th width="199.83984375"></th><th></th></tr></thead><tbody><tr><td><strong>Symptom</strong> </td><td><strong>Next action</strong> </td></tr><tr><td>No container runtime found </td><td>Install Docker with Compose or Podman with a Compose provider, then rerun <code>./start.sh</code></td></tr><tr><td>Required file not found </td><td>Re-extract the complete package or reset agent credentials in the UI and deploy the replacement package. Do not reconstruct the missing file</td></tr><tr><td>Container repeatedly restarts </td><td>Read the first fatal error in logs. Common causes are missing env values, missing encrypted ISE credentials, authentication failure, or unreachable endpoints</td></tr><tr><td>Image pull fails </td><td>Verify access to ghcr.io and proxy/firewall policy. Use <code>--no-pull</code> only when the exact image is already present locally</td></tr><tr><td>Deployment material cannot be used </td><td>Generate replacement deployment material in Cisco Identity Intelligence and redeploy the package</td></tr></tbody></table>

#### Step 3 — interpret the first relevant log error&#x20;

<table data-header-hidden><thead><tr><th width="298.484375"></th><th></th></tr></thead><tbody><tr><td><strong>Log / symptom</strong> </td><td><strong>Meaning and next action</strong> </td></tr><tr><td>HTTP 401 / authentication failed </td><td>Rerun <code>./start.sh --reconfigure</code> and enter the current ISE service-account credentials</td></tr><tr><td>HTTP 403 / access denied </td><td>Ask the ISE administrator to confirm the account has the required ERS API access</td></tr><tr><td>Connection error or timeout </td><td>Verify the configured ISE hostname and port, then confirm DNS, routing, and firewall access from the agent host</td></tr><tr><td>JSON or unexpected-response error </td><td>Capture the timestamp and surrounding redacted log lines, then contact support. Do not run diagnostic commands inside the container</td></tr><tr><td>Image pull failed </td><td>Verify registry and proxy access. Use <code>--no-pull</code> only when the released image is already present locally</td></tr></tbody></table>

To replace credentials safely, refer to the steps in the [Safely reconfigure ISE credentials](#safely-reconfigure-ise-credentials) section above

#### Step 4 — diagnose outbound IoT / proxy failures&#x20;

* Look for Connected to IoT Core. Repeated CONNACK timeouts or connect-attempt failures mean the cloud path is not healthy
* If direct access is expected, confirm outbound TCP 443 to the IOT\_ENDPOINT value in `.env`&#x20;
* If a proxy is required, rerun `./start.sh --reconfigure` and enter the proxy as `http://host:port` (with credentials only if required). Setup performs an authenticated MQTT validation through the proxy before saving
* Allowlist the `IOT_ENDPOINT` hostname, not a resolved IP address. Large batches also require HTTPS access to the host in the short-lived signed S3 URL

```
grep '^IOT_ENDPOINT=' .env 
./start.sh --stop 
./start.sh --reconfigure 
```

#### Step 5 — diagnose pxGrid&#x20;

<table data-header-hidden><thead><tr><th width="257.23046875"></th><th></th></tr></thead><tbody><tr><td><strong>Log / symptom</strong> </td><td><strong>Meaning and response</strong> </td></tr><tr><td>Waiting for admin approval </td><td>Approve the displayed client under Administration > pxGrid Services > Client Management > Clients</td></tr><tr><td>Account disabled by ISE admin </td><td>Re-enable or recreate the pxGrid client, then rerun <code>--enable-pxgrid</code> if credentials changed</td></tr><tr><td>Activation timed out </td><td>Verify approval, node name, password, ISE reachability, and pxGrid service availability</td></tr><tr><td>Session service not found / pubsub service not found </td><td>Verify pxGrid services are enabled and advertised by the deployment</td></tr><tr><td>WebSocket connection failed</td><td>Verify TCP 8910 connectivity, routing, and pxGrid node availability</td></tr><tr><td>pxGrid activation failed</td><td>Correct the approval, credentials, TCP 8910 connectivity, or pxGrid service configuration, then restart the agent</td></tr></tbody></table>

After correcting pxGrid configuration, run:&#x20;

```
./start.sh --enable-pxgrid 
```

#### Step 6 — agent is connected but the dashboard is stale&#x20;

1. Confirm IoT Core connectivity. Look for Connected to IoT Core and command / bulk-upload subscriptions&#x20;
2. Confirm heartbeat health. Look for Started heartbeat loop (interval=60) and ISE health warnings&#x20;
3. Check ISE reachability. Failed to collect ISE health means the heartbeat can reach the cloud while ISE itself is unavailable&#x20;
4. Use the dashboard refresh button. Refresh re-queries cloud-side integration, health-history, and node-metric data; it does not replace local log validation&#x20;
5. Update an old agent. Run `./start.sh --update`, then verify the reported agent version and fresh heartbeat&#x20;

```
docker logs --since 10m <container_name> 2>&1 | \ 
grep -E 'Connected to IoT Core|heartbeat|Failed to collect ISE health|pxGrid|Connection failed' 
```

#### Step 7 — collect safe support details

```
docker logs --since 30m <container_name> 
# Copy only the relevant time window and redact it before sharing.
```

* Include the agent version, approximate failure time with timezone, container state, and the first relevant error chain
* State whether the failure affects ISE access, IoT Core, pxGrid, bulk S3 upload, or only the cloud dashboard
* Do not include the installation bundle, private keys, encrypted credential files, passwords, or unreviewed log output&#x20;


# Jamf

## Overview

Cisco Identity Intelligence can read user and device information from Jamf to determine management status and other security information about your organization's devices to provide additional visibility.

The goal of this document is to serve as a guide to set up a data integration between Identity Intelligence and your organization's Jamf environment.

### JAMF Data Integration

### Permission requirements

You will need the Admin role in Jamf to add the necessary configuration in Jamf, you will need the Admin role.

### Jamf Pro Configuration Steps

1. Login to Jamf using your Admin account and navigate to **Settings** > **System**
2. Select **API roles and clients**

<figure><img src="/files/yK0eH4E3jvj6cZ4hVo4s" alt=""><figcaption></figcaption></figure>

3. Create a new API role with the following permissions:\
   `Read Mobile Devices` `Read Computers`

Add the following permissions to enable Device Lockout functionality: `Send Computer Remote Lock Command`\
`Send MDM command information in Jamf Pro API`\
`View MDM command information in Jamf Pro API`

<figure><img src="/files/gQkVHTk9W4LdM6vWuY9l" alt=""><figcaption></figcaption></figure>

4. Once the new role is created, navigate back to the **API roles and clients** page and create a new client using the role you configured in Step 3

<figure><img src="/files/FZG7No85f0MTWoFg8G3g" alt=""><figcaption></figcaption></figure>

5. Copy the **Client ID** and **Client Secret** for later use in Identity Intelligence

### Identity Intelligence Configuration Steps

1. Login to your Identity Intelligence tenant and navigate to the **Integrations** menu item in the left hand navigation bar
2. Select **Add Integration**
3. Select **Jamf**
4. Enter your desired display name, your **Jamf Instance URL** (ex: `https://foo.jamfcloud.com`), and the Jamf **Client ID** and **Client Secret** referenced above in Step 5
5. Select **Save**


# Jira

11/2022

## Overview <a href="#overview" id="overview"></a>

The Oort security platform can integrate with Atlassian Jira to open tickets in response to failed Checks for various security configuration and identity threat events.

This document will walk you through the process of setting up access to Jira and will also walk you through the setup inside of the Oort console.

### Jira Configuration <a href="#jira-configuration" id="jira-configuration"></a>

To add the necessary configuration in Jira, you need to have admin access to create a service account for the integration.

From the Jira admin console, create a new user account that will act as the dedicated service account for the integration following [this article](https://confluence.atlassian.com/adminjiraserver/create-edit-or-remove-a-user-938847025.html).

Set the password according to your organization’s service account password policy and store it securely.

Add this user account to the Jira project where you intend to send Oort related issues and tasks.

Provide the user account that you created with a role or permissions that allow it to create, read, and modify issues.

This [article covers the various permission schemes](https://confluence.atlassian.com/adminjiracloud/managing-project-permissions-776636362.html) available in Jira.

The next step is to login with that user account and [create an API token](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/).

Copy the API token to a secure location for input into the Oort console below.

### Oort Configuration <a href="#oort-configuration" id="oort-configuration"></a>

Within the Oort console, navigate to -

**Integrations -> New Integration -> Jira**

E﻿nter the following information according to the instructions below:

<figure><img src="https://oort-docs-site.netlify.app/static/e719ec2ec0f277c895266cbcd64820a1/9f82e/2022-11-09_14-19-24.png" alt=""><figcaption></figcaption></figure>

Enter an integration name and description.\\

Enter your **Jira instance URL**. \\

Enter the **Project Key** for the Jira project where you wish to open Oort related issues. The project key can be obtain in Jira by navigating to the **Project page -> Project Settings**.

<figure><img src="https://oort-docs-site.netlify.app/static/f421fd042181a506c6972bf5ec185c36/9f82e/2022-11-09_14-17-07.png" alt=""><figcaption></figcaption></figure>

Enter the **email address** of the service account you created.

Enter the **API token** created above.

Click **Save.**

### Test the Jira Integration <a href="#test-the-jira-integration" id="test-the-jira-integration"></a>

To test the integration, navigate to a user that is failing a particular check, such as Inactive Users. Go to the **Checks** tab for that user.

Click the **three dot option menu** for a failing check and select **Open Ticket**.

<figure><img src="https://oort-docs-site.netlify.app/static/8b26a5b9b4e601bf2fd882facc03f495/9f82e/2022-11-09_14-22-00.png" alt=""><figcaption></figcaption></figure>

Select your Jira ticketing service instance and click **Confirm**.

<figure><img src="https://oort-docs-site.netlify.app/static/db70e7e13cead931217a524d6987fb0f/a1253/2022-11-09_14-23-45.png" alt=""><figcaption></figcaption></figure>

The ticket will appear in the lower section.

<figure><img src="https://oort-docs-site.netlify.app/static/b7a440dd8076af08ce551417bb764a4d/9f82e/2022-11-09_14-25-12.png" alt=""><figcaption></figcaption></figure>


# Mailgun

2023/12

## Overview

Many organizations elect to trigger an email notification or email-based workflow when the Identity Intelligence security platform has a new finding or actionable alert. Please see the [#example-use-case-mailgun](#example-use-case-mailgun "mention")section below for more details.

Up to this point, this email would come from a cisco.com domain. For a more flexible seamless process, Identity Intelligence has introduced the ability to configure several of the top mail providers.

In the integrations tab, there is a new section for “Email”, which includes options to set up integrations for your own Mailgun service.

## Prerequisites

This article assumes that your organization has a Mailgun implementation and you have necessary admin rights to configure it.

## Mailgun Configuration

1. Go to the Integrations tab and select **Add Integration**
2. Scroll to the **Email** section and select the SendGrid Integration
3. Fill in the following fields and click **Save** when completed:

* **Name** - this is a display name in the Identity Intelligence UI for the integration
* **Description** - optional
* **From Address** - an email address that exists on the verified domain
* Base URL - API base URL, corresponding to your geographic region, e.g. [https://api.mailgun.net](https://api.mailgun.net/), <https://api.eu.mailgun.net/> - please see this article <https://documentation.mailgun.com/en/latest/api-intro.html#base-url>
* **Domain** - this should be a verified Mailgun domain, as explained in <https://help.mailgun.com/hc/en-us/articles/360026833053-Domain-Verification-Walkthrough>
* **Default email service** (toggle) - enable this option to make this email integration the default provider from which email notifications will be sent
* **API Key** - An API key (secret), as explained in <https://help.mailgun.com/hc/en-us/articles/203380100-Where-Can-I-Find-My-API-Key-and-SMTP-Credentials->

<figure><img src="/files/Cbc7BHIcZNpayFrtqCx6" alt=""><figcaption></figcaption></figure>

## Test Connectivity - Mailgun

After the integration is created, you can test connectivity to the service using the 3-dot menu option on the integration row and select **Test Connectivity** -

<figure><img src="/files/a8zoZRm9ZiaXo0ZLB1vx" alt=""><figcaption></figcaption></figure>

## Example Use Case - Mailgun

Organizations may find that their users are connecting to corporate systems and applications while using personal 3rd party VPN services like NordVPN or ExpressVPN, or less reputable ones than that. This is a bad security practice and many companies prohibit this within their acceptable use policy.

Identity Intelligence surfaces personal VPN usage in the [Personal VPN Usage](/understanding-check-failures/oort-insights/identity-posture-management-insights/personal-vpn-usage) check. Using the check settings menu, you can configure Identity Intelligence to send email messages to users (or their managers, if defined in the primary IDP), informing them of this policy violation.

With the Mailgun integration configured above and set to Default Email Service, **this email will now originate via Mailgun from the sending From address list**.

<figure><img src="/files/A84uoSkpS8EpuhqK2ym8" alt=""><figcaption></figcaption></figure>

You can also customize the message sent to the end user per Check via the [Check Settings](/understanding-check-failures/customizing-checks#notification-settings).

<figure><img src="/files/vo7g103E8oaRRPGmZyPj" alt=""><figcaption></figcaption></figure>


# Microsoft Teams Notification

2026.01.29

{% hint style="info" %}
The Microsoft Teams bot for Cisco Identity Intelligence is currently <mark style="color:$warning;">only available within the US Duo deployment</mark>, for architectural reasons related to Teams app requirements. Cisco is working to expand access within Microsoft's framework for Teams apps and the Teams marketplace.
{% endhint %}

## Overview <a href="#overview" id="overview"></a>

Identity Intelligence can integrate with one or more Microsoft Teams instances to provide notifications and in some cases automation of frequently recurring identity tasks.

### Audience <a href="#audience" id="audience"></a>

This document is intended for identity security, IAM, and IT administrators responsible for integrations between identity, security, and collaboration platforms, including notifications, alerting, and incident remediation.

### Benefits <a href="#benefits" id="benefits"></a>

Integrating the Identity Intelligence platform with your Teams environment allows for fast notification and remediation of both failed identity health checks and also individual user identity issues or investigations.

For more information, please see the corresponding article detailing different types of notifications and collaboration available from Identity Intelligence.

## Requirements <a href="#requirements" id="requirements"></a>

The following requirements exist for the Teams notifications integration:

1. Azure AD must **first** be configured in your Identity Intelligence tenant for Azure tenant that underlies your Teams environment
2. A Teams admin account is required to upload the Identity Intelligence Bot for Teams via the Teams admin center
3. A Team or Channel owner role is required to add the Identity Intelligence Bot app to the desired channel

### Important Notes

1. The Teams app **cannot be added to a private Teams channel**, due to Microsoft restrictions on third party apps
2. The current Teams app **only connects with US production Identity Intelligence tenants**. See notice above.

## High-level Integration Steps

The current steps to configure this functionality are as follows.

1. Configure the [Azure AD integration](https://docs.oort.io/docs/azuread) for your Identity Intelligence team to the corresponding Azure tenant where the Teams environment resides (**required**)
2. Download the Identity Intelligence (Oort) Production Teams App (zip file below). If you have any issues downloading the file, contact your Cisco Support representative

{% file src="/files/pmTfPSNNwzJircd3pBbv" %}

3. Install the Identity Intelligence (Oort) Teams communication bot in your Teams tenant as an administrator
4. Configure Teams notifications for the desired checks and events in the Identity Intelligence console

### Installing the Identity Intelligence app in your Teams environment <a href="#installing-the-oort-app-in-your-teams-environment" id="installing-the-oort-app-in-your-teams-environment"></a>

1. From within the [Teams admin center](https://admin.teams.microsoft.com/) console, select **Teams apps -> Manage apps**
2. Click **+ Upload** and then **Upload** again
3. Select the ZIP file, provided above, and upload it
4. After successful upload, click the link to manage the app
5. From here you will be see the details of the app

### Adding the Identity Intelligence app to a Teams channel or team <a href="#adding-the-oort-app-to-a-teams-channel-or-team" id="adding-the-oort-app-to-a-teams-channel-or-team"></a>

To add the app to a Team or Channel, perform the following steps.

**Note - You must be signed into Teams with an account that has the Owner role for the Team and Channel where you want to install the Identity Intelligence (Oort) Bot for use in your organization.**

1. Select the desired Team and click the three dot menu. Select **Manage team**
2. Select the **Apps** tab and then **More apps** button on the right. Click the **Identity Intelligence (Oort) Bot**. If there are many apps under *Built for your org*, then click **See all** on the right side
3. Click **Add to a team**
4. Select the desired Team and channel and click **Install bot**
   1. If you a receive a **Something went wrong** message, this means that the account you're signed into Teams with is not an owner of that Team or channel and doesn't have permissions to install applications. Sign out and sign in with an account that is an owner of the desired Team
5. From the Manage channel -> Apps tab, you should now see the Identity Intelligence (Oort) Bot in your app list

You must now proceed to the next section to add Teams as a notification target within Identity Intelligence.

### Adding a Teams notification target in Identity Intelligence <a href="#adding-a-teams-notification-target-in-oort" id="adding-a-teams-notification-target-in-oort"></a>

1. Within your Identity Intelligence tenant console, navigate to **Integrations** and **Add Integration**. You should now see a Microsoft Teams tile under the Notification Targets category.
2. Click **+ Add MS Teams Target**
3. Provide a **Name** and **Description** for the notification target. NOTE: more than one target can be configured to the same Teams tenant
4. Select either **Failed checks** or **Data collection**, or both, for the types of notifications to send to this target
   1. **Failed checks** notifications provide Teams notifications on a daily basis of net-new users failing specific health checks. Please see below
   2. **Data collection** provides a daily update notification upon successful user data collection from one or more integrations
5. Select the desired Microsoft Teams environment
6. Enter the desired **channel name** OR **specific person via UPN** (e.g. <firstname.lastname@company.com>) where the notifications should go to\
   \
   **Select Checks Manually**: Check the box next to everything to check for. Use the search field to search for checks by name.\
   \
   When you're finished, click **Add Checks** and select the check box next to each check to add.\
   \
   **Select Checks by Category**: Check the box next to every Severity (or click **All** to select all severities), then check the box next to every **Topic** (or click **All** to select all topics).
7. Click **Save**
8. You will now see a Teams entry for both Instant Messaging (direct msgs to users or their managers) and Notification targets
9. You can test connectivity using the three dot menu on the right side of the integration object
10. A successful test message will be sent to the target indicating this is a "verification" message

{% hint style="info" %}
Using the **Test** button for a notification target on a specific check page will send a test message to the signed in user, NOT the configured channel, to verify any custom messages look as intended
{% endhint %}

### Configuring Teams Notifications for Identity Intelligence Checks <a href="#configuring-teams-notifications-for-oort-checks" id="configuring-teams-notifications-for-oort-checks"></a>

Now that the Teams integration is in place, configure one or more check types to send notifications to the configured channel.

For example, for the Inactive Users check, you can send Failure Reports to the Teams notification targets once a day. This occurs when data is collected and processed by Identity Intelligence.

You can also send direct messages to users or their manager upon failure of a particular check. This is useful when the user or the manager can take direct action to remediate the issue.

For example, a manager of an inactive user can submit a ticket or begin the process to deactivate an inactive user account if that user no longer needs access.

### Deleting the Identity Intelligence app for Teams <a href="#deleting-the-oort-app-for-teams" id="deleting-the-oort-app-for-teams"></a>

Should it be necessary to delete the Identity Intelligence app from your Teams environment, simply find it in the **Manage apps** screen and click it to see details.

From this screen, the three dot menu will provide an option for **Actions -> Delete**.


# Okta Log Streaming AWS EventBridge

10/2024

## Overview <a href="#overview" id="overview"></a>

The Identity Intelligence identity security platform integrates with Okta tenants to collect user account information, device information, and sign-on and application activity.

To enable hourly analysis of user activity and events, Identity Intelligence can leverage **Okta log streaming to an AWS EventBridge** streaming model. Then the Identity Intelligence platform can capture the events from the log stream.

<mark style="color:red;">**NOTE:**</mark>

* By default, with event streaming enabled, the analysis of event-based detections will be performed hourly and associated notifications will be sent at that time
* Individual events for a user will only be added to the user's Activity table <mark style="color:blue;">once per day</mark>. To fetch the most recent events for a user, run the [Refresh User Data](https://docs.oort.io/how-to-guides/remediation-actions#refresh-user-data) action from the actions menu
* If a near-time compatible check failure is detected for an Okta user, it can trigger other non-near-time check failure notifications to be sent outside of the standard 24hr cycle

### Prerequisites <a href="#prerequisites" id="prerequisites"></a>

You must already have an active Okta data integration in your Identity Intelligence tenant that is connected via an Okta API token. Please see [instructions here](https://docs.oort.io/docs/oktadataintegration).

**You must also have the Log Streaming module enabled for your tenant.** Please see your Okta representative if you do not have this module as part of your current subscription.

## Okta Log Streaming Configuration <a href="#okta-log-streaming-configuration" id="okta-log-streaming-configuration"></a>

For reference, the Okta log streaming documentation can be found [here](https://help.okta.com/en-us/Content/Topics/Reports/log-streaming/add-aws-eb-log-stream.htm).

### Permission requirements for setting up Identity Intelligence integration with Okta <a href="#permission-requirements-for-setting-up-oort-integration-with-okta" id="permission-requirements-for-setting-up-oort-integration-with-okta"></a>

To add the necessary configuration in Okta, you need to be one of the following:

* Read-only administrator

### Setup Steps <a href="#setup-steps" id="setup-steps"></a>

There are 3 steps you need to go through to set up the AWS log streaming integration between Okta and Identity Intelligence.

1. In the Admin Console, go to **Reports > Log Streaming**. This page shows all of the log stream targets available in your org.
2. Click Add Log Stream to start the log stream wizard.

<figure><img src="/files/g3zjI6Y7LvJa1dZruph7" alt=""><figcaption></figcaption></figure>

3. Select AWS EventBridge from the catalog. Click Next.<br>

   <figure><img src="/files/cefehSY6TAW6hiyyoTmn" alt="" width="375"><figcaption></figcaption></figure>
4. Name: Provide a unique name for this log stream in Okta.
5. **AWS Event Source Name**: The source name needs to be the Okta integration ID, which is available in the Event Streaming tab of your existing Okta integration. Go to **Integrations -> Edit Okta integration**

<figure><img src="/files/zpue2Np1nDMPTdFcGUDn" alt="" width="563"><figcaption></figcaption></figure>

6. Copy the AWS Event Source Name and AWS account ID shown into your Okta AWS Log Stream configuration
7. Enter the <mark style="color:orange;">**AWS region shown on the page**</mark> in your Okta integration.
8. <mark style="color:blue;">**Save this information in the Okta Log Stream wizard FIRST**</mark>
9. **Check the box shown above and click Save in the Cisco Identity UI**


# Okta Data Integration

2026.07.20

## Overview <a href="#overview" id="overview"></a>

The Cisco Identity Intelligence security platform reads a variety of user account data and event data to build a full picture of the identity security posture of your Okta tenant, as well as on-going identity threats against your organization.

## Okta OAuth2 Data Integration <a href="#okta-data-integration-1" id="okta-data-integration-1"></a>

Identity Intelligence has created an OAuth2 SPI service application in the Okta network for the purpose of the data ingestion.

This bar below is the link to the application in the Okta network :point\_down:<br>

{% embed url="<https://www.okta.com/integrations/cisco-identity-intelligence-read-write-management-api-service/>" %}

To implement this application, do the following:

1. Confirm that your Okta organization is using Okta Identity Engine (OIE), and not Okta Classic. [Upgrade if needed](https://help.okta.com/oie/en-us/content/topics/identity-engine/oie-upgrade-eligibility.htm). If you're unsure which solution you're using, check the footer on any page of the Okta Admin Console. The version number is appended with E for OIE orgs and C for Classic Engine orgs
2. Select **Add Integration** from the link in the bar above :point\_up: or search for the API Integration within the Okta Admin Console (If you have multiple tenants, ensure you're signed into the correct Okta org!). Then select **Next**
3. Select **Install & Authorize**<br>

   <figure><img src="/files/tkWGwQ2tYyu2la7bKVOs" alt=""><figcaption></figcaption></figure>
4. Copy the client secret to a secure location, such as a key vault, if desired
5. Select **Done**
6. Within your Identity Intelligence tenant, go to the **Integrations** page and select **Add Integration**. Select the Okta integration
7. Enter the display name, Issuer (your Okta URL), Client ID, and Client Secret in the respective fields and select the **Save** button<br>

   <figure><img src="/files/oxjJmrgyDAUvB3Npot6p" alt=""><figcaption></figcaption></figure>
8. Under the **Advanced Tab**, review the answers to the questions in the top section of the page to make sure they are answered correctly. Then ensure the integration is set to "Managed" to enable the relevant data types based on the answers to those questions. Read our documentation about [Managed Integrations ](/integrations/managed-integrations)to learn about the benefits<br>

   <figure><img src="/files/oKBmaoSji1mpFzuBU3PN" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
After configuration is completed in both systems, you may see a yellow banner on the Identity Intelligence API Service App page in the Okta Admin Console that states, "Cisco Identity Intelligence - Read - Write Management API Service is not configured until you complete the setup instructions". You can disregard this message. The integration is fully configured
{% endhint %}

### Test Connectivity

1. On the Integrations page, select the **three dots menu** on the right side of the new Okta integration tile. Select **Test Connectivity**

### Configure Okta Event Streaming

If you have the Log Streaming module as part of your current Okta subscription follow the steps below to configure Log Streaming. **Log Streaming is not required to configure the Okta Data Integration, but it is recommended if you have it.**

1. Once successfully verified, select the 3-dot menu again and select **Edit settings** for the Okta integration. Go to the **Event Streaming** tab
2. Use the information provided to set up Okta log streaming via an AWS Eventbridge. [Instructions can be found here](/integrations/okta-aws-eventbridge-streaming-integration)
3. After you register the log stream, select **Save.** Then use the 3-dot menu for the integration and select **Collect Now** to begin initial data collection

**NOTE:** Due to Okta API rate limiting, the initial data collection, including historical log data, may take 24 hrs or longer. Your Identity Intelligence technical contact will assist with any questions in this process

## Okta Read-only OAuth 2.0 Client Application (Alpha)

The Okta Service Application integration is the preferred method for collecting data from Okta as it the most secure, ensures the best experience and will automatically update when Identity Intelligence supports collection of additional data types. Although it requests certain scopes or permissions, such as "create user", these are required by Okta for Service Apps and Identity Intelligence does not utilize these permissions.\
\
Although we **highly** recommend using the Okta Service Application, if required, there is also read-only option using OAuth 2.0, which is a widely adopted authorization framework that provides secure and scalable access delegation. In this context, Okta's implementation of OAuth 2.0 allows you to grant specific API permissions to applications while maintaining control over sensitive resources. For this reason, it require a more complex set up and will require manual updates from your Okta Admin to grant access to new scopes or permissions when Identity Intelligence adds them.

This section provides a step-by-step guide for configuring a read-only **OAuth 2.0 API service integration** with Okta. By following this guide, you will enable secure access to Okta APIs with the least privilege principle, ensuring that the integration can only retrieve (read) data without the ability to modify it.

#### Key Features of This Integration

* **Read-Only Access**: Limit the scope of API access to read-only operations, ensuring enhanced security
* **Scoped Permissions**: Use OAuth 2.0 scopes to define the exact level of access the integration is permitted
* **Service Account Integration**: Create a service account that interacts programmatically with Okta APIs
* **Secure Authentication**: Leverage client credentials for authentication to ensure secure communication

#### Prerequisites

Before you begin, ensure you have the following:

1. <mark style="color:$danger;">**IMPORTANT:**</mark>**&#x20;This feature is currently in Alpha phase, meaning it is a limited preview.  Contact Cisco or Duo Support to have this feature enabled for your Identity Intelligence tenant.**
2. **Administrative Access to Okta**: You must have the necessary permissions to create and manage API service integrations within your Okta instance
3. **Okta Developer Account or Production Environment**: A valid Okta environment where the integration will be configured
4. **Understanding of OAuth 2.0**: Familiarity with OAuth 2.0 concepts such as scopes, tokens, and client credentials

#### What You'll Learn

By the end of this section, you will:

* Set up an OAuth 2.0 application in Okta
* Configure client credentials for secure API authentication
* Define and apply the appropriate read-only scopes for the integration
* Test the integration to ensure it retrieves data as expected

Let’s get started with the configuration process!

#### Okta Integration: creation of the OIDC client in Okta with Public/Private Keys authentication for read-only integration

**Step 1: Log into Okta Admin Console**

1. Open your Okta Admin Console (e.g., <https://your-org.okta.com/>)
2. Log in using your admin credentials

**Step 2: Create a custom admin role**

1. Navigate to **Security** > **Administrators** > **Roles** tab
2. Select **Create role**
3. Provide a name and description for the role
4. Under Permissions, select **Identity and Access Management** > **View roles, resources, and admin assignments**
5. Select **Save Role**

<figure><img src="/files/LYkswt4atUpaWOwyRMpM" alt=""><figcaption></figcaption></figure>

**Step 3: Create an API Services Application**

1. In the Okta Admin Console, go to Applications > Applications
2. Select **Create a new app integration**
3. Choose **API Services** and select **Next**<br>

   <figure><img src="/files/3715At84zw61nf3Fn11B" alt=""><figcaption></figcaption></figure>
4. Enter a recongizable name for your App Integration and select **Save**
5. Under Client Credentials, select **Client Authentication** and then **Edit**.
6. Select **Public key / Private key** as the authentication method
7. Check the box to **Save keys in Okta**
8. Select **Add Key**, then select **Generate new key**
9. Choose Private Key in **PEM format** (not JSON), and make sure to <mark style="color:$warning;">**copy the private key and KID to a secure location**</mark> (you won’t be able to see the private key again once you close this window).<br>

   <figure><img src="/files/rDWl0yxdP8mjnLdxiLR6" alt=""><figcaption></figcaption></figure>
10. Select **Done**, then select **Save**
11. Under General Settings, select **Edit**, deselect **Proof of possession**, then select **Save**<br>

    <figure><img src="/files/Z4OHjhpK7AQWYfVneDhP" alt=""><figcaption></figcaption></figure>

**Step 4: Configure Permissions**

1. Go to the Okta API Scopes tab
2. Grant the necessary permissions for the scopes required by Identity Intelligence

<figure><img src="/files/OOUxgPohT4zCDGbaaaCl" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/tP3KBG00g5VE0yZlpLVq" alt=""><figcaption></figcaption></figure>

**Step 5: Configure Admin Roles**

1. On the Admin roles tab, add two roles to this application
   1. Add either **Super Admin role OR BOTH Org Administrator role and Read-only Administrator role** (Without Org Admin role, Identity Intelligence will **not** be able to collect `API Service Integration` and `User Schema` details for the tenant)
   2. Add the custom role created in the steps above, with a resource set of `All Identity and Access Management resources`\
      \
      **NOTE** - the application is still constrained by the granted API scopes. However, per Okta, a corresponding role must be granted that allows the selected scopes, such as `okta.schemas.read` See [their article](https://developer.okta.com/docs/guides/implement-oauth-for-okta-serviceapp/main/#use-the-client-credentials-grant-flow) for more details on this

<figure><img src="/files/rePEBv4y0dG7nWxlPZkv" alt=""><figcaption></figcaption></figure>

**Step 6: Configure Okta Integration in Identity Intelligence**

1. Within Identity Intelligence, navigate to **Integrations** > select the **Add Integration** button> select Okta
2. Check the box for <mark style="color:blue;">**public/private key authentication**</mark>

{% hint style="info" %} <mark style="color:$warning;">**NOTE:**</mark> <mark style="color:$primary;">If you do not see this option, contact Cisco or Duo support to have this feature enabled for your tenant.</mark>
{% endhint %}

3. Use the following details to configure the Okta integration in Identity Intelligence:
   1. Display name
   2. Okta domain (URL)
   3. Client ID
   4. KID
   5. Private Key PEM file<br>

      <figure><img src="/files/1tD7jJ4Czx8rVkjFbnWT" alt=""><figcaption></figcaption></figure>
4. Select **Connect** and the API connection will be tested automatically
5. We highly recommend implementing [#configure-okta-event-streaming](#configure-okta-event-streaming "mention")


# Okta Workflows

02/2024

Fetch end user information and react to Identity Intelligence threat detection with Cisco Identity Intelligence.

## Authorization

### Prerequisites

Generate client API credentials:

1. From the Integrations tab, click **Add Integration**.
2. Scrolls down and click **Add API Client**.
3. Provide a **Name** and **Description**.
4. Click **Save and generate credentials**.
5. Click **Copy all** to copy the credentials to your clipboard.

### Create a connection

When you add a Cisco Identity Intelligence card to a flow for the first time, you'll be prompted to configure the connection. This will enable you to connect your Cisco Identity Intelligence account, save your account information, and reuse the connection for future Cisco Identity Intelligence flows.

To create a new connection from an Action card:

1. Click **New Connection**.
2. Enter a **Connection Name**. This is useful if you plan to create multiple Cisco Identity Intelligence connections to share with your team.
3. Enter the **Client ID**, **Client Secret** and **Audience** values from the integration created earlier.
4. Select the appropriate geographical region in the **Region** dropdown.
5. Click **Create**.

## Connector cards

### Cisco Identity Intelligence event cards

| Event                                                           | Description                                                                                           |
| --------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| [Identity Intelligence Webhook](#identity-intelligence-webhook) | Triggers a flow when a specific check has new users failing the check in Cisco Identity Intelligence. |

### Cisco Identity Intelligence action cards

| Action                                      | Description                                                                                 |
| ------------------------------------------- | ------------------------------------------------------------------------------------------- |
| [Get End User State](#get-end-user-state)   | Fetch a concise summary of end-user information, including key fields and relevant details. |
| [Get End Users By IP](#get-end-users-by-ip) | Retrieve users associated with a specified IP address.                                      |

## Events

### Identity Intelligence Webhook

Triggers a flow when a user is failing the check in Cisco Identity Intelligence.

#### Options

| Field         | Definition                                                                                                                                                           | Type | Required |
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- | -------- |
| Shared Secret | A secret string for verifying the source of webhooks. It is sent by Cisco Identity Intelligence events in a header named "x-api-client-token" in the webhook payload | Text | TRUE     |
| Check ID      | A Cisco Identity Intelligence check ID to send events from to the webhook. This can be later updated in the Cisco Identity Intelligence dashboard.                   | Text | FALSE    |

#### Output

| Field                     | Definition                                                                                                   | Type            |
| ------------------------- | ------------------------------------------------------------------------------------------------------------ | --------------- |
| `detail`                  | Webhook payload.                                                                                             | Object          |
| ➥ `id`                    | The the event ID                                                                                             | Text            |
| ➥ `checkId`               | The ID of the failed check in the Cisco Identity Intelligence that triggered the event                       | Text            |
| ➥ `title`                 | The check title.                                                                                             | Text            |
| ➥ `severity`              | The check severity in Cisco Identity Intelligence.                                                           | Text            |
| ➥ `login`                 | The login identifier of the failing user                                                                     | Text            |
| ➥ `explainabilityDetails` | List of objects of type `{"key":<key>, "value":<value>}` with explainability details about the failing check | List of Objects |
| ➥ `checkTopics`           | List of topic the check relates to (e.g. `Compliance`, `Devices`)                                            | List of Text    |
| ➥ `checkTags`             | List of tags applied to the check                                                                            | List of Text    |
| ➥ `frameworks`            | List of frameworks the check is a part of (e.g. `NIST`, `MITRE`)                                             | List of Text    |
| ➥ `published`             | Timestamp the payload was generated.                                                                         | Date & Time     |
| `region`                  | The Cisco Identity Intelligence deployment region from which the event originated                            | Text            |
| `id`                      | The webhook event ID                                                                                         | Text            |
| `time`                    | The Date/Time the event was triggered                                                                        | Text            |
| `detail-type`             | Type of content in the event                                                                                 | Text            |
| `source`                  | Identifier of the Identity Intelligence instance                                                             | Text            |

## Actions

### Get End User State

Fetch a concise summary of end-user information, including key fields and relevant details.

#### Input

| Field | Definition            | Type | Required |
| ----- | --------------------- | ---- | -------- |
| Login | User's email address. | Text | TRUE     |

#### Output

| Field                       | Definition                                                                        | Type            |
| --------------------------- | --------------------------------------------------------------------------------- | --------------- |
| `Status Code`               | HTTP response code.                                                               | Number          |
|                             |                                                                                   |                 |
| `EndUser State`             | Summary of end-user information.                                                  | Object          |
| `id`                        | The user ID in Cisco Identity Intelligence.                                       | Text            |
| `displayName`               | The user's display name.                                                          | Text            |
| `login`                     | User's email address.                                                             | Text            |
| `employeeID`                | The user ID Employee ID in the Identity Provider or HR system.                    | Text            |
| `status`                    | The aggregated user status in the identity providers.                             | Text            |
| `userTypeClassification`    | The user classification in Cisco Identity Intelligence                            | Text            |
| `managerLogin`              | User's manager email address.                                                     | Text            |
| `ipAddresses`               | List of IP Addresses used by the user.                                            | List of Objects |
| ➥ `ipAddress`               | IP Address used by the user.                                                      | Text            |
| ➥ `location.city`           | IP Geolocation city of the IP Address.                                            | Text            |
| ➥ `location.state`          | IP Geolocation state of the IP Address.                                           | Text            |
| ➥ `location.country`        | IP Geolocation country of the IP Address.                                         | Text            |
| `phoneNumber`               | User's phone number.                                                              | Text            |
| `unusedApplications`        | Names of applications the user has access and did not access in the past 30 days. | List of Text    |
| `usedApplications`          | Names of applications the user has access and accessed in the past 30 days.       | List of Text    |
| `usedFactors`               | Authentication factors used by the user.                                          | List of Text    |
| `referenceUrl`              | User's URL in Cisco Identity Intelligence.                                        | Text            |
| `registeredLocationDetails` | The user's registered location                                                    | Object          |
| ➥ `city`                    | The registered location city.                                                     | Text            |
| ➥ `state`                   | The registered location state.                                                    | Text            |
| ➥ `country`                 | The registered location country.                                                  | Text            |
| `workingLocationDetails`    | List of the locations the user works in.                                          | List of Object  |
| ➥ `userLocationPrevalence`  | The prevalence of the working location for the user, as a percentage.             | Number          |
| ➥ `location.city`           | The working location city.                                                        | Text            |
| ➥ `location.state`          | The working location state.                                                       | Text            |
| ➥ `location.country`        | The working location country.                                                     | Text            |
|                             |                                                                                   |                 |
| `Errors`                    | List of errors that might have occurred in the request.                           | List of Object  |
| `path`                      | Paths that had errors in the request.                                             | List of Text    |
| `errorType`                 | Type of the error.                                                                | Text            |
| `message`                   | Error message.                                                                    | Text            |
| `errorInfo`                 | Information about the error                                                       | List of Object  |
| `data`                      | Data about the error                                                              | List of Object  |

### Get End Users By IP

Retrieve users associated with a specified IP address.

#### Input

| Field      | Definition  | Type | Required |
| ---------- | ----------- | ---- | -------- |
| IP Address | IP Address. | Text | TRUE     |

#### Output

| Field           | Definition                                                     | Type           |
| --------------- | -------------------------------------------------------------- | -------------- |
| `Status Code`   | HTTP response code.                                            | Number         |
|                 |                                                                |                |
| `End Users IPs` | Itemized list of Users associated with a specified IP address. | Object         |
| `id`            | The user ID in Cisco Identity Intelligence.                    | Text           |
| `displayName`   | The user display name in Cisco Identity Intelligence           | Text           |
| `login`         | User's email address.                                          | Text           |
| `referenceURL`  | User's URL in Cisco Identity Intelligence.                     | Text           |
|                 |                                                                |                |
| `Errors`        | List of errors that might have occurred in the request.        | List of Object |
| `path`          | Paths that had errors in the request.                          | List of Text   |
| `errorType`     | Type of the error.                                             | Text           |
| `message`       | Error message.                                                 | Text           |
| `errorInfo`     | Information about the error                                    | List of Object |
| `data`          | Data about the error                                           | List of Object |


# OpenAI

## Overview

Cisco Identity Intelligence can integrate with OpenAI to gather data via their [OpenAI Compliance API](https://chatgpt.com/admin/api-reference#tag/Introduction) to surface users who have access to OpenAI models, how those models are being used, how they are configured and what tools they have access to.

Using this data, Identity Intelligence can generate beneficial insights regarding the users and Non-Human Identities (NHIs) within OpenAI, such as improperly configured tools, improper use of tools, privilege escalation, data loss prevention, and more.

### Requirements

The following are necessary to configure the OpenAI integration:

1. OpenAI Enterprise subscription
2. OpenAI workspace(s)
3. An OpenAI Enterprise Platform admin account capable of creating API keys

### OpenAI API Permission Structure

Identity Intelligence requests the minimal scopes necessary to complete the required operations to support the integration. For this integration, Identity Intelligence requires a \`read-only\` API token.

<mark style="color:$warning;">**Note**</mark><mark style="color:$warning;">:</mark> The OpenAI Compliance API currently utilizes a coarse-grained permission structure that only supports either `read-only` or `read-write` permissions, and requires you to grant the API token permission to the whole API. It does not support granting a token access to limited portions of the API at this time.

### Managing Conversation Data Collection Preferences for ChatGPT & Codex

The OpenAI Compliance API contains both conversation metadata and conversation logs regarding the conversations happening between end-users and your organization's instance of ChatGPT or Codex, which Identity Intelligence can retrieve via this integration. The conversation logs from these tools contain valuable data and information that Identity Intelligence can then analyze to generate and surface interesting insights about potential issues or risks associated with the OpenAI usage within your organization, such as detecting improper tool use or assisting with data loss prevention initiatives.\
\
However, we understand that this data may be sensitive and your org may not want, or allow, Identity Intelligence to retain conversation logs between your end-users and OpenAI models. For that reason, there are three setting options available that enable you to configure what conversation data Identity Intelligence is allowed to process so that you can select the preferred data handling method for your org.

These three settings are:

1. **Do not collect ChatGPT or Codex conversation logs**
   1. Identity Intelligence will not retain **any** conversation metadata or logs
2. ***\[Default Setting]*****&#x20;Collect conversation metadata only without conversation message content**
   1. Identity Intelligence will retain conversation log **metadata only**, but will not retain **any** fields that contain data regarding user prompts or model responses
3. **Collect conversation metadata and conversation content**
   1. Identity Intelligence will collect and retain **full** conversation data, including **all** metadata, user prompts and model responses

The following table depicts the different capabilities and functionality that Identity Intelligence can perform based on the available Conversation Log settings.

{% hint style="info" %}
Note: The insights and capabilities listed below may represent future functionality that will be developed for the General Availability release, or after, and do *not* have guaranteed availability during Alpha
{% endhint %}

<table data-full-width="false"><thead><tr><th width="303.3125"></th><th width="146.62109375" align="center" valign="top">Option 1: Do not collect ChatGPT or Codex conversation logs</th><th width="147.08203125" align="center" valign="top">Option 2: Collect conversation metadata only without conversation message content</th><th width="147.1953125" align="center" valign="top">Option 3: Collect conversation metadata &#x26; conversation content</th></tr></thead><tbody><tr><td>Baseline visibility</td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td>Account directory-based data and insights<br><sub><em>Eg: Account activity, dormant accounts, admin privileges, etc.</em></sub></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td>GPT definition-based data and insights<br><sub><em>Eg: Known risky tools, broadly defined tools, tools available to users who shouldn’t have access, etc.</em></sub></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td>Basic tool usage insights<br><sub><em>Eg: Which tools were executed, what tool replied, etc.</em></sub></td><td align="center" valign="top"></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td>Deeper insights based on detailed conversation logs<br><sub><em>Eg: Tool misuse, AI drift, data exfiltration, etc.</em></sub></td><td align="center" valign="top"></td><td align="center" valign="top"></td><td align="center" valign="top"><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr></tbody></table>

## OpenAI Configuration Steps

{% hint style="info" %}
To configure this integration, OpenAI will first need to grant your organization custom Compliance API Scopes. This process, outlined in the OpenAI docs referenced in Step 1 (below), requires OpenAI support team involvement and may take **several days** depending on their availability and responsiveness.\
We encourage you to start this step as early as possible to avoid delays.
{% endhint %}

1. [Reference the **Authentication** section of the OpenAI docs](https://chatgpt.com/admin/api-reference#tag/Introduction) and follow the steps to obtain and save your API key. Copy down this API key somewhere secure as you will need it to complete the integration set up process in Identity Intelligence and you ***cannot*** generate the full API key again after it has been generated
   1. Make sure that you have created the API key under a **service account** and ***not*** as your own user or the integration will not work correctly
2. Then navigate to the [**Organization Admin keys** setting page](https://platform.openai.com/settings/organization/admin-keys) and select **Create new admin key.** Give the key a name that is easy to recognize as linked to Identity Intelligence (eg: `Cisco Identity Intelligence Admin API Key`
   1. Note: OpenAI does **not** provide the option to create an admin API key linked to a service account
3. Select **restricted** permissions and grant **read** **audit log scope** and **read organization administration scope**. The settings should look like this:

   <figure><img src="/files/ZlDaOWSzSYdjaoYkHZiB" alt="" width="365"><figcaption></figcaption></figure>
4. Once you have applied the correct permissions and scopes, select **Create Admin Key.** After you have successfully created the key, **make sure to save the secret value.** You will need this for later steps and you will **not** be able to see it again
5. Navigate to the [data controls settings](https://platform.openai.com/settings/organization/data-controls/data-retention) section in OpenAI and **enable audit logging**
6. Then, navigate to the [**Workspace Admin Settings**](https://chatgpt.com/admin) section in OpenAI. Review the workspace name to confirm that you have selected the correct workspace
7. On the **Workspace Admin Settings** page, you will find an **Organization ID** and a **Workspace ID** (screenshot example below). Copy both of these down as you will need them to complete the integration set up process in Identity Intelligence

<figure><img src="/files/GeQUJX4mDojWhA1yKWr4" alt="" width="563"><figcaption></figcaption></figure>

## Identity Intelligence Configuration Steps

After you have completed the OpenAI configuration steps outlined above, navigate to the **Integrations** page within your Identity Intelligence tenant and perform the following steps :

1. From the **Integrations** page, select the **Add Integration** button. Locate and select **OpenAI Enterprise** from the list of possible integration sources
2. Enter an easily recognizable display name for this integration (eg: `OpenAI <insert your org name>`). This display name will be used throughout Identity Intelligence to identify the integration among your other connected sources
3. Enter the workspace ID and organization ID that you copied during Step 5 of the [OpenAI Configuration Steps](#openai-configuration-steps) section above into their respective fields

<figure><img src="/files/Il3ZZMm8F73t8BerOsEN" alt="" width="563"><figcaption></figcaption></figure>

4. Select the desired Conversation Log Collection setting
   1. More detailed info on the available settings are provided above in the [Managing Conversation Data Collection Preferences](#managing-conversation-data-collection-preferences-for-chatgpt-and-codex) section
5. Enter both the **Compliance** key and **Admin API** key generated previously in OpenAI into their respective fields
6. Select the **Connect** button to test the configuration connection
7. Once the connection test is successful, navigate back to the main **Integrations** landing page, locate the OpenAI integration in your list of integrations. Select the **3-dot menu button** on right-hand side of the relevant row to open the menu, then select **Collect Now** to begin the OpenAI data ingestion process

   6. <mark style="color:$warning;">**Note**</mark>: Data collection can take some time, depending on the size of your environment. We recommend giving data ingestion a few days to stabilize before closely examining the results

   <figure><img src="/files/Tuj3rsHVyeVT2lG7ayIA" alt="" width="563"><figcaption></figcaption></figure>


# PingFederate

2025.07.09

Cisco Identity Intelligence supports the ingestion of user and group objects from PingFederate directory deployments via its [SCIM Provisioner](https://docs.pingidentity.com/integrations/scim/pf_scim_connector.html) and the CII [SCIM integration](/integrations/scim-provisioning).

Please refer to both sets of documentation linked above for more information.


# Salesforce

2025.11.24

## Overview <a href="#overview" id="overview"></a>

The Identity Intelligence identity security platform can integrate with your Salesforce instance or instances to capture user account activity. This is valuable in particular for the following reasons -

* Identifying unused Salesforce accounts and reducing unnecessary licensing cost
* Review Salesforce authentication activity and maintain security compliance
* Detect unauthorized access or use of your Salesforce platform

## Requirements <a href="#requirements" id="requirements"></a>

The following things are required to configure Salesforce integration with Identity Intelligence:

* A Salesforce admin account
* **Licensing** - a user account with Salesforce edition of **Enterprise** or above, due to the requirement for the Web Services API.\
  \
  Developer edition and other lower tier editions will <mark style="color:red;">**not**</mark> work for this integration, as the **API Only User option is required** for the necessary credential flow, and that setting doesn't exist in those tiers.<br>

  <figure><img src="/files/uv569zXb92v0idmT0BLN" alt="" width="539"><figcaption></figcaption></figure>
* If access to Salesforce by API is restricted by IP address, please coordinate with your Identity Intelligence representative or open a TAC case

## Salesforce API Limits

The Identity Intelligence integration for Salesforce will monitor API usage against your Salesforce tenant's daily limit. If the Identity Intelligence detects that the API utilization is within <mark style="color:blue;">**75%**</mark> of the Salesforce tenant daily quota, Identity Intelligence will stop any further collection for that day and resume the following day.

## Salesforce Configuration <a href="#salesforce-configuration" id="salesforce-configuration"></a>

### Step 1 - Create API Only User Account <a href="#create-api-only-user-account" id="create-api-only-user-account"></a>

1. The first step in the process is to create an [API only user](https://help.salesforce.com/s/articleView?id=000386144\&type=1) for integration purposes using the Salesforce documentation. Please note:

   * As noted in the Salesforce KB article above, we recommend the user and permission set (if used) have at least a **Salesforce** license<br>

   <mark style="color:$danger;">DO NOT USE</mark> the `Minimum Access - API Only Integration` profile or the Salesforce Integration license. They do not have the necessary permissions to collect the data required by CII.\ <img src="/files/jQY4e0Aok4nQ9WChNbSB" alt="" data-size="original"><br>

   <figure><img src="/files/9BrIaw3cKn5awHkRNrsA" alt=""><figcaption></figcaption></figure>

   * The Profile or Permission Set must have **API Enabled** and **API Only User** checked in the Administrative Permissions area<br>

     <figure><img src="/files/hdoBhZjJkkGHhK6DvalV" alt="" width="563"><figcaption></figcaption></figure>
   * **Manage Internal Users** and **Manage External Users** permission under the User section is required to collect Login History of all users. *Enabling this setting will automatically check a number of other related permissions*<br>

<figure><img src="/files/fh1ocgoaDTTvPqCUYP63" alt=""><figcaption></figcaption></figure>

### Step 2 - Set up a Connected App

#### Create Connected App

1. In Salesforce set up go to **Apps --> External Client App Manager** and click **New External client App**\
   **in the top right corner of the screen**<br>

   <figure><img src="/files/5SxkxhpkGA83JaETnBdM" alt=""><figcaption></figcaption></figure>
2. Fill in the connected app details, such as Name, Contact email, etc
3. Check **Enable OAuth**
4. Fill in the **Callback URL:** [https://localhost:3000/test](https://localhost:3000/test%5C)/\
   The Identity IntelligenceIdentity Intelligence API integration does not use an redirects and does not need a functioning callback URL for that purpose.
5. Add **Manage user data via APIs** scope.
6. *Check* **Enable Client Credentials Flow**<br>

<figure><img src="/files/RBKzy2HYzLGxUEO4bLpT" alt=""><figcaption></figcaption></figure>

7. *Uncheck* **Require Secret for Web Server Flow** and **Require Secret for Refresh Token Flow**
8. Click **Create**. Click **Continue** if you see the warning: "Changes can take up to 10 minutes to take effect. Deleting a parent org also deletes all connected apps with OAuth settings enabled."

#### Get Key and Secret

1. On the Settings tab of the new app, under App Settings, click Consumer Key and Secret\ <br>

   <figure><img src="/files/oRhoYGZQfdECn6VkHCks" alt=""><figcaption></figcaption></figure>
2. Reauthenticate to proceed
3. Copy the Key and Secret to a secure temporary location or a key vault of your preference

#### Assign to API user

1. Go back to the external app and go to the Policies tab. Click **Edit**
2. At the bottom, under **Oauth Flows and External Client App Enhancements**, click Enable Client Credentials Flow and enter the username / email of the API user account created above.<br>

   <figure><img src="/files/pNDhxtcQfInXU6HD91z8" alt=""><figcaption></figcaption></figure>
3. Click **Save**
4. Find your Salesforce URL and save it for use in the next section. This will be under Company Settings -> My Domain

### Step 3 - Identity Intelligence Dashboard Configuration <a href="#oort-dashboard-configuration" id="oort-dashboard-configuration"></a>

1. Login to your Identity Intelligence Dashboard and go to the **Integrations** tab
2. Click on ***Add Integration***
3. Click on ***Add Integration*** under Salesforce

<figure><img src="/files/FNAPwM2sl3VICBZr2oTu" alt="" width="233"><figcaption></figcaption></figure>

4. Fill in the details for the Salesforce Integration. Enter the values saved from earlier on in the Salesforce setup:

* `Display Name`
* `Salesforce URL`
* `Consumer Key`
* `Consumer Secret`

<figure><img src="/files/SbttNonJsHWK4tGHpiSE" alt="" width="563"><figcaption></figcaption></figure>

5. Click **Save**. You will now have a new integration listed on the Integrations page
6. For more details, click on integration name for details
7. You can also click the 3-dot menu drop-down and click ***Test Connectivity*** to test the API connectivity with Salesforce<br>

   <figure><img src="/files/I8CBt7mniN1GEFrgfImd" alt="" width="240"><figcaption></figcaption></figure>
8. If you see “Connected!” everything is working
9. Now click the Salesforce integration bar again and click **Collect Now** to begin the first data collection<br>

   <figure><img src="/files/awNmdazZqnqd6jUkR6gv" alt="" width="231"><figcaption></figcaption></figure>
10. Initial data collection may take up to 24 hours, depending on the size of the environment


# SCIM Provisioning

## Overview

Cisco Identity Intelligence can receive user and group data via the System for Cross-domain Identity Management (SCIM) protocol from various identity providers, such as PingFederate. This integration enables automated user and group lifecycle management, ensuring that Identity Intelligence has up-to-date identity context for enhanced security and analytics. These instructions will guide you through the process of configuring your Identity Provider to provision data to Identity Intelligence.

<mark style="color:blue;">**NOTE**</mark> <mark style="color:blue;">- This integration is intended to support data ingestion from identity providers and sources that Identity Intelligence does</mark> <mark style="color:blue;">**not**</mark> <mark style="color:blue;">already natively support or that don't offer public APIs for sharing identity data.</mark> In the case of Microsoft Entra ID and Okta, you should use the existing direct API integrations and data streaming options to integrate with Identity Intelligence as these integrations provide more robust functionality.

### Before you begin...

Make sure you have the following:

* A Cisco Identity Intelligence account with Full Admin permissions that can manage integrations.
* An Identity Source (e.g. Identity Provider, such as PingFederate, or another identity source, like an HRIS System, that supports outbound SCIM provisioning) configured and ready to provision users/groups.
* Necessary administrative privileges within your chosen Identity Provider to configure SCIM applications.

The Identity Intelligence SCIM Provisioning function <mark style="color:blue;">does NOT support Bearer Token authentication at this time</mark>. Contact your Duo IAM representative if your identity source does not support OAuth client credentials as a SCIM authentication protocol.

## Configuration Steps

The setup process involves two main phases: first, configuring Identity Intelligence to provide credentials for its SCIM endpoint, and second, configuring your Identity Provider to send data to that endpoint.

### **Phase 1: Configure Cisco Identity Intelligence for SCIM**

**Enable SCIM Provisioning in Identity Intelligence:**

1. Navigate to the "Integrations" section within your Identity Intelligence tenant and click Add Integration in the top right corner.
2. Locate and click the "SCIM Provisioning" tile.
3. Within the form, provide the following:
   * Display name - for use within Identity Intelligence Console to identify the integration
   * Description (optional) - for use within Identity Intelligence console to provide additional info about the data source and purpose of the integration for record keeping
   * Source Type (optional, but **highly** recommended) - Defines what type of source the data is coming from. Identity Intelligence will use this value to impact how the data from this source is treated, such as impacting check logic, user classifications, feature availability, etc.\
     **NOTE**: if your SCIM source type is not listed, choose ***Unknown***
   * Source (optional) - Provides Identity Intelligenec with more specific info on the data source provider. **NOTE**: if your SCIM source is not listed, choose ***None***.
4. Select **Save and Generate Credentials**
5. Upon activation, Identity Intelligence will provide you with:
   * **SCIM Base URL:** This is the endpoint where your Identity Provider will send SCIM requests (e.g., `https://<your_cii_deployment/scim/v2`). NOTE - the URL is specific to your Identity Intelligence deployment or region.
   * **Token URL**
   * **Client ID**
   * **Client Secret -** Copy this token securely, as it will only be shown once.
6. Click Finish

### **Phase 2: Configure your Identity Provider for SCIM Provisioning**

This phase involves configuring your specific Identity Provider to send user and group data to the Identity Intelligence SCIM endpoint. While the general principles are similar, the exact steps vary by provider.

#### **General SCIM Configuration Principles**

1. **Add a SCIM Application:** Within your Identity Provider's administration console, add a new application or integration that supports SCIM provisioning. This might be a pre-built gallery app or a custom SCIM 2.0 application.
2. **Configure Provisioning Method:** Select "Automatic Provisioning" or "SCIM" as the provisioning method.
3. **Enter SCIM Endpoint Details:**
   * **Tenant URL / SCIM Connector Base URL:** Enter the **SCIM Base URL** obtained above from Identity Intelligence (e.g., `https://<your_cii_deployment>/scim/v2`).
   * **Enter Token URL and Client Credentials**
4. **Test Connection:** Most Identity Providers offer a "Test Connection" button. Use this to verify that the Identity Provider can successfully authenticate and communicate with the Identity Intelligence SCIM endpoint.
5. **Configure Attribute Mappings:** Map the standard user and group attributes from your Identity Provider to the corresponding SCIM attributes expected by Identity Intelligence (e.g., `userName`, `displayName`, `emails[type eq "work"].value`, `active`, `groups`). Ensure that mandatory attributes are mapped correctly.
6. **Define Scope:** Specify which users and groups should be provisioned to Identity Intelligence. This might involve assigning users/groups to the application or configuring filters.
7. **Enable Provisioning:** Once all settings are configured and tested, enable the provisioning service. Users and groups will begin to synchronize with Identity Intelligence based on your defined scope and mapping.

#### **Specific Notes for Identity Providers**

#### **PingFederate**

* Refer to PingFederate's official documentation for detailed steps on configuring SCIM outbound provisioning and OAuth clients. In the event of any conflicts between this document and the PingIdentity documents, use PingIdentity. <https://docs.pingidentity.com/integrations/scim/pf_scim_connector.html>
* PingFederate acts as a SCIM client for outbound provisioning.
* **Create an OAuth Client (Recommended):** For secure authentication, create an OAuth client in PingFederate under **Applications** > **OAuth Clients**. This client will be used by the SCIM Outbound Provisioner to obtain an access token for Identity Intelligence.
* **Configure Outbound Provisioning:**
  * Navigate to **Applications** > **Outbound Provisioning**.
  * Add a new **SCIM 2.0 Client** instance.
  * **Connection Settings:**
    * **Base URL:** Enter the **SCIM Base URL** obtained from Identity Intelligence (e.g., `https://<your_cii_tenant_url>/scim/v2`).
    * **Authentication:** Select "OAuth" and configure it to use the OAuth client you created.
  * **Attribute Mapping:** Map the attributes from your PingFederate data store (e.g., LDAP directory) to the SCIM attributes required by Identity Intelligence. Ensure that unique identifiers like `userName` are correctly mapped.
  * **Provisioning Rules:** Define the rules for which users and groups are provisioned (e.g., based on group membership or attribute values).
  * **Activation:** Enable the provisioning connection.

### **Phase 3: Verify Provisioning in Identity Intelligence**

1. **Monitor Provisioning Status:** After enabling provisioning in your Identity Provider, allow some time for the initial synchronization to complete. The time taken depends on the number of users/groups and the IdP's sync cycle.
2. **Check User/Group Inventories:** Navigate to the Integrations page or Overview Dashboard to check the status of the SCIM integration. If users have been provisioned from the source IDP, then the Users page within your Identity Intelligence console will contain those users.
3. **Confirm Data Ingestion:** Verify that users and groups from your configured Identity Provider are appearing in Identity Intelligence with the correct attributes and group memberships.
4. **Review Logs:** Check provisioning logs in both your Identity Provider and, if available, in Identity Intelligence for any errors, warnings, or failed synchronizations. These logs are crucial for troubleshooting.

## Processing New Data

CII will automatically process new SCIM data pushed to it from the identity source every 24 hrs on a regular schedule, but if you would like to manually trigger the processing of any data that has been pushed within the past 24 hrs, you can use the `Process New Data` menu option in the Integrations page for that integration.

<figure><img src="/files/LpNOis8nu1wpVMTk18HY" alt=""><figcaption></figcaption></figure>

## Managing SCIM Credentials

If desired, the SCIM Client secret used for authentication can be rotated or updated for security purposes.

1. **Generate New Secret in Identity Intelligence:**
   1. In Identity Intelligence, navigate to the Integrations page and click Edit from the SCIM provisioning integration settings
   2. Select the Rotate Client Secret option\\
   3. Click Save
   4. The new Client Secret will be shown. Copy it securely.
   5. Click Finish
2. Update the Client Secret in the configuration of your source IDP.


# Cisco Secure Access Data Integration

## Overview

Identity Intelligence integrates with Cisco Secure Access to ingest and display data associated with Application and User and Entity Behavior Analytics events (UEBA).\
\
For information on configuring Secure Access to consume Trust Level data from Identity Intelligence via Security Cloud Control (SCC), please refer to the [Secure Access documentation](https://securitydocs.cisco.com/docs/csa/olh/136576.dita) guide, which contains information about connecting both an existing or new Identity Intelligence tenant to your Secure Access organization. If you already have an Identity Intelligence tenant via Duo, **please** follow the "Existing Tenant" set up steps.&#x20;

### Configuration Steps&#x20;

Follow the instructions below in the order written

#### Generate an API Key in Secure Access

You will first need to generate an API key with the necessary permissions within Secure Access. To do so:

1. Log in to your Secure Access org with a **Full Admin** or **Security Administrator** role
2. Navigate to the **Admin** menu item and select **API Keys**

<figure><img src="/files/mIX38ZZdhngCg8F17YeM" alt="" width="375"><figcaption></figcaption></figure>

3. Select **Add**, then enter a easily recognizable name and a description for the key
4. Assign the key the required scopes by selecting the respective check boxes:

   1. Deployments (Identities and Networks)&#x20;
   2. Reports &#x20;

   <figure><img src="/files/oELjBdm1FEGBGeNopNqk" alt=""><figcaption></figcaption></figure>
5. Select `Read-Only` for each selected scope and resource
6. For **Expiry Date** choose an expiration date or select **Never Expire.** Do NOT enter any information in the Network Restrictions area
7. Select **Create Key.** Then copy and save your API Key and Key Secret in a secure location, as you will need this information to complete the integration steps within Identity Intelligence
8. Select **Accept and Close**

#### Identity Intelligence Configuration Steps

1. Sign in to Identity Intelligence with an Administrator role
2. Navigate to **Integrations** and select **Add Integration** from the Secure Access tile
3. Enter a **name** for the integration. This name will be reused through Identity Intelligence to identify the source
4. Paste the **API Key** and **Key Secret** generated in Secure Access into their respective fields in the form

<figure><img src="/files/nQb8dw0v9szKOraku4Ey" alt=""><figcaption></figcaption></figure>

5. Select **Save** to finish setting up the integration
6. Your integration has been created! Identity Intelligence will test the connectivity automatically, and if there are no errors, will begin the data ingestion process&#x20;


# SendGrid

2023/12

## Overview

Many organizations elect to trigger an email notification or email-based workflow when the Identity Intelligence security platform has a new finding or actionable alert. Please see the [#example-use-case-sendgrid](#example-use-case-sendgrid "mention")section below for more details.

Up to this point, this email would come from a cisco.com domain. For a more flexible seamless process, Identity Intelligence has introduced the ability to configure several of the top mail providers.

In the Integrations tab, there is a new section for “Email”, which includes options to set up integrations for your own SendGrid service.

## Prerequisites

This article assumes that your organization has a Sendgrid implementation and you have necessary admin rights to configure it.

## SendGrid Configuration

1. Go to the Integrations tab and select **Add Integration**
2. Scroll to the **Email** section and select the SendGrid Integration
3. Fill in the following fields and click **Save** when completed:

* **Name** - this is a display name in the Identity Intelligence UI for the integration
* **Description** - optional
* **From Address** - this can take the form of either of the following:
  * An email address on an authenticated domain as explained in <https://docs.sendgrid.com/ui/account-and-settings/how-to-set-up-domain-authentication>
  * A verified Single Sender Identity as explained in <https://docs.sendgrid.com/ui/sending-email/sender-verification>
* **Default email service** (toggle) - enable this option to make this email integration the default provider from which email notifications will be sent
* **API Key** - Create an API Key as described [in this article](https://docs.sendgrid.com/ui/account-and-settings/api-keys#creating-an-api-key), with **Full Access**.

<figure><img src="/files/NCH4nTCA7wzcLS0xaa2Z" alt=""><figcaption></figcaption></figure>

## Test Connectivity

After the integration is created, you can test connectivity to the service using the 3-dot menu option on the integration row and select **Test Connectivity.**

<figure><img src="/files/b38Q06STgiNJypATRDEK" alt=""><figcaption></figcaption></figure>

## Example Use Case - SendGrid

Organizations may find that their users are connecting to corporate systems and applications while using personal 3rd party VPN services like NordVPN or ExpressVPN, or less reputable ones than that. This is a bad security practice and many companies prohibit this within their acceptable use policy.

Identity Intelligence surfaces personal VPN usage in the [Personal VPN Usage](/understanding-check-failures/oort-insights/identity-posture-management-insights/personal-vpn-usage) check. Using the check settings menu, you can configure Identity Intelligence to send email messages to users (or their managers, if defined in the primary IDP), informing them of this policy violation.

With the SendGrid integration configured above and set to Default Email Service, **this email will now originate via SendGrid from the sending From address list**.

<figure><img src="/files/0zgAoejma9gwys2796YR" alt=""><figcaption></figcaption></figure>

You can also customize the message sent to the end user per Check via the [Check Settings](/understanding-check-failures/customizing-checks#notification-settings).

<figure><img src="/files/vo7g103E8oaRRPGmZyPj" alt=""><figcaption></figcaption></figure>


# ServiceNOW

9/2022

## Overview <a href="#overview" id="overview"></a>

The Oort security platform can integrate with ServiceNOW to open tickets in response to failed Checks for various security configuration and identity threat events.

This document will walk you through the process of setting up access to ServiceNOW and will also walk you through the setup inside of the Oort console.

### ServiceNOW Configuration <a href="#servicenow--configuration" id="servicenow--configuration"></a>

To add the necessary configuration in ServiceNOW, you need to have admin access to the following:

From the ServiceNOW admin console, select **User Administration**.

<figure><img src="https://oort-docs-site.netlify.app/static/b68977b3c8bc6bc711c4c6abf18b350e/9f82e/2022-09-18_15-53-23.png" alt=""><figcaption></figcaption></figure>

Create a new account for the Oort integration. Set the password according to your organization’s service account password policy and store it securely.

Check the **Web service access only** option.

<figure><img src="https://oort-docs-site.netlify.app/static/a5022dacc6647af846fa4a6ce88f2bff/be86f/2022-09-18_16-01-14.png" alt=""><figcaption></figcaption></figure>

Give it the **incident\_manager** role.

<figure><img src="https://oort-docs-site.netlify.app/static/0dea3b1e89a87a6413523f88155729fc/3c024/2022-09-18_16-02-33.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://oort-docs-site.netlify.app/static/0c78291641f015c4ae81269dd2ea4869/1d69c/2022-09-18_16-02-50.png" alt=""><figcaption></figcaption></figure>

Click **Save**.

### Oort Configuration <a href="#oort-configuration" id="oort-configuration"></a>

Within the Oort console, navigate to -

**Integrations -> New Integration -> ServiceNOW**

E﻿nter the following information:

![2022 09 18 16 08 55](https://oort-docs-site.netlify.app/static/228138af0a2802e4cf8d0666eed90c5f/9f82e/2022-09-18_16-08-55.png)

Enter a name and description. Enter your ServiceNOW instance URL. It may be a custom URL if you have that configured. Enter the username and password of the account that you created.

Click **Save.**

To test the integration, navigate to a user that is failing a particular check, such as Inactive Users. Go to the **Checks** tab for that user.

Click the **three dot option menu** for a failing check and select **Open Ticket**. The ticket will appear in the lower section.

<figure><img src="https://oort-docs-site.netlify.app/static/4f10afa784012320a234c7f3801c56dd/9f82e/2022-09-18_16-14-36.png" alt=""><figcaption></figcaption></figure>

After testing successfully, click the **Collect Now** button to begin initial data collection immediately.

### Data Payload Details

The following table shows an overview of JSON styled payload that will be sent from Oort out to ServiceNow

<table><thead><tr><th>Field</th><th>Description</th><th data-hidden>Type</th><th data-hidden>Is Required</th></tr></thead><tbody><tr><td>login</td><td>end user login</td><td>string</td><td>true</td></tr><tr><td>displayName</td><td>User's Display Name</td><td>string</td><td>true</td></tr><tr><td>status</td><td>Status, such as <code>Active</code> or <code>Inactive</code></td><td>string</td><td>true</td></tr><tr><td>userTypeClassification</td><td>Valid values: <code>INTERNAL</code>, <code>EXTERNAL</code>, <code>MISSING</code>, <code>UNCLASSIFIED</code>, <code>INCONSISTENT</code>, <code>SERVICE_ACCOUNT</code></td><td>string</td><td>true</td></tr><tr><td>ipAddresses</td><td>Up to 5 IP addresses recently used by the user</td><td>list of IP addresses along with geo location</td><td>false</td></tr><tr><td>lastSignInLocation</td><td>Last geolocation the user signed in from</td><td>city, country, state if available</td><td>false</td></tr><tr><td>managerLogin</td><td>Manager LoginID</td><td>string</td><td>false</td></tr><tr><td>phoneNumber</td><td>Phone Number</td><td>string</td><td>false</td></tr><tr><td>unusedApplications</td><td>Up to 2 applications the user is assigned to but not using</td><td>CSV</td><td>false</td></tr><tr><td>usedApplications</td><td>Up to 5 applications used by the user</td><td>CSV</td><td>false</td></tr><tr><td>usedFactors</td><td>Up to 5 factors used by the user</td><td>CSV string</td><td>false</td></tr></tbody></table>

### Example Ticket Description with End User Digest

```
karsch.heuck@simubiz.com failing Oort Check: IP Threat Detected
User Details:
Display Name          : Karsch Heuck
Login                 : karsch.heuck@simubiz.com
Status                : ACTIVE
Type                  : INTERNAL
Manager               : N/A
Phone                 : N/A
Used IP Addresses     : 2600:1017:b808:d190:4641:e114:b3a1:430a (US:New York:New York) 2601:280:5b7f:4cf0:d17a:44b4:6c75:4e4 (US:Arvada:Colorado) 50.229.84.62 (US:Stamford:Connecticut) 24.38.70.198 (US:Belleville:New Jersey) 198.55.26.62 (US:Stamford:Connecticut) 
Used Applications     : cisco asa vpn (burlington), Oort Corp Okta instance, logmein rescue, atlassian cloud, microsoft office 365 for simubiz
Unused Applications   : 
Used Factors          : push, totp
Last Sign-in Location : US


Recommended Actions:
We recommend contacting the end-user to purge the machine originating the traffic. We only tag successful logins to reduce false positives.

See user in Oort:
https://dashboard.ci.oort.io/go?org=Hh8hsedcx4CqYJOp&type=users&login=karsch.heuck%40simubiz.com

```


# Shared Signals Framework (SSF) and SSF Receivers

Describes signals from security products and platforms that Identity Intelligence can ingest.

### What is the Shared Signals Framework (SSF)?

Cisco Identity Intelligence can ingest signals from security products and platforms that have adopted Shared Signals Framework through an SSF receiver that you configure in the product. These external detections and risk signals are then surfaced in CII to support centralized visibility, investigation, and identity threat insights.

The Shared Signals Framework (SSF) is an open, standardized approach for exchanging identity and security signals between systems. It enables a signal provider (for example, a security platform) to publish events and a signal consumer (such as Identity Intelligence) to receive and act on those events in near real time.

### What is an SSF receiver in Identity Intelligence?

An SSF receiver is the integration component in Intelligence that allows it to connect to an SSF-adopting provider and ingest the provider’s signals. Once configured, the receiver continuously brings external signals into Identity Intelligence so they can be used to drive detections, checks, and investigation workflows.

### Benefits of using SSF in Identity Intelligence

* Near real-time signal ingestion to shorten time to detect and respond.
* Centralized visibility by aggregating signals from multiple providers in one console.
* More actionable detections by enriching incoming signals with identity context and user population data.
* Standards-based integrations that reduce custom integration effort and make it easier to add new signal sources over time.


# AppOmni Integration Using SSF

{% hint style="info" %}

## This integration is currently in <mark style="color:$warning;">Beta</mark> release phase.

{% endhint %}

### Overview

Identity Intelligence can receive security events and signals from AppOmni using the Shared Signals Framework (SSF). This integration allows Identity Intelligence to ingest security telemetry from services monitored by AppOmni to enhance identity-based threat detection.

This document walks you through creating a long-lived OAuth token in AppOmni and configuring the AppOmni Receiver using Identity Intelligence.

### Requirements

The following requirements are necessary for the AppOmni SSF integration:

* An AppOmni administrator account with access to Settings and API Settings
* Access to your Cisco Identity Intelligence tenant with permissions to manage Integrations
* The base URL for your AppOmni instance (for example, https\://\<your-appomni-tenant>)

### AppOmni Rate Limiting

The AppOmni API enforces rate limits to assure acceptable performance for all customers. By default, AppOmni tenants have a rate limit of 2,000 API requests per hour. All API requests include an X-RateLimit header in the response which displays your current rate limit and usage.

If you're interested in increasing your API rate limit, contact your AppOmni Customer Success Manager.

### Create a Threat Detection Destination

Configure a Threat Detection destination that uses the access token to send Threat Detection events to the Shared Signals Bridge.

1. Sign in to your AppOmni instance.
2. In the left navigation, expand Settings and select API Settings. ![](/files/B6KGdGe0H9VPva4FJhTS)<br>
3. On the API Settings page, click **Add Application**.
4. In the Create new OAuth application dialog box, enter a **Name** and an optional **Description**.
5. Follow the prompts on your screen to save the changes.
6. In the API Settings table, select the application you just created to open its details.
7. Open the **Manage Tokens** tab page.
8. Click **+ OAuth Token**.
9. In the Manually Create OAuth Token dialog box:
   1. Enter a **Description** (for example, SSF token for CII)
   2. Set the Token Expiration date according to your security policy (for a long-lived token, select an appropriately long expiration).
   3. Click **Submit**.\
      Copy the generated token *immediately* and store it securely. (The token cannot be viewed again after closing the dialog box.)
10. In API Settings, select the application you just created to open its details.
11. Open the Manage Tokens tab page.
12. Click **OAuth Token**.
13. In the Manually Create OAuth Token dialog box:
    1. Enter a **Description** (for example, SSF token for CII).
    2. Set the Token Expiration date according to your security policy (for a long-lived token, select an appropriately long expiration).
    3. Click **Submit**.
    4. Copy the generated token *immediately* and store it securely. (The token cannot be viewed again after you close the dialog box.)

### **Create an API application and access token**

Requests to all AppOmni APIs are authenticated using OAuth access tokens. When configuring tokens for your API applications, you can optionally create an access token with an arbitrary expiration date, enabling you to create long-lived access tokens for use in integrations that can't follow an OAuth refresh token flow.

This task shows how to create an API application and long-lived OAuth2 access token for the SSF receiver.

1. Sign in to your AppOmni instance.
2. In the left navigation, expand Settings and select API Settings. ![](/files/B6KGdGe0H9VPva4FJhTS)<br>
3. On the API Settings page, click **Add Application**.
4. In the Create new OAuth application dialog box, enter a **Name** and an optional **Description**.
5. Follow the prompts on your screen to save the changes.
6. In the API Settings table, select the application you just created to open its details.
7. Open the **Manage Tokens** tab page.
8. Click **+ OAuth Token**.
9. In the Manually Create OAuth Token dialog box:
   1. Enter a **Description** (for example, SSF token for CII)
   2. Set the Token Expiration date according to your security policy (for a long-lived token, select an appropriately long expiration).
   3. Click **Submit**.\
      Copy the generated token *immediately* and store it securely. (The token cannot be viewed again after closing the dialog box.)
10. In API Settings, select the application you just created to open its details.
11. Open the Manage Tokens tab page.
12. Click **OAuth Token**.
13. In the Manually Create OAuth Token dialog box:
    1. Enter a **Description** (for example, SSF token for CII).
    2. Set the Token Expiration date according to your security policy (for a long-lived token, select an appropriately long expiration).
    3. Click **Submit**.
    4. Copy the generated token *immediately* and store it securely. (The token cannot be viewed again after you close the dialog box.)

### Add the AppOmni Receiver in Identity Intelligence

1. Log in to your Cisco Identity Intelligence tenant as an administrator.
2. Click **Integrations**.
3. Scroll to the Shared Signals section.
4. Locate the AppOmni Receiver card and click **Add AppOmni Receiver**. ![](/files/7Kcs25jTiXgorESv5AMk)
5. Enter the following information:
   1. **Name** and optional **Description**.
   2. **AppOmni URL**: The base URL of your AppOmni instance.
   3. **Token**: Paste the OAuth token you created earlier in AppOmni. ![](/files/g5IQtJ8OVe3r7PGMpZfZ)
6. Click **Connect**.


# Slack

08/2024

## Overview <a href="#overview" id="overview"></a>

Identity Intelligence can integrate with one or more Slack tenants to both ingest Slack identities as a source AND provide notifications to Slack channels and users.

### Privacy Policy

For information on Cisco Identity Intelligence Privacy Policy, please see [this resource](https://www.cisco.com/c/en/us/about/legal/privacy-full.html).

## Integration with Slack <a href="#slack-integration" id="slack-integration"></a>

To enable the integration with Slack, you will need to add the **Cisco Identity Intelligence Bot** for Slack available on the Slack Marketplace to your Slack workspace.

Identity Intelligence can have multiple target notification channels configured for the same Slack org

### Permission requirements within Slack

By default, any workspace member can [install apps to Slack](https://slack.com/help/articles/360001537467-Guide-to-apps-in-Slack). However, many organizations have restricted the ability to install 3rd party apps to only administrators or via an approval process. If you don’t have [permission to install apps](https://slack.com/help/articles/222386767-Manage-app-approval-for-your-workspace), you may be able to [submit an app request](https://slack.com/help/articles/202035138-Add-apps-to-your-Slack-workspace#install-apps) instead.\
\
If installing new apps is restricted to Slack Admins, you can also ask your Slack Admin to [pre-approve](https://slack.com/help/articles/222386767-Manage-app-approval-for-your-workspace#pre-approve-or-restrict-apps) the Identity Intelligence Bot app and then install it yourself once it has been approved.

**NOTE** - While Identity Intelligence asks for permission to view email addresses of people in your workspace for account identification purposes (shown in screenshot below), Identity Intelligence does not use the emails from Slack to actually send emails to users.

### Geographic Distribution

Identity Intelligence maintains different bots for Slack for different geographic deployments (names listed below).

**During the setup process, you will be automatically directed to the correct bot for Slack based on your tenant location.** This is for informational purposes only and no action is required on your part.

* Cisco Identity Intelligence Bot (this is our main bot, the U.S. deployment)
* Cisco Identity Intelligence Bot AU
* Cisco Identity Intelligence Bot EU
* Cisco Identity Intelligence Bot JP
* Cisco Identity Intelligence Bot UK
* Cisco Identity Intelligence Bot SG

### High-level Setup Steps <a href="#high-level-setup-steps" id="high-level-setup-steps"></a>

There are 3 steps you need to go through to set up the integration with Slack for your Identity Intelligence tenant to start receiving alerts about check failures:

1. Add the Identity Intelligence Bot for Slack to your Slack workspace
2. Configure the destination Slack channel for notifications within your Slack workspace
3. In Identity Intelligence, create a new Integration for Slack
4. Enable the Slack notification as a target in one or more Identity Intelligence Checks (none are selected by default - you must opt-in for specific Check failure notification messages)

### Add Identity Intelligence Bot to Slack <a href="#add-oort-bot-to-slack" id="add-oort-bot-to-slack"></a>

To add the Identity Intelligence Bot for Slack, perform the following steps:

1. Login to Identity Intelligence with a Identity Intelligence full admin account that meets these requirements:
   1. The admin's account also exists in the desired Slack organization under the same user login
   2. The admin's account has permissions to install applications within your Slack organization (or the Identity Intelligence bot has been pre-approved for your org by a Slack Admin)
2. From the Integrations tab, click on ***Add Integration***
3. From the Notification Targets list, select ***Add Slack Target***
4. Provide the following details for the integration
   1. Display name
   2. Description (optional)
   3. Select the purpose of this particular Slack notification target. This could be one or both of these options:
      1. Check failures - notifications will be sent for the configured Checks. Additional instructions on how to [#enable-notifications-via-slack-for-a-health-check](#enable-notifications-via-slack-for-a-health-check "mention") can be found below
      2. Data collection - notifications will be sent to this channel if any the data collection fails for any of the integrations
5. Select ***Install Identity Intelligence Bot on your Slack Workspace***<br>

   <figure><img src="/files/JbzQd66kvU8TISL3F1bT" alt=""><figcaption></figcaption></figure>
6. On the next screen, check the box to confirm that the Identity Intelligence signed in user is a member of the target Slack org and then click <mark style="color:blue;">Install Identity Intelligence Bot for Slack</mark> button<br>

   <figure><img src="/files/KZynV3ydoL9bZl4c1YXh" alt=""><figcaption></figcaption></figure>
7. The browser will redirect Slack to accept permissions for the Identity Intelligence Bot for Slack. Click ***Allow***\
   Note:
   * You must be signed into the Slack workspace where you want to install the Identity Intelligence Bot for Slack.
   * To select a different workspace, use the drop-down menu in the upper right corner of the browser window.

<figure><img src="/files/qgdIwXjX4ZTA3Juy5fo3" alt="" width="563"><figcaption></figcaption></figure>

8. The browser will redirect back to the Identity Intelligence console and the name of your Slack workspace will now show in the Notification Target configuration screen. Select a target **Channel** or an individual user (required).
   1. **Channel** can be either a public channel OR a private channel the Identity Intelligence Bot for Slack was added to already.
      1. If you do not see the name of a private channel, add the Identity Intelligence Bot to the channel first and then use the **Please refresh channel** button show below.<br>

         <figure><img src="/files/gh43sZUBtSMKL9yoN6er" alt="" width="332"><figcaption></figcaption></figure>
      2. You can only add the Identity Intelligence Bot for Slack to channels that your user on the Slack workspace can access.
   2. User is the email address of a member of the Slack workspace.

* **As mentioned above, the "Use this target for"** can be a combination of ***Failed Check*** and/or ***Data Collection***.
  * ***Failed Check*** means the notification target will be notified after checks are evaluated with the failed check results.
  * ***Data Collection*** means the notification target will be notified after a manually-triggered collection of an integration ends, or whenever a manual or scheduled data collection fails with an error. (shown below)

<figure><img src="/files/1f5djaBEPT1n6RQOfYKE" alt="" width="375"><figcaption></figcaption></figure>

* **Select checks manually**: Check the box next to everything to check for. Use the search field to search for checks by name. When you're finished, click **Add Checks**
* **Select checks by category**: Check the box next to every **Severity** (or click **All** to select all severities), then check the box next to every **Topic** (or click **All** to select all topics).

9. Click **Save** in the upper right corner of the screen. The new integration with Slack will now be shown on the main Integrations screen
10. Repeat this process for any other Slack orgs OR to create new notification target channels within the SAME Slack org. Identity Intelligence can have multiple target notification channels configured for the same Slack org\
    \
    As shown below, you can have multiple notification target types. To see the configured Checks for a particular target, click the blank space in that row to see the slide out on the right hand side.

<figure><img src="/files/SjefqJ4Cgl01MqRMvB4q" alt=""><figcaption></figcaption></figure>

### Enable Notifications via Slack for Checks <a href="#enable-notifications-via-slack-for-a-health-check" id="enable-notifications-via-slack-for-a-health-check"></a>

The next, optional, step is to enable Slack notifications for one or more checks.\
By default, a notification target configured for "Failed checks" will get a message for each check that has users failing the check conditions. A notification target can be configured to be notified only for specific checks.

Navigate to the **Checks** page from the left side menu and then click on a specific Check type, such as **Weak MFA Configured**.

On the right side of the page, **check the box to enable notifications** for the Slack workspace and channel you configured.

<figure><img src="/files/gJZuKsebC5R37Sw85XgZ" alt=""><figcaption></figcaption></figure>

The Slack workspace will now show as enabled for that Check type.

Within each individual Check details pane, you will be able to pick one or more notification targets for Slack channels or individual users.

### Test Slack Notifications <a href="#test-slack-notifications" id="test-slack-notifications"></a>

To test the connectivity of the Slack notifications app:

1. Go to the **Integrations** page
2. Select the Slack notification target or use the 3 dot menu button
3. Select the **Test Connectivity** button in the side panel or the menu to send a "verification" test message to the configured Slack channel

To test what a custom message for a specific failing check will look like:

1. Go to a specific check page and click **Customize Messages**
2. Customize the message as desired and select **Save**
3. Click the **Test** button for the Slack Notification Target to send a test message to the signed in user, NOT the configured channel, to verify the custom message looks as intended


# Snowflake (Beta)

2025.06.17

## Overview

Cisco Identity Intelligence can connect directly to Snowflake warehouses to gather data on user accounts, activity, and other events. These instructions will guide you through the process of connecting your Snowflake account to Identity Intelligence.

## Before you begin...

Make sure you have the following:

* An Identity Intelligence account with Admin permissions that can add integrations to your Identity Intelligence tenant
* A Snowflake login that has `ACCOUNTADMIN` privileges to grant read access to the `SNOWFLAKE` database in your Snowflake account
* The name of your Snowflake warehouse
* The values for the AWS ARN and AWS Account Id that Cisco Identity Intelligence will be using when connecting to your Snowflake account. These can be found on the Intial Setup dialog when creating a new Snowflake integration in Identity Intelligence

## Configuration Steps

### Provision a Identity Intelligence user in Snowflake

To provision the user, you will need to:

1. **Create a role for Identity Intelligence to use and grant it the necessary privileges**
   1. Choose a name for the role that you will assign to the Identity Intelligence user's role
   2. In the examples below, replace `<cii_integration_role>` with the name you choose. Replace `<warehouse name>` with the name of your Snowflake warehouse.
   3. Using the "Query Data" UI in Snowflake, enter each of the following lines individually to provision the role:

<pre><code><strong>CREATE ROLE &#x3C;cii_integration_role>;
</strong></code></pre>

```
GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE <cii_integration_role>;
```

```
-- This grant allows CII to read Trust Center events
GRANT APPLICATION ROLE SNOWFLAKE.TRUST_CENTER_VIEWER TO ROLE <cii_integration_role>;
```

```
GRANT USAGE ON WAREHOUSE <warehouse name> TO ROLE <cii_integration_role>;
```

2. **Create a service account user identified by the AWS Workload Identity Federation and give it access to the role**
   1. Choose a name for the role that you will assign to the Identity Intelligence service account user
   2. In the examples below, replace `<cii_service_user>` with the name you choose. Replace `<cii_integration_role>` with the name of the role you created in the previous step. Replace `<cii_lambda_arn>` with the arn displayed in the Initial Setup dialog for snowflake in Identity Intelligence
      1. ```
         CREATE USER <cii_service_user>
         DEFAULT_ROLE = <cii_integration_role>
         TYPE = SERVICE
         WORKLOAD_IDENTITY = (
         TYPE = AWS
         ARN = '<cii_lambda_arn>');
         ```
3. Next, execute the following commands to limit access to the new service account from just the AWS account id for Identity Intelligence. Replace `<cii_wif_auth_policy>` with the name you choose. Replace `<cii_account_id>` with the account id displayed in the Initial Setup dialog for snowflake in Identity Intelligence
   1. ```
      CREATE AUTHENTICATION POLICY <cii_wif_auth_policy>
      WORKLOAD_IDENTITY_POLICY = (
      ALLOWED_AWS_ACCOUNTS = ('<cii_account_id>'));
      ALTER USER <cii_service_user> SET AUTHENTICATION POLICY <cii_wif_auth_policy>;
      ```
4. Next, execute the following command to give the new service account user access to the role:
   1. `GRANT ROLE <cii_integration_role> TO USER <cii_service_user>;`
5. If you would like to further secure Identity Intelligence's access to your warehouse by restricting the allowed IP addresses, you may also add a network policy to the user you just created. In the example below, replace the `<nat_ip>` placeholders with the IPs for your region (found in the Initial Setup for Snowflake in Identity Intelligence):
   1. ```
      CREATE OR REPLACE NETWORK POLICY <cii_service_network_policy>
      ALLOWED_IP_LIST = ('<nat_ip_1>', '<nat_ip_2>')
      COMMENT = 'Created for CII. Only allows access from known CII NAT gateways';
      ALTER USER <cii_service_user> SET NETWORK_POLICY = <cii_service_network_policy>;
      ```

      For more information, see the Snowflake documentation on [network policies](https://docs.snowflake.com/en/sql-reference/sql/create-network-policy) and the [alter user command](https://docs.snowflake.com/en/sql-reference/sql/alter-user)

### Create your integration in Identity Intelligence

The last step is to create your integration in Identity Intelligence. For this, you will need:

* The name of the service account user you created in Snowflake
* The name of the role you assigned to the service account user in Snowflake
* The [account locator and region](https://docs.snowflake.com/en/user-guide/admin-account-identifier#format-2-account-locator-in-a-region) for your Snowflake account. Please note that your organization and account name will NOT work instead.
  * If you are having trouble finding this, you can run\
    `SELECT current_account(), current_region();` in your Snowflake account. You should see that the account is a string of letters and numbers like `SF12345` and the region is something like `AWS_US_WEST_2`. For these values, the combined identifier would be `sf12345.us-west-2.aws`
* The name of your Snowflake warehouse

1. Navigate to the Integrations page in Identity Intelligence and click "Add Integration" at the top right

<figure><img src="/files/R4pKLdjFzWU7FdKWZwgy" alt="" width="375"><figcaption></figcaption></figure>

2. Find the Snowflake tile and click "Add Integration"

<figure><img src="/files/x4it0Uyqdjps3I9XHAzQ" alt="" width="188"><figcaption></figcaption></figure>

3. Click "Complete Setup" below the instructions to go to the General Settings configuration

<figure><img src="/files/fztTzHR1jb7JEUyMnf7n" alt=""><figcaption></figcaption></figure>

4. You should now see the form in the screenshot

<figure><img src="/files/TiqKHJQ9PHabQsyx3Jts" alt=""><figcaption></figcaption></figure>

4. Choose and enter a name for your integration within Identity Intelligence that relates to the specific Snowflake warehouse that will be monitored into the "Name" field
5. In the "Service Account Name for CII" field, enter the name of the service account user you created in Snowflake
6. In the "Service Account Role" field, enter the name of the role you assigned to the service account user in Snowflake
7. In the "Your Snowflake Account Identifier" field, enter the [account locator and region](https://docs.snowflake.com/en/user-guide/admin-account-identifier#format-2-account-locator-in-a-region) for your Snowflake account
8. In the "Your Snowflake Warehouse" field, enter the name of your Snowflake warehouse
9. Once you have entered the necessary information, click "Connect" to initialize your Snowflake integration and begin monitoring

## Enable Cortex Agent Collection for Snowflake Integration

To allow Identity Intelligence to collect Cortex Agent metadata and observability events, the Snowflake role used by the existing Identity Intelligence integration service account (`<cii_integration_role>`) must be granted privileges for:

1. Agent discovery ([`SHOW AGENTS IN ACCOUNT`](https://docs.snowflake.com/en/sql-reference/sql/show-agents))
2. Agent inspection ([`DESCRIBE AGENT <agent_name>`](https://docs.snowflake.com/en/sql-reference/sql/desc-agent))
3. Observability event reads ([`SNOWFLAKE.LOCAL.AI_OBSERVABILITY_EVENTS`](https://docs.snowflake.com/en/user-guide/snowflake-cortex/ai-observability/reference))
4. Optional un-redacted observability content reads, if you want Identity Intelligence to collect Cortex Agent conversation content such as user prompts, executed SQL queries, and agent responses.

**Why these grants are required**

* Snowflake requires the executing role to have at least one privilege on each agent (`OWNERSHIP`, `USAGE`, `MONITOR`, or `OPERATE`) for `SHOW AGENTS` / `DESCRIBE AGENT`
* Snowflake also requires at least one privilege on the parent database and parent schema for those commands
* Access to `SNOWFLAKE.LOCAL.AI_OBSERVABILITY_EVENTS` requires AI Observability access roles, specifically `SNOWFLAKE.AI_OBSERVABILITY_EVENTS_LOOKUP`, and Cortex access via `SNOWFLAKE.CORTEX_USER`
* Access to un-redacted Cortex Agent conversation content requires the `READ UNREDACTED AI OBSERVABILITY EVENTS TABLE` account privilege

#### Managing Cortex Agent Conversation Data Collection Preferences

Snowflake Cortex Agent observability events can include both conversation metadata and conversation content. Identity Intelligence can leverage conversation metadata to understand agent usage patterns, tool execution, timing, errors, and other activity details. Conversation content can provide deeper insight into user prompts, SQL queries executed by agents, and agent responses.

Because conversation content may be sensitive, Identity Intelligence provides collection settings that let you determine what Cortex Agent conversation data Identity Intelligence is allowed to process and retain based on your org's needs.

The available settings are:

1. **Do not collect Cortex Agent conversation logs**
   1. Identity Intelligence will not retain Cortex Agent conversation metadata or content from observability events
2. **\[Default Setting] Collect conversation metadata only without conversation content**
   1. Identity Intelligence will retain Cortex Agent conversation metadata and executed SQL queries, but will not retain fields containing user prompts, or agent responses
3. **Collect conversation metadata and conversation content**
   1. Identity Intelligence will collect and retain Cortex Agent conversation metadata and content, including user prompts, executed SQL queries, and agent responses

| Capability / Data                                                                                                      | Option 1: Do not collect Cortex Agent conversation logs | Option 2: Collect conversation metadata only without conversation content                 | Option 3: Collect conversation metadata and conversation content |
| ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| Cortex Agent inventory and configuration (e.g. agent name, creation date, tools and resources)                         | ✅                                                       | ✅                                                                                         | ✅                                                                |
| Conversation metadata (e.g. timestamp, session and record ids, event name, status code, actor user name, SQL query id) |                                                         | ✅                                                                                         | ✅                                                                |
| User prompts                                                                                                           |                                                         |                                                                                           | ✅                                                                |
| Executed SQL query text                                                                                                |                                                         | Only if `READ UNREDACTED AI OBSERVABILITY EVENTS TABLE ON ACCOUNT` is granted (see below) | ✅                                                                |
| Agent responses                                                                                                        |                                                         |                                                                                           | ✅                                                                |

Snowflake also controls whether unredacted observability content is visible to the integration role.\
\
If you select either **Collect conversation metadata and conversation content**, OR **Collect conversation metadata only without conversation content** and you want Identity Intelligence to collect also the executed SQL queries, you ***must*** also grant the following Snowflake account privilege to `<cii_integration_role>` :

```
GRANT READ UNREDACTED AI OBSERVABILITY EVENTS TABLE ON ACCOUNT TO ROLE <cii_integration_role>;
```

If this privilege is **not** granted, Snowflake will only expose metadata to the integration role even if Identity Intelligence is configured to collect conversation content.&#x20;

<figure><img src="/files/nGrOYZu9QkKACfLyUZ3g" alt="" width="563"><figcaption></figcaption></figure>

#### **Configuring the required grants**

Using a role that can grant the necessary permissions (typically `ACCOUNTADMIN` or equivalent role with required grant authority), run the following:

<pre><code>-- 1) Existing agents: grant MONITOR per agent. Repeat for each existing agent.  
GRANT MONITOR ON AGENT &#x3C;db>.&#x3C;schema>.&#x3C;agent_name> TO ROLE &#x3C;cii_integration_role>; 
 
-- 2) Future agents in each relevant schema. Repeat for each database/schema.  
GRANT MONITOR ON FUTURE AGENTS IN SCHEMA &#x3C;database_name>.&#x3C;schema_name> TO ROLE &#x3C;cii_integration_role>; 

-- 3) Cortex database role 
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE &#x3C;cii_integration_role>; 

-- 4) AI Observability application role 
GRANT APPLICATION ROLE SNOWFLAKE.AI_OBSERVABILITY_EVENTS_LOOKUP TO ROLE &#x3C;cii_integration_role>; 

-- 5) Parent database access. Repeat for each database. 
GRANT USAGE ON DATABASE &#x3C;database_name> TO ROLE &#x3C;cii_integration_role>; 

-- 6a) Option A: grant all schemas in database. Repeat for each database. 
GRANT USAGE ON ALL SCHEMAS IN DATABASE &#x3C;database_name> TO ROLE &#x3C;cii_integration_role>; 

-- 6b) Option B: grant only selected schemas. Repeat for each database/schema you would like Identity Intelligence to have access to. 
GRANT USAGE ON SCHEMA &#x3C;database_name>.&#x3C;schema_name> TO ROLE &#x3C;cii_integration_role>; 

<strong>-- 7) Optional: only required if Identity Intelligence should collect Cortex Agent conversation content.
</strong>GRANT READ UNREDACTED AI OBSERVABILITY EVENTS TABLE ON ACCOUNT TO ROLE &#x3C;cii_integration_role>;
</code></pre>

#### Verification (optional)

After grants are applied, use the following to test with the Identity Intelligence integration role:

```
USE ROLE <cii_integration_role>; 
SHOW AGENTS IN ACCOUNT; 
DESCRIBE AGENT <db>.<schema>.<agent_name>; 
SELECT * FROM SNOWFLAKE.LOCAL.AI_OBSERVABILITY_EVENTS LIMIT 10; 
```


# Splunk

2025.07.28

## Overview

As organizations face growing complexity in identity management, Cisco Identity Intelligence provides a centralized platform to detect, monitor, and gain actionable insights into identity-based threats. By correlating identity data and leveraging AI-powered Identity Threat Detection and Response (ITDR) and Security Posture Management, it offers deep visibility into user behaviors and risks, enabling security teams to mitigate threats proactively. To channel these critical insights directly into your security operations workflow, the Cisco Security Cloud application for Splunk offers a seamless integration engineered for reliability and actionability. It provides comprehensive event logging with assigned severity levels to help teams prioritize efforts, and crucially, it pinpoints the specific user information for each failed security check, delivering the granular, context-rich data needed to maintain operational integrity and accelerate response.

### Why Is This Integration Useful for You?

Integrating Cisco Identity Intelligence with Splunk empowers your security operations by centralizing critical identity context within your primary analysis platform. This provides two key benefits:

1. **Deeper User Insights**: By sending identity intelligence detections and events to Splunk, your security teams can correlate this data with other sources (e.g., firewall logs, endpoint data). This enables deeper analysis and helps you detect, investigate, and respond to sophisticated threats more effectively.
2. **Faster Incident Response**: Centralizing identity data in Splunk allows you to leverage its powerful search capabilities and automate workflows. This accelerates investigations, reduces manual effort, and shortens the time from detection to remediation.

### Prerequisites

Before you begin, please ensure you have the following:

1. Administrative access to your Cisco Identity Intelligence
2. Administrative access to your Splunk Enterprise or Splunk Cloud (Minimum Cisco Security Cloud version 3.0.0, Splunk Enterprise & Splunk Cloud 9.4, 9.3, 9.2, 9.1)
3. The [Cisco Security Cloud](https://splunkbase.splunk.com/app/7404) application installed from Splunkbase
4. Appropriate permissions to configure a Splunk HTTP Event Collector (HEC) or manage AWS S3 buckets and Splunk data inputs

## Configuration Methods

There are two primary methods to forward data from Cisco Identity Intelligence to Splunk. Choose the method that best fits your operational needs and infrastructure.

1. [Method 1: Webhooks](/integrations/splunk/webhook-splunk-cii-integration)
2. [Method 2: AWS S3 Bucket (Highly recommended for large-scale organizations)](/integrations/splunk/aws-s3-splunk-cii-integration)

## Test Connectivity Between Splunk and Cisco Identity Intelligence

### In Splunk:

1. Verify Test Application in Splunk:

   1. Navigate to Splunk and ensure the test application (test\_splunk\_demo) is listed in the My Apps table.
   2. Go to App Analytics and select the Cisco Identity Intelligence Dashboard from the list of available dashboards.

   <figure><img src="/files/TnwgmOWWwsd14vyh8gKT" alt=""><figcaption></figcaption></figure>
2. Check the Dashboard Data:

   1. If this is your first time using the dashboard, it is expected that no data will be displayed.
   2. If there is existing data, you could filter it by the index if you used a unique index during the setup process.

   <figure><img src="/files/uAPaCdHZUdP3hk9rqGfq" alt=""><figcaption></figcaption></figure>

### In Cisco Identity Intelligence:

1. Go to Cisco Identity Intelligence and navigate to the Integrations section.
2. Under Notifications Targets table locate the integration entry:
   1. If you are using Webhook, search for the input named test\_splunk\_demo
   2. If you are using AWS S3, search for the input name s3-splunk-cii-demo-set-up (or s3-\<name of your AWS bucket>)
3. Click on the three dots (menu icon) next to the integration entry.
4. Select Test Connectivity from the menu options.
5. A popup will appear in the lower left of the screen indicating the status Success

<figure><img src="/files/skoXcOh4CCyFbYdJK32J" alt=""><figcaption></figcaption></figure>

### View the Test Event in Splunk

1. Go back to the Cisco Identity Intelligence Dashboard in Splunk.
2. Look for the test event that was activated during the connectivity test.
3. Upon successful integration, the test event should be visible within the dashboard.

<figure><img src="/files/I3J6LjIT0zMLlVzCGcnL" alt=""><figcaption></figcaption></figure>


# Webhook Splunk Integration

2025.11.07

## Overview

To establish an integration between Splunk and Cisco Identity Intelligence, please refer to the setup guide section in this document. This integration method, the Splunk HTTP Event Collector (HEC), is utilized to receive event data as Identity Intelligence publishes it, making it suitable for streaming event data directly from Cisco Identity Intelligence to Splunk and getting notified quickly about [Near-Time Compatible detections](/understanding-check-failures). Prior to implementation, it is important to construct the appropriate HEC URL and ensure robust authentication and endpoint configuration.

### Prerequisites

Before you begin, please ensure you have the following:

1. Administrative access to your **Cisco Identity Intelligence**
2. Administrative access to your **Splunk Enterprise** or **Splunk Cloud** (Minimum Cisco Security Cloud version 3.0.0, Splunk Enterprise & Splunk Cloud 9.4, 9.3, 9.2, 9.1)
3. The [Cisco Security Cloud](https://splunkbase.splunk.com/app/7404) application installed from Splunkbase
4. Appropriate permissions to configure a Splunk HTTP Event Collector (HEC)

{% hint style="warning" %}
**If your organization has a large number of users or non-human identities, it is HIGHLY encouraged to use the** [**S3 bucket solution**](/integrations/splunk/aws-s3-splunk-cii-integration) instead of webhooks. This ensures that you can receive all data associated with failing detections. Webhooks are susceptible to hitting maximum thresholds which can cause errors or unexpected data loss&#x20;
{% endhint %}

## Setup Guide

1. Login to your Splunk Enterprise or Splunk Cloud instance and select Cisco Security Cloud from the Apps section
2. Under Cisco Products section go to Cisco Identity Intelligence and click Configure Application<br>

   <figure><img src="/files/Eg9Q7MQLq8XkVtLt5jg8" alt=""><figcaption></figcaption></figure>
3. To get the **HTTP Event Collector parameters,** follow the instructions under the **Set up Guide** in the Splunk app for Identity Intelligence section.

#### Identity Intelligence API Credentials

You will need **API credentials** from Identity Intelligence to complete the setup. To generate Identity Intelligence API credentials, follow below steps

4. Sign in to Cisco Identity Intelligence
5. Go to the Integrations tab and click Add Integration
6. Scroll down and click Add API Client
7. Provide a Name and Description
8. Click **Save and generate credentials**<br>

   <figure><img src="/files/y1PKCKPCWC1ipEScklKj" alt=""><figcaption></figcaption></figure>
9. Once saved, click **Copy all** to copy the credentials to a secure location for use in the Splunk app.
10. Go back to Splunk and paste the copied credentials under the Cisco Identity Intelligence API Credentials section\
    \ <mark style="color:$warning;">Note:</mark> Starting September 2025, Identity Intelligence <mark style="color:$danger;">no longer provides the audience value when creating an API client</mark>. However, the audience field is still required in the Splunk application. Until the application is updated, please use the default audience value [`https://api.oort.io`](https://api.oort.io/) for this field. We will update this documentation once the application no longer requires an audience value.<br>

    <figure><img src="/files/hgtwligCGvb2cmlTJMAH" alt=""><figcaption></figcaption></figure>
11. Once API credentials are entered, the next step is to select the connection method. Select **Webhook** as the connection method from the drop down.<br>

    <figure><img src="/files/XTYMtxpNFzy8cYjQoyzq" alt=""><figcaption></figcaption></figure>
12. Next, enter the Splunk HTTP Event Collector (HEC) URL. This URL will handle incoming events from Cisco Identity Intelligence. Please ensure that the URL is correct and properly formatted. Once confirmed, click **Save**.<br>

    <figure><img src="/files/xxYmRuYbwwKMRc6135sm" alt=""><figcaption></figcaption></figure>

## Troubleshooting

Required Permissions: Ensure you have sc\_admin or equivalent permissions in Splunk.

### Part 1: Basic HEC Setup and Direct curl Test

This checks if your Splunk HEC is configured and listening.

<figure><img src="/files/WXoPFlkfxJCdTgIaI2U0" alt=""><figcaption></figcaption></figure>

#### Enable and Configure HTTP Event Collector (HEC) in Splunk

<figure><img src="/files/dKmsUC9E3Q05V8KrA0Al" alt=""><figcaption></figcaption></figure>

1. Navigate to Settings > Data Inputs.
2. Under "Local Inputs", click on HTTP Event Collector.
3. If HEC is not enabled, click Global Settings in the top right.
   1. Toggle All Tokens to "Enabled".
   2. Optionally, set a Source type and Default index for all HEC inputs.
   3. Click Save.
4. Back on the HTTP Event Collector page, click New Token to create a new HEC token.
5. Give your token a Name (e.g., HEC\_Test\_Token).
6. (Optional) Set Source type, Input settings (e.g., index, host field value). For a basic test, default settings are often fine.
7. Click Review, then Submit.
8. After the token is created, Splunk will display the Token Value. Copy Token Value.

#### Construct Your HEC Endpoint URL

1. The HEC endpoint URL typically follows this format: https\://\<your-splunk-host>:8088/services/collector/event
2. Replace \<your-splunk-host> with the hostname or IP address of your Splunk instance.
3. The default HEC port is 8088. Ensure this port is open on your Splunk server and accessible from where you are running the curl command.
4. For example, if your Splunk host is splunk.example.com, your URL would be <https://splunk.example.com:8088/services/collector/raw>

<figure><img src="/files/qCw2mBPCuXFAyXIfS4wh" alt=""><figcaption></figcaption></figure>

#### Send a Test Event using curl

1. Open a terminal or command prompt on a machine that has network access to your Splunk instance.
2. Use the following curl command, replacing {Token Value} and {HEC URL} with your specific details:\
   \
   `curl -k -H "Authorization: Splunk {Token Value}" -d '{"event": "Hello, Splunk HEC Test!"}' {HEC URL}`
3. URI Formats for Splunk Cloud Platform:
   1. Standard URI format for Splunk Cloud Platform free trials:\
      <https://http-inputs-example.splunkcloud.com:8088/services/collector/raw>
   2. Standard URI format for Splunk Cloud Platform:\
      <https://http-inputs-example.splunkcloud.com:443/services/collector/raw>
   3. Standard URI format for Splunk Cloud Platform on Google Cloud:\
      <https://http-inputs.example.splunkcloud.com:443/services/collector/raw>
   4. Standard URI format for Splunk Cloud Fedramp Moderate on AWS Govcloud:\
      <https://http-inputs.example.splunkcloudgc.com:443/services/collector/raw>
4. URI Formats for Splunk Enterprise:\
   Standard URI format:\
   <https://splunkexample.link:8088/services/collector/raw>

Example:

<figure><img src="/files/BKKqzYPnQvFLf6y38DMF" alt=""><figcaption></figcaption></figure>

#### Verify Success

1. A successful response is {"text":"Success","code":0}.
2. Search in Splunk for the event: index=\<your\_index> "Hello, Splunk HEC Test!"

### Part 2: Troubleshooting External System Integration

1. If the Splunk input was successfully created and the webhook on Cisco Identity Intelligence was also created, you can proceed with a connectivity test.
2. However, if no data appears in Splunk after the test, a potential issue could be associated with IP allowlisting.
3. To enable incoming data, Splunk may require the inclusion of the Identity Intelligence IP address within its allowlist (whitelist).
4. In some cases, adding a broad range such as 0.0.0.0/0 to the allowlist might be considered temporarily for testing, but this is not recommended for production due to security risks.
5. To secure and for successful data ingestion, it is advisable to obtain the precise Identity Intelligence cloud IP addresses or ranges from Cisco and include only those in the Splunk allowlist. (<https://docs.oort.io/integrations/webhooks>). Specifically, please add the AWS IP ranges for your specific Duo-Identity Intelligence region (e.g. Europe) as outlined [here](https://docs.aws.amazon.com/vpc/latest/userguide/aws-ip-ranges.html).

<figure><img src="/files/6F5f15FCnRoy7k0lwJOM" alt=""><figcaption></figcaption></figure>


# AWS S3 Splunk Integration

2025.11.07

## **Overview**

To establish an integration between Splunk and Cisco Identity Intelligence, please refer to the setup guide section in this document. This integration method utilizes the Splunk Add-on for AWS to ingest log data from your AWS S3 bucket. This method is frequently employed for batch processing of historical or high-volume log data for large organizations. It requires setting up AWS credentials and the accurate specification of the SQS queue region and URL.

## **Prerequisites**

Before you begin, please ensure you have the following:

1. Administrative access to your **Cisco Identity Intelligence**
2. Administrative access to your **Splunk Enterprise** or **Splunk Cloud**
3. The [**Cisco Security Cloud**](https://splunkbase.splunk.com/app/7404) **application** installed from Splunkbase

{% hint style="info" %}
The minimum required version of the Cisco Security Cloud application is <mark style="color:$warning;">3.4.0 or higher</mark>
{% endhint %}

4. The Splunk Add-on for AWS **application** installed from Splunkbase
5. Appropriate permissions to manage AWS S3 buckets and Splunk data inputs

## **Setup Guide**

### Generate External ID

1. In CII, create/select an S3 notification target.
2. On Initial Setup, click Generate External ID.
3. Copy/save that value.
4. Use a fresh generated ID per S3 notification target

<figure><img src="/files/sGr0ncegmA5dygfvOF6Q" alt=""><figcaption></figcaption></figure>

### Configure AWS S3

1. Create an S3 Bucket

   a. Go to the **Amazon S3** console

   b. Click **Create bucket**

   c. Provide a **name** for the bucket, such as "splunk-cii-demo-set-up"for this example. Keep this name handy, it will be used throughout the setup process.

   d. Click **Create bucket** to complete the process
2. Create an IAM Policy

   a. Navigate to **IAM** > **Policies** > **Create Policy**

<figure><img src="/files/o94ZvuXscnY0rm2cgZOQ" alt=""><figcaption></figcaption></figure>

b. Select **JSON** in the policy editor and paste the following JSON:

{% hint style="info" %} <mark style="color:$warning;">**Note:**</mark> Replace `${BUCKET_NAME}` with a suitable name, such as `splunk-cii-demo-set-up`
{% endhint %}

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::${BUCKET_NAME}/*"
    }
  ]
}
```

<figure><img src="/files/ptNto5t3uEhUwlYh22MO" alt=""><figcaption></figcaption></figure>

c. Click Next and provide the policy with a name (In this example, we will use S3WritePolicy)

<figure><img src="/files/2F2guJyJUXhdDymHb2fx" alt=""><figcaption></figcaption></figure>

d. Click Create policy

3. Create an IAM Role

   a. Navigate to **IAM** > **Roles** > **Create Role**

<figure><img src="/files/njHJYEUPu7Ig6KtI5zfr" alt=""><figcaption></figcaption></figure>

b. Select **Custom trust policy** and paste the following JSON:

{% hint style="info" %} <mark style="color:$info;">**Notes:**</mark>

* Replace `${CII_ACCOUNT_ID}` with the Identity Intelligence account ID for Splunk 988897525199
* Replace `${UNIQUE_EXTERNAL_ID}` with the External ID generated in Cisco Identity Intelligence for this S3 notification target
  {% endhint %}

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::${CII_ACCOUNT_ID}:root"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "sts:ExternalId": "${UNIQUE_EXTERNAL_ID}"
        }
      }
    }
  ]
}
```

<figure><img src="/files/EWWmKjkX49Cfn5j1bkhy" alt=""><figcaption></figcaption></figure>

c. Click **Next**.

d. Attach the (S3WritePolicy) policy (created earlier)

<figure><img src="/files/Qms2BD9CvqjfESsmhvTm" alt=""><figcaption></figcaption></figure>

e. Provide the role with the name CrossAccountS3WriteRole (This name is required and must not be changed)

<figure><img src="/files/bxZEFnLzh0FCGjLhnpNd" alt=""><figcaption></figcaption></figure>

f. Click **Create role**

4. Update the S3 Bucket Policy

   a. Go to the **Amazon S3** console and select the **splunk-cii-demo-set-up** bucket.

   b. Navigate to the **Permissions** tab > **Bucket Policy > Edit**

<figure><img src="/files/WKfZEUsOo2BJsLbM6nWp" alt=""><figcaption></figcaption></figure>

c. Paste the following JSON into the bucket policy editor:

**Notes:**

* Replace ${S3\_ACCOUNT\_ID} with your **AWS account ID**
* Replace ${ROLE\_NAME} with **CrossAccountS3WriteRole**
* Replace ${BUCKET\_NAME} with your bucket name, e.g. **splunk-cii-set-up**

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::${S3_ACCOUNT_ID}:role/${ROLE_NAME}"
      },
      "Action": [
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::${BUCKET_NAME}/*"
    }
  ]
}
```

<figure><img src="/files/Oq6vvlPWqHIbrVgpICH5" alt=""><figcaption></figcaption></figure>

d. Save changes

5. Create an SNS Topic

   a. Go to the **Amazon SNS** console > **Create Topic**

<figure><img src="/files/gji1VXM16MNNKxhTSMVS" alt=""><figcaption></figcaption></figure>

b. Provide a name: SplunkSNS

c. In the **Access Policy**, select **Advanced** and paste the following JSON:\
\
Note: Replace `${BUCKET_NAME}` with your bucket name, e.g. splunk-cii-set-up

```json
{
  "Version": "2008-10-17",
  "Id": "PolicyForS3Access",
  "Statement": [
    {
      "Sid": "AllowS3Publish",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "SNS:Publish",
      "Resource": "*",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:s3:::${S3 BUCKET NAME}"
        }
      }
    }
  ]
}
```

<figure><img src="/files/m4BqvOOVZqxjXu7YzE3a" alt=""><figcaption></figcaption></figure>

d. Click **Create topic**

6\. Configure S3 Event Notifications for the SNS Topic

* Go to the **Amazon S3** console and select your splunk-cii-set-up bucket.
* Navigate to the **Properties** tab > **Event Notifications**

<figure><img src="/files/B4fgGaGXxl112AT6Bz91" alt=""><figcaption></figcaption></figure>

* Click **Create event notification**
* Configure the event notification:
  * **Event name**: Provide any name.
  * **Prefix (optional)**: Use if you want to trigger events for specific folders.
  * **Event types**: Select **Put** and **Post**.
  * **Destination**: Select **SNS Topic** and choose SplunkSNS.

<figure><img src="/files/3Ur2KphE1PauU6diWAtE" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/wpL7J6PPjHougtzrlMlg" alt=""><figcaption></figcaption></figure>

* Save changes

7\. Create Two SQS Queues

* Create Dead-Letter Queue (DLQ):
  * Go to the **Amazon SQS** console > **Create Queue**
  * Provide the name: SplunkDLQ
  * Set **Visibility Timeout** to **300 seconds**
  * Click **Create Queue**

<figure><img src="/files/WJbzi3TSrEP0pF9bRcCX" alt=""><figcaption></figcaption></figure>

8. **Create Main Queue:**

* Go to the **Amazon SQS** console > **Create Queue**
* Provide the name: SplunkMain
* Set **Visibility Timeout** to **300 seconds**
* Under **Dead-letter queue**, select **Enable** and choose SplunkDLQ
* Click **Create Queue**

**Important**: Configure the SQS visibility timeout to prevent multiple inputs from receiving and processing messages in a queue more than once. Set your SQS visibility timeout to 5 minutes or longer. If the visibility timeout for a message is reached before the message is fully processed by the SQS-based S3 input, the message reappears in the queue and is retrieved and processed again, resulting in duplicate data)

<figure><img src="/files/uKjYeNrXz9gIfpgxXSZT" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/mKUp4pXzebhSK9wVb5MP" alt=""><figcaption></figcaption></figure>

9\. Create an SNS Subscription for SQS

* Go to the **Amazon SNS** console > **Subscriptions** > **Create Subscription**.

<figure><img src="/files/95LOXyoH7C2eqBRctsSQ" alt=""><figcaption></figcaption></figure>

* Configure the subscription:
  * **Topic ARN**: Select SplunkSNS (created earlier)
  * **Protocol**: Select **Amazon SQS**
  * **Endpoint**: Select SplunkMain

<figure><img src="/files/X265Y7Z0dGPYyQBKIa9z" alt=""><figcaption></figcaption></figure>

* Click **Create Subscription**.

10\. Generate Access Key and Secret Key

* Go to **IAM** > **Users** and select your user.
* Navigate to the **Security Credentials** tab.
* Under **Access Keys**, click **Create Access Key**.

<figure><img src="/files/YzPs8BcvfVUG7UFN2dTM" alt=""><figcaption></figcaption></figure>

* Select **Command Line Interface (CLI)** and follow the instructions.

<figure><img src="/files/TXZ8sGzLZSAI5CYT68IU" alt=""><figcaption></figcaption></figure>

* Download the .csv file containing the **Access Key ID** and **Secret Access Key**.

<figure><img src="/files/Uv3UGbYXoiDrVStBnryQ" alt=""><figcaption></figcaption></figure>

### Configure Splunk

<mark style="color:$danger;">Note:</mark> Starting September 2025, <mark style="color:$warning;">CII no longer provides the audience value when creating an API client.</mark> However, the audience field is still required in the Splunk application. Until the application is updated, please use the default audience value [`https://api.oort.io`](https://api.oort.io/) for this field. We will update this documentation once the application no longer requires an audience value.

1. Log in to Splunk.
2. Under Apps, click **Cisco Security Cloud**.
3. On the Application Setup page, click **Configure Application**.

<figure><img src="/files/nCoz84VlPdlqIsBrwWOp" alt=""><figcaption></figcaption></figure>

1. When prompted, enter the following values:

* **AWS Access Key ID**: From the .csv file.
* **AWS Secret Access Key**: From the .csv file.
* **SQS Queue URL**: Go to the **Amazon SQS** console, select SplunkMain, and copy the queue URL.
* **External ID**: Use the same CII-generated External ID that you added to the AWS IAM role trust policy.
* **S3 Bucket URL**: Enter a value in the format s3:// *bucket-name*.s3. *region-code*.amazonaws.com. You got this value in the previous section.
* **S3 Bucket Region: The** AWS region where your S3 bucket is hosted (e.g., us-east-1).

<figure><img src="/files/JJOf7JsYofByvQB2G9JP" alt=""><figcaption></figcaption></figure>

## **Troubleshooting**

**In Splunk:**

1. Navigate to **Apps** in Splunk and open the **Splunk Add-on for AWS**.
2. Go to the **Inputs** tab and verify if a new input named test\_splunk\_demo has been created.

<figure><img src="/files/37Jz5gT775Nv2hXeq4f8" alt=""><figcaption></figcaption></figure>

3. Select the **Account** tab and find the entry for test\_splunk\_demo.

   a. Ensure the account details are correct and match the credentials used during the integration setup.

<figure><img src="/files/jSMrvqDei6wKjtkVKUQp" alt=""><figcaption></figcaption></figure>

**In AWS S3:**

1. **Check the S3 Bucket**:

   a. Log in to your AWS console and go to the **S3** service.

   b. Locate the bucket named splunk-cii-demo-set-up (or the bucket name used during the integration setup).
2. **Verify Data in the S3 Bucket**:

   a. Check if data appears in the bucket after clicking **Test Connectivity** in Identity Intelligence.

<figure><img src="/files/ebOUbIW6lTeB3BGsRFTP" alt=""><figcaption></figcaption></figure>


# UKG (via SCIM)

2025.09.17

## Overview

This project focuses on synchronizing user data from UKG (UltiPro) to Cisco Identity Intelligence (CII) using the [SCIM integration](/integrations/scim-provisioning). This is accomplished using a script which collects the data from the UKG API and effectively "pushes" it to the CII tenant using the SCIM API endpoint.

While the principles may apply to other SCIM implementations, this tool has been specifically tested and optimized for CII's SCIM interface.\
\
The script and associated collateral are provided as part of the Cisco Open Source repository. They can be found here - <https://github.com/cisco-open/cisco-cii-ukg2scim>

{% hint style="info" %}
Please review the README.md file within the repository for the most current information on how to configure and run the tool.
{% endhint %}

## Customization

This tool was designed to work locally but is highly adaptable to different environments and requirements. You can use it as a core component and wrap it with whatever infrastructure is needed for your specific use case. You can customize various aspects to fit your specific:

* Organizational structure and user data model
* Field mappings between UKG and SCIM
* Execution environment (servers, containers, schedulers, cloud functions)
* Performance requirements via concurrency and batch size settings
* Error handling and logging preferences
* Integration with your existing automation workflows

Key customization points are highlighted throughout this documentation, especially in the "Field Mapping" and "Configuration" sections.

## Key Information

* **Daily Synchronization**: This script should be configured to run daily to maintain proper synchronization between UKG and CII. Each run recreates all user records on CII, ensuring the most up-to-date information is always reflected. Note that this is a full refresh approach where users are entirely replaced rather than incrementally updated.
* **Handling Deleted Users**: Currently, this tool does not have a mechanism to detect and remove users that were completely deleted from UKG. If a user's record status (`employeeStatusCode`) in UKG changes from active ('A') or leave ('L') to terminated ('T'), the tool correctly updates their status on CII. However, if a user is completely removed from the UKG system, their record will persist in CII as this tool has no way to identify such deletions.
* **CII Integration Setup**: Before using this script, you must create a SCIM integration on your CII tenant. Use the integration API credentials (Base URL, Token URL, Client ID and Client Secret) to configure this script via the `.env` file. **Important Security Note**: The Client Secret is highly sensitive and should be treated as a credential. Never share it, commit it to public repositories, or expose it in logs.
* **UKG Pro REST API**: This project utilizes the UKG Pro REST API to fetch user data from UltiPro. You can learn more about this API, its endpoints, and authentication requirements at the [UKG Pro API Documentation](https://developer.ukg.com/hcm/reference/welcome-to-the-ukg-pro-api).

This tool provides an automated solution for synchronizing user data between systems with configurable settings for pagination, rate limiting, and concurrency.


# Webex Directory

### Overview

The Cisco Identity Intelligence integration for Webex allows you to synchronize user identity data from your Webex organization into Identity Intelligence for comprehensive identity analytics and threat detection. This integration connects to Webex's API to collect user directory information, providing visibility into your Webex user base.

For documentation on configuring Webex as a notification target, please refer to our [Webex Notification documentation](/integrations/webex-notification-integration).

### Integration with Webex

The integration uses Webex's API to retrieve user directory data from your Webex organization. It performs incremental synchronization, collecting only users that have been modified since the last collection, ensuring efficient data transfer and minimal API usage.

The integration runs on a scheduled basis within the Identity Intelligence infrastructure, automatically collecting user data and making it available for analysis in your Identity Intelligence tenant.

### Permission Requirements within Webex

The integration uses Login with Webex and a Service Application to authenticate with Webex. When you authorize the integration, you grant Identity Intelligence permission to access:

* **User Profile Information** - Read user directory data via the API
* **Organization Data** - Access to your Webex organization's user list

The authorization is performed through Webex's secure OAuth login flow, ensuring your credentials are never shared with Identity Intelligence directly.

### Add and Configure the Webex Integration

To set up the integration, perform the following steps:

#### 1. Add Integration in Identity Intelligence Portal

* Log in to your Identity Intelligence Portal
* Navigate to **Integrations** and click **Add Integration**
* Select **Webex** from the integration type list
* Click the **Login with Webex** button
* You will be redirected to Webex's secure login page
* Log in with your Webex administrator account credentials
* You will be redirected back to the Identity Intelligence Portal
* A success message will confirm that the integration is now authorized
* Enter a descriptive **Integration Name** for this integration instance
* Click **Connect** to verify the integration is accessible
* After a successful connection, click **Save**

### Data Collection Behavior

#### Incremental Collection

The Webex integration uses incremental collection to optimize performance:

* **Initial Collection**: On first run, all users in your Webex organization are collected
* **Subsequent Collections**: Only users modified since the last collection are retrieved using the `meta.lastModified` filter
* **Monthly Full Rebase**: On the 10th of each month, a complete collection runs to ensure data consistency Collapse


# Webex Notification

02/2024

## Overview <a href="#overview" id="overview"></a>

Cisco Identity Intelligence can integrate with Webex to provide notifications and in some cases automation of frequently recurring identity tasks.

### Goal

The goal of this document is to walk through configuration of a Webex space as a notification target and test notifications from one or more Identity Intelligence identity health metrics.

### Audience

This document is intended for identity security, IAM, and IT administrators responsible for integrations between identity, security, and collaboration platforms, including notifications, alerting, and incident remediation.

### Next Steps

After Webex integration is complete, notifications can be tuned to meet your specific organizational needs.

## Webex Integration <a href="#slack-integration" id="slack-integration"></a>

To enable Webex integration, you will need to add the Cisco Identity Intelligence Bot for Webex to your Webex space and send an invite message to the bot.

### Permission requirements within Webex

By default, any space moderator member can [add people (and bots) to a space](https://help.webex.com/en-us/article/n35gqwcb/Webex-App-|-Add-people-to-a-space).

### High-level Setup Steps <a href="#high-level-setup-steps" id="high-level-setup-steps"></a>

There are 3 steps you need to go through to set up the Webex integration with your Identity Intelligence tenant

1. Add the `Cisco Identity Intelligence Bot` to your Webex space
2. Send an invite message to the bot from the Webex space
3. Enable the Webex notification as a target in one or more Identity Intelligence health checks

### Add Cisco Identity Intelligence Bot to Webex <a href="#add-oort-bot-to-slack" id="add-oort-bot-to-slack"></a>

To add the Cisco Identity Intelligence Bot to Webex, perform the following steps.

1. Login to the Identity Intelligence Dashboard
2. From the Integrations tab, click on ***Add Integration***
3. From the Notification Targets list, select ***Add Webex Target***
4. Copy the Cisco Identity Intelligence Bot username
5. Add the Cisco Identity Intelligence Bot to your Webex space by [inviting the bot username to the Webex space](https://help.webex.com/en-us/article/n35gqwcb/Webex-App-|-Add-people-to-a-space)
6. Click ***Generate Configuration Message*** to generate the bot invite message
7. Copy the invite message shown on the page
8. [Mention](https://help.webex.com/en-us/article/p5k20o/Webex-App-|-Get-someone's-attention-with-@Mentions) the bot in your Webex space followed by the copied invite message

### Configure Webex Notification Target Details <a href="#configure-slack-notification-target-details" id="configure-slack-notification-target-details"></a>

Webex will send the invite message to Identity Intelligence, which will create a new Webex notification target, and send a message to the Webex space when setup is complete.\
The Webex notification target name will be the name of the Webex space it was added to.

After getting a message stating the notification target has been added to your Cisco Identity Intelligence account, open the ***Integrations*** page in Identity Intelligence to view the new Webex notification target. You may need to refresh the list of integrations to see the new notification target.

You can update the Webex notification target **Name**, **Description** (optional) and the **use** of this target.

* **Uses** can be a combination of ***Failed Check*** and ***Data Collection***.
  * ***Failed Check*** means the notification target will be notified after checks are evaluated with the failed check results.
  * ***Data Collection*** means the notification target will be notified after a manually-triggered collection of an integration ends, or whenever a manual or scheduled data collection fails with an error.

Click **Save** in the upper right corner of the screen.

### Enable Notifications via Webex for a Health Check <a href="#enable-notifications-via-slack-for-a-health-check" id="enable-notifications-via-slack-for-a-health-check"></a>

The next, optional, step is to enable Webex notifications for one or more checks.\
A notification target should be configured to be notified for specific checks to be operational.

Navigate to the **Checks** page from the left side menu and then click on a specific Check type, such as **Weak MFA Configured**.

On the right side of the page, **check the box to enable notifications** for the Webex notification target you configured.

The Webex workspace will now show as enabled for that Check type.

### Test Webex Notifications <a href="#test-slack-notifications" id="test-slack-notifications"></a>

To test the connectivity of the Webex notification target:

1. Go to the **Integrations** page
2. Select the Webex notification target or use the 3 dot menu button
3. Select the **Test Connectivity** button in the side panel or the menu to send a test "verification" message to the configured Webex space

To test what a custom message for a specific failing check will look like:

1. Go to a specific check page and click **Customize Messages**
2. Customize the message as desired and select **Save**
3. Click the **Test** button for the Webex notification target to send a test message to the signed in user, NOT the configured space, to verify the custom message looks as intended

### Adding Multiple Webex Spaces <a href="#adding-multiple-slack-channels" id="adding-multiple-slack-channels"></a>

To add more than one space as a notification target, repeat the process above starting with ***Add Integration*** to add a new Webex notification target.

Within each individual Check details pane, you will be able to pick one or more Webex target integrations.

### Removing the Cisco Identity Intelligence Bot from a Webex space <a href="#deleting-the-oort-app-for-teams" id="deleting-the-oort-app-for-teams"></a>

Should it be necessary to delete the Cisco Identity Intelligence Bot from your Webex space follow the following steps:

1. Login to the Identity Intelligence Dashboard
2. From the Integrations tab, click on the three dots menu next to the Webex notification target you with to delete
3. Click ***Delete***
4. [Remove the Bot from the space](https://help.webex.com/en-us/article/n161k3p/Webex-App-|-Remove-someone-from-a-space)


# Webhooks

04/17/2025

## Overview

In addition to notification destinations like Microsoft Teams, Slack channels, and email destinations, CII supports webhooks as a target for Failed Check findings.

This article explains how to configure webhooks in CII and provides several basic examples.

### Requirements

The following is required to leverage webhooks with CII -

* <mark style="color:red;">IMPORTANT</mark>: The webhook destination, such as a SIEM like Splunk Enterprise Security, must have a valid public trusted certificate. At this time, a certificate from a private PKI will not work.
* If you are filtering inbound network traffic to the destination, please add the AWS IP ranges for your specific Duo-CII region (e.g. Europe) as outlined [here](https://docs.aws.amazon.com/vpc/latest/userguide/aws-ip-ranges.html).
* Moderate familiarity with webhooks ([external overview](https://swimlane.com/blog/security-automation-webhooks/)) as a method of platform-to-platform communication
* A platform capable of receiving webhooks and ideally parsing a JSON payload for resulting categorization or desired action(s)

## Design Considerations

To successfully leverage CII webhooks, it is best to first fully conceptualize a desired outcome when a user object within the CII platform is flagged for a particular Check.

A basic use case might be:

1. Configure a webhook destination to an automation platform, such as Okta Workflows or a SOAR solution and assign it to a particular CII Check, such as No MFA
2. Once a day, CII will send an event to a webhook with a payload including the list of new users failing this check
3. For each user account in the list, send an email from a specific company-specific email address with instructions for the user to enroll in MFA

The possibilities are endless and very specific to the context of the CII Check upon which you want to take action.

Also, we send test messages labeled `DetailType:WebhookTest` during the webhook connectivity test. You can see the value in the existing [docs](https://docs.oort.io/integrations/webhooks#testing-the-webhook-integration).

<mark style="color:orange;">**Consumers should filter these to prevent unintended actions.**</mark>

### API Authorization

One key design consideration is how the CII webhook communication will authenticate and be authorized to the recipient platform. CII supports the following methods:

* Basic (username and password)
* API Key
* OAuth Client Credentials

Each of these types are explored in more detail in the examples below. The main determining factor here is the type(s) of authorization supported by the target platform.

## CII Configuration

To create a webhook notification integration, perform the following steps:

1. Navigate to **Integrations -> Add Integration -> Webhooks**<br>

   <figure><img src="/files/pgddm1s0Xc8ksntOTCYG" alt=""><figcaption></figcaption></figure>
2. Provide the following:
   1. **Display name**
   2. **Description (optional)**
   3. **Webhook URL**<br>

      <figure><img src="/files/lD3Tq1disOOK7M5LKFXt" alt=""><figcaption></figcaption></figure>
3. Choose the appropriate **Authorization Type** for your webhook integration
   1. **Basic** - provide the Username and Password, as shown above
   2. **API Key** - provide the API key name and API key value<br>

      <figure><img src="/files/4BasARE47uEg3pJPgQpL" alt=""><figcaption></figcaption></figure>
   3. **OAuth Client Credentials**<br>

      1. Enter the **Authorization endpoint** URL
      2. Select **HTTP method** - POST, PUT, GET
      3. Enter **Client ID** and **Client secret**
      4. Add any necessary **OAuth HTTP Parameters** - OAuth HTTP parameters are additional credentials used to sign the request to the authorization endpoint to exchange the OAuth Client information for an access token.

      <figure><img src="/files/dFyKD7ZFvlNHumNdOlOF" alt=""><figcaption></figcaption></figure>
4. Add any necessary **Invocation HTTP Parameters** - Invocation HTTP parameters are additional parameters that can be sent to a webhook and used during request authorization.<br>

   Click one of the following:

   * **Select checks manually**: Check the box next to everything to check for. Use the search field to search for checks by name.

     When you're finished, click **Add Checks** and select the check box next to each check to add.
   * Select checks by category: Check the box next to every **Severity** (or click **All** to select all severities), then check the box next to every **Topic** (or click **All** to select all topics).
   * Click **All failed checks** to limit notifications to failed checks only.
5. Click **Save**.

## Testing the Webhook Integration

**NOTE:** we send test messages labeled `DetailType:WebhookTest` during the webhook connectivity test.

<mark style="color:orange;">**Consumers should filter these to prevent unintended actions.**</mark>

**To test the connectivity of the Webhook:**

1. On the **Integrations** page, find the row under **Notifications** section corresponding to the Webhook notification target you just created

<figure><img src="/files/AbPm8Z3EpB5q3L7Gaq3Y" alt=""><figcaption></figcaption></figure>

2. Select the Webhook notification target or click 3-dot menu on the righthand side and select **Test Connectivity**

<figure><img src="/files/rHQWVVGXs31w7vhVbJFu" alt="" width="233"><figcaption></figcaption></figure>

3. This will send a basic test message to the webhook destination to confirm that connectivity is successful. The contents of the message will be:

```
{
  "version": "0",
  "id": "9d26ad04-2db5-e72c-db29-b5e4935e3ca0",
  "detail-type": "WebhookTest",
  "source": "ad4ccde2-4c41-45e5-92be-8e4af81a9796__5c836a54",
  "account": "227542035969",
  "time": "2025-04-20T07:06:56Z",
  "region": "us-east-2",
  "resources": [],
  "detail": {
    "id": "b54e4399-d7ad-45d3-9526-424a18c5ddd3",
    "checkId": "oort-test-check-id",
    "title": "Cisco Identity Intelligence Failing Check Event Test",
    "severity": "critical",
    "login": "user1@example.com",
    "explainabilityDetails": [
      {
        "key": "userTitle",
        "value": "Tester"
      },
      {
        "key": "userTrustLevel",
        "value": "QUESTIONABLE"
      }
    ],
    "userTrustLevel": "QUESTIONABLE",
    "checkTopics": [
      "identity_threat_insight"
    ],
    "checkTags": [
      "tag1",
      "tag2"
    ],
    "frameworks": [
      "framework1",
      "framework2"
    ],
    "published": "2025-04-20T07:06:56.251Z"
  }
}

```

**To test what a custom message for a specific failing check will look like:**

1. Go to a specific check page and click **Customize Messages**
2. Customize the message as desired and select **Save**
3. Click the **Test** button for the Webhook Notification Target to send a test message to verify the custom message looks as intended

## Enabling Webhook Notifications for Checks

When the webhook integration is created, <mark style="color:orange;">**it is not assigned to any check notifications by default.**</mark> Nothing will be sent via the webhook until it is enabled in the desired Oort Check(s).

To enable it, navigate to the desired Check details page and expand the dropdown next to **Check Settings** on the top-right corner of the page. Select the checkbox for the webhook target that you would like enabled for the given check.

<figure><img src="/files/lUikMOENUZlwkVOhAc74" alt=""><figcaption></figcaption></figure>

## New Features

2024.09.19

CII has added \`checkTags\` to the webhook event payload. This allows organizations to add custom tags to specific checks (see below), and then pass these through the events to their webhook destination for further automation or classification.

<figure><img src="/files/mLorth3UTFFJU68B0ST5" alt=""><figcaption></figcaption></figure>

## Example Event Payload

As of April 17, 2025, we have added the following fields to the new payload:\
\
• login - the login value of the user failing the check\
• userTrustLevel - the trust level of the user <https://docs.oort.io/user-trust-level>\
• checkTopics - as appears on the check page in CII\
• frameworks - as appears on the check page in CII\
• checkTags - tags added to the check by the customer

An example of the payload for new users failing the Unused Application for a User check would look as follows:

```
{
  "version": "0",
  "id": "3a9f6ca8-08af-43f0-827a-ceda239d16f9",
  "detail-type": "FAILED_CHECK",
  "source": "908040f3-da74-4a58-8029-e5b57f80c5e8__969f9802",
  "account": "227542035969",
  "time": "2025-04-10T06:26:40Z",
  "region": "us-east-2",
  "resources": [],
  "detail": {
    "id": "8ca60986-39ae-4b43-b512-f594271a3971",
    "checkId": "unused-user-apps",
    "title": "Unused Application for a User",
    "severity": "low",
    "login": "zdrojewski.ryker@simubiz.com",
    "checkTags": [],
    "checkTopics": [
      "compliance",
      "identity_posture_insight"
    ],
    "frameworks": [
      "nist_csf_pr_ac_4"
    ],
    "explainabilityDetails": [
      {
        "value": "devops engineer",
        "key": "userTitle"
      },
      {
        "value": "FAVORABLE",
        "key": "userTrustLevel"
      },
      {
        "value": "{\"applications\":[{\"name\":\"workday\"},{\"name\":\"five9 plus adapter for salesforce\"},{\"name\":\"workday sandbox\"}]}",
        "key": "context"
      }
    ],
    "userTrustLevel": "FAVORABLE",
    "published": "2025-04-10T06:26:40.577Z"
  }
}
```

In most cases, the receiving platform will need to do some level of parsing of this content, unless the intent is simply to store the information in a 3rd party SIEM or security data lake. (Note that CII has direct integrations for [Azure Sentinel](/integrations/azure-sentinel-siem-integration) or Snowflake security data lakes.)

### Direct Message payload example

An example of the payload for a direct message to a specific end user, or the end user's manager, who is failing a check would look as follows:

```
      {
        recipient: recipientEmail,
        checkId: checkMetadata.id,
        title: checkMetadata.title,
        severity: checkMetadata.severity,
        directMessage,
        referenceVideoUrls: WizerVideoUrl
      }
```


# Workday

Options for integrating with Workday HRIS platform

Workday can be integrated using APIs [Report as a Service (RaaS)](/integrations/workday/workday-report-as-a-service-integration) or via a flat file using [Manual Import (CSV)](/integrations/workday/how-to-import-workday-hris-data). API integration is preferred if both options are available.

{% content-ref url="/pages/OL9ABT7sKzNKAGCFLxfY" %}
[Report as a Service (RaaS)](/integrations/workday/workday-report-as-a-service-integration)
{% endcontent-ref %}

{% content-ref url="/pages/OF6lz1teUzAK8C2qrYsS" %}
[Manual Import (CSV)](/integrations/workday/how-to-import-workday-hris-data)
{% endcontent-ref %}


# Manual Import (CSV)

Import Workday data using data exported to a CSV

## Overview <a href="#overview" id="overview"></a>

Oort’s platform can ingest and analyze HRIS data from a number of platforms, including Workday. One way to integrate with Workday HRIS is to periodically upload exported reports from Workday into the Oort console.

Once HRIS data is integrated, Oort users can compare user HR records with accounts in their IDPs and IAM systems. Oort provides a number of built-in checks for discrepancies and missing data, which can be clear indicators of identity vulnerabilities.

### Goal <a href="#goal" id="goal"></a>

The goal of this document is to provide instructions on importing Workday HRIS data into the Oort console via a Workday report CSV file.

### Benefits <a href="#benefits" id="benefits"></a>

Mismatches between identity sources such as an HRIS system and a primary identity platform (IDP) or IAM system are a common and significant source of security vulnerabilities.

In many cases, discrepancies may arise, e.g. a user moves departments or managers in HR and the IDP system is not updated (or vice versa).

Importing this data provides the Oort platform with the ability to analysis and provide insights into these types of identity issues.

### Workday HRIS File Format <a href="#workday-hris-file-format" id="workday-hris-file-format"></a>

There are two options for generating HRIS data from Workday for upload into Oort.

1. Oort has defined a [Workday report format](#work-report-properties-and-examples) which can be configured in Workday and then exported as a CSV, for upload into the Oort console
2. Export in SCIM format. For more background on this topic, please see the [Understanding HRIS Data and SCIM Overview](/how-to-guides/understanding-hris-data-and-scim) article. Note that for Workday the template file to be used is listed below. Please work with your Oort Customer Success team to enable SCIM.

### Workday CSV Data Structure Template

The template CSV file below can be viewed in Excel or other spreadsheet applications. The intent of the file is to show the structure of the Workday report to be exported.

The file structure is as follows -

```
user_id,first_name,middle_name,last_name,email,active,org_name,business_title,super_ref,managername,position_title,division,city,state,country,hire_date,termination_date,category
21f91774-0000-41d3-bfd1-70f6d378ce23,Robert,Douglas,Smith,Bob,robert.smith@simubiz.com,true,P&S Broadcast & Storage,Partner Account Director,8675309,Marc Heady,SW Development Engineer II,Belgium Division,Brussels,State,Belgium,2022-10-26,2023-10-27,Contingent Worker
```

The template file can be [downloaded here](https://s3.us-east-2.amazonaws.com/assets.oort.io/docs/oort_workday_template.csv)

#### Work Report Properties & Examples

{% hint style="info" %}
Please note that value names are case sensitive!
{% endhint %}

<table><thead><tr><th>Name</th><th>Description</th><th>Value Examples</th><th data-hidden>Type/Format</th><th data-hidden>Is Required</th><th data-hidden>How used in Oort</th></tr></thead><tbody><tr><td>user_id</td><td>Employee/User ID</td><td>14651848</td><td>Numeric</td><td>Yes</td><td></td></tr><tr><td>first_name</td><td>First Name</td><td>Robert</td><td>String</td><td>No</td><td></td></tr><tr><td>middle_name</td><td>Middle Name</td><td>Douglas</td><td>String</td><td>No</td><td></td></tr><tr><td>last_name</td><td>Last Name</td><td>McGurrin</td><td>String</td><td>No</td><td></td></tr><tr><td>nickname</td><td>Nickname</td><td>Bob</td><td>String</td><td>No</td><td></td></tr><tr><td>email</td><td>Email Address</td><td>dmcgurrin@personal.com</td><td>String</td><td>No</td><td></td></tr><tr><td>active</td><td>Is User Active?</td><td><code>true</code> or <code>false</code></td><td>Boolean</td><td>No</td><td></td></tr><tr><td>org_name</td><td>Organization Name</td><td>P&#x26;S Broadcast</td><td>String</td><td>No</td><td></td></tr><tr><td>business_title</td><td>Business Title</td><td>Partner Account Director</td><td>String</td><td>No</td><td></td></tr><tr><td>super_ref</td><td>Employee/User ID of the Supervisor/Manager</td><td>91601870</td><td>String</td><td>No</td><td></td></tr><tr><td>managername</td><td>Name of the Supervisor/Manager</td><td>Marc Heady</td><td>String</td><td>No</td><td></td></tr><tr><td>position_title</td><td>Position Title</td><td>SW Development Eng</td><td>String</td><td>No</td><td>Maps to <code>Title</code></td></tr><tr><td>division</td><td>Company Division</td><td>Belgium Division</td><td>String</td><td>No</td><td></td></tr><tr><td>city</td><td>City</td><td>Sacramento</td><td>String</td><td>No</td><td></td></tr><tr><td>state</td><td>State</td><td>CA</td><td>String</td><td>No</td><td></td></tr><tr><td>country</td><td>Country</td><td>United States</td><td>String</td><td>No</td><td></td></tr><tr><td>hire_date</td><td>Initial Hire Date</td><td>2022-10-26 or 2022-10-26T17:30:00.000</td><td>ISO 8601 Date Format</td><td>Yes</td><td>Maps to <code>Start Date</code> (verify)</td></tr><tr><td>termination_date</td><td>Termination Date</td><td>2022-10-26 or 2022-10-26T17:30:00.000</td><td>ISO 8601 Date Format</td><td>Yes, if user is not active</td><td></td></tr><tr><td>category</td><td>Category of User</td><td>Contingent Worker</td><td>String</td><td>Yes</td><td>Used as User Type and to determine User Type Classification (internal/external)</td></tr></tbody></table>

### Importing the File <a href="#importing-the-file" id="importing-the-file"></a>

To import the file, navigate to the **Integrations** tab and select **Add Integration**.

Select the **Manual Uploads** tile.

<figure><img src="/files/GysGoUjnJR4TeVvcpuAd" alt="Manual Uploads tile with option to upload a file"><figcaption><p>Upload a file</p></figcaption></figure>

Within the File Upload screen, complete the following -

1. Provide a **Name** and **Description** for the file
2. Select the **date that the HRIS data was exported from Workday**. This is important because certain Checks will key off this date for calculating discrepancies (e.g. if a user was hired after the export date, then they will not be expected to be present in the file)
3. Select **Users** as the type of data in the file
4. For the source type, select **Legacy (deprecated)**
5. Drag and drop or select the file to be uploaded
6. Click **Save**

<figure><img src="/files/xFp6BpuGInZD6g4Y2S5r" alt="File Upload screen with options to select a file and upload to Oort"><figcaption><p>Manual file upload screen</p></figcaption></figure>

After the file is uploaded, the Oort team will verify the structure of the data within the file and complete the import into the tenant, typically in less than one business day.

Once the data is accepted and processed, the Manual integration will show success.

<figure><img src="/files/VHUwoxOKzH6GTSdOdxr9" alt="Manual HRIS upload successful"><figcaption><p>Manual HRIS upload successful</p></figcaption></figure>

### Uploading a New File Version <a href="#uploading-a-new-file-version" id="uploading-a-new-file-version"></a>

To upload a new file of the updated data from the Workday system, simply click the 3 dots menu at the right side of the integration and select **Upload new file version**.

This will replace the existing Workday HRIS data with the newer export of data.

If data is obtained from a ***different*** HR system, then create an entirely new HRIS integration object in the console.


# Report as a Service (RaaS)

Create a Workday Report URL for Oort to integrate via Web Service

## Overview <a href="#overview" id="overview"></a>

The Oort security platform can integrate with Workday Report as a Service (RaaS) functionality to ingest Workday HR data in an automated fashion.

Workday HR data provides a key element to managing identities and identity security in your organization, as the HRIS system is frequently the source of truth for both internal and third party B2B users.

This document will walk you through the process of setting up access to Workday and will also walk you through the setup inside of the Oort console.

<figure><img src="/files/dcWPi45dLFAQkAhRUS3b" alt="New Workday Integration General Settings"><figcaption><p>New Workday Integration - General Settings</p></figcaption></figure>

### Workday Report as a Service Configuration <a href="#workday-report-as-a-service-configuration" id="workday-report-as-a-service-configuration"></a>

**NOTE** - This article assumes some familiarity with Workday platform administration. The purpose of the document is to provide the report structure and parameters, as well as provide guidance in the Oort configuration.

The high level steps to complete this task in Workday are as follows:

1. Create a Workday Integration System User (ISU) ([example documentation](https://docs.pingidentity.com/bundle/pingone/page/yia1649796283042.html)) - this user will act as the report owner and provide access to it from the Oort platform
2. Create the custom report as defined below
3. Enable the report as a web service in Advanced settings
4. Ensure that the ISU created in Step 1 is the owner of the report in the Share settings
5. Configure the Workday Report inside of the Oort console.

#### Create Workday ISU <a href="#create-workday-isu" id="create-workday-isu"></a>

To create the integration system user, follow the example documentation above or proceed as follows:

1. Go to your Workday tenant and enter create integration system user in the search field. Under Tasks & Reports, click Create Integration System User.
2. Enter a username and password for the new user.
3. Leave the Require New Password at Next Sign In option clear.
4. For Session Timeout Minutes, enter 0.
5. Select Do Not Allow UI Sessions to prevent this user from signing into Workday.
6. Click OK.

Ensure that the ISU created above is a member of the necessary security groups within Workday to be an owner of the report to be created in the next step.

#### Create Custom Report <a href="#create-custom-report" id="create-custom-report"></a>

Create a custom report in Workday with the following properties:

* Report type - Advanced
* Data source - All users (active, terminated, pre-hire) - This will depend on your Workday data structure.
* Data source type - Standard
* Primary business object - Worker

<figure><img src="/files/MC9IXqAxmmvVXmcIX5kz" alt="Workday Custom Report Details"><figcaption><p>Workday Custom Report</p></figcaption></figure>

Add the following columns to the report, in this order. Some of the columns will be Workday native or static fields and some will be calculated fields.\
\ <mark style="color:red;">**NOTE**</mark> - Please ensure that the **Column Heading Override** and **Column Heading Override XML Alias** columns use these specific names, so that the product can map the attributes correctly.

1. user\_id
2. first\_name
3. middle\_name
4. last\_name
5. nickname
6. email
7. active
8. org\_name
9. business\_title
10. super\_ref - (Manager ID)
11. managername
12. position\_title
13. division
14. city
15. state
16. country
17. hire\_date
18. termination\_date
19. category

<figure><img src="/files/JFuYCn2B1t94UnA5Q2uR" alt="Workday Worker Fields"><figcaption><p>Workday - Report Fields for Worker</p></figcaption></figure>

#### Work Report Properties & Examples

{% hint style="info" %}
Please note that value names are case sensitive!
{% endhint %}

<table><thead><tr><th>Name</th><th>Description</th><th>Value Examples [Usage Notes]</th><th data-hidden>Type/Format</th><th data-hidden>Is Required</th><th data-hidden>How used in Oort</th></tr></thead><tbody><tr><td>user_id</td><td>Employee/User ID</td><td>14651848</td><td>Numeric</td><td>Yes</td><td></td></tr><tr><td>first_name</td><td>First Name</td><td>Robert</td><td>String</td><td>No</td><td></td></tr><tr><td>middle_name</td><td>Middle Name</td><td>Douglas</td><td>String</td><td>No</td><td></td></tr><tr><td>last_name</td><td>Last Name</td><td>McGurrin</td><td>String</td><td>No</td><td></td></tr><tr><td>nickname</td><td>Nickname</td><td>Bob</td><td>String</td><td>No</td><td></td></tr><tr><td>email</td><td>Email Address</td><td>dmcgurrin@personal.com</td><td>String</td><td>No</td><td></td></tr><tr><td>active</td><td>Is User Active?</td><td><code>true</code> or <code>false</code></td><td>Boolean</td><td>No</td><td></td></tr><tr><td>org_name</td><td>Organization Name</td><td>P&#x26;S Broadcast</td><td>String</td><td>No</td><td></td></tr><tr><td>business_title</td><td>Business Title</td><td>Partner Account Director [Combined with <code>position_title]</code></td><td>String</td><td>No</td><td></td></tr><tr><td>super_ref</td><td>Employee/User ID of the Supervisor/Manager</td><td>91601870</td><td>String</td><td>No</td><td></td></tr><tr><td>managername</td><td>Name of the Supervisor/Manager</td><td>Marc Heady</td><td>String</td><td>No</td><td></td></tr><tr><td>position_title</td><td>Position Title</td><td>SW Development Eng [Combined with <code>business_title</code>]</td><td>String</td><td>No</td><td>Maps to <code>Title</code></td></tr><tr><td>division</td><td>Company Division</td><td>Belgium Division</td><td>String</td><td>No</td><td></td></tr><tr><td>city</td><td>City</td><td>Sacramento</td><td>String</td><td>No</td><td></td></tr><tr><td>state</td><td>State</td><td>CA</td><td>String</td><td>No</td><td></td></tr><tr><td>country</td><td>Country</td><td>United States</td><td>String</td><td>No</td><td></td></tr><tr><td>hire_date</td><td>Initial Hire Date</td><td>2022-10-26 or 2022-10-26T17:30:00.000</td><td>ISO 8601 Date Format</td><td>Yes</td><td>Maps to <code>Start Date</code> (verify)</td></tr><tr><td>termination_date</td><td>Termination Date</td><td>2022-10-26 or 2022-10-26T17:30:00.000</td><td>ISO 8601 Date Format</td><td>Yes, if user is not active</td><td></td></tr><tr><td>category</td><td>Category of User</td><td>Contingent Worker</td><td>String</td><td>Yes</td><td>Used as User Type and to determine User Type Classification (internal/external)</td></tr></tbody></table>

Enable this Report as a Web Service in the Advanced tab.

<figure><img src="/files/r5YLU91skSJd5hs9V3av" alt="Enable as a Web Service should be Yes"><figcaption><p>Enable As Web Service</p></figcaption></figure>

Ensure that the ISU user created above is listed as the Owner of the report in the **Share** tab.

Note - **The ISU user will need access to ALL of the data fields in the report.**

<figure><img src="/files/ihUNKexQeSbqaa4damkB" alt="Workday Report Owned By"><figcaption><p>Verify the <code>Report Owned by</code> field</p></figcaption></figure>

Copy the Report URL in JSON format for use in the Oort integration configuration.

Note - the Report URL can be obtained at the following location in the Workday report console.

The report URL must be for the **JSON format**.

Open the list of Report URLs in a new tab and right-click -> copy the JSON URL link below.

<figure><img src="/files/r107lSPRRZzne34Lxcve" alt="Copy the Workday JSON URL"><figcaption><p>Copy the JSON URL</p></figcaption></figure>

### Oort Configuration <a href="#oort-configuration" id="oort-configuration"></a>

Within the Oort console, navigate to -

**Integrations -> New Integration -> Workday**

Enter the following information according to the instructions below.

<figure><img src="/files/dcWPi45dLFAQkAhRUS3b" alt=""><figcaption><p>New Workday Integration - General Settings</p></figcaption></figure>

1. Enter a `Name` for the integration (just a display name)
2. Enter your **Workday Report JSON** **URL** created previously
3. Enter the **ISU username and password** for the Workday ISU service account that was created previously
4. Click **Save**.

### Start Collection for the Workday Integration <a href="#start-collection-for-the-workday-integration" id="start-collection-for-the-workday-integration"></a>

Data collection for new integrations occurs automatically every 24 hrs overnight, but to manually start the collection process, do the following.

Click the **three dot option menu** on the newly created Workday RaaS integration and select **Collect Now**.

This process may take some time depending on the size of the Workday user population.

<figure><img src="/files/C96KZEXEqYCdueBRav4b" alt="Click the Collect Now button to start the data collection"><figcaption><p>Collect Now</p></figcaption></figure>


# Polarity

03/2024

Cisco Identity Intelligence can integrate with [Polarity ](https://polarity.io/)to provide enhanced user identity context for critical security event triage and investigations.<br>

{% embed url="<https://youtu.be/sLe_xI2mViQ?si=8RhzvN9QxSXu-Urv>" %}

### Important Notes!

1. The Polarity app setup currently points to the US <mark style="color:blue;">**production**</mark> environment.\
   \
   If you are looking to integrate with a different geo deployment (AU, JP or EU), then please consult your Polarity representative on how to change the configuration files to point to the correct Cisco Identity environment.

### Oort Integration Steps

1. From the Integrations tab, click Add Integration.
2. Scrolls down and click Add API Client.\
   ![](/files/WD2J2NS592DNhdPh8DGg)
3. Provide a Name and Description
4. Click Save and Generate credentials\
   ![](/files/gwRy9yQhAnBq6GEk6d4p)
5. Use the details provided in your Polarity configuration (see below).\
   ![](/files/3k9prg8BRRcra8SLOVBz)
6. After the Polarity steps below are complete, click Test Connectivity and Finish to complete the integration.

### Polarity Configuration Steps

For information around how to set up Polarity for your Cisco Identity tenant, please see Polarity's Github documentation.

{% @github-files/github-code-block url="<https://github.com/polarityio/oort#polarity-oort-integration>" %}


# Understanding Check failures

### Overview

The Checks page provides high level information about all checks across all users in your environment, along with several filters, to quickly understand the state of your environment and assess potential areas in need of attention.\
\
The Checks page shows the full list of checks that are compatible with the identity data sources that are connected in your tenant. The checks in the table are ordered by compliance, from lowest to highest compliance, starting with the checks that have the most users failing. Checks that are in full compliance can be found towards the bottom of the list.

The Checks page is different than the [User 360 Checks tab](/understanding-your-users/user-360/checks-tab), which only shows information about a given user's check failures, and from the [Check Result](/understanding-check-failures/reviewing-check-results) page, which only shows information about a specific check failure.

To dive into a specific check failure and review the full list of failing users, click on any part of the row of the check you are interested in exploring.

<figure><img src="/files/q1spzHkK93j76QMRiJB7" alt=""><figcaption></figcaption></figure>

This section covers:

* [Different types of checks](#different-types-of-checks): posture vs threat, state based vs event based, and near time vs scheduled
* [Definitions of the elements in the table](#all-checks-table)
* [Checks page actions](#checks-page-general-actions)

The full list of available checks can be found [here](/understanding-check-failures/oort-insights). Read more about the information presented and actions available on the Check Results page [here](/understanding-check-failures/reviewing-check-results).

### Different Types of Checks

#### Posture Insight checks vs Threat Insight checks

When looking at the available checks in the platform, you may notice that some checks are marked as Identity **Posture** Insight checks, while others are marked as Identity **Threat** Insight checks. Posture based checks highlight ways to improve your organization's identity security hygiene, while Threat based checks draw attention to potentially risky behavior that your end users, or someone pretending to be your end users, may be engaging in. It is important to [address your posture based issues](/identity-posture-score#why-should-i-fix-my-organizations-identity-posture) as this ensures decreases the potential risk of every threat that comes in.

**State based checks vs Event based checks**

Behind the scenes, Identity Intelligence also categorizes checks as either **state based** or **event based** to retain and display a user's check history.\
\
**State based checks** are those which are calculated on static entitlement information such as - Is the user active? Does the user have MFA configured? Does the user have unused applications? Is the user sharing an authenticator with another user? etc. Based on the response, a state based check will fail and will remain failing until the response changes.\
\
**Event based checks** are those which rely on event data where a user, or someone pretending to be a user, engages in a particular activity that triggers the check failure. Examples of event based checks are - Weak MFA was used to successfully sign in, IP Threat Detected, Personal VPN usage, Impossible Travel, etc.\
\
If a user has multiple unique events that trigger an event based check failure, *event* based checks will display the '**Observations**' on a given User's Check tab, to keep a record of the individual events that caused the failure, rather than consolidating all the information into one check failure. For example, a particular user fails the `New Country for Tenant` check yesterday because of a login in from Croatia, and tomorrow because of a login from Uruguay. Each event would be recorded as an individual failing **observation** for this particular user.

Event based checks will continue to fail for a given user for 7 days, until no new observations are noted. After 7 days, if no new observations have been noted for that check for the given user, the check failure will expire and mitigate itself so the user will no longer appear in the list of failing checks. The check failure will move to the [Resolved Checks](/understanding-your-users/user-360/checks-tab#resolved-checks) table of the given user's Checks tab in the User 360.\
However, if a new observation is noted for that check for the given user *within* the 7 day window, the user will continue to fail the check. The list of observations and the associated explainability can also be seen in the User 360 Checks tab.

{% hint style="info" %}
Observations are only noted on **Event based checks.** State based checks do not have observations as the check failure logic does not rely on event data
{% endhint %}

#### Near Time Compatible checks vs Scheduled checks

You may notice that certain checks have an additional field in the Check Details section called **Check Assessment** which distinguishes the checks that are "Near Time Compatible". **If log streaming is enabled** for the compatible sources **and** the check is "Near Time Compatible", the data collection and analysis for that check will occur multiple times throughout the day.\
Checks that are not Near Time Compatible are "Scheduled" and will follow the standard 24 hour data collection process that runs at the [time set](/oort-tenant-settings-overview#timing) for your tenant.

You can read more about Near Time compatible checks in the [Check Details ](/understanding-check-failures/reviewing-check-results#check-details)section of the Reviewing Check Results documentation.

### All Checks table

The section below details the fields that appear in the table, as well as the definition of each field:

<table><thead><tr><th width="142">Element</th><th>Definition</th></tr></thead><tbody><tr><td>Check Compliance</td><td>The percent compliance of a given check, where 100% represents full compliance (0 users failing). Calculated by # of users failing a given check compared to # of users in Protected Population<br><img src="/files/dFJkZY12gM53dYXgcDna" alt="" data-size="original"><br><strong>Note</strong>: If check compliance is 0% and Users column in the Checks table is N/A, this indicates the check is evaluated against data sources, not end users, and has at least 1 item failing</td></tr><tr><td>Check</td><td><p>The name of a given check<br>The severity of the check</p><p>The scope of who is being evaluated against the check (end user or Identity Provider)<br>The names of any relevant frameworks or topics related to the check Any custom tags applied to a check, if present</p></td></tr><tr><td># Failing</td><td>The total number of users currently failing a given check<br>The percentage change (increase or decrease) in number of users failing a given check over the last 7 days and 30 days</td></tr><tr><td># Excluded</td><td>The total number of users excluded from a given check</td></tr><tr><td>Report Channels</td><td>If a Notification Target has not been configured for a given check, an <strong>Add</strong> button is displayed in this column. Select the <strong>Add</strong> button to open a modal to choose from existing notification targets, or, if no notification targets are configured in your environment, it will say "No notification targets found". Click the <strong>Add Notification Target</strong> button to go to <a href="/pages/qxe3fIO0iHPwQkEqhMM6"><strong>Integrations</strong></a> and configure one<br><br>If one Notification Target has been configured for a given check, you will see the name of the configured notification target and an icon for the target type (Slack icon, email icon, etc)<br>If multiple Notification Targets have been configured on the same given check, this column will say 'Multiple Channels'<br><br>To modify or add Notification Targets to a given check that already has one or more targets configured, click on the <strong>Pencil</strong> icon next to the target name to make changes</td></tr><tr><td>Enabled</td><td><p>If a check is enabled, this check will be evaluated again the users in your protected population. A blue toggle to the right indicates a check is enabled<br><br>If a check is disabled, users will not be evaluated against this check. A grey toggle to the left indicates a check is disabled<br><br>By default, all checks are enabled. To disable a check, toggle the switch either from this column in the Checks table or from the specific Check page</p><p><img src="/files/rU9Ue0zPkJ1PMpSLbeI4" alt="" data-size="original"></p></td></tr></tbody></table>

### Checks page general actions

This section describes the high level actions you can perform on the Checks page. Click through the tabs below to learn more about how to utilize each feature.

{% tabs %}
{% tab title="Filter" %}
**Filters**

The Checks page is filterable by a number of attributes, enabling you to slice and dice all Checks based on certain parameters that are important to you. You can see all the available basic filters on the left hand side of the Checks page.

To enable a filter, click the check box for the attribute you would like to filter by. The applied filters will be added to the search bar. Distinct filters are separated by an **AND** operator. Within a given filter, selecting more than one value will separate the values with an **OR** operator (ie: `Moderate` OR `Low`).

To remove a filter, you can either deselect the attribute from the filters list on left hand side of the Checks page, or click the X on the right hand side of the filter box that is in the search bar.

After you have selected your filters, the filters are retained as you navigate between different areas within the platform.
{% endtab %}

{% tab title="Search" %}

#### **Search for checks**

Use the search bar above the Checks table to search based on keywords in Check titles

If you have searched on a particular parameter, the search criteria is retained as you navigate between different tabs within the platform

To clear the search bar click the **X** on the right most side of the search bar
{% endtab %}

{% tab title="Run Checks Now" %}
**Run Checks Now**\
If you have made changes to the configuration settings of [state base](#different-types-of-checks)[d](#different-types-of-checks) checks, clicking this button will re-run the state based checks so that you can see which users are failing based on the updated check configuration criteria.

\
If you have made changes to the configuration settings of [event based ](#different-types-of-checks)checks, clicking this button will not show you updated results based on your new settings. To see any ***new*** users who are failing the check based on your configuration setting changes, you need to go to the [Integrations](/integrations) page and trigger a data collection for the desired data source.\
Note: Manually collecting new data will ***not*** remove previously failing users that no longer fail under the updated settings from the list of failing users
{% endtab %}

{% tab title="Share" %}
**Share URL**

For easy sharing, use the **Share** button on the right side of the search bar. The **Share** button copies a link, with the applied filters and selected columns, that can be pasted, bookmarked or shared with anyone who has the appropriate access to your Identity Intelligence tenant

<figure><img src="/files/VQquRdeErocL6VWqvw6g" alt="" width="68"><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Refresh" %}
**Refresh**

Use the **Refresh** button on the right side of the search bar to refresh check data

<figure><img src="/files/LaIWEFvLlMe4BbcfjPsO" alt="" width="71"><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}


# Reviewing Check Results

From the Checks page, you can dive into a specific check to read about the check and the failure criteria used to evaluate users, review the recommended remediation actions, see the full list of users currently failing that check and why each user is failing, modify check settings, configure notification settings, and more.

To explore a specific check further, click on either the desired check name, or any part of that row (excluding the "Report Channels" and "Enabled" columns) to see the Check Results page.

The Check Results page is broken into multiple components:

* [Check Details](#check-details)
* [Failing Users list](#failing-users-list)
* [Reviewing individual user failures](#diving-deeper-into-a-check-failure)
* [Check Settings](#customize-check-settings), including customization and notification settings
* [Failing User count widgets](#failing-users-widgets)\ <br>

  <figure><img src="/files/wBbxRiRGW26Sh0484CkQ" alt=""><figcaption></figcaption></figure>

### Check Details

The Check Details provides high level information about the specific check you are reviewing and encompasses the full block of information that you see on the top of the Check Results page. While the information available will vary from check to check, the format is the same across all checks.

The severity level of each check can be seen next to the Check name, right above the Check Details block.

On the left side of the Check Details block you will see:

* **Check Description** - Information about what a given check is detecting, the logic used to determine which users will fail the check, the potential risk to your organization, etc
  * Some checks will have a sub-section within the description called **Learn more about the risk** with a short 1-2 minute educational video explaining the risk of this behavior and why it is important to remediate this failure. If check [notifications](/integrations#notification-targets) are set up to contact the failing end user, in certain cases (such as the "No MFA Configured" check), the message sent to end users will include the associated video to teach them about the risk and encourage them to take the necessary action to remediate the problem
* **Recommended Actions -** Information on how you can remediate a given check failure, investigate the problem, and/or improve internal processes or policies to prevent users from failing this check in the future

On the right side of the Check Details block you will see:

* **Last Report Update (UTC) -** The date and time the system last processed identity source data and ran the user analysis for a given check. Hover over this value to see a tooltip with the local time
* **Topics & Frameworks -** Topics lists the category that a given check falls into (threat, posture, compliance). Frameworks lists different security frameworks and guidelines, such as NIST, MITRE \&TTACK, CIS, etc, associated with a given check. Both of these fields are available as filters on the [Checks](/understanding-check-failures#all-checks-table) page
* **Compatibility -** Shows which identity data sources work for a given check. All compatible data sources are visible, even if they are not configured for your tenant
* **Tags** - Tags can be added to a check for additional custom categorization. Any tags that are applied to a check will be visible in the Check Details block, and can also be used as a filter on the [Checks](/understanding-check-failures#all-checks-table) page. Tags are visible to all users with platform access
  * To apply a tag to a check, click the **+Add Tag** button in the Check Details block, enter the desired tag name and **save**
  * To remove an existing tag, click the **X** in the desired tag label in the Check Details block
* **Check Assessment** (not available for all checks) - Certain checks are "Near Time Compatible", which means that ***if log streaming is enabled***, the data collection and analysis for this check occurs multiple times a day rather than following the standard 24 hour data collection process. If a check is Near Time Compatible, this field will be visible in the Check Details block.
  * Log streaming is available for certain integration sources including [Okta](/integrations/okta-aws-eventbridge-streaming-integration), [Azure](/integrations/azure-active-directory-event-hub-streaming) and [Duo](/integrations/duo-security-integration#event-streaming). Configure log streaming to receive notifications about these checks in Near Time.
    * Certain integrations are only Near Time Compatible with certain checks (ie: a check may be near time compatible for Okta and Duo but not Azure)
  * Hover over the tooltip next to the **Near Time** label to see which data sources need log/event streaming enabled to start getting near time assessments for this check. Any data sources that already have streaming enabled will not appear in the tooltip
* **Additional resources** (not available for all checks) - Some checks will have links to external sites with information related to a given check, such as relevant documentation from compatible data sources on data definitions or related configuration instructions, security framework detailed descriptions, etc where you can learn more about the security risk or how to remediate an issue

<figure><img src="/files/EuuEWe6YtOe51DkjI9Th" alt=""><figcaption></figcaption></figure>

### Failing Users List

Under the Check Details block is the list of users currently failing a given check. From this table you can review the users failing a given check, as well as dive into the 'Check Explainability' to learn more about why a specific user failed the check.

Directly above the column headers, you can see a **count** of the number of failing users and 2 buttons - **View Users** and **Download List**.

* **View Users** will take you to the [Users](/understanding-your-users/users) page, pre-filtered on the given failing check, so you can see all the users failing that check
* **Download List** will export the list of failing users, and the columns from the table, to a CSV file. It also ***does*** include the check explainability for the failing users

{% hint style="info" %}
If there are more than 1,000 users failing a given check, you will see a button that says **View Users** which will take you to the [Users](/understanding-your-users/users) page, where you can see all failing users and utilize the filters to narrow down to smaller, more manageable groups of users.
{% endhint %}

The table of failing users contains the following fields :

<table><thead><tr><th width="165">Element</th><th>Description</th></tr></thead><tbody><tr><td>User</td><td>The user key of the failing user<br>Clicking on a user's name will take to you their <a href="/pages/gnNXi5t5Z95y4BciXset">User 360 Checks</a> tab</td></tr><tr><td>First Reported (UTC)</td><td>The date and time the user was reported for failing a given check for the first time<br>To sort by this column value, click the First Reported column header to switch between ascending and descending order</td></tr><tr><td>Last Reported (UTC)</td><td>The date and time the user was most recently reported for failing a given check or having a new observation recorded for that check<br>By default, the list of failing users is sorted in descending order (newest to oldest) on Last Reported. To sort by this column value, click the First Reported column header to switch between ascending and descending order</td></tr><tr><td>Admin Notified</td><td>The number of times a notification was sent to admins about a given user failing a given check, the notification method used as an icon (slack logo, email icon, etc) and the last date and time a notification was sent for a given user<br><br>If notifications are not configured for a given check, this column will say 'Not Notified'</td></tr><tr><td>User/Manager Notified</td><td><p>Not supported for all checks. If a check is not compatible with end user/manager notifications, this column will not be visible</p><p>The number of times a notification was sent to an end user and/or end user manager about the user failing a given check, the notification method used as an icon (slack logo, email icon, etc) and the last date and time a notification was sent for the given user<br>If end user/manager notifications are compatible with a given check but are not configured, this column will say 'Not Notified'</p></td></tr></tbody></table>

#### Non-user based checks

For Identity Provider checks, like `Okta Session Length Policy Compliance` or `Apps with Expired Secrets`, the check is evaluated against the integration instance, rather than end users so you will not see a table with failing users. On these checks, you will see **Failing Instances,** which lists the failing identity data source(s), and additional relevant data items, such as app display names, policy names, etc., that require remediation. You can filter for Identity Provider checks on the [Checks](/understanding-check-failures#all-checks-table) page, under the **Scopes** filter.

### Customize Check Settings

On the right hand side of the Check Results page, next to the Check Details block, you will find a **Check Settings** block, that is collapsed by default. Click the down-arrow in the top right of this widget to expand it so that you can review or modify the check's settings.

Detailed information about the different check settings available, and how to use them, can be found in our [Customizing Checks](/understanding-check-failures/customizing-checks) article.

<figure><img src="/files/IHZXY40VW0a8SAKSKrWY" alt="" width="375"><figcaption></figcaption></figure>

### Diving deeper into a check failure

Just like on the [User 360 Checks Tab](/understanding-your-users/user-360/checks-tab), for each failing check, you can click in and view more information about that particular failing check, along with the most important context, such as the actions that contributed to the user failing a given check and high level context about that user. This is called the 'check explainability'.

The explainability available will vary from check to check based on what information or context is most relevant for a particular check, and can include information such as such as user title, failing data source, factor type, application accessed, IP address used, etc.

To review the check explainability for a specific user from the Check Results page you can either:

* select anywhere in the blank space in the row related to the specific user you'd like to dig into
* select the blue icon (3 lines and an arrow) at the end of the row for the specific user

Both methods will open a side panel from the right side of the page with the explainability information for that user. To close the side panel, click the X in the top right corner of the panel, or click anywhere outside of side panel.

<figure><img src="/files/bcgPgZhYfFOibPyrhNbS" alt=""><figcaption></figcaption></figure>

For [event based checks](/understanding-check-failures#different-types-of-checks), within the explainability panel, you can jump directly to a given user's [Activity](/understanding-your-users/user-360/activity-tab) tab to get more information by either clicking the **View in Activity** button to navigate to the Activity tab pre-filtered on all events related to that check failure, or clicking on a **See in Context** button to go to the Activity tab pre-filtered on events that occurred in the hour directly before and after the check failure.

Additionally, If you click a given user's user key from the table, you will go to that user's User 360 Checks tab, where you can see all the checks the user is failing, review the check explainability, and see the observation history for a check (for [event based checks](/understanding-check-failures#different-types-of-checks)).

### Available Actions

From the failing users list, you can also take a few different actions using the 3-dot button on the right side of the row for a given failing user. The actions available are:

* **Send notification** - Sends a one-off notification about a given user's failure to a configured notification channel for Identity Intelligence admins, or the end user/manager if compatible. [Notification targets](/integrations#notification-targets) must be configured to use this functionality
* **View Logs -** Takes you to a given user's [User 360 Activity tab](/understanding-your-users/user-360/activity-tab), pre-filtered on the check failure
* [**Exclude from Check**](/understanding-your-users/remediation-actions#exclude-user-from-check) **-** Removes the user from the list of check failures and stops them from being evaluated against a given check for the specified time frame. Check will appear in **Resolved Checks** table in Checks tab of User 360
* [**Mark as Interesting** and **Mark as Normal** ](/understanding-your-users/remediation-actions#mark-as-interesting-mark-as-normal-behavior)**-** Note: O*nly available for* [event based checks](/understanding-check-failures#different-types-of-checks)*.* Marking a user's check failure or observation as either interesting or normal behavior will mitigate the failed check for that occurrence for that user and move it to the [Resolved](https://docs.oort.io/understanding-your-users/user-360/checks-tab#resolved-checks) table in Checks tab of given user's User 360

### Failing Users widgets

There are a few widgets on every Check Results page that can be useful to get a high level understanding of the users failing a given check

<figure><img src="/files/VVPnkLXAhgdZhuyZhW7V" alt="" width="375"><figcaption></figcaption></figure>

#### Failing Users

The number of users currently failing the check, as well as the percentage of users failing compared to the total number of users in your environment. This widget is available on all checks, though it may be replaced with a compliance score for provider based checks.

Within this widget, you can also see how the number of failing users has changed over the last 7 and 30 days expressed as a percent change. Large increases to either of these numbers may indicate something worth investigating such as an active attack, a policy misconfiguration, etc.

#### Failing Users Per Integration

The number and percentage of users currently failing a given check, broken down by which identity data source is causing a user to fail. Focusing on a specific Provider can help with prioritizing user failures stemming from the identity source that is more important for you on a particular check. This widget is **not** available on all checks.

For example, a user with an account in both Duo and Azure may fail the No MFA Configured check because they have MFA configured in Duo, but not in Azure. In this case, the user would be counted under the Azure integration count.

To see which users are failing because of a given source, click on the data source within this widget, which will take you to the [Users](/understanding-your-users/users) page, pre-filtered on that specific check and the selected integration.\
**Note**: If a user is failing under more than one source, they will be counted under all applicable sources

#### Failing Users Per Type

The number and percentage of users currently failing a given check, broken down by their Identity Intelligence User Type. Focusing on a specific User Types makes it easier to prioritize user failures based on who the users are. This widget is available on all checks except for [Provider based checks](#non-user-based-checks).

For example, an internal User failing the No MFA Configured check is more important to address than an external user failing the same check.

To see which users are categorized under a particular user type, click on the user type within this widget, which will take you to the [Users](/understanding-your-users/users) page, pre-filtered on that specific check and the selected user type.

#### Excluded Users

The total of number of users who have been [excluded](/understanding-your-users/remediation-actions#exclude-user-from-check) from a given check, either temporarily or permanently. This widget is available on all checks, except for provider based checks.

Click the number of users in the Excluded Users widget to go to the Users page, pre-filtered on that specific check and excluded users, to review which users have been excluded from a check. Click on a specific user and navigate to their User 360 Checks Tab to see more details about the user's exclusion, or to re-include the user in a check if needed.

#### Unprotected users failing

The total number of users who are not currently in your designated [**Protected Population**](/oort-tenant-settings-overview#protected-population) that would be failing this check if they were part of the protected population. This data can be useful to determine if your protected population may be configured in way that is leading to unintended results.

By default, tenants do not have a protected population configured. Click the link above to read our documentation about setting and modifying your protected population.

This widget is available on all checks, except for provider based checks.


# Customizing Checks

## Overview

Each organization has a unique way of working - from different user onboarding/offboarding processes to tailor-made security policies and risk tolerances to approved workplace tools. What may be very concerning behavior to one company may be typical behavior for another, because of industry, size, maturity level, past experience, etc.\
\
Identity Intelligence knows that identity security does not have a 'one-size fits all' solution, which is why most checks can be tuned and customized to better align to your organization's way of working so you can focus on what matters most to your team.

On the right hand side of the Check Results page, next to the Check Details block, you will find a **Check Settings** block, that is collapsed by default. Click the down-arrow in the top right of this widget to expand it so that you can review or modify the check's settings.

This article will describe the different types of check settings available, and how you can best utilize them.

<figure><img src="/files/IHZXY40VW0a8SAKSKrWY" alt="" width="375"><figcaption></figcaption></figure>

### **Custom Detection Settings**

Many checks in Identity Intelligence can be tuned via the **Custom Detection Settings** to better align with your organization's risk tolerance, policies, and/or procedures. These settings could be numerical values that you increase or decrease to make the check evaluation criteria more or less strict, or it could be toggles to include or exclude event types, groups of known IP addresses, etc.

All custom detection settings will have a default value configured that can be modified as needed. To change a check's settings:

1. Open the Check Settings widget by selecting the down arrow to expand the widget
2. Select the **Edit** button in the **Custom Detection Settings** section of the Check Settings widget to open a settings modal where you can make the desired changes
   1. **Note**: If this section does not exist, it means the check does not have configurable settings available
3. Once you are done, select **Save changes** within the modal. The modal will then close

   <figure><img src="/files/hGws6FDZSof7uUUq6FU6" alt="" width="410"><figcaption></figcaption></figure>

If you would ever like to revert back to the default settings - follow Steps 1 and 2 above. From within the settings modal, select the **Restore Default** button and then select **Save changes**

### List Settings

Like Custom Detection Settings, **List Settings** should be used to better align check detections to your organization's risk tolerance, policies, and/or procedure based on what is and isn't allowed.

There are several checks in Identity Intelligence that have the option to configure List Settings. All List Settings work as allow or block lists, although they are sometimes called differently (e.g: Ignore List, Include list, etc). What can be added to an allow or block list will vary depending on the context of the check. For example, in some checks you can allow or block specific countries, whereas in other checks you may be able to allow or block certain applications, domains, etc.\
\
Many checks have a default allow and/or block list that can be modified as needed. If two list options are visible on a check (Allow/Block, Include/Exclude, etc), Identity Intelligence can only use one of the two options to impact the detection logic (ie: cannot allow certain items AND block other items). To modify the list:

1. Open the Check Settings widget by selecting the down arrow to expand the widget.\
   If a List already has values configured, you will see a count of values under the List name (ie: 10 items). Select the down arrow next to the count of items to see what values are already configured\
   **Note**: If this section does not exist, it means the check does not have configurable list settings available
2. Select the **Edit** button in the **List Setting** section of the Check Settings widget to open the list where you can make changes.\
   **Note**: If there is more than one List type available (ie: Allow **and** Block), be sure to select the **Edit** button that corresponds to the section you would like to modify. Remember that Identity Intelligence can only use **one** list so make sure there are only settings configured under one of the 2 list types
3. To add a new item to a list, select the **Add** button to open a modal where you can either select from a dropdown of existing options, or enter free text values
4. To remove an existing item from a list, find the item you'd like to remove within the list and select the **Garbage** can icon next to the given value
5. Once you are done making changes to a given list, select **Save**. You can only edit one list type at a time, so if needed - navigate to the next list type to make any changes in the same way

If custom items have been added to a list, these will be denoted with an icon and a tooltip (visible on hover) as shown in the screenshots below. If an item does not have an icon, this indicate that this item was part of the default settings. If an admin removes a a default item, and manually re-adds it, it will also appear as a custom setting.

{% columns %}
{% column width="50%" %}

<figure><img src="/files/0lifsVHJ6OlqHtTpRavo" alt=""><figcaption></figcaption></figure>
{% endcolumn %}

{% column width="50%" %}

<figure><img src="/files/mP95K9BKgz5odAgLxIv4" alt=""><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

If you would ever like to revert back to the default settings - follow Steps 1 and 2 above, select the **Restore Default** button and then select **Save.**

<figure><img src="/files/RxwFjG0F8goBF1WwoIUz" alt="" width="296"><figcaption></figcaption></figure>

### **Why does the number of failing users stay the same after I change a check's settings?**

When you modify a check's custom detection settings or list settings, the user failure results for the check will not update immediately. When the tenant's next data collection runs, the results for most checks will update automatically. If needed, you can trigger a manual data collection for each integration on the **Integrations** page to see updated results for [state based checks](/understanding-check-failures#different-types-of-checks).

You may also notice after making a change to the custom detection or list settings of event based checks, that there are still users failing based on previous check settings. This is because of Identity Intelligence's data processing mechanisms and because users failing event based checks will continue to fail for 7 days, until no new observations are noted. If there are users failing a check based on previous settings, and not new settings, you can remove these users from the list with the [Mark as normal behavior triage action](/understanding-your-users/remediation-actions#mark-as-interesting-mark-as-normal-behavior).

### Notification Settings

Every check in Identity Intelligence will have a **Notification Settings** area in the Check Settings widget. We highly recommend utilizing check notifications to closely monitor the user failures for the checks that are most critical to your organization to ensure that you are not missing anything critical, and so that you do not need to log into the Identity Intelligence platform daily to review new check failures.

Advice on how to adopt and incorporate Notifications can be found below, under the [Best Practices for Notifications](#best-practices-for-notifications) header

<figure><img src="/files/66EBEXxIie7Hvc4V8mLS" alt="" width="360"><figcaption></figcaption></figure>

Once you have configured at least one [notification target](/integrations#notification-targets), you can use the notification settings to **Send failure reports to** the desired notification target by selecting your desired notification target. You can select more than one notification target for a given check if needed.

Certain checks can also be configured to **Send direct messages on failures** to end users, and/or end user managers (if manager data is available). If you do not see an area to **Send direct messages on failures** in the Notifications Settings section, it means this functionality is not available for the given check.\
\
Use the **Customize messages** button to open a modal where you can write custom check descriptions or recommended actions that will be included in the admin notifications, or custom messages to send to failing end users and/or managers. You can also use this modal to **Test** both notification types to ensure that your custom message looks and works as intended.

<figure><img src="/files/KMLCGgnDHnOzeN2VsLFg" alt="" width="311"><figcaption></figcaption></figure>

#### **Best Practices for Notifications**

Notification targets should be configured based on where you and your team work together - whether that be shared channels in Slack, Webex, Teams or distribution lists via email.

When first starting out with Identity Intelligence, we highly recommend setting up failure report notifications for a small handful of checks *only* to start (3-5 checks), so that you and your team can get used to receiving the alerts, get comfortable with the amount of alerts sent, and start developing investigation and/or mitigation operationalization processes for the check failure reports. Once you are comfortable, you can begin to add notification targets to additional checks where needed.\
\
Typically, we also recommend starting with notifications for [Threat based checks](/understanding-check-failures#different-types-of-checks) that your organization is concerned about and would like to monitor/investigate failures regularly.\
If there are [Posture based checks](/understanding-check-failures#different-types-of-checks) you are interested in monitoring - be sure that the number of currently failing users is reasonable and actionable before configuring notification settings or you will overwhelm yourself with alerts. For example, if you have 200 users failing the `Inactive Users` check, we'd first recommend cleaning up these users as much as possible (ideally 10-20 users still failing). Once there are only a few users left failing the check, only should you turn on the notifications for this check to ensure that the number of failing users does not slowly increase to a point where clean up needs to become a bigger project.

If you would like to utilize end user notifications, be sure to inform end users/managers that they may be receiving these alerts and where they can find out more information or support if needed. If you would like these notifications to come from your own domain, which can reduce some end user confusion, you can do so with our [Mailgun](/integrations/mailgun-integration) or [SendGrid ](/integrations/sendgrid-integration)integrations.

### Disable checks

If there are checks that your organization does not care about, you can "turn off", or disable, the check entirely to stop evaluating all users against this check.

The **Disable Check** toggle can be found in two places:

* The Check results page, right next to the check name
* The Failing Checks page, in the furthest right column of each row

To disable a check, switch the toggle to **Disable.** Once a check is disabled, the toggle will be grey. To enable a check, switch the toggle to **Enable.** Once a check is enabled, the toggle will be blue.

Disabling or enabling a check will go into effect immediately.

<figure><img src="/files/vFoFU2AYmmNkSRDPcI0D" alt=""><figcaption></figcaption></figure>

### Unprotected users failing

Another way you can adjust checks is through the [**Protected Population**](/oort-tenant-settings-overview#protected-population). This is a drastic measure, as adjusting the groups that are or are not included in the Protected Population will impact **ALL** of your checks.

By default, tenants do not have a protected population configured. Click the link above to read our documentation about setting and modifying your protected population.

You can see how many unprotected users are failing a specific check in a widget on the left of the Check Results page. This data can be useful to determine if your protected population may be configured in way that is leading to unintended results.

<figure><img src="/files/ciJfPX0JtTOMi3Xbbf9R" alt="" width="217"><figcaption></figcaption></figure>


# Cisco Identity Checks

Cisco Identity Intelligence provides two categories of insights: identity threat detection and identity posture management. More information about the different types of checks can be found [here](/understanding-check-failures#different-types-of-checks).

Navigate to the relevant section or search for a specific area of interest using either the left hand navigation menu or the list below. Click on any detection to read more information about what criteria is used to fail a user for a specific check, which data sources are compatible with each check, as well as recommendations to remediate and customizable settings.

{% tabs %}
{% tab title="Identity Posture Management" %}

<figure><img src="/files/rwJcemnWyxR33LgtBeGR" alt=""><figcaption></figcaption></figure>

[Access from Denied Territories](/understanding-check-failures/oort-insights/identity-posture-management-insights/access-from-denied-countries)

[Agentic Application Reuse](/understanding-check-failures/oort-insights/identity-posture-management-insights/agentic-application-reuse)

[Allow/Block Email Logins](/understanding-check-failures/oort-insights/identity-posture-management-insights/allow-block-email-logins)

[Application Login Bypasses SSO](/understanding-check-failures/oort-insights/identity-posture-management-insights/application-login-bypasses-sso)

[Applications with Expired Secret](/understanding-check-failures/oort-insights/identity-posture-management-insights/applications-with-expired-secret)

[HRIS Discrepancies](/understanding-check-failures/oort-insights/identity-posture-management-insights/hris-discrepancy)

[Identity Intelligence Client Secret Expiring Soon](/understanding-check-failures/oort-insights/identity-posture-management-insights/oort-client-secret-expiring-soon)

[Inactive Account Probing](/understanding-check-failures/oort-insights/identity-posture-management-insights/inactive-account-probing)

[Inactive Guest Users](/understanding-check-failures/oort-insights/identity-posture-management-insights/inactive-guest-users)

[Inactive Users](/understanding-check-failures/oort-insights/identity-posture-management-insights/inactive-users)

[Kerberoastable Accounts](/understanding-check-failures/oort-insights/identity-posture-management-insights/kerberoastable-accounts)

[Missing Value in Mandatory Field](/understanding-check-failures/oort-insights/identity-posture-management-insights/missing-value-in-mandatory-field)

[Never Logged In](/understanding-check-failures/oort-insights/identity-posture-management-insights/never-logged-in)

[No MFA Configured](/understanding-check-failures/oort-insights/identity-posture-management-insights/no-mfa-configured)

[No Strong MFA Configured](/understanding-check-failures/oort-insights/identity-posture-management-insights/no-strong-mfa-configured)

[Non-Human Identity Password Expiration Failure](/understanding-check-failures/oort-insights/identity-posture-management-insights/non-human-identity-password-expiration-failure)

[Non-Human Identities with No MFA Configured](/understanding-check-failures/oort-insights/identity-posture-management-insights/non-human-identities-with-no-mfa-configured)

[Okta Long Running Sessions](/understanding-check-failures/oort-insights/identity-posture-management-insights/okta-long-running-sessions)

[Okta Session Length Policy Compliance](/understanding-check-failures/oort-insights/identity-posture-management-insights/okta-session-length-policy-compliance)

[Personal VPN Usage](/understanding-check-failures/oort-insights/identity-posture-management-insights/personal-vpn-usage)

[Provider User Type Missing](/understanding-check-failures/oort-insights/identity-posture-management-insights/user-type-missing)

[Rate Limit Alert](/understanding-check-failures/oort-insights/identity-posture-management-insights/rate-limit-alert)

[Role Assigned to Azure Cloud Only Account](/understanding-check-failures/oort-insights/identity-posture-management-insights/role-assigned-to-azure-cloud-only-account)

[Service Account Reuse](/understanding-check-failures/oort-insights/identity-posture-management-insights/service-account-reuse)

[Shared Mailbox Sign In Enabled](/understanding-check-failures/oort-insights/identity-posture-management-insights/shared-mailbox-sign-in-enabled)

[Slack User Inconsistencies](/understanding-check-failures/oort-insights/identity-posture-management-insights/slack-user-inconsistencies)

[Telecom MFA Limit Reached](/understanding-check-failures/oort-insights/identity-posture-management-insights/telecom-mfa-limit-reached)

[Unmanaged Devices Access](/understanding-check-failures/oort-insights/identity-posture-management-insights/unmanaged-devices-access)

[Unused Application for a User](/understanding-check-failures/oort-insights/identity-posture-management-insights/unused-application-for-a-user)

[Upcoming App Key Expiration](/understanding-check-failures/oort-insights/identity-posture-management-insights/upcoming-app-key-expiration)

[User Authorized to Bypass MFA](/understanding-check-failures/oort-insights/identity-posture-management-insights/user-authorized-to-bypass-mfa)

[User Has Directly Assigned Application](/understanding-check-failures/oort-insights/identity-posture-management-insights/user-has-directly-assigned-application)

[User in IDP but not in HRIS](/understanding-check-failures/oort-insights/identity-posture-management-insights/user-in-idp-but-not-in-hris)

[User Password Expiration Failure](/understanding-check-failures/oort-insights/identity-posture-management-insights/user-password-expiration-failure)

[User Stuck in Non-Functional State](/understanding-check-failures/oort-insights/identity-posture-management-insights/user-stuck-in-non-functional-state)

[User Sharing Authenticators](/understanding-check-failures/oort-insights/identity-posture-management-insights/users-sharing-authenticators)

[Weak MFA Was Used to Successfully Sign In](/understanding-check-failures/oort-insights/identity-posture-management-insights/weak-mfa-was-used-to-successfully-sign-in)
{% endtab %}

{% tab title="Identity Threat Detection" %}

<figure><img src="/files/I2I6QwMP1Cc9ZhC4RhRJ" alt=""><figcaption></figcaption></figure>

[A Bypass Code Was Used To Successfully Sign In](/understanding-check-failures/oort-insights/identity-threat-detection-insights/a-bypass-code-was-used-to-successfully-sign-in)

[Access From Dormant Account](/understanding-check-failures/oort-insights/identity-threat-detection-insights/access-from-dormant-account)

[Access From Dormant Non-Human Identity](/understanding-check-failures/oort-insights/identity-threat-detection-insights/access-from-dormant-non-human-identity)

[Accounts With Unusually High Activity](/understanding-check-failures/oort-insights/identity-threat-detection-insights/accounts-with-unusually-high-activity)

[Active Account under Heavy Attack](/understanding-check-failures/oort-insights/identity-threat-detection-insights/active-account-under-heavy-attack)

[Activity From Untrustworthy ISP](/understanding-check-failures/oort-insights/identity-threat-detection-insights/activity-from-untrustworthy-isp)

[Admin Impersonation in Okta](/understanding-check-failures/oort-insights/identity-threat-detection-insights/admin-impersonation-in-okta)

[Admin Role Assigned to User](/understanding-check-failures/oort-insights/identity-threat-detection-insights/admin-role-assigned-to-user)

[Admin Role Assigned to Non-Human Identity](/understanding-check-failures/oort-insights/identity-threat-detection-insights/admin-role-assigned-to-non-human-identity)

[Authenticator Registration Anomalies](/understanding-check-failures/oort-insights/identity-threat-detection-insights/authenticator-registration-anomalies)

[Break-Glass Account Successful Sign In](/understanding-check-failures/oort-insights/identity-threat-detection-insights/break-glass-account-successful-sign-in)

[Code Exfiltration By Guest Account](/understanding-check-failures/oort-insights/identity-threat-detection-insights/code-exfiltration-by-guest-account)

[Compromised Sessions](/understanding-check-failures/oort-insights/identity-threat-detection-insights/compromised-session)

[Google Drive File with Excessive Sharing Permissions](/understanding-check-failures/oort-insights/identity-threat-detection-insights/google-drive-file-with-excessive-sharing-permissions)

[Impossible Travel](/understanding-check-failures/oort-insights/identity-threat-detection-insights/impossible-travel)

[IP Threat Detected](/understanding-check-failures/oort-insights/identity-threat-detection-insights/ip-threat-detected/ip-threat)

[Login to Admin Console](/understanding-check-failures/oort-insights/identity-threat-detection-insights/login-to-admin-console-in-okta)

[MFA Flood](/understanding-check-failures/oort-insights/identity-threat-detection-insights/mfa-flood)

[Microsoft Entra ID Admin Activity Anomaly](/understanding-check-failures/oort-insights/identity-threat-detection-insights/azure-admin-activity-anomaly)

[New Country for Tenant](/understanding-check-failures/oort-insights/identity-threat-detection-insights/new-country-for-tenant)

[New IdP Created](/understanding-check-failures/oort-insights/identity-threat-detection-insights/new-idp-created)

[Non-Human Identity with Interactive Browser Access](/understanding-check-failures/oort-insights/identity-threat-detection-insights/non-human-identity-with-interactive-browser-access)

[Okta Admin Activity Anomaly](/understanding-check-failures/oort-insights/identity-threat-detection-insights/okta-admin-activity-anomaly)

[Rare Browser Activity](/understanding-check-failures/oort-insights/identity-threat-detection-insights/rare-browser-activity)

[Registered Location Mismatch](/understanding-check-failures/oort-insights/identity-threat-detection-insights/registered-location-mismatch)

[Risky Parallel Sessions](/understanding-check-failures/oort-insights/identity-threat-detection-insights/risky-parallel-sessions)

[Service Account Successful Sign In](/understanding-check-failures/oort-insights/identity-threat-detection-insights/service-account-successful-sign-in)

[Service Principal Risk Detected](/understanding-check-failures/oort-insights/identity-threat-detection-insights/service-principal-risk-detected)

[Shared Mailbox Successful Sign In](/understanding-check-failures/oort-insights/identity-threat-detection-insights/shared-mailbox-successful-sign-in)

[Sign In Threat Detected](/understanding-check-failures/oort-insights/identity-threat-detection-insights/sign-in-threat-detected)

[Sign-in from Recently Created IdP](/understanding-check-failures/oort-insights/identity-threat-detection-insights/sign-in-from-recently-created-idp)

[Successful Access from a Previously Only Failing IP](/understanding-check-failures/oort-insights/identity-threat-detection-insights/successful-access-from-a-previously-only-failing-ip)

[Super Admin Login to Google](/understanding-check-failures/oort-insights/identity-threat-detection-insights/super-admin-login-to-google)

[Suspicious Activity Reported by End User](/understanding-check-failures/oort-insights/identity-threat-detection-insights/suspicious-activity-reported-by-end-user)

[Unusual Repo Access](/understanding-check-failures/oort-insights/identity-threat-detection-insights/unusual-repo-access)

[User Lock Out Risk Detected](/understanding-check-failures/oort-insights/identity-threat-detection-insights/user-lock-out-risk-detected)

[User Trust Level Alert](/understanding-check-failures/oort-insights/identity-threat-detection-insights/user-trust-level-alert)

[Users With Defined Email Forward Rules](/understanding-check-failures/oort-insights/identity-threat-detection-insights/users-with-defined-email-forward-rules)

[Users with New Email Forward Rules](/understanding-check-failures/oort-insights/identity-threat-detection-insights/users-with-new-email-forward-rules)

[Weak MFA Manually Activated and Utilized](/understanding-check-failures/oort-insights/identity-threat-detection-insights/weak-mfa-manually-activated-and-utilized)
{% endtab %}
{% endtabs %}


# Identity Posture Management Checks

<figure><img src="/files/rwJcemnWyxR33LgtBeGR" alt=""><figcaption></figcaption></figure>

Use the left hand menu bar or see the list of [Posture Management Checks](/understanding-check-failures/oort-insights#identity-posture-management)


# Access from Denied Territories

Detects successful logins from territories restricted because of embargoes or other government regulations, or where the network's ASN country is restricted regardless of IP address's reported location. This check applies to employees and external entities, including third parties and contractors.

The default list of restricted territories is based on the Office of Foreign Assets Control's guidelines and can be customized via Custom Detection Settings to align with your organization's specific requirements.

#### **Recommended Actions**

Audit the user's recent activity for any suspicious behavior, data access, or configuration changes. Contact the user directly through a trusted channel (not email) to confirm that the login was authorized. If the login was not legitimate, immediately revoke all active sessions and reset the user's credentials.\
\
If the access was legitimate, document the business justification for accessing corporate resources from a restricted territory. Implement preventative measures to reduce risk from high-risk or non-business-related regions by configuring firewall rules, applying location-based access policies, and enabling identity provider settings (such as Duo Risk-Based Authentication) to block access or require additional verification for logins from restricted territories or unapproved geographic locations.

#### **Default Check Settings**

Block List: 14 items

#### **Compatibility**

[Microsoft Entra ID](/integrations/azure-active-directory-integration)

[Okta](/integrations/okta-data-integration)

[Duo](/integrations/duo-security-integration)

[Salesforce](/integrations/salesforce-integration)

[GitHub](/integrations/github)

[AWS](/integrations/aws)

[OpenAI](/integrations/openai)

<figure><img src="/files/gCj3WLJCuAl8ud0XLqKc" alt=""><figcaption></figcaption></figure>


# Agentic Application Reuse

Reusing agents where a single account is shared across multiple services, applications, or even environments poses significant security risks. This practice can lead to permission sprawl, exposing accounts with sometimes elevated privileges to a broader attack surface.

Additionally, it complicates auditing and troubleshooting by obscuring the source of specific actions or issues. Detecting and mitigating agentic reuse helps maintain a secure, auditable, and well-managed environment.

This check will evaluate the activity of an account between 10 and 100 days ago, during which the account was active for at least 0 days. These values can be configured in the check settings.

The check will alert when the account's risk score is above 100. The score is bucketed into three categories: Low (80-94), Medium (95-99), and High (100). The threshold for alerting can also be configured in the check settings.

#### Recommended Actions

If you do not recognize or expect the IP, ISP or user agent being used by the account, contact the account owner to confirm that this is legitimate activity. If there is doubt, you should treat the account as compromised and rotate any passwords, keys or other credentials associated with the account.

Create unique agents for each application or service that you need such an account for and implement the least privileged permissions for each of them. You should also regularly audit these accounts to make sure they are still necessary and remove any unused or orphaned accounts.

#### Default Settings

Evaluation Period (days): 100

Minimum Account Age for Evaluation (days): 10

Minimum Historical Active Days (days): 0

Risk Score Alert Threshold (percentage): 100

#### Compatibility

Okta


# Allow/Block Email Logins

Detects accounts using email domains that are on your block list, not on your allow list, or that appear across fewer than 5 (configurable) accounts in the last 30 days. You can toggle between using a block list or an allow list, and enable auto-discovery of rare domains to flag uncommon email providers without manual list maintenance. An ignore list is available to suppress alerts for known-good domains.<br>

**Recommended Actions**

Depending on your security posture, consider deleting users using emails with those domains and exploring why you have them in the system.<br>

**Default Check Settings**

Auto-Discovery of Rare Domains: enabled

Rare Domain Occurrence Threshold (Past 30 Days): 5

**Compatibility**

[Microsoft Entra ID](/integrations/azure-active-directory-integration)

[Okta](/integrations/okta-data-integration)

[GitHub](/integrations/github)

[AWS](/integrations/aws)

[Duo](/integrations/duo-security-integration)

[Slack](/integrations/slack-notification-integration)

[Google Workspace](/integrations/google-workspace-integration)

[Salesforce](/integrations/salesforce-integration)

[Auth0](/integrations/auth0)


# Application Login Bypasses SSO

Detects users logging in to an application directly instead of SSO. Preventing logins with a username and password ensures that users cannot bypass your SSO system.

**Recommended Actions**

Users should only be logging in to an application directly if this is an administrative initiative to respond to an SSO outage or other problem. If this is not the case, please open a security ticket to investigate.

**Compatibility**

[Salesforce](/integrations/salesforce-integration)

[Snowflake](/integrations/snowflake)


# Applications with Directly Assigned Users

Detects applications that violate security best practices by having access directly assigned to individual users instead of being managed through group assignments.

Direct app entitlements cause various security and operational issues for organizations. It can lead to inconsistent permissions or "permission drift", where access levels vary across users with similar jobs or roles, creating security gaps. Operational challenges can also arise as both manual and automated onboarding, offboarding and cross-boarding processes are more prone to errors when there are direct app assignments, as they can be easily overlooked or forgotten, or cause breakdowns with automated workflows. This practice can also create compliance issues, as fragmented visibility makes it difficult to identify which users have what level of access to each app, making it harder and more time consuming to maintain audit trails and regularly conduct required access reviews with accurate results.

**Recommended Actions**

Review each flagged application and its directly assigned users to assess current access patterns. Evaluate whether appropriate groups already exist for these users based on their role or department. If suitable groups are already assigned to the given app, add each impacted user to the relevant group. If no appropriate groups exist, create new groups organized by job function, department, access requirements, etc, add the relevant user(s) to the group and assign the group(s) to the app.

When migrating access, add users to appropriate security groups first, then remove direct user assignments only after confirming group-based access is working to prevent access interruption. Consider removing access entirely for dormant accounts or users who haven't recently used the app.

If many apps are failing this check, focus on addressing sensitive apps first by marking them as such using the toggle on the Applications page and then updating the check's detection settings to consider sensitive apps only. This approach will allow you to focus on resolving issues with your organization's most critical apps first, before addressing issues with other apps.

\
**Custom Detection Settings and Default Settings**

Check only sensitive apps: false

Ignore List:

* `active_directory`
* `ldap_sun_one`

\
**Compatibility**

[Microsoft Entra ID](/integrations/azure-active-directory-integration)

[Okta](/integrations/okta-data-integration)


# Applications with Expired Secret

Detects applications with expired API keys or passwords.

**Recommended Actions**

Remove expired secrets from the corresponding Entra ID applications.

**Compatibility**

[Microsoft Entra ID](/integrations/azure-active-directory-integration), Okta<br>


# Applications with Limited Adoption

Detects applications that have been used by less than 90% (customizable) of the assigned users within 30 days(customizable), as configured in the check settings. Removing user access reduces unnecessary access and risk in case of account compromise, improves security posture, and can save licensing costs.

#### **Recommended Actions**

Before revoking access to a particular application, inform the assigned user(s), or their manager, that the app is not utilized and make sure the application is no longer needed. Remove access at the identity source where user access to the application is managed. If the app utilization rate is very low, consider decommissioning it entirely.

If you have many applications failing this check, focus on addressing impacted sensitive applications first. To do so, go to Applications and toggle to select the desired apps as sensitive, then update the check's settings here to only consider sensitive apps.

**Configurable Check Settings and Default Settings**\
\
Only sensitive apps: false

App usage timeframe: 30

Ignore bookmark apps: true

Utilization threshold: 90

Ignore List: empty

Include List: empty

**Compatibility**

[Microsoft Entra ID](/integrations/azure-active-directory-integration)

[Okta](/integrations/okta-data-integration)

Duo


# Attack Path Alert

The Attack Path Alert check identifies identities that appear in attack path findings ingested from [BloodHound Enterprise](/integrations/bloodhound-enterprise). Attack paths represent sequences of relationships and permissions that could allow lateral movement or privilege escalation to reach high-value targets. When triggered, this check highlights users who may be positioned to reach sensitive assets through one or more discovered paths.

**Recommended actions**\
Validate the attack path details and remove excessive privileges or risky relationships involved in the path. Prioritize users with high impact or exposure, especially those connected to privileged roles or critical assets.

**Check settings**\
You can adjust the check settings to filter out some attack paths based on severity to reduce noise and focus on higher-risk findings.

**Compatibility**\
BloodHound Enterprise


# HRIS Discrepancies

Detects users with the manager or email address not in sync between your HRIS (Human Resources Information System) and IDP (Identity Provider). This helps maintain accurate and up-to-date records, enabling smooth workflow and good hygiene.<br>

**Recommended Actions**

We recommend correcting any inconsistencies.

**Compatibility**

[Workday](/integrations/workday)

[HRIS Upload](/integrations/workday/how-to-import-workday-hris-data)

<figure><img src="/files/3La24sSP3WaeZK4FRzdO" alt=""><figcaption></figcaption></figure>

<br>


# Identity Intelligence Client Secret Expiring Soon

The Client Secret key for the Identity Intelligence Application in Entra ID (formerly Azure AD) will expire in 90 days or less. If the key expires, Identity Intelligence will not be able to collect data.

#### **Recommended Actions**

Please issue a new Client Secret and update the Integration in Identity Intelligence with the new key.

#### **Default Check Settings**

App expiration warning window (days): 90

#### **Compatibility**

**Entra ID**

[Microsoft Entra ID Data Integration](/integrations/azure-active-directory-integration#update-the-microsoft-entra-id-api-app-client-secret)


# Inactive Account Probing

Identifies users who experience a sudden surge in failed login attempts after an extended period of inactivity, which could indicate a potential account takeover attempt.

A user will fail this check if they have been inactive for 30 (configurable) or more days and encounter at least 2 (configurable) account probing attempt(s).

#### **Recommended Actions**

Check if the username was in any known data breaches. Prioritize investigating and remediating users without MFA enabled on their accounts, as they are at the highest risk. If an attacker successfully guesses or obtains their password, they can gain access without needing a second form of authentication.

To remediate, start by initiating an access review with the user’s manager to confirm whether the dormant account is still needed. If the probed account is no longer required, deprovision it at the identity source. If the account is still needed (ex: user on leave), disable it at the identity source.

If the probed account is no longer required, deprovision it at the identity source. If the account is still needed (ex: user on leave), disable sign-in's at the identity source.

Otherwise, continue monitoring the account for activity and suspend it after a grace period if inactivity persists. Investigate the source(s) of failed login attempts and update geo-blocking rules if needed.

#### **Default Check Settings**

Number of days of inactivity: 30

Account probing threshold: 2

#### **Compatibility**

[Duo](/integrations/duo-security-integration)

[Microsoft Entra ID](/integrations/azure-active-directory-integration)

[Okta](/integrations/okta-data-integration)

[Google Workspace](/integrations/google-workspace-integration)

<figure><img src="/files/vKgocu2ISJ8qMsfiMHr2" alt=""><figcaption></figcaption></figure>


# Kerberoastable Accounts

Detects Active Directory accounts with a non-empty Service Principal Name (SPN) attribute, making them vulnerable to Kerberoasting.

Kerberoastable accounts expose encrypted service tickets that attackers can obtain and crack offline without triggering account lockout controls. If compromised, these accounts may be abused to access critical services, enable lateral movement, or escalate privileges.

#### **Recommended Actions**

Remove unnecessary SPNs and review why each SPN is required.\
\
Rotate affected account credentials and consider moving service accounts to gMSA where possible.\
\
Enforce strong password policies and prioritize monitoring of high-privilege accounts.

#### **Additional Resources**

[MITRE ATT\&CK T1558.003: Kerberoasting](https://attack.mitre.org/techniques/T1558/003/)

#### **Compatibility**

[Microsoft Active Directory](/integrations/microsoft-active-directory)


# Inactive Guest Users

Detects guest accounts that have long periods of inactivity. These accounts are often targeted by adversaries as they do not have the same scrutiny as internal accounts. Most compliance frameworks require you to assess and purge these users promptly. A Microsoft Entra ID (Azure AD) business-to-business (B2B) collaboration user's UserType = Guest. A user will fail this check if they have a guest account that has been inactive for more than 30 days.

#### **Recommended Actions**

First, assess the users' security posture. We can also determine if users have conditional access and MFA enabled. We recommend deleting these users on a schedule, as they are easy to re-invite.

To delete users in Microsoft Entra ID, you can select "Delete User" from the "Actions" button in User profiles.

#### **Default Check Settings**

Number of days: 30

#### **Compatibility**

[Microsoft Entra ID](/integrations/azure-active-directory-integration)

[Okta](/integrations/okta-data-integration)

[Workday](/integrations/workday)

[Slack](/integrations/slack-notification-integration)

[GitHub](/integrations/github)

<br>


# Inactive Users

Detects users who are enabled (Active status) and who have not successfully authenticated for more than 30 days.

Dormant accounts carry unnecessary financial and information security risk for your organization. These users might consume application licenses without using them. By leaving standing entitlements in place that are not needed or not used on a regular basis, attackers may be able to use a dormant account to gain access to sensitive systems and data.

**Recommended Actions**

Trigger an access review with the user’s manager to verify that the dormant account still needs access. If not needed, deprovision the account immediately. Otherwise, continue monitoring the account for activity and deprovision after a grace period. By reducing the number of accounts and adopting a least privilege model, organizations can reduce their attack surface.

**Default Check Settings**

Number of days:30

**Compatibility**

[Microsoft Entra ID](/integrations/azure-active-directory-integration)

[Okta](/integrations/okta-data-integration)

[Salesforce](/integrations/salesforce-integration)

[GitHub](/integrations/github)

[Google Workspace](/integrations/google-workspace-integration)

[AWS](/integrations/aws)

[Duo](/integrations/duo-security-integration)

[Snowflake](/integrations/snowflake)

<br>


# Missing Value in Mandatory Field

**Details**

***

Some account profile fields that you have defined as mandatory are missing values for some users.

This can happen if the field was created or made mandatory after the user profile already existed.

Missing values for mandatory fields can prevent IAM automation and security systems from working as intended.

**Recommended Actions**

We recommend reviewing if the field should really be mandatory and, if it is, to fill in the value for impacted users.

**Compatibility**

[Okta](/integrations/okta-data-integration)

<figure><img src="/files/ot4Orn0jRL3HEUlHY4oW" alt=""><figcaption></figcaption></figure>


# Never Logged In

Detects accounts that were created but never successfully used to log in. Attackers may exploit these unused accounts to register their own MFA factors, potentially bypassing authentication controls and gaining unauthorized access.

A user will fail this check if they have not logged in 7 (configurable) days after an account was created. If needed, adjust the new account grace period in Custom Detection Settings to align with your organization's procedures.<br>

**Recommended Actions**

Trigger an access review with the user’s manager to verify that the unused account is still necessary. If not needed, suspend the account immediately. Otherwise, reset the account and direct the manager to onboard the user correctly.<br>

**Default Check Settings**

Number of days: 7

**Compatibility**

[Duo](/integrations/duo-security-integration)

[Google Workspace](/integrations/google-workspace-integration)

[Microsoft Entra ID](/integrations/azure-active-directory-integration)

[Okta](/integrations/okta-data-integration)

[Salesforce](/integrations/salesforce-integration)

[Snowflake](/integrations/snowflake)

[OpenAI](/integrations/openai)

<br>


# No MFA Configured

Detects users who do not have Multi-Factor Authentication (MFA) enabled for at least one of their identity sources.

These users are more vulnerable to data breaches and system compromises, making it critical to address these gaps. All users should be using MFA to gain access to the system.

Users will not fail this check if they fall within the grace period of 14 days (configurable), or if they have a federated account.

If needed, adjust the new account grace period in Custom Detection Settings to align with your organization's procedures. This could increase the accuracy and actionability of check results.

#### **Recommended Actions**

Enforce and enable MFA on all identity sources, even if they are not the primary IdP or MFA provider. This ensures that misconfigurations don't allow users to bypass MFA by signing in through alternate identity sources.

Identify accounts with valid reasons to be exempt from MFA or those with mitigating controls in place. Document these accounts in an external system for easier tracking and detection.

For exempt accounts, apply temporary exclusions to resolve failures, then periodically review those accounts to assess and update their status, as needed.

#### **Default Check Settings:**

Grace period for new accounts (days): 14

#### **Compatibility**

[Microsoft Entra ID](/integrations/azure-active-directory-integration)

[Okta](/integrations/okta-data-integration)

[Google Workspace](/integrations/google-workspace-integration)

[Duo](/integrations/duo-security-integration)

[GitHub](/integrations/github)

<figure><img src="/files/judP73OQ1or5Re85k6K0" alt=""><figcaption></figcaption></figure>




---

[Next Page](/llms-full.txt/1)

