Prerequisites for Detox

As part of the Detox offer, IDECSI provides you with an example of a communication campaign and sample e-mails to send.

The emails sent by the platform will be campaign emails and reminders to users who have not consulted their security profile.

Other e-mails should be sent using your usual tools.

 

To enable data collection and the use of the MyDataSecurity/MyDataManagement platform by your users, we invite you to fulfill the seven prerequisites below.

These prerequisite apply to both MyDataSecurity and MyDataManagement configurations.

The solution uses Microsoft APIs to collect permissions and access to Exchange, OneDrive, SharePoint, and Teams.

Remediation is also carried out via the APIs.

1 Granting the permissions to the IDECSI-Platform app

Please send us the following:

Then, using Microsoft’s admin consent flow, grant the app below while logged in as administrator of the tenant: https://login.microsoftonline.com/common/adminconsent?client_id=52e3a6c9-b6cc-4854-92db-06afc774da14

IDECSI – Platform

Admin consent required

Grant access
Here is the IDECSI – Platform application’s set of rights.
 
APIPermissionIDECSI UsageMore?
Office 365 Management APIActivityFeed.ReadCollect audit logs to display access events in MyDataSecurity.
Detect changes in rights and permissions to be able to recollect the resources, and also alert if needed.
Office 365 Management Activity API reference | Microsoft Learn
 Graph APIAuditLog.Read.All Collect unified audit logs and Entra audit logs to enrich all Idecsi’ Resource’s information.  
Graph APIChannelSettings.Read.AllMap Teams channels (private and shared) to be displayed in MyDataSecurity.
List channels – Microsoft Graph v1.0 | Microsoft Learn
Graph APIChannel.Delete.AllPerform remediation on a private or shared Teams channel from MyDataSecurity.
Get conversationMember – Microsoft Graph v1.0 | Microsoft Learn
Remove member from channel – Microsoft Graph v1.0 | Microsoft Learn
Graph APIChannelMember.ReadWrite.AllIdentify channel members and remediate a member directly from MyDataSecurity.
Delete channel – Microsoft Graph v1.0 | Microsoft Learn
Graph APIDelegatedPermissionGrant.ReadWrite.AllIdentify and remediate delegated permissions through the Application tab in MyDataSecurity.Delete oAuth2PermissionGrant (a delegated permission grant) – Microsoft Graph v1.0 | Microsoft Learn
Graph APIDirectory.Read.AllIdentify users, groups, and applications to display this information in MyDataSecurity.Required for AD information (users, groups, licenses, applications, administrators)
Graph APIUser.Read

Authenticate users for MyDataSecurity (SSO).

Delegated Permission for SSO

Graph APIUsers.Read.All

Associate the user’s profile picture with their IDECSI interfaces.

Required to get the user’s profile picture

Graph APIFiles.ReadWrite.AllPerform version and file remediations through MyDataManagement and remediate sharing permissions in MyDataSecurity.Remove access to an item – Microsoft Graph v1.0 | Microsoft Learn
Delete permission – Microsoft Graph v1.0 | Microsoft Learn
Graph APIGroup.ReadWrite.AllRemediate groups (owners, members, guests), modify privacy settings (public/private), or delete them.Remove member – Microsoft Graph v1.0 | Microsoft Learn
Remove group owner – Microsoft Graph v1.0 | Microsoft Learn
Add owners – Microsoft Graph v1.0 | Microsoft Learn
Update group – Microsoft Graph v1.0 | Microsoft Learn
Delete group – Microsoft Graph API – Microsoft Graph v1.0 | Microsoft Learn
Graph APIInformationProtectionPolicy.Read.AllRetrieve sensitivity label configurations (Purview).List sensitivityLabels – Microsoft Graph beta | Microsoft Learn
Graph APIMailboxSettings.ReadAdapt language and settings for the IDECSI interface and identify the mailbox associated with a user.Get user mailbox settings – Microsoft Graph v1.0 | Microsoft Learn
Graph APIPolicy.Read.AllRead tenant configurations and alert in case of changes.Required to read configurations
Graph APIReports.Read.AllCollect various reports to enrich information in MyDataSecurity and MyDataManagement.reportRoot: getOneDriveUsageStorage – Microsoft Graph v1.0 | Microsoft Learn
reportRoot: getOneDriveUsageFileCounts – Microsoft Graph v1.0 | Microsoft Learn
reportRoot: getSharePointSiteUsageStorage – Microsoft Graph v1.0 | Microsoft Learn
reportRoot: getSharePointSiteUsageFileCounts – Microsoft Graph v1.0 | Microsoft Learn
SharePointSites.FullControl.AllCollect (classic site administrators) and correct permissions (Everyone site admin, EEEU site admin, Everyone, EEEU) on SharePoint sites, and retrieve the sharing link creator and creation date.SharePoint admin APIs authentication and authorization | Microsoft Learn
Graph APISites.Read.AllMap sites, libraries, permissions, and metadata used to populate user profiles in MDS/MDM.List sites – Microsoft Graph v1.0 | Microsoft Learn
Graph APITeamSettings.Read.AllMap Teams teams and their settings to populate user profiles in MDS.Get team – Microsoft Graph v1.0 | Microsoft Learn
 Office 365 Exchange Online APIExchange.ManageAsApp

Permission that grants no rights to the application itself. The associated service principal will receive collection and remediation rights (via PowerShell) depending on the assignment.

Authenticate an EWS application by using OAuth

Application Access Policy Support Added to Exchange Web Services in Exchange Online

Role-Based Access Control for Applications in Exchange Online

You can find details here on Why do we need the permissions Sites.ReadWrite.All & Sites.FullControl (CSOM/REST) – IDECSI Help Center (you need to create an account)

More information on permissions: Overview of Microsoft Graph permissions – Microsoft Graph | Microsoft Learn

The Manage Exchange as Application right allows connecting as an application but does not grant any specific permissions. That is why we need to add a Service Principal that will enable its use. To limit rights, we will create an I2A Role Group, where we will place the Service Principal.

Before you start

  • Install or update PowerShell to version 7 (winget install --id Microsoft.Powershell --source winget)
  • Launch PowerShell 7 as the local administrator of the machine (or with an account that has the required rights)
  • Install the Microsoft.Graph module (Install-Module Microsoft.Graph)
  • Install the ExchangeOnlineManagement module version 3.6 (Install-Module -Name ExchangeOnlineManagement -RequiredVersion 3.6.0).

# Import ExchangeOnline module and Graph module
Import-Module ExchangeOnlineManagement;Get-Module ExchangeOnlineManagement
Import-Module Microsoft.Graph;Get-Module Microsoft.Graph

# Load and connect to Microsoft Graph with administrator rights.
Connect-MgGraph -Scopes AppRoleAssignment.ReadWrite.All,Application.Read.All

# Retrieve the Service Principal corresponding to the "IDECSI - Platform" application.
$AzureADApp = Get-MgServicePrincipal -Filter "DisplayName eq 'IDECSI - Platform'"

# Exchange Online Connexion
# This prompts for user credentials. Please use an Exchange Admin account to connect.
Connect-ExchangeOnline

# Create an Exchange Service Principal linked to the Azure AD App
New-ServicePrincipal -AppId $AzureADApp.AppId -ObjectId $AzureADApp.Id -DisplayName "SP for Azure AD App IDECSI - Platform"

# Retrieve the new Service Principal object
$SP = Get-ServicePrincipal -Identity "SP for Azure AD App IDECSI - Platform"
Write-Host ($SP | Format-Table | Out-String)

# Define variables
# These variables store:
# * The name of the role group
$roleGroupName = "I2A"
# * The names of custom management roles to be created.
$roleName = "Mail Recipients - ViewOnly - I2A"
$roleName1 = "Remediation - I2A"
$roleName2 = "Remediation 2 - I2A"

# Create Role: "Mail Recipients - ViewOnly - I2A"
# Creates a new management role based on the "Mail Recipients" parent role.
New-ManagementRole $roleName -Parent "Mail Recipients"
Get-ManagementRoleEntry ($roleName + "\*")
$data2 = Get-ManagementRoleEntry ($roleName + "\*")
# This loop removes all cmdlets except those starting with "Get", effectively making the role read-only.
foreach($data in $data2)
{
$name = ""
$name = $data.Name
if($name -NotLike "Get*")
{
Remove-ManagementRoleEntry $roleName\$name -confirm:$false
Write-Host ("Done for $name")
}
}

# Create Role: "Remediation - I2A"
# Creates another role based on "Mail Recipients".
New-ManagementRole $roleName1 -Parent "Mail Recipients"
Get-ManagementRoleEntry ($roleName1 + "\*")
$entries = Get-ManagementRoleEntry ($roleName1 + "\*")
# This time, it keeps only specific "Remove" cmdlets (like Remove-MailboxPermission, etc.), making the role strictly focused on remediation tasks, like removing permissions or inbox rules.
foreach($entry in $entries)
{
$name = ""
$name = $entry.Name
if ($name -NotLike "Remove-MailboxPermission" -And $name -NotLike "Remove-InboxRule" -And $name -NotLike "Remove-MailboxFolderPermission" -And $name -NotLike "Remove-RecipientPermission" -And $name -NotLike "Remove-ADPermission")
{
Remove-ManagementRoleEntry $roleName1\$name -Confirm:$false
Write-Host ("Done for $name")
} 
}

# Create Role: "Remediation 2 - I2A"
# Creates a third custom role based on "Mail Recipient Creation".
New-ManagementRole $roleName2 -Parent "Mail Recipient Creation"
Get-ManagementRoleEntry ($roleName2 + "\*")
$entries = Get-ManagementRoleEntry ($roleName2 + "\*")
# This removes all cmdlets except Set-MailboxFolderPermission, allowing the role to only modify folder permissions, again focusing on a specific remediation use case.
foreach($entry in $entries)
{
$name = ""
$name = $entry.Name
if ($name -NotLike "Set-MailboxFolderPermission")
{
Remove-ManagementRoleEntry $roleName2\$name -Confirm:$false
Write-Host ("Done for $name")
} 
}

Get-ManagementRoleEntry ($roleName + "\*")
Get-ManagementRoleEntry ($roleName1 + "\*")
Get-ManagementRoleEntry ($roleName2 + "\*")

# Assign Roles to Role Group and Add Service Principal
# Creates a new role group named "I2A", includes:
# * Standard built-in roles (like audit and read-only)
# * The 3 custom roles we created
# * Assigns everything to the Service Principal
New-RoleGroup -Name $roleGroupName -Roles "Audit Logs","View-Only Configuration","View-Only Recipients",$roleName,$roleName1,$roleName2 -Members $SP.Identity

# Disconnect
# Ends the Exchange Online and Graph session properly.
Disconnect-ExchangeOnline
Disconnect-Graph

Once the application is granted and the script ran successfully, please let your Customer Success Manager know it.

To enable users to connect to MyDataSecurity or MyDataManagement, IDECSI supports two federation methods: SAML and OAuth 2.0 / OpenID Connect. Both let your users authenticate with their existing Microsoft 365 credentials. The difference is in who configures what, and how much control you retain over access.

Which option to choose?

Choose SAML if you need explicit control over which users or groups can access the platform, directly from your identity provider. Otherwise, OAuth 2.0 is the faster path, with no configuration required on your end.

SAML is supported across major identity providers (Entra ID, Okta, PingFederate…). Setup requires your IT admin to create an application in your IdP and exchange a metadata file with IDECSI — a one-time process that gives you full control over authentication.

Before you start

This setup requires a metadata file from your Client Success Manager. Request it before you begin, so it's ready when you reach step 3.

The step-by-step below covers Microsoft Entra ID (Azure AD). If your organization uses Okta, see our dedicated Okta SSO setup guide instead. For other providers, contact your Client Success Manager.

Step 1: Create the application

  1. Sign in to the Microsoft Entra admin center with an account that has at least the Cloud Application Administrator role.
  2. Go to Identity > Applications > Enterprise applications, then select + New application.
  3. Select Create your own application.
  4. Enter a name (e.g. I2A Platform), select Integrate any other application you don’t find in the gallery (Non-gallery), and click Create.

Step 2: Assign users and groups

  1. From the application’s Overview, go to Manage > Users and groups.
  2. Add the users and/or groups who should access the platform. We recommend using a single group covering all your tenant’s users — IDECSI will only activate accounts that exist.

Step 3: Configure SAML single sign-on

  1. Go to Manage > Single sign-on, then select SAML.
  2. In the SAML Certificates section, select Upload metadata file and upload the XML file provided by your Client Success Manager.
  3. Once imported, check the Basic SAML Configuration block. It should show:
    • Identifier (Entity ID): https://dc01-auth.i-2a.com
    • Reply URL (Assertion Consumer Service URL): https://dc01-auth.i-2a.com/tenants/YourTenant/federations/saml/assertion-consumer-service
  4. Use the Test button to confirm the connection works before rolling out to users.

Step 4: Send us your metadata

  1. In the SAML Certificates section, download the Federation Metadata XML file.
  2. Send this file to your Customer Sucess maanger

OAuth 2.0, paired with OpenID Connect (OIDC) for identity verification, lets your users authenticate through IDECSI’s already-registered Microsoft application. Because the application is pre-configured on our side, there is no setup required on your tenant, users are redirected to Microsoft’s standard login screen, sign in with their existing Microsoft 365 credentials, and are authenticated automatically.

What it requires from you: nothing. No application creation, no metadata exchange. Access is managed through the user scope you’ve already defined with your Client Success Manager (attribute or group-based).

To collect your users’ information and attach their resources, we have to set up a request based on your Entra ID content. This request allows us to automatically import the necessary data.

Entra ID attributes

Attributes configured in your directory.
Example 1: Using mix of liences Microsoft 365 E5 + Microsoft 365 E3.
Example 2: Using Custom attributes department or extensionAttribute1.

Entra ID groups

One or more security groups containing the target users.
Example 1: a single group covering everyone, such as AllUsers_CompanyName.

Example 2 : several groups combined, such as Users_France + Users_Spain

Action needed

Send your Client Success Manager the attribute or group you'd like to use. They can help you identify the right one.

Deactivating anonymous reporting

Mandatory

Deactivate anonymous reporting on your tenant. Follow Microsoft's tutorial.

Why it matters

  • MyDataManagement needs real identities to show each person their own data
  • MyDataSecurity’s BI dashboard needs it to display Microsoft 365 Groups data

To encourage users to adopt the solution, we propose using an application that will enable our platform to send emails from your Microsoft tenant. If not, IDECSI will use Graph API to send emails from a generic address ().

If you want to use a specific email address of your domain, we can use the Microsoft Graph API to send IDECSI emails through an application granted on your tenant. You need to use an account from your tenant with at least a licence including Microsoft Exchange Online P1 or P2.

⚠ Mailing lists are not supported.

Depending on the number of recipients you plan to target through your campaigns, you will need to use Microsoft’s  High volume email (HVE) service.

IDECSI proposes to use the generic application “I2A Mail Sender” to send notifications.

The application used to send notifications cannot be the same as the one used for the remediation, as the permission “Mail.Send” must be scoped on the account.

Step 1: Grant permission to this application

The following step is to grant the application Global Administrator rights. Here is the link to grant the generic IDECSI-managed app

https://login.microsoftonline.com/common/adminConsent?client_id=ba28a8f5-601a-4523-a7e9-570dc40d49d7

The only permission to be granted is:

PermissionDisplay StringDescriptionAdmin Consent required
Mail.SendSend mail as a userAllows the app to send mail as users in the organizationYes

More information on the permission: Microsoft Graph permissions reference – Microsoft Graph | Microsoft Docs

Step 2: Enforce a restriction policy to limit the scope of the permission

To guarantee the best possible security, and to limit the permissions of the application granted in step 2, it is necessary to limit the right to send mail to a single service account used for this purpose.

For this, it is necessary to create an ApplicationAccessPolicy.

#0. Select the application you want to configure:

$myAppId = {my app id}

#1. Connect to Exchange Online with the ExchangeOnlineManagement PowerShell module

Connect-ExchangeOnline

#2. Create a mail-enabled security group that contains all the accounts you want to send mails from

$myRestrictedGroup = New-DistributionGroup -Name "Mail service accounts" -Type "Security" -Members @("CHOSEN EMAIL ADDRESS")

#3. Optionally hide the group from the address list

Set-DistributionGroup -Identity $myRestrictedGroup.Identity -HiddenFromAddressListsEnabled $true

#4. Create the application access policy to only allow sending the app mails for the specified distribution group

$params = @{
     AccessRight = "RestrictAccess"
     AppId = $myAppId
     PolicyScopeGroupId = $myRestrictedGroup.PrimarySmtpAddress
     Description = "Restrict I2A Sender Mail app permissions to only allow access to service account"
}

New-ApplicationAccessPolicy @params

From this point, the application “I2A Mail Sender” will be authorized only for the sender e-mail address wanted, “

More information:

Step 3: Communicate to your Client Success  Manager the email address authorized.

Your Client Success Manager will then configure the email address as the account used to send notifications to end-users and security teams.

    • The email address that will be used to send emails (and the aliases)

What is HVE (High Volume Email)?

HVE is a Microsoft solution designed to support high-volume email sending from a Microsoft 365 tenant, while staying within the platform’s performance and security thresholds. It is particularly recommended for organizations with a large number of users or with regular bulk-sending needs (such as notifications, newsletters, etc.).
 

Step 1: Create your HVE account

To send emails via HVE, you’ll need to create a dedicated email-sending account.
 
  1. Navigate to https://admin.exchange.microsoft.com/.

  2. Under the Mail flow menu, select High Volume Email(Preview).
  3. Select Add an HVE account.

  4. Provide a valid display name. Primary address should be in the following format: , where contoso.com should be within a list of accepted domains, alias (optional), and password.

  5. Select Next.

  6. Validate provided information.

  7. Select Create.

  8. The new HVE account is listed in the HVE accounts list.

 

Step 2: Grant Consent

To follow Microsoft’s best practices, we recommend using an Azure AD registered application with delegated OAuth permissions to send emails via this account.
Consent must be granted from the HVE account.
 
To proceed with the consent:
  1. Please, open a private navigator page
  2. Go to: IDECSI Platform HVE
  3. Sign in with your HVE account 
  4. You will see a consent request screen for the application
  1. Click “Accept” to approve 
  2. Once completed, please share the account’s email address and password with your IDECSI Customer Success Manager contact.

Step 3: App Integration in “Identities” (handled by IDECSI)

Your Customer Success contact will notify you as soon as the connection has been successfully validated.
 

Step 4. Sending Test

For the Sending Test, your Customer Success Manager will configure a test campaign and keep you informed.
 
 

By default, your platform URL is: https://dc01.i-2a.com/app/my-data-security/tenants/xxxxxxxxxx/dashboard

To improve user adoption, we recommend setting up a personalized custom URL. This guide covers two approaches depending on who manages your SSL certificate.

Choose this path if you’d prefer a setup without managing certificate renewal.  We’ll use Let’s Encrypt, a free, industry-standard certificate authority that automatically handles certificate provisioning and renewal.

Step 1: Choose Your Custom Domain

  • Decide on your desired custom URL (e.g., https://detox.yourcompany.com)
  • Ensure the domain is available and you have access to your DNS provider

Step 2: Create DNS Entry with Provided Records

  • Create a new DNS entry for your chosen domain using:
    • CNAME Record: your-domain.comdc01.i-2a.com
    • A Record: your-domain.com52.143.161.96
  • Choose CNAME or A record based on your DNS provider’s capabilities

Step 3: Submit to IDECSI

Contact your Customer Success Manager with the following information

  • Your chosen custom domain name
  • A request to use Let’s Encrypt for SSL certificate management

Step 4: IDECSI Configures Domain & Certificate

  • Our team will validate domain ownership
  • We’ll automatically provision an SSL certificate via Let’s Encrypt
  • Your custom URL will be live once DNS propagation completes (typically 24-48 hours)

Choose this path if you have your own SSL certificate or prefer to manage certificate renewal yourself.

Step 1: Choose Your Custom Domain

  • Decide on your desired custom URL (e.g., https://detox.yourcompany.com)
  • Ensure the domain is available and you have access to your DNS provider

Step 2: Prepare Your SSL Certificate

  • Obtain an SSL certificate from your certificate authority
  • Export the certificate and private key in .pem format
  • Secure the private key password

Step 3: Create DNS Entry with Provided Records

  • Create a new DNS entry for your chosen domain using:
    • CNAME Record: your-domain.comdc01.i-2a.com
    • A Record: your-domain.com52.143.161.96
  • Choose CNAME or A record based on your DNS provider’s capabilities

Step 4: Submit to IDECSI

Contact our support team and provide:

  • Your chosen custom domain name
  • SSL certificate file (.pem format)
  • Private key file (.pem format)
  • Private key password

Step 5: IDECSI Configures Redirection

  • Our team will verify your certificate and configure the redirection on our platform
  • Your custom URL will be live once DNS propagation completes (typically 24-48 hours)

To encourage users to adopt the solution, we offer to customize the Emails, Interfaces, intended for them.

Email

Here are the elements that can be customized on the email templates:

  1. Your logo.
  2. The background color of the header.
  3. Text and signature.
  4. Footer: Please provide us with the name and email address of your internal support team.

Loading Screen

Here are the elements that can be customized on the loading screen of MyDataSecurity:

  1. Company Logo: JPG or PNG.
  2. Background picture: JPG or PNG. The resolution must be 1920 x 1080. The size should be less than 250Ko for quick loading times.

On the Home Page

Here are the elements that can be customized on the main interface of MyDataSecurity:

  1. Company logo: JPG or PNG. It can be different from the loading screen.
  2. Display/Hide the “Applications” element of the tabs.
  3. The background color of the header: Please provide us the HEX code or RGB code for the desired color.
  4. Font color of the header.