- Service Principal Application (Recommended)
- Service Principal with User Credentials (Deprecated)
- Service Principal Application (Recommended)
- Service Principal with User Credentials (Deprecated)
- Interactive browser authentication
Required Permissions
To run the full Prowler provider, including PowerShell checks, two types of permission scopes must be set in Microsoft Entra ID.Service Principal Authentication Permissions (Recommended)
When using service principal authentication, add these Application Permissions: Microsoft Graph API Permissions:AuditLog.Read.All
: Required for Entra service.Directory.Read.All
: Required for all services.Policy.Read.All
: Required for all services.SharePointTenantSettings.Read.All
: Required for SharePoint service.
Exchange.ManageAsApp
from external APIOffice 365 Exchange Online
: Required for Exchange PowerShell module app authentication. TheGlobal Reader
role must also be assigned to the app.application_access
from external APISkype and Teams Tenant Admin API
: Required for Teams PowerShell module app authentication.
Directory.Read.All
can be replaced with Domain.Read.All
for more restrictive permissions, but Entra checks related to DirectoryRoles and GetUsers will not run. If using this option, you must also add the Organization.Read.All
permission to the service principal application for authentication.This is the recommended authentication method because it allows running the full M365 provider including PowerShell checks, providing complete coverage of all available security checks.
Browser Authentication Permissions
When using browser authentication, permissions are delegated to the user, so the user must have the appropriate permissions rather than the application.With browser authentication, you will only be able to run checks that work through MS Graph API. PowerShell module checks will not be executed.
Step-by-Step Permission Assignment
Create Service Principal Application
-
Access Microsoft Entra ID
-
Navigate to “Applications” > “App registrations”
-
Click ”+ New registration”, complete the form, and click “Register”
-
Go to “Certificates & secrets” > “Client secrets” > ”+ New client secret”
-
Fill in the required fields and click “Add”, then copy the generated value (this will be
AZURE_CLIENT_SECRET
)
Grant Microsoft Graph API Permissions
-
Go to App Registration > Select your Prowler App > click on “API permissions”
-
Click ”+ Add a permission” > “Microsoft Graph” > “Application permissions”
-
Search and select the required permissions:
AuditLog.Read.All
: Required for Entra serviceDirectory.Read.All
: Required for all servicesPolicy.Read.All
: Required for all servicesSharePointTenantSettings.Read.All
: Required for SharePoint service
-
Click “Add permissions”, then click “Grant admin consent for
<your-tenant-name>
”
Grant PowerShell Module Permissions (For Service Principal Authentication)
-
Add Exchange API:
- Search and select “Office 365 Exchange Online” API in APIs my organization uses
- Select “Exchange.ManageAsApp” permission and click “Add permissions”
- Assign
Global Reader
role to the app: Go toRoles and administrators
> clickhere
for directory level assignment
- Search for
Global Reader
and assign it to your application
-
Add Teams API:
- Search and select “Skype and Teams Tenant Admin API” in APIs my organization uses
- Select “application_access” permission and click “Add permissions”
-
Click “Grant admin consent for
<your-tenant-name>
” to grant admin consent
Service Principal Authentication (Recommended)
Available for both Prowler App and Prowler CLI Authentication flag for CLI:--sp-env-auth
Authenticate using the Service Principal Application by configuring the following environment variables:
--sp-env-auth
will fail.
Refer to the Step-by-Step Permission Assignment section below for setup instructions.
If the external API permissions described in the mentioned section above are not added only checks that work through MS Graph will be executed. This means that the full provider will not be executed.
In order to scan all the checks from M365 required permissions to the service principal application must be added. Refer to the PowerShell Module Permissions section for more information.
Interactive Browser Authentication
Available only for Prowler CLI Authentication flag:--browser-auth
Authenticate against Azure using the default browser to start the scan. The --tenant-id
flag is also required.
These credentials only enable checks that rely on Microsoft Graph. The entire provider cannot be run with this method. To perform a full M365 security scan, use the recommended authentication method.
Since this is a delegated permission authentication method, necessary permissions should be assigned to the user rather than the application.
Supported PowerShell Versions
PowerShell is required to run certain M365 checks. Supported versions:- PowerShell 7.4 or higher (7.5 is recommended)
Why Is PowerShell 7.4+ Required?
- PowerShell 5.1 (default on some Windows systems) does not support required cmdlets.
- Older cross-platform PowerShell versions are unsupported, leading to potential errors.
Installing PowerShell is only necessary if you install Prowler via pip or other sources. SDK and API containers include PowerShell by default.
Installing PowerShell
Installing PowerShell is different depending on your OS:- Windows
- MacOS
- Linux (Ubuntu)
- Linux (Alpine)
- Linux (Debian)
- Linux (RHEL)
- Docker
Required PowerShell Modules
Prowler relies on several PowerShell cmdlets to retrieve necessary data. These cmdlets come from different modules that must be installed.Automatic Installation
The required modules are automatically installed when running Prowler with the--init-modules
flag.
Example command:
Prowler installs the modules using
-Scope CurrentUser
.
If you encounter any issues with services not working after the automatic installation, try installing the modules manually using -Scope AllUsers
(administrator permissions are required for this).
The command needed to install a module manually is:Modules Version
- ExchangeOnlineManagement (Minimum version: 3.6.0) Required for checks across Exchange, Defender, and Purview.
- MicrosoftTeams (Minimum version: 6.6.0) Required for all Teams checks.
- MSAL.PS: Required for Exchange module via application authentication.
- MSAL.PS: Required for Exchange module via application authentication.