mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-04-03 05:55:54 +00:00
Compare commits
23 Commits
PRWLR-6464
...
PRWLR-6455
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cf80c41ce8 | ||
|
|
d6dc91062c | ||
|
|
2d10e4023a | ||
|
|
5f88e5a628 | ||
|
|
e420ff31d1 | ||
|
|
be204fec1c | ||
|
|
89d4c521ba | ||
|
|
bfabc65324 | ||
|
|
6e22d0839a | ||
|
|
0db303b926 | ||
|
|
97616bc541 | ||
|
|
7a4f0399c5 | ||
|
|
bf47642d46 | ||
|
|
49cd10136d | ||
|
|
55a8310334 | ||
|
|
b69f79f0fa | ||
|
|
b39ec544cf | ||
|
|
dab3ae4872 | ||
|
|
391b10d79f | ||
|
|
4ab392a4c1 | ||
|
|
f0d4c2cfda | ||
|
|
1ab91b0cae | ||
|
|
3bf62f7b70 |
@@ -6,11 +6,7 @@ By default, Prowler uses `AzureCloud` cloud which is the comercial one. (you can
|
||||
At the time of writing this documentation the available Azure Clouds from different regions are the following:
|
||||
- AzureCloud
|
||||
- AzureChinaCloud
|
||||
- AzureUSGovernmentL4
|
||||
- AzureUSGovernmentL5
|
||||
|
||||
???+ note
|
||||
More information about Azure US Goverment region [here](https://devblogs.microsoft.com/microsoft365dev/new-microsoft-graph-endpoints-in-us-government-cloud/)
|
||||
- AzureUSGovernment
|
||||
|
||||
If you want to change the default one you must include the flag `--azure-region`, i.e.:
|
||||
|
||||
|
||||
@@ -17,11 +17,7 @@ from azure.identity import (
|
||||
)
|
||||
from azure.mgmt.subscription import SubscriptionClient
|
||||
from colorama import Fore, Style
|
||||
from kiota_authentication_azure.azure_identity_authentication_provider import (
|
||||
AzureIdentityAuthenticationProvider,
|
||||
)
|
||||
from msgraph import GraphRequestAdapter, GraphServiceClient
|
||||
from msgraph_core import GraphClientFactory
|
||||
from msgraph import GraphServiceClient
|
||||
|
||||
from prowler.config.config import (
|
||||
default_config_file_path,
|
||||
@@ -206,7 +202,7 @@ class AzureProvider(Provider):
|
||||
... sp_env_auth=True,
|
||||
... browser_auth=False,
|
||||
... managed_identity_auth=False,
|
||||
... region="AzureUSGovernmentL4",
|
||||
... region="AzureUSGovernment",
|
||||
... )
|
||||
- Subscriptions: rowler is multisubscription, which means that is going to scan all the subscriptions is able to list. If you only assign permissions to one subscription, it is going to scan a single one.
|
||||
Prowler also allows you to specify the subscriptions you want to scan by passing a list of subscription IDs.
|
||||
@@ -410,8 +406,6 @@ class AzureProvider(Provider):
|
||||
authority=config["authority"],
|
||||
base_url=config["base_url"],
|
||||
credential_scopes=config["credential_scopes"],
|
||||
graph_credential_scopes=config["graph_credential_scopes"],
|
||||
graph_base_url=config["graph_base_url"],
|
||||
)
|
||||
except ArgumentTypeError as validation_error:
|
||||
logger.error(
|
||||
@@ -897,31 +891,7 @@ class AzureProvider(Provider):
|
||||
logger.info(
|
||||
"Trying to retrieve tenant domain from AAD to populate identity structure ..."
|
||||
)
|
||||
if self.region_config.name == "AzureCloud":
|
||||
client = GraphServiceClient(
|
||||
credentials=credentials,
|
||||
scopes=self.region_config.graph_credential_scopes,
|
||||
)
|
||||
else:
|
||||
auth_provider = AzureIdentityAuthenticationProvider(
|
||||
credentials,
|
||||
scopes=self.region_config.graph_credential_scopes,
|
||||
allowed_hosts=[
|
||||
self.region_config.graph_base_url.replace(
|
||||
"http://", ""
|
||||
).replace("https://", "")
|
||||
],
|
||||
)
|
||||
http_client = GraphClientFactory.create_with_default_middleware(
|
||||
host=self.region_config.graph_base_url
|
||||
)
|
||||
adapter = GraphRequestAdapter(
|
||||
auth_provider=auth_provider, client=http_client
|
||||
)
|
||||
adapter.base_url = self.region_config.graph_base_url
|
||||
client = GraphServiceClient(
|
||||
request_adapter=adapter,
|
||||
)
|
||||
client = GraphServiceClient(credentials=credentials)
|
||||
|
||||
domain_result = await client.domains.get()
|
||||
if getattr(domain_result, "value"):
|
||||
@@ -960,35 +930,9 @@ class AzureProvider(Provider):
|
||||
identity.identity_type = "User"
|
||||
try:
|
||||
logger.info(
|
||||
"Trying to retrieve user information from Microsoft Graph to populate identity structure ..."
|
||||
"Trying to retrieve user information from AAD to populate identity structure ..."
|
||||
)
|
||||
if self.region_config.name == "AzureCloud":
|
||||
client = GraphServiceClient(
|
||||
credentials=credentials,
|
||||
scopes=self.region_config.graph_credential_scopes,
|
||||
)
|
||||
else:
|
||||
auth_provider = AzureIdentityAuthenticationProvider(
|
||||
credentials,
|
||||
scopes=self.region_config.graph_credential_scopes,
|
||||
allowed_hosts=[
|
||||
self.region_config.graph_base_url.replace(
|
||||
"http://", ""
|
||||
).replace("https://", "")
|
||||
],
|
||||
)
|
||||
http_client = (
|
||||
GraphClientFactory.create_with_default_middleware(
|
||||
host=self.region_config.graph_base_url
|
||||
)
|
||||
)
|
||||
adapter = GraphRequestAdapter(
|
||||
auth_provider=auth_provider, client=http_client
|
||||
)
|
||||
adapter.base_url = self.region_config.graph_base_url
|
||||
client = GraphServiceClient(
|
||||
request_adapter=adapter,
|
||||
)
|
||||
client = GraphServiceClient(credentials=credentials)
|
||||
|
||||
me = await client.me.get()
|
||||
if me:
|
||||
|
||||
@@ -59,8 +59,7 @@ def validate_azure_region(region):
|
||||
"""validate_azure_region validates if the region passed as argument is valid"""
|
||||
regions_allowed = [
|
||||
"AzureChinaCloud",
|
||||
"AzureUSGovernmentL4",
|
||||
"AzureUSGovernmentL5",
|
||||
"AzureUSGovernment",
|
||||
"AzureCloud",
|
||||
]
|
||||
if region not in regions_allowed:
|
||||
|
||||
@@ -1,45 +1,26 @@
|
||||
from azure.identity import AzureAuthorityHosts
|
||||
|
||||
AZURE_GENERIC_CLOUD = "https://management.azure.com"
|
||||
AZURE_GRAPH_GLOBAL = "https://graph.microsoft.com"
|
||||
|
||||
AZURE_US_GOV_CLOUD = "https://management.usgovcloudapi.net"
|
||||
AZURE_GRAPH_GOV_US_L4 = "https://graph.microsoft.us"
|
||||
AZURE_GRAPH_GOV_US_L5 = "https://dod-graph.microsoft.us"
|
||||
|
||||
AZURE_CHINA_CLOUD = "https://management.chinacloudapi.cn"
|
||||
AZURE_GRAPH_CHINA = "https://microsoftgraph.chinacloudapi.cn"
|
||||
AZURE_US_GOV_CLOUD = "https://management.usgovcloudapi.net"
|
||||
AZURE_GENERIC_CLOUD = "https://management.azure.com"
|
||||
|
||||
|
||||
def get_regions_config(region):
|
||||
allowed_regions = {
|
||||
"AzureCloud": {
|
||||
"authority": AzureAuthorityHosts.AZURE_PUBLIC_CLOUD,
|
||||
"authority": None,
|
||||
"base_url": AZURE_GENERIC_CLOUD,
|
||||
"credential_scopes": [AZURE_GENERIC_CLOUD + "/.default"],
|
||||
"graph_credential_scopes": [AZURE_GRAPH_GLOBAL + "/.default"],
|
||||
"graph_base_url": AZURE_GRAPH_GLOBAL,
|
||||
},
|
||||
"AzureChinaCloud": {
|
||||
"authority": AzureAuthorityHosts.AZURE_CHINA,
|
||||
"base_url": AZURE_CHINA_CLOUD,
|
||||
"credential_scopes": [AZURE_CHINA_CLOUD + "/.default"],
|
||||
"graph_credential_scopes": [AZURE_GRAPH_CHINA + "/.default"],
|
||||
"graph_base_url": AZURE_GRAPH_CHINA,
|
||||
},
|
||||
"AzureUSGovernmentL4": {
|
||||
"AzureUSGovernment": {
|
||||
"authority": AzureAuthorityHosts.AZURE_GOVERNMENT,
|
||||
"base_url": AZURE_US_GOV_CLOUD,
|
||||
"credential_scopes": [AZURE_US_GOV_CLOUD + "/.default"],
|
||||
"graph_credential_scopes": [AZURE_GRAPH_GOV_US_L4 + "/.default"],
|
||||
"graph_base_url": AZURE_GRAPH_GOV_US_L4,
|
||||
},
|
||||
"AzureUSGovernmentL5": {
|
||||
"authority": AzureAuthorityHosts.AZURE_GOVERNMENT,
|
||||
"base_url": AZURE_US_GOV_CLOUD,
|
||||
"credential_scopes": [AZURE_US_GOV_CLOUD + "/.default"],
|
||||
"graph_credential_scopes": [AZURE_GRAPH_GOV_US_L5 + "/.default"],
|
||||
"graph_base_url": AZURE_GRAPH_GOV_US_L5,
|
||||
},
|
||||
}
|
||||
return allowed_regions[region]
|
||||
|
||||
@@ -24,14 +24,7 @@ class AzureService:
|
||||
clients = {}
|
||||
try:
|
||||
if "GraphServiceClient" in str(service):
|
||||
clients.update(
|
||||
{
|
||||
identity.tenant_domain: service(
|
||||
credentials=session,
|
||||
scopes=region_config.graph_credential_scopes,
|
||||
)
|
||||
}
|
||||
)
|
||||
clients.update({identity.tenant_domain: service(credentials=session)})
|
||||
else:
|
||||
for display_name, id in identity.subscriptions.items():
|
||||
clients.update(
|
||||
|
||||
@@ -18,8 +18,6 @@ class AzureRegionConfig(BaseModel):
|
||||
authority: str = None
|
||||
base_url: str = ""
|
||||
credential_scopes: list = []
|
||||
graph_credential_scopes: list = []
|
||||
graph_base_url: str = ""
|
||||
|
||||
|
||||
class AzureSubscription(BaseModel):
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
"Provider": "microsoft365",
|
||||
"CheckID": "entra_admin_portals_role_limited_access",
|
||||
"CheckID": "entra_capolicy_admin_portals_role_limited_access",
|
||||
"CheckTitle": "Ensure that only administrative roles have access to Microsoft Admin Portals",
|
||||
"CheckAliases": [
|
||||
"entra_admin_portals_role_limited_access"
|
||||
],
|
||||
"CheckType": [],
|
||||
"ServiceName": "entra",
|
||||
"SubServiceName": "",
|
||||
@@ -7,7 +7,7 @@ from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
)
|
||||
|
||||
|
||||
class entra_admin_portals_role_limited_access(Check):
|
||||
class entra_capolicy_admin_portals_role_limited_access(Check):
|
||||
"""Check if Conditional Access policies deny access to the Microsoft 365 admin center for users with limited access roles.
|
||||
|
||||
This check ensures that Conditional Access policies are in place to deny access to the Microsoft 365 admin center for users with limited access roles.
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
"Provider": "microsoft365",
|
||||
"CheckID": "entra_admin_users_sign_in_frequency_enabled",
|
||||
"CheckID": "entra_capolicy_admin_users_sign_in_frequency_enabled",
|
||||
"CheckTitle": "Ensure Sign-in frequency periodic reauthentication is enabled and properly configured.",
|
||||
"CheckAliases": [
|
||||
"entra_admin_users_sign_in_frequency_enabled"
|
||||
],
|
||||
"CheckType": [],
|
||||
"ServiceName": "entra",
|
||||
"SubServiceName": "",
|
||||
@@ -8,7 +8,7 @@ from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
)
|
||||
|
||||
|
||||
class entra_admin_users_sign_in_frequency_enabled(Check):
|
||||
class entra_capolicy_admin_users_sign_in_frequency_enabled(Check):
|
||||
"""Check if Conditional Access policies enforce sign-in frequency for admin users."""
|
||||
|
||||
def execute(self) -> list[CheckReportMicrosoft365]:
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
"Provider": "microsoft365",
|
||||
"CheckID": "entra_admin_mfa_enabled_for_administrative_roles",
|
||||
"CheckID": "entra_capolicy_administrative_roles_have_mfa_enabled",
|
||||
"CheckTitle": "Ensure multifactor authentication is enabled for all users in administrative roles.",
|
||||
"CheckAliases": [
|
||||
"entra_admin_mfa_enabled_for_administrative_roles"
|
||||
],
|
||||
"CheckType": [],
|
||||
"ServiceName": "entra",
|
||||
"SubServiceName": "",
|
||||
@@ -9,7 +9,7 @@ from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
)
|
||||
|
||||
|
||||
class entra_admin_mfa_enabled_for_administrative_roles(Check):
|
||||
class entra_capolicy_administrative_roles_have_mfa_enabled(Check):
|
||||
"""
|
||||
Ensure multifactor authentication is enabled for all users in administrative roles.
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
"Provider": "microsoft365",
|
||||
"CheckID": "entra_policy_ensure_default_user_cannot_create_tenants",
|
||||
"CheckID": "entra_capolicy_ensure_default_user_cannot_create_tenants",
|
||||
"CheckTitle": "Ensure that 'Restrict non-admin users from creating tenants' is set to 'Yes'",
|
||||
"CheckAliases": [
|
||||
"entra_policy_ensure_default_user_cannot_create_tenants"
|
||||
],
|
||||
"CheckType": [],
|
||||
"ServiceName": "entra",
|
||||
"SubServiceName": "",
|
||||
@@ -4,7 +4,7 @@ from prowler.lib.check.models import Check, CheckReportMicrosoft365
|
||||
from prowler.providers.microsoft365.services.entra.entra_client import entra_client
|
||||
|
||||
|
||||
class entra_policy_ensure_default_user_cannot_create_tenants(Check):
|
||||
class entra_capolicy_ensure_default_user_cannot_create_tenants(Check):
|
||||
"""Check if default users are restricted from creating tenants.
|
||||
|
||||
This check verifies whether the authorization policy prevents non-admin users
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
"Provider": "microsoft365",
|
||||
"CheckID": "entra_identity_protection_sign_in_risk_enabled",
|
||||
"CheckID": "entra_capolicy_identity_protection_sign_in_risk_enabled",
|
||||
"CheckTitle": "Ensure that Identity Protection sign-in risk policies are enabled",
|
||||
"CheckAliases": [
|
||||
"entra_identity_protection_sign_in_risk_enabled"
|
||||
],
|
||||
"CheckType": [],
|
||||
"ServiceName": "entra",
|
||||
"SubServiceName": "",
|
||||
@@ -8,7 +8,7 @@ from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
)
|
||||
|
||||
|
||||
class entra_identity_protection_sign_in_risk_enabled(Check):
|
||||
class entra_capolicy_identity_protection_sign_in_risk_enabled(Check):
|
||||
"""Check if at least one Conditional Access policy is a Identity Protection sign-in risk policy.
|
||||
|
||||
This check ensures that at least one Conditional Access policy is a Identity Protection sign-in risk policy.
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
"Provider": "microsoft365",
|
||||
"CheckID": "entra_identity_protection_user_risk_enabled",
|
||||
"CheckID": "entra_capolicy_identity_protection_user_risk_enabled",
|
||||
"CheckTitle": "Ensure that Identity Protection user risk policies are enabled",
|
||||
"CheckAliases": [
|
||||
"entra_identity_protection_user_risk_enabled"
|
||||
],
|
||||
"CheckType": [],
|
||||
"ServiceName": "entra",
|
||||
"SubServiceName": "",
|
||||
@@ -8,7 +8,7 @@ from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
)
|
||||
|
||||
|
||||
class entra_identity_protection_user_risk_enabled(Check):
|
||||
class entra_capolicy_identity_protection_user_risk_enabled(Check):
|
||||
"""Check if at least one Conditional Access policy is a Identity Protection user risk policy.
|
||||
|
||||
This check ensures that at least one Conditional Access policy is a Identity Protection user risk policy.
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
"Provider": "microsoft365",
|
||||
"CheckID": "entra_managed_device_required_for_authentication",
|
||||
"CheckID": "entra_capolicy_managed_device_required_for_authentication",
|
||||
"CheckTitle": "Ensure that only managed devices are required for authentication",
|
||||
"CheckAliases": [
|
||||
"entra_managed_device_required_for_authentication"
|
||||
],
|
||||
"CheckType": [],
|
||||
"ServiceName": "entra",
|
||||
"SubServiceName": "",
|
||||
@@ -7,7 +7,7 @@ from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
)
|
||||
|
||||
|
||||
class entra_managed_device_required_for_authentication(Check):
|
||||
class entra_capolicy_managed_device_required_for_authentication(Check):
|
||||
"""Check if Conditional Access policies deny access to the Microsoft 365
|
||||
|
||||
This check ensures that Conditional Access policies are in place to enforce managed device requirement for authentication.
|
||||
@@ -1,13 +1,16 @@
|
||||
{
|
||||
"Provider": "microsoft365",
|
||||
"CheckID": "entra_admin_consent_workflow_enabled",
|
||||
"CheckID": "entra_enterpriseapps_admin_consent_workflow_enabled",
|
||||
"CheckTitle": "Ensure the admin consent workflow is enabled.",
|
||||
"CheckAliases": [
|
||||
"entra_admin_consent_workflow_enabled"
|
||||
],
|
||||
"CheckType": [],
|
||||
"ServiceName": "entra",
|
||||
"SubServiceName": "",
|
||||
"ResourceIdTemplate": "",
|
||||
"Severity": "high",
|
||||
"ResourceType": "Organization Settings",
|
||||
"ResourceType": "Enterprise Applications Settings",
|
||||
"Description": "Ensure that the admin consent workflow is enabled in Microsoft Entra to allow users to request admin approval for applications requiring consent.",
|
||||
"Risk": "If the admin consent workflow is not enabled, users may be blocked from accessing applications that require admin consent, leading to potential work disruptions or unauthorized workarounds.",
|
||||
"RelatedUrl": "https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/configure-admin-consent-workflow",
|
||||
@@ -4,7 +4,7 @@ from prowler.lib.check.models import Check, CheckReportMicrosoft365
|
||||
from prowler.providers.microsoft365.services.entra.entra_client import entra_client
|
||||
|
||||
|
||||
class entra_admin_consent_workflow_enabled(Check):
|
||||
class entra_enterpriseapps_admin_consent_workflow_enabled(Check):
|
||||
"""
|
||||
Ensure the admin consent workflow is enabled in Microsoft Entra.
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
"Provider": "microsoft365",
|
||||
"CheckID": "entra_dynamic_group_for_guests_created",
|
||||
"CheckID": "entra_groups_dynamicgroup_for_guests_created",
|
||||
"CheckTitle": "Ensure a dynamic group for guest users is created.",
|
||||
"CheckAliases": [
|
||||
"entra_dynamicgroup_for_guests_created"
|
||||
],
|
||||
"CheckType": [],
|
||||
"ServiceName": "entra",
|
||||
"SubServiceName": "",
|
||||
@@ -4,7 +4,7 @@ from prowler.lib.check.models import Check, CheckReportMicrosoft365
|
||||
from prowler.providers.microsoft365.services.entra.entra_client import entra_client
|
||||
|
||||
|
||||
class entra_dynamic_group_for_guests_created(Check):
|
||||
class entra_groups_dynamicgroup_for_guests_created(Check):
|
||||
"""
|
||||
Check if a dynamic group for guest users is created in Microsoft Entra.
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
"Provider": "microsoft365",
|
||||
"CheckID": "entra_password_hash_sync_enabled",
|
||||
"CheckID": "entra_organization_password_hash_sync_enabled",
|
||||
"CheckTitle": "Ensure that password hash sync is enabled for hybrid deployments.",
|
||||
"CheckAliases": [
|
||||
"entra_password_hash_sync_enabled"
|
||||
],
|
||||
"CheckType": [],
|
||||
"ServiceName": "entra",
|
||||
"SubServiceName": "",
|
||||
@@ -4,7 +4,7 @@ from prowler.lib.check.models import Check, CheckReportMicrosoft365
|
||||
from prowler.providers.microsoft365.services.entra.entra_client import entra_client
|
||||
|
||||
|
||||
class entra_password_hash_sync_enabled(Check):
|
||||
class entra_organization_password_hash_sync_enabled(Check):
|
||||
"""
|
||||
Check if password hash synchronization is enabled for hybrid Microsoft Entra deployments.
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
{
|
||||
"Provider": "microsoft365",
|
||||
"CheckID": "entra_thirdparty_integrated_apps_not_allowed",
|
||||
"CheckTitle": "Ensure third party integrated applications are not allowed",
|
||||
"CheckID": "entra_users_thirdparty_integrated_apps_not_allowed",
|
||||
"CheckTitle": "Ensure only administrators or appropriately delegated users can register third-party applications.",
|
||||
"CheckAliases": [
|
||||
"entra_thirdparty_integrated_apps_not_allowed"
|
||||
],
|
||||
"CheckType": [],
|
||||
"ServiceName": "entra",
|
||||
"SubServiceName": "",
|
||||
"ResourceIdTemplate": "",
|
||||
"Severity": "high",
|
||||
"ResourceType": "User settings",
|
||||
"ResourceType": "Users settings",
|
||||
"Description": "Require administrators or appropriately delegated users to register third-party applications.",
|
||||
"Risk": "It is recommended to only allow an administrator to register custom-developed applications. This ensures that the application undergoes a formal security review and approval process prior to exposing Azure Active Directory data. Certain users like developers or other high-request users may also be delegated permissions to prevent them from waiting on an administrative user. Your organization should review your policies and decide your needs.",
|
||||
"RelatedUrl": "https://learn.microsoft.com/en-us/entra/identity-platform/how-applications-are-added#who-has-permission-to-add-applications-to-my-microsoft-entra-instance",
|
||||
@@ -15,7 +18,7 @@
|
||||
"Code": {
|
||||
"CLI": "",
|
||||
"NativeIaC": "",
|
||||
"Other": "1. From Entra select the Portal Menu 2. Select Azure Active Directory 3. Select Users 4. Select User settings 5. Ensure that Users can register applications is set to No",
|
||||
"Other": "1. Navigate to Microsoft Entra admin center https://entra.microsoft.com/. 2. Click to expand Identity > Users select Users settings. 3. Set Users can register applications to No. 4. Click Save.",
|
||||
"Terraform": ""
|
||||
},
|
||||
"Recommendation": {
|
||||
@@ -4,7 +4,7 @@ from prowler.lib.check.models import Check, CheckReportMicrosoft365
|
||||
from prowler.providers.microsoft365.services.entra.entra_client import entra_client
|
||||
|
||||
|
||||
class entra_thirdparty_integrated_apps_not_allowed(Check):
|
||||
class entra_users_thirdparty_integrated_apps_not_allowed(Check):
|
||||
"""Check if third-party integrated apps are not allowed for non-admin users in Entra.
|
||||
|
||||
This check verifies that non-admin users are not allowed to create third-party apps.
|
||||
@@ -1,6 +1,9 @@
|
||||
{
|
||||
"Provider": "microsoft365",
|
||||
"CheckID": "sharepoint_external_sharing_managed",
|
||||
"CheckID": "sharepoint_settings_external_sharing_managed",
|
||||
"CheckAliases": [
|
||||
"sharepoint_external_sharing_managed"
|
||||
],
|
||||
"CheckTitle": "Ensure SharePoint external sharing is managed through domain whitelists/blacklists.",
|
||||
"CheckType": [],
|
||||
"ServiceName": "sharepoint",
|
||||
@@ -6,7 +6,7 @@ from prowler.providers.microsoft365.services.sharepoint.sharepoint_client import
|
||||
)
|
||||
|
||||
|
||||
class sharepoint_external_sharing_managed(Check):
|
||||
class sharepoint_settings_external_sharing_managed(Check):
|
||||
"""
|
||||
Check if Microsoft 365 SharePoint external sharing is managed through domain whitelists/blacklists.
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
"Provider": "microsoft365",
|
||||
"CheckID": "sharepoint_external_sharing_restricted",
|
||||
"CheckID": "sharepoint_settings_external_sharing_restricted",
|
||||
"CheckTitle": "Ensure external content sharing is restricted.",
|
||||
"CheckAliases": [
|
||||
"sharepoint_external_sharing_restricted"
|
||||
],
|
||||
"CheckType": [],
|
||||
"ServiceName": "sharepoint",
|
||||
"SubServiceName": "",
|
||||
@@ -6,7 +6,7 @@ from prowler.providers.microsoft365.services.sharepoint.sharepoint_client import
|
||||
)
|
||||
|
||||
|
||||
class sharepoint_external_sharing_restricted(Check):
|
||||
class sharepoint_settings_external_sharing_restricted(Check):
|
||||
"""
|
||||
Check if Microsoft 365 SharePoint restricts external sharing at organization level.
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
"Provider": "microsoft365",
|
||||
"CheckID": "sharepoint_guest_sharing_restricted",
|
||||
"CheckID": "sharepoint_settings_guest_sharing_restricted",
|
||||
"CheckTitle": "Ensure that SharePoint guest users cannot share items they don't own.",
|
||||
"CheckAliases": [
|
||||
"sharepoint_guest_sharing_restricted"
|
||||
],
|
||||
"CheckType": [],
|
||||
"ServiceName": "sharepoint",
|
||||
"SubServiceName": "",
|
||||
@@ -6,7 +6,7 @@ from prowler.providers.microsoft365.services.sharepoint.sharepoint_client import
|
||||
)
|
||||
|
||||
|
||||
class sharepoint_guest_sharing_restricted(Check):
|
||||
class sharepoint_settings_guest_sharing_restricted(Check):
|
||||
"""
|
||||
Check if Microsoft 365 SharePoint guest sharing is restricted.
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
"Provider": "microsoft365",
|
||||
"CheckID": "sharepoint_modern_authentication_required",
|
||||
"CheckID": "sharepoint_settings_modern_authentication_required",
|
||||
"CheckTitle": "Ensure modern authentication for SharePoint applications is required.",
|
||||
"CheckAliases": [
|
||||
"sharepoint_modern_authentication_required"
|
||||
],
|
||||
"CheckType": [],
|
||||
"ServiceName": "sharepoint",
|
||||
"SubServiceName": "",
|
||||
@@ -6,7 +6,7 @@ from prowler.providers.microsoft365.services.sharepoint.sharepoint_client import
|
||||
)
|
||||
|
||||
|
||||
class sharepoint_modern_authentication_required(Check):
|
||||
class sharepoint_settings_modern_authentication_required(Check):
|
||||
"""
|
||||
Check if Microsoft 365 SharePoint requires modern authentication.
|
||||
|
||||
@@ -1293,14 +1293,12 @@ class Test_Parser:
|
||||
def test_validate_azure_region_valid_regions(self):
|
||||
expected_regions = [
|
||||
"AzureChinaCloud",
|
||||
"AzureUSGovernmentL4",
|
||||
"AzureUSGovernmentL5",
|
||||
"AzureUSGovernment",
|
||||
"AzureCloud",
|
||||
]
|
||||
input_regions = [
|
||||
"AzureChinaCloud",
|
||||
"AzureUSGovernmentL4",
|
||||
"AzureUSGovernmentL5",
|
||||
"AzureUSGovernment",
|
||||
"AzureCloud",
|
||||
]
|
||||
for region in input_regions:
|
||||
@@ -1309,8 +1307,7 @@ class Test_Parser:
|
||||
def test_validate_azure_region_invalid_regions(self):
|
||||
expected_regions = [
|
||||
"AzureChinaCloud",
|
||||
"AzureUSGovernmentL4",
|
||||
"AzureUSGovernmentL5",
|
||||
"AzureUSGovernment",
|
||||
"AzureCloud",
|
||||
]
|
||||
invalid_region = "non-valid-region"
|
||||
|
||||
@@ -66,11 +66,9 @@ class TestAzureProvider:
|
||||
|
||||
assert azure_provider.region_config == AzureRegionConfig(
|
||||
name="AzureCloud",
|
||||
authority="login.microsoftonline.com",
|
||||
authority=None,
|
||||
base_url="https://management.azure.com",
|
||||
credential_scopes=["https://management.azure.com/.default"],
|
||||
graph_credential_scopes=["https://graph.microsoft.com/.default"],
|
||||
graph_base_url="https://graph.microsoft.com",
|
||||
)
|
||||
assert isinstance(azure_provider.session, DefaultAzureCredential)
|
||||
assert azure_provider.identity == AzureIdentityInfo(
|
||||
|
||||
@@ -3,10 +3,6 @@ from azure.identity import AzureAuthorityHosts
|
||||
from prowler.providers.azure.lib.regions.regions import (
|
||||
AZURE_CHINA_CLOUD,
|
||||
AZURE_GENERIC_CLOUD,
|
||||
AZURE_GRAPH_CHINA,
|
||||
AZURE_GRAPH_GLOBAL,
|
||||
AZURE_GRAPH_GOV_US_L4,
|
||||
AZURE_GRAPH_GOV_US_L5,
|
||||
AZURE_US_GOV_CLOUD,
|
||||
get_regions_config,
|
||||
)
|
||||
@@ -17,33 +13,23 @@ class Test_azure_regions:
|
||||
allowed_regions = [
|
||||
"AzureCloud",
|
||||
"AzureChinaCloud",
|
||||
"AzureUSGovernmentL4",
|
||||
"AzureUSGovernmentL5",
|
||||
"AzureUSGovernment",
|
||||
]
|
||||
expected_output = {
|
||||
"AzureCloud": {
|
||||
"authority": None,
|
||||
"base_url": AZURE_GENERIC_CLOUD,
|
||||
"credential_scopes": [AZURE_GENERIC_CLOUD + "/.default"],
|
||||
"graph_credential_scopes": [AZURE_GRAPH_GLOBAL],
|
||||
},
|
||||
"AzureChinaCloud": {
|
||||
"authority": AzureAuthorityHosts.AZURE_CHINA,
|
||||
"base_url": AZURE_CHINA_CLOUD,
|
||||
"credential_scopes": [AZURE_CHINA_CLOUD + "/.default"],
|
||||
"graph_credential_scopes": [AZURE_GRAPH_CHINA],
|
||||
},
|
||||
"AzureUSGovernmentL4": {
|
||||
"AzureUSGovernment": {
|
||||
"authority": AzureAuthorityHosts.AZURE_GOVERNMENT,
|
||||
"base_url": AZURE_US_GOV_CLOUD,
|
||||
"credential_scopes": [AZURE_US_GOV_CLOUD + "/.default"],
|
||||
"graph_credential_scopes": [AZURE_GRAPH_GOV_US_L4],
|
||||
},
|
||||
"AzureUSGovernmentL5": {
|
||||
"authority": AzureAuthorityHosts.AZURE_GOVERNMENT,
|
||||
"base_url": AZURE_US_GOV_CLOUD,
|
||||
"credential_scopes": [AZURE_US_GOV_CLOUD + "/.default"],
|
||||
"graph_credential_scopes": [AZURE_GRAPH_GOV_US_L5],
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ from tests.providers.microsoft365.microsoft365_fixtures import (
|
||||
)
|
||||
|
||||
|
||||
class Test_entra_admin_portals_role_limited_access:
|
||||
class Test_entra_capolicy_admin_portals_role_limited_access:
|
||||
def test_entra_no_conditional_access_policies(self):
|
||||
entra_client = mock.MagicMock
|
||||
entra_client.audited_tenant = "audited_tenant"
|
||||
@@ -31,17 +31,17 @@ class Test_entra_admin_portals_role_limited_access:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_portals_role_limited_access.entra_admin_portals_role_limited_access.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_admin_portals_role_limited_access.entra_capolicy_admin_portals_role_limited_access.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_portals_role_limited_access.entra_admin_portals_role_limited_access import (
|
||||
entra_admin_portals_role_limited_access,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_admin_portals_role_limited_access.entra_capolicy_admin_portals_role_limited_access import (
|
||||
entra_capolicy_admin_portals_role_limited_access,
|
||||
)
|
||||
|
||||
entra_client.conditional_access_policies = {}
|
||||
|
||||
check = entra_admin_portals_role_limited_access()
|
||||
check = entra_capolicy_admin_portals_role_limited_access()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -66,12 +66,12 @@ class Test_entra_admin_portals_role_limited_access:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_portals_role_limited_access.entra_admin_portals_role_limited_access.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_admin_portals_role_limited_access.entra_capolicy_admin_portals_role_limited_access.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_portals_role_limited_access.entra_admin_portals_role_limited_access import (
|
||||
entra_admin_portals_role_limited_access,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_admin_portals_role_limited_access.entra_capolicy_admin_portals_role_limited_access import (
|
||||
entra_capolicy_admin_portals_role_limited_access,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -112,7 +112,7 @@ class Test_entra_admin_portals_role_limited_access:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_admin_portals_role_limited_access()
|
||||
check = entra_capolicy_admin_portals_role_limited_access()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -138,12 +138,12 @@ class Test_entra_admin_portals_role_limited_access:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_portals_role_limited_access.entra_admin_portals_role_limited_access.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_admin_portals_role_limited_access.entra_capolicy_admin_portals_role_limited_access.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_portals_role_limited_access.entra_admin_portals_role_limited_access import (
|
||||
entra_admin_portals_role_limited_access,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_admin_portals_role_limited_access.entra_capolicy_admin_portals_role_limited_access import (
|
||||
entra_capolicy_admin_portals_role_limited_access,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -186,7 +186,7 @@ class Test_entra_admin_portals_role_limited_access:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_admin_portals_role_limited_access()
|
||||
check = entra_capolicy_admin_portals_role_limited_access()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -215,12 +215,12 @@ class Test_entra_admin_portals_role_limited_access:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_portals_role_limited_access.entra_admin_portals_role_limited_access.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_admin_portals_role_limited_access.entra_capolicy_admin_portals_role_limited_access.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_portals_role_limited_access.entra_admin_portals_role_limited_access import (
|
||||
entra_admin_portals_role_limited_access,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_admin_portals_role_limited_access.entra_capolicy_admin_portals_role_limited_access import (
|
||||
entra_capolicy_admin_portals_role_limited_access,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -263,7 +263,7 @@ class Test_entra_admin_portals_role_limited_access:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_admin_portals_role_limited_access()
|
||||
check = entra_capolicy_admin_portals_role_limited_access()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "PASS"
|
||||
@@ -20,7 +20,7 @@ from tests.providers.microsoft365.microsoft365_fixtures import (
|
||||
)
|
||||
|
||||
|
||||
class Test_entra_admin_users_sign_in_frequency_enabled:
|
||||
class Test_entra_capolicy_admin_users_sign_in_frequency_enabled:
|
||||
def test_entra_no_conditional_access_policies(self):
|
||||
entra_client = mock.MagicMock
|
||||
entra_client.audited_tenant = "audited_tenant"
|
||||
@@ -31,18 +31,18 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
|
||||
entra_admin_users_sign_in_frequency_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_capolicy_admin_users_sign_in_frequency_enabled import (
|
||||
entra_capolicy_admin_users_sign_in_frequency_enabled,
|
||||
)
|
||||
|
||||
entra_client.conditional_access_policies = {}
|
||||
entra_client.audit_config = {"sign_in_frequency": 4}
|
||||
|
||||
check = entra_admin_users_sign_in_frequency_enabled()
|
||||
check = entra_capolicy_admin_users_sign_in_frequency_enabled()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -68,12 +68,12 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
|
||||
entra_admin_users_sign_in_frequency_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_capolicy_admin_users_sign_in_frequency_enabled import (
|
||||
entra_capolicy_admin_users_sign_in_frequency_enabled,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -114,7 +114,7 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_admin_users_sign_in_frequency_enabled()
|
||||
check = entra_capolicy_admin_users_sign_in_frequency_enabled()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -141,12 +141,12 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
|
||||
entra_admin_users_sign_in_frequency_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_capolicy_admin_users_sign_in_frequency_enabled import (
|
||||
entra_capolicy_admin_users_sign_in_frequency_enabled,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -204,7 +204,7 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_admin_users_sign_in_frequency_enabled()
|
||||
check = entra_capolicy_admin_users_sign_in_frequency_enabled()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "PASS"
|
||||
@@ -235,12 +235,12 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
|
||||
entra_admin_users_sign_in_frequency_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_capolicy_admin_users_sign_in_frequency_enabled import (
|
||||
entra_capolicy_admin_users_sign_in_frequency_enabled,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -300,7 +300,7 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_admin_users_sign_in_frequency_enabled()
|
||||
check = entra_capolicy_admin_users_sign_in_frequency_enabled()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -330,12 +330,12 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
|
||||
entra_admin_users_sign_in_frequency_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_capolicy_admin_users_sign_in_frequency_enabled import (
|
||||
entra_capolicy_admin_users_sign_in_frequency_enabled,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -393,7 +393,7 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_admin_users_sign_in_frequency_enabled()
|
||||
check = entra_capolicy_admin_users_sign_in_frequency_enabled()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -423,12 +423,12 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
|
||||
entra_admin_users_sign_in_frequency_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_capolicy_admin_users_sign_in_frequency_enabled import (
|
||||
entra_capolicy_admin_users_sign_in_frequency_enabled,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -486,7 +486,7 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_admin_users_sign_in_frequency_enabled()
|
||||
check = entra_capolicy_admin_users_sign_in_frequency_enabled()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "PASS"
|
||||
@@ -517,12 +517,12 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
|
||||
entra_admin_users_sign_in_frequency_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_admin_users_sign_in_frequency_enabled.entra_capolicy_admin_users_sign_in_frequency_enabled import (
|
||||
entra_capolicy_admin_users_sign_in_frequency_enabled,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -582,7 +582,7 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_admin_users_sign_in_frequency_enabled()
|
||||
check = entra_capolicy_admin_users_sign_in_frequency_enabled()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "PASS"
|
||||
@@ -21,7 +21,7 @@ from tests.providers.microsoft365.microsoft365_fixtures import (
|
||||
)
|
||||
|
||||
|
||||
class Test_entra_admin_mfa_enabled_for_administrative_roles:
|
||||
class Test_entra_capolicy_administrative_roles_have_mfa_enabled:
|
||||
def test_no_conditional_access_policies(self):
|
||||
"""No conditional access policies configured: expected FAIL."""
|
||||
entra_client = mock.MagicMock
|
||||
@@ -34,17 +34,17 @@ class Test_entra_admin_mfa_enabled_for_administrative_roles:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_mfa_enabled_for_administrative_roles.entra_admin_mfa_enabled_for_administrative_roles.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_administrative_roles_have_mfa_enabled.entra_capolicy_administrative_roles_have_mfa_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_mfa_enabled_for_administrative_roles.entra_admin_mfa_enabled_for_administrative_roles import (
|
||||
entra_admin_mfa_enabled_for_administrative_roles,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_administrative_roles_have_mfa_enabled.entra_capolicy_administrative_roles_have_mfa_enabled import (
|
||||
entra_capolicy_administrative_roles_have_mfa_enabled,
|
||||
)
|
||||
|
||||
entra_client.conditional_access_policies = {}
|
||||
|
||||
check = entra_admin_mfa_enabled_for_administrative_roles()
|
||||
check = entra_capolicy_administrative_roles_have_mfa_enabled()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -70,12 +70,12 @@ class Test_entra_admin_mfa_enabled_for_administrative_roles:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_mfa_enabled_for_administrative_roles.entra_admin_mfa_enabled_for_administrative_roles.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_administrative_roles_have_mfa_enabled.entra_capolicy_administrative_roles_have_mfa_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_mfa_enabled_for_administrative_roles.entra_admin_mfa_enabled_for_administrative_roles import (
|
||||
entra_admin_mfa_enabled_for_administrative_roles,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_administrative_roles_have_mfa_enabled.entra_capolicy_administrative_roles_have_mfa_enabled import (
|
||||
entra_capolicy_administrative_roles_have_mfa_enabled,
|
||||
)
|
||||
|
||||
entra_client.conditional_access_policies = {
|
||||
@@ -114,7 +114,7 @@ class Test_entra_admin_mfa_enabled_for_administrative_roles:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_admin_mfa_enabled_for_administrative_roles()
|
||||
check = entra_capolicy_administrative_roles_have_mfa_enabled()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -144,12 +144,12 @@ class Test_entra_admin_mfa_enabled_for_administrative_roles:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_mfa_enabled_for_administrative_roles.entra_admin_mfa_enabled_for_administrative_roles.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_administrative_roles_have_mfa_enabled.entra_capolicy_administrative_roles_have_mfa_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_mfa_enabled_for_administrative_roles.entra_admin_mfa_enabled_for_administrative_roles import (
|
||||
entra_admin_mfa_enabled_for_administrative_roles,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_administrative_roles_have_mfa_enabled.entra_capolicy_administrative_roles_have_mfa_enabled import (
|
||||
entra_capolicy_administrative_roles_have_mfa_enabled,
|
||||
)
|
||||
|
||||
entra_client.conditional_access_policies = {
|
||||
@@ -188,7 +188,7 @@ class Test_entra_admin_mfa_enabled_for_administrative_roles:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_admin_mfa_enabled_for_administrative_roles()
|
||||
check = entra_capolicy_administrative_roles_have_mfa_enabled()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -218,12 +218,12 @@ class Test_entra_admin_mfa_enabled_for_administrative_roles:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_mfa_enabled_for_administrative_roles.entra_admin_mfa_enabled_for_administrative_roles.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_administrative_roles_have_mfa_enabled.entra_capolicy_administrative_roles_have_mfa_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_mfa_enabled_for_administrative_roles.entra_admin_mfa_enabled_for_administrative_roles import (
|
||||
entra_admin_mfa_enabled_for_administrative_roles,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_administrative_roles_have_mfa_enabled.entra_capolicy_administrative_roles_have_mfa_enabled import (
|
||||
entra_capolicy_administrative_roles_have_mfa_enabled,
|
||||
)
|
||||
|
||||
entra_client.conditional_access_policies = {
|
||||
@@ -263,7 +263,7 @@ class Test_entra_admin_mfa_enabled_for_administrative_roles:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_admin_mfa_enabled_for_administrative_roles()
|
||||
check = entra_capolicy_administrative_roles_have_mfa_enabled()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -298,12 +298,12 @@ class Test_entra_admin_mfa_enabled_for_administrative_roles:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_mfa_enabled_for_administrative_roles.entra_admin_mfa_enabled_for_administrative_roles.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_administrative_roles_have_mfa_enabled.entra_capolicy_administrative_roles_have_mfa_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_mfa_enabled_for_administrative_roles.entra_admin_mfa_enabled_for_administrative_roles import (
|
||||
entra_admin_mfa_enabled_for_administrative_roles,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_administrative_roles_have_mfa_enabled.entra_capolicy_administrative_roles_have_mfa_enabled import (
|
||||
entra_capolicy_administrative_roles_have_mfa_enabled,
|
||||
)
|
||||
|
||||
entra_client.conditional_access_policies = {
|
||||
@@ -342,7 +342,7 @@ class Test_entra_admin_mfa_enabled_for_administrative_roles:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_admin_mfa_enabled_for_administrative_roles()
|
||||
check = entra_capolicy_administrative_roles_have_mfa_enabled()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -375,12 +375,12 @@ class Test_entra_admin_mfa_enabled_for_administrative_roles:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_mfa_enabled_for_administrative_roles.entra_admin_mfa_enabled_for_administrative_roles.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_administrative_roles_have_mfa_enabled.entra_capolicy_administrative_roles_have_mfa_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_mfa_enabled_for_administrative_roles.entra_admin_mfa_enabled_for_administrative_roles import (
|
||||
entra_admin_mfa_enabled_for_administrative_roles,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_administrative_roles_have_mfa_enabled.entra_capolicy_administrative_roles_have_mfa_enabled import (
|
||||
entra_capolicy_administrative_roles_have_mfa_enabled,
|
||||
)
|
||||
|
||||
entra_client.conditional_access_policies = {
|
||||
@@ -435,7 +435,7 @@ class Test_entra_admin_mfa_enabled_for_administrative_roles:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_admin_mfa_enabled_for_administrative_roles()
|
||||
check = entra_capolicy_administrative_roles_have_mfa_enabled()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -468,12 +468,12 @@ class Test_entra_admin_mfa_enabled_for_administrative_roles:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_mfa_enabled_for_administrative_roles.entra_admin_mfa_enabled_for_administrative_roles.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_administrative_roles_have_mfa_enabled.entra_capolicy_administrative_roles_have_mfa_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_mfa_enabled_for_administrative_roles.entra_admin_mfa_enabled_for_administrative_roles import (
|
||||
entra_admin_mfa_enabled_for_administrative_roles,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_administrative_roles_have_mfa_enabled.entra_capolicy_administrative_roles_have_mfa_enabled import (
|
||||
entra_capolicy_administrative_roles_have_mfa_enabled,
|
||||
)
|
||||
|
||||
entra_client.conditional_access_policies = {
|
||||
@@ -527,7 +527,7 @@ class Test_entra_admin_mfa_enabled_for_administrative_roles:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_admin_mfa_enabled_for_administrative_roles()
|
||||
check = entra_capolicy_administrative_roles_have_mfa_enabled()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -10,7 +10,7 @@ from tests.providers.microsoft365.microsoft365_fixtures import (
|
||||
)
|
||||
|
||||
|
||||
class Test_entra_policy_ensure_default_user_cannot_create_tenants:
|
||||
class Test_entra_capolicy_ensure_default_user_cannot_create_tenants:
|
||||
def test_entra_empty_tenant(self):
|
||||
entra_client = mock.MagicMock
|
||||
entra_client.authorization_policy = {}
|
||||
@@ -21,15 +21,15 @@ class Test_entra_policy_ensure_default_user_cannot_create_tenants:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_policy_ensure_default_user_cannot_create_tenants.entra_policy_ensure_default_user_cannot_create_tenants.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_ensure_default_user_cannot_create_tenants.entra_capolicy_ensure_default_user_cannot_create_tenants.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_policy_ensure_default_user_cannot_create_tenants.entra_policy_ensure_default_user_cannot_create_tenants import (
|
||||
entra_policy_ensure_default_user_cannot_create_tenants,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_ensure_default_user_cannot_create_tenants.entra_capolicy_ensure_default_user_cannot_create_tenants import (
|
||||
entra_capolicy_ensure_default_user_cannot_create_tenants,
|
||||
)
|
||||
|
||||
check = entra_policy_ensure_default_user_cannot_create_tenants()
|
||||
check = entra_capolicy_ensure_default_user_cannot_create_tenants()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -52,12 +52,12 @@ class Test_entra_policy_ensure_default_user_cannot_create_tenants:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_policy_ensure_default_user_cannot_create_tenants.entra_policy_ensure_default_user_cannot_create_tenants.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_ensure_default_user_cannot_create_tenants.entra_capolicy_ensure_default_user_cannot_create_tenants.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_policy_ensure_default_user_cannot_create_tenants.entra_policy_ensure_default_user_cannot_create_tenants import (
|
||||
entra_policy_ensure_default_user_cannot_create_tenants,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_ensure_default_user_cannot_create_tenants.entra_capolicy_ensure_default_user_cannot_create_tenants import (
|
||||
entra_capolicy_ensure_default_user_cannot_create_tenants,
|
||||
)
|
||||
|
||||
entra_client.authorization_policy = AuthorizationPolicy(
|
||||
@@ -69,7 +69,7 @@ class Test_entra_policy_ensure_default_user_cannot_create_tenants:
|
||||
),
|
||||
)
|
||||
|
||||
check = entra_policy_ensure_default_user_cannot_create_tenants()
|
||||
check = entra_capolicy_ensure_default_user_cannot_create_tenants()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -92,12 +92,12 @@ class Test_entra_policy_ensure_default_user_cannot_create_tenants:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_policy_ensure_default_user_cannot_create_tenants.entra_policy_ensure_default_user_cannot_create_tenants.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_ensure_default_user_cannot_create_tenants.entra_capolicy_ensure_default_user_cannot_create_tenants.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_policy_ensure_default_user_cannot_create_tenants.entra_policy_ensure_default_user_cannot_create_tenants import (
|
||||
entra_policy_ensure_default_user_cannot_create_tenants,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_ensure_default_user_cannot_create_tenants.entra_capolicy_ensure_default_user_cannot_create_tenants import (
|
||||
entra_capolicy_ensure_default_user_cannot_create_tenants,
|
||||
)
|
||||
|
||||
entra_client.authorization_policy = AuthorizationPolicy(
|
||||
@@ -109,7 +109,7 @@ class Test_entra_policy_ensure_default_user_cannot_create_tenants:
|
||||
),
|
||||
)
|
||||
|
||||
check = entra_policy_ensure_default_user_cannot_create_tenants()
|
||||
check = entra_capolicy_ensure_default_user_cannot_create_tenants()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "PASS"
|
||||
@@ -21,7 +21,7 @@ from tests.providers.microsoft365.microsoft365_fixtures import (
|
||||
)
|
||||
|
||||
|
||||
class Test_entra_identity_protection_sign_in_risk_enabled:
|
||||
class Test_entra_capolicy_identity_protection_sign_in_risk_enabled:
|
||||
def test_entra_no_conditional_access_policies(self):
|
||||
entra_client = mock.MagicMock
|
||||
entra_client.audited_tenant = "audited_tenant"
|
||||
@@ -32,17 +32,17 @@ class Test_entra_identity_protection_sign_in_risk_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_sign_in_risk_enabled.entra_capolicy_identity_protection_sign_in_risk_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled import (
|
||||
entra_identity_protection_sign_in_risk_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_sign_in_risk_enabled.entra_capolicy_identity_protection_sign_in_risk_enabled import (
|
||||
entra_capolicy_identity_protection_sign_in_risk_enabled,
|
||||
)
|
||||
|
||||
entra_client.conditional_access_policies = {}
|
||||
|
||||
check = entra_identity_protection_sign_in_risk_enabled()
|
||||
check = entra_capolicy_identity_protection_sign_in_risk_enabled()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -55,7 +55,7 @@ class Test_entra_identity_protection_sign_in_risk_enabled:
|
||||
assert result[0].resource_id == "conditionalAccessPolicies"
|
||||
assert result[0].location == "global"
|
||||
|
||||
def test_entra_identity_protection_user_risk_policy_disabled(self):
|
||||
def test_entra_identity_protection_sign_in_risk_policy_disabled(self):
|
||||
id = str(uuid4())
|
||||
entra_client = mock.MagicMock
|
||||
entra_client.audited_tenant = "audited_tenant"
|
||||
@@ -67,12 +67,12 @@ class Test_entra_identity_protection_sign_in_risk_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_sign_in_risk_enabled.entra_capolicy_identity_protection_sign_in_risk_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled import (
|
||||
entra_identity_protection_sign_in_risk_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_sign_in_risk_enabled.entra_capolicy_identity_protection_sign_in_risk_enabled import (
|
||||
entra_capolicy_identity_protection_sign_in_risk_enabled,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -115,7 +115,7 @@ class Test_entra_identity_protection_sign_in_risk_enabled:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_identity_protection_sign_in_risk_enabled()
|
||||
check = entra_capolicy_identity_protection_sign_in_risk_enabled()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -128,7 +128,9 @@ class Test_entra_identity_protection_sign_in_risk_enabled:
|
||||
assert result[0].resource_id == "conditionalAccessPolicies"
|
||||
assert result[0].location == "global"
|
||||
|
||||
def test_entra_identity_protection_user_risk_policy_enabled_not_enough_risk(self):
|
||||
def test_entra_identity_protection_sign_in_risk_policy_enabled_not_enough_risk(
|
||||
self,
|
||||
):
|
||||
id = str(uuid4())
|
||||
display_name = "Test"
|
||||
entra_client = mock.MagicMock
|
||||
@@ -141,12 +143,12 @@ class Test_entra_identity_protection_sign_in_risk_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_sign_in_risk_enabled.entra_capolicy_identity_protection_sign_in_risk_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled import (
|
||||
entra_identity_protection_sign_in_risk_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_sign_in_risk_enabled.entra_capolicy_identity_protection_sign_in_risk_enabled import (
|
||||
entra_capolicy_identity_protection_sign_in_risk_enabled,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -194,7 +196,7 @@ class Test_entra_identity_protection_sign_in_risk_enabled:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_identity_protection_sign_in_risk_enabled()
|
||||
check = entra_capolicy_identity_protection_sign_in_risk_enabled()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -210,7 +212,7 @@ class Test_entra_identity_protection_sign_in_risk_enabled:
|
||||
assert result[0].resource_id == id
|
||||
assert result[0].location == "global"
|
||||
|
||||
def test_entra_identity_protection_user_risk_policy_enabled_for_reporting(self):
|
||||
def test_entra_identity_protection_sign_in_risk_policy_enabled_for_reporting(self):
|
||||
id = str(uuid4())
|
||||
display_name = "Test"
|
||||
entra_client = mock.MagicMock
|
||||
@@ -223,12 +225,12 @@ class Test_entra_identity_protection_sign_in_risk_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_sign_in_risk_enabled.entra_capolicy_identity_protection_sign_in_risk_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled import (
|
||||
entra_identity_protection_sign_in_risk_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_sign_in_risk_enabled.entra_capolicy_identity_protection_sign_in_risk_enabled import (
|
||||
entra_capolicy_identity_protection_sign_in_risk_enabled,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -276,7 +278,7 @@ class Test_entra_identity_protection_sign_in_risk_enabled:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_identity_protection_sign_in_risk_enabled()
|
||||
check = entra_capolicy_identity_protection_sign_in_risk_enabled()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -292,7 +294,7 @@ class Test_entra_identity_protection_sign_in_risk_enabled:
|
||||
assert result[0].resource_id == id
|
||||
assert result[0].location == "global"
|
||||
|
||||
def test_entra_identity_protection_user_risk_policy_enabled(self):
|
||||
def test_entra_identity_protection_sign_in_risk_policy_enabled(self):
|
||||
id = str(uuid4())
|
||||
display_name = "Test"
|
||||
entra_client = mock.MagicMock
|
||||
@@ -305,12 +307,12 @@ class Test_entra_identity_protection_sign_in_risk_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_sign_in_risk_enabled.entra_capolicy_identity_protection_sign_in_risk_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled import (
|
||||
entra_identity_protection_sign_in_risk_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_sign_in_risk_enabled.entra_capolicy_identity_protection_sign_in_risk_enabled import (
|
||||
entra_capolicy_identity_protection_sign_in_risk_enabled,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -358,7 +360,7 @@ class Test_entra_identity_protection_sign_in_risk_enabled:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_identity_protection_sign_in_risk_enabled()
|
||||
check = entra_capolicy_identity_protection_sign_in_risk_enabled()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "PASS"
|
||||
@@ -21,7 +21,7 @@ from tests.providers.microsoft365.microsoft365_fixtures import (
|
||||
)
|
||||
|
||||
|
||||
class Test_entra_identity_protection_user_risk_enabled:
|
||||
class Test_entra_capolicy_identity_protection_user_risk_enabled:
|
||||
def test_entra_no_conditional_access_policies(self):
|
||||
entra_client = mock.MagicMock
|
||||
entra_client.audited_tenant = "audited_tenant"
|
||||
@@ -32,17 +32,17 @@ class Test_entra_identity_protection_user_risk_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_user_risk_enabled.entra_capolicy_identity_protection_user_risk_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled import (
|
||||
entra_identity_protection_user_risk_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_user_risk_enabled.entra_capolicy_identity_protection_user_risk_enabled import (
|
||||
entra_capolicy_identity_protection_user_risk_enabled,
|
||||
)
|
||||
|
||||
entra_client.conditional_access_policies = {}
|
||||
|
||||
check = entra_identity_protection_user_risk_enabled()
|
||||
check = entra_capolicy_identity_protection_user_risk_enabled()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -67,12 +67,12 @@ class Test_entra_identity_protection_user_risk_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_user_risk_enabled.entra_capolicy_identity_protection_user_risk_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled import (
|
||||
entra_identity_protection_user_risk_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_user_risk_enabled.entra_capolicy_identity_protection_user_risk_enabled import (
|
||||
entra_capolicy_identity_protection_user_risk_enabled,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -114,7 +114,7 @@ class Test_entra_identity_protection_user_risk_enabled:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_identity_protection_user_risk_enabled()
|
||||
check = entra_capolicy_identity_protection_user_risk_enabled()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -140,12 +140,12 @@ class Test_entra_identity_protection_user_risk_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_user_risk_enabled.entra_capolicy_identity_protection_user_risk_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled import (
|
||||
entra_identity_protection_user_risk_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_user_risk_enabled.entra_capolicy_identity_protection_user_risk_enabled import (
|
||||
entra_capolicy_identity_protection_user_risk_enabled,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -192,7 +192,7 @@ class Test_entra_identity_protection_user_risk_enabled:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_identity_protection_user_risk_enabled()
|
||||
check = entra_capolicy_identity_protection_user_risk_enabled()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -221,12 +221,12 @@ class Test_entra_identity_protection_user_risk_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_user_risk_enabled.entra_capolicy_identity_protection_user_risk_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled import (
|
||||
entra_identity_protection_user_risk_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_user_risk_enabled.entra_capolicy_identity_protection_user_risk_enabled import (
|
||||
entra_capolicy_identity_protection_user_risk_enabled,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -273,7 +273,7 @@ class Test_entra_identity_protection_user_risk_enabled:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_identity_protection_user_risk_enabled()
|
||||
check = entra_capolicy_identity_protection_user_risk_enabled()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -302,12 +302,12 @@ class Test_entra_identity_protection_user_risk_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_user_risk_enabled.entra_capolicy_identity_protection_user_risk_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled import (
|
||||
entra_identity_protection_user_risk_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_identity_protection_user_risk_enabled.entra_capolicy_identity_protection_user_risk_enabled import (
|
||||
entra_capolicy_identity_protection_user_risk_enabled,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -354,7 +354,7 @@ class Test_entra_identity_protection_user_risk_enabled:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_identity_protection_user_risk_enabled()
|
||||
check = entra_capolicy_identity_protection_user_risk_enabled()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "PASS"
|
||||
@@ -20,7 +20,7 @@ from tests.providers.microsoft365.microsoft365_fixtures import (
|
||||
)
|
||||
|
||||
|
||||
class Test_entra_managed_device_required_for_authentication:
|
||||
class Test_entra_capolicy_managed_device_required_for_authentication:
|
||||
def test_entra_no_conditional_access_policies(self):
|
||||
entra_client = mock.MagicMock
|
||||
entra_client.audited_tenant = "audited_tenant"
|
||||
@@ -31,17 +31,17 @@ class Test_entra_managed_device_required_for_authentication:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_managed_device_required_for_authentication.entra_capolicy_managed_device_required_for_authentication.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication import (
|
||||
entra_managed_device_required_for_authentication,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_managed_device_required_for_authentication.entra_capolicy_managed_device_required_for_authentication import (
|
||||
entra_capolicy_managed_device_required_for_authentication,
|
||||
)
|
||||
|
||||
entra_client.conditional_access_policies = {}
|
||||
|
||||
check = entra_managed_device_required_for_authentication()
|
||||
check = entra_capolicy_managed_device_required_for_authentication()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -66,12 +66,12 @@ class Test_entra_managed_device_required_for_authentication:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_managed_device_required_for_authentication.entra_capolicy_managed_device_required_for_authentication.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication import (
|
||||
entra_managed_device_required_for_authentication,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_managed_device_required_for_authentication.entra_capolicy_managed_device_required_for_authentication import (
|
||||
entra_capolicy_managed_device_required_for_authentication,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -112,7 +112,7 @@ class Test_entra_managed_device_required_for_authentication:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_managed_device_required_for_authentication()
|
||||
check = entra_capolicy_managed_device_required_for_authentication()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -138,12 +138,12 @@ class Test_entra_managed_device_required_for_authentication:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_managed_device_required_for_authentication.entra_capolicy_managed_device_required_for_authentication.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication import (
|
||||
entra_managed_device_required_for_authentication,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_managed_device_required_for_authentication.entra_capolicy_managed_device_required_for_authentication import (
|
||||
entra_capolicy_managed_device_required_for_authentication,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -189,7 +189,7 @@ class Test_entra_managed_device_required_for_authentication:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_managed_device_required_for_authentication()
|
||||
check = entra_capolicy_managed_device_required_for_authentication()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -219,12 +219,12 @@ class Test_entra_managed_device_required_for_authentication:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_capolicy_managed_device_required_for_authentication.entra_capolicy_managed_device_required_for_authentication.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication import (
|
||||
entra_managed_device_required_for_authentication,
|
||||
from prowler.providers.microsoft365.services.entra.entra_capolicy_managed_device_required_for_authentication.entra_capolicy_managed_device_required_for_authentication import (
|
||||
entra_capolicy_managed_device_required_for_authentication,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
ConditionalAccessPolicy,
|
||||
@@ -270,7 +270,7 @@ class Test_entra_managed_device_required_for_authentication:
|
||||
)
|
||||
}
|
||||
|
||||
check = entra_managed_device_required_for_authentication()
|
||||
check = entra_capolicy_managed_device_required_for_authentication()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "PASS"
|
||||
@@ -9,7 +9,7 @@ from tests.providers.microsoft365.microsoft365_fixtures import (
|
||||
)
|
||||
|
||||
|
||||
class Test_entra_admin_consent_workflow_enabled:
|
||||
class Test_entra_enterpriseapps_admin_consent_workflow_enabled:
|
||||
def test_admin_consent_enabled(self):
|
||||
"""
|
||||
Test when admin_consent_enabled is True:
|
||||
@@ -23,12 +23,12 @@ class Test_entra_admin_consent_workflow_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_enterpriseapps_admin_consent_workflow_enabled.entra_enterpriseapps_admin_consent_workflow_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled import (
|
||||
entra_admin_consent_workflow_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_enterpriseapps_admin_consent_workflow_enabled.entra_enterpriseapps_admin_consent_workflow_enabled import (
|
||||
entra_enterpriseapps_admin_consent_workflow_enabled,
|
||||
)
|
||||
|
||||
entra_client.admin_consent_policy = AdminConsentPolicy(
|
||||
@@ -39,7 +39,7 @@ class Test_entra_admin_consent_workflow_enabled:
|
||||
)
|
||||
entra_client.tenant_domain = DOMAIN
|
||||
|
||||
check = entra_admin_consent_workflow_enabled()
|
||||
check = entra_enterpriseapps_admin_consent_workflow_enabled()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -65,12 +65,12 @@ class Test_entra_admin_consent_workflow_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_enterpriseapps_admin_consent_workflow_enabled.entra_enterpriseapps_admin_consent_workflow_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled import (
|
||||
entra_admin_consent_workflow_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_enterpriseapps_admin_consent_workflow_enabled.entra_enterpriseapps_admin_consent_workflow_enabled import (
|
||||
entra_enterpriseapps_admin_consent_workflow_enabled,
|
||||
)
|
||||
|
||||
entra_client.admin_consent_policy = AdminConsentPolicy(
|
||||
@@ -81,7 +81,7 @@ class Test_entra_admin_consent_workflow_enabled:
|
||||
)
|
||||
entra_client.tenant_domain = DOMAIN
|
||||
|
||||
check = entra_admin_consent_workflow_enabled()
|
||||
check = entra_enterpriseapps_admin_consent_workflow_enabled()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -107,12 +107,12 @@ class Test_entra_admin_consent_workflow_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_enterpriseapps_admin_consent_workflow_enabled.entra_enterpriseapps_admin_consent_workflow_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled import (
|
||||
entra_admin_consent_workflow_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_enterpriseapps_admin_consent_workflow_enabled.entra_enterpriseapps_admin_consent_workflow_enabled import (
|
||||
entra_enterpriseapps_admin_consent_workflow_enabled,
|
||||
)
|
||||
|
||||
entra_client.admin_consent_policy = AdminConsentPolicy(
|
||||
@@ -123,7 +123,7 @@ class Test_entra_admin_consent_workflow_enabled:
|
||||
)
|
||||
entra_client.tenant_domain = DOMAIN
|
||||
|
||||
check = entra_admin_consent_workflow_enabled()
|
||||
check = entra_enterpriseapps_admin_consent_workflow_enabled()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -151,15 +151,15 @@ class Test_entra_admin_consent_workflow_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_enterpriseapps_admin_consent_workflow_enabled.entra_enterpriseapps_admin_consent_workflow_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled import (
|
||||
entra_admin_consent_workflow_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_enterpriseapps_admin_consent_workflow_enabled.entra_enterpriseapps_admin_consent_workflow_enabled import (
|
||||
entra_enterpriseapps_admin_consent_workflow_enabled,
|
||||
)
|
||||
|
||||
check = entra_admin_consent_workflow_enabled()
|
||||
check = entra_enterpriseapps_admin_consent_workflow_enabled()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 0
|
||||
@@ -6,7 +6,7 @@ from tests.providers.microsoft365.microsoft365_fixtures import (
|
||||
)
|
||||
|
||||
|
||||
class Test_entra_dynamic_group_for_guests_created:
|
||||
class Test_entra_groups_dynamicgroup_for_guests_created:
|
||||
def test_no_groups(self):
|
||||
"""
|
||||
Test when no groups exist:
|
||||
@@ -21,15 +21,15 @@ class Test_entra_dynamic_group_for_guests_created:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_dynamic_group_for_guests_created.entra_dynamic_group_for_guests_created.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_groups_dynamicgroup_for_guests_created.entra_groups_dynamicgroup_for_guests_created.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_dynamic_group_for_guests_created.entra_dynamic_group_for_guests_created import (
|
||||
entra_dynamic_group_for_guests_created,
|
||||
from prowler.providers.microsoft365.services.entra.entra_groups_dynamicgroup_for_guests_created.entra_groups_dynamicgroup_for_guests_created import (
|
||||
entra_groups_dynamicgroup_for_guests_created,
|
||||
)
|
||||
|
||||
check = entra_dynamic_group_for_guests_created()
|
||||
check = entra_groups_dynamicgroup_for_guests_created()
|
||||
result = check.execute()
|
||||
assert len(result) == 0
|
||||
|
||||
@@ -46,7 +46,7 @@ class Test_entra_dynamic_group_for_guests_created:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_dynamic_group_for_guests_created.entra_dynamic_group_for_guests_created.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_groups_dynamicgroup_for_guests_created.entra_groups_dynamicgroup_for_guests_created.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
@@ -59,11 +59,11 @@ class Test_entra_dynamic_group_for_guests_created:
|
||||
)
|
||||
]
|
||||
|
||||
from prowler.providers.microsoft365.services.entra.entra_dynamic_group_for_guests_created.entra_dynamic_group_for_guests_created import (
|
||||
entra_dynamic_group_for_guests_created,
|
||||
from prowler.providers.microsoft365.services.entra.entra_groups_dynamicgroup_for_guests_created.entra_groups_dynamicgroup_for_guests_created import (
|
||||
entra_groups_dynamicgroup_for_guests_created,
|
||||
)
|
||||
|
||||
check = entra_dynamic_group_for_guests_created()
|
||||
check = entra_groups_dynamicgroup_for_guests_created()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -88,7 +88,7 @@ class Test_entra_dynamic_group_for_guests_created:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_dynamic_group_for_guests_created.entra_dynamic_group_for_guests_created.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_groups_dynamicgroup_for_guests_created.entra_groups_dynamicgroup_for_guests_created.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
@@ -101,11 +101,11 @@ class Test_entra_dynamic_group_for_guests_created:
|
||||
)
|
||||
]
|
||||
|
||||
from prowler.providers.microsoft365.services.entra.entra_dynamic_group_for_guests_created.entra_dynamic_group_for_guests_created import (
|
||||
entra_dynamic_group_for_guests_created,
|
||||
from prowler.providers.microsoft365.services.entra.entra_groups_dynamicgroup_for_guests_created.entra_groups_dynamicgroup_for_guests_created import (
|
||||
entra_groups_dynamicgroup_for_guests_created,
|
||||
)
|
||||
|
||||
check = entra_dynamic_group_for_guests_created()
|
||||
check = entra_groups_dynamicgroup_for_guests_created()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "PASS"
|
||||
@@ -6,7 +6,7 @@ from tests.providers.microsoft365.microsoft365_fixtures import (
|
||||
)
|
||||
|
||||
|
||||
class Test_entra_password_hash_sync_enabled:
|
||||
class Test_entra_organization_password_hash_sync_enabled:
|
||||
def test_password_hash_sync_enabled(self):
|
||||
entra_client = mock.MagicMock()
|
||||
|
||||
@@ -16,12 +16,12 @@ class Test_entra_password_hash_sync_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_organization_password_hash_sync_enabled.entra_organization_password_hash_sync_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled import (
|
||||
entra_password_hash_sync_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_organization_password_hash_sync_enabled.entra_organization_password_hash_sync_enabled import (
|
||||
entra_organization_password_hash_sync_enabled,
|
||||
)
|
||||
|
||||
org = Organization(
|
||||
@@ -31,7 +31,7 @@ class Test_entra_password_hash_sync_enabled:
|
||||
)
|
||||
entra_client.organizations = [org]
|
||||
|
||||
check = entra_password_hash_sync_enabled()
|
||||
check = entra_organization_password_hash_sync_enabled()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -54,12 +54,12 @@ class Test_entra_password_hash_sync_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_organization_password_hash_sync_enabled.entra_organization_password_hash_sync_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled import (
|
||||
entra_password_hash_sync_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_organization_password_hash_sync_enabled.entra_organization_password_hash_sync_enabled import (
|
||||
entra_organization_password_hash_sync_enabled,
|
||||
)
|
||||
|
||||
org1 = Organization(
|
||||
@@ -74,7 +74,7 @@ class Test_entra_password_hash_sync_enabled:
|
||||
)
|
||||
entra_client.organizations = [org1, org2]
|
||||
|
||||
check = entra_password_hash_sync_enabled()
|
||||
check = entra_organization_password_hash_sync_enabled()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 2
|
||||
@@ -106,12 +106,12 @@ class Test_entra_password_hash_sync_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_organization_password_hash_sync_enabled.entra_organization_password_hash_sync_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled import (
|
||||
entra_password_hash_sync_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_organization_password_hash_sync_enabled.entra_organization_password_hash_sync_enabled import (
|
||||
entra_organization_password_hash_sync_enabled,
|
||||
)
|
||||
|
||||
org = Organization(
|
||||
@@ -121,7 +121,7 @@ class Test_entra_password_hash_sync_enabled:
|
||||
)
|
||||
entra_client.organizations = [org]
|
||||
|
||||
check = entra_password_hash_sync_enabled()
|
||||
check = entra_organization_password_hash_sync_enabled()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -145,15 +145,15 @@ class Test_entra_password_hash_sync_enabled:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_organization_password_hash_sync_enabled.entra_organization_password_hash_sync_enabled.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled import (
|
||||
entra_password_hash_sync_enabled,
|
||||
from prowler.providers.microsoft365.services.entra.entra_organization_password_hash_sync_enabled.entra_organization_password_hash_sync_enabled import (
|
||||
entra_organization_password_hash_sync_enabled,
|
||||
)
|
||||
|
||||
check = entra_password_hash_sync_enabled()
|
||||
check = entra_organization_password_hash_sync_enabled()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 0
|
||||
@@ -10,7 +10,7 @@ from tests.providers.microsoft365.microsoft365_fixtures import (
|
||||
)
|
||||
|
||||
|
||||
class Test_entra_thirdparty_integrated_apps_not_allowed:
|
||||
class Test_entra_users_thirdparty_integrated_apps_not_allowed:
|
||||
def test_entra_no_authorization_policy(self):
|
||||
entra_client = mock.MagicMock
|
||||
entra_client.audited_tenant = "audited_tenant"
|
||||
@@ -21,17 +21,17 @@ class Test_entra_thirdparty_integrated_apps_not_allowed:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_thirdparty_integrated_apps_not_allowed.entra_thirdparty_integrated_apps_not_allowed.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_users_thirdparty_integrated_apps_not_allowed.entra_users_thirdparty_integrated_apps_not_allowed.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_thirdparty_integrated_apps_not_allowed.entra_thirdparty_integrated_apps_not_allowed import (
|
||||
entra_thirdparty_integrated_apps_not_allowed,
|
||||
from prowler.providers.microsoft365.services.entra.entra_users_thirdparty_integrated_apps_not_allowed.entra_users_thirdparty_integrated_apps_not_allowed import (
|
||||
entra_users_thirdparty_integrated_apps_not_allowed,
|
||||
)
|
||||
|
||||
entra_client.authorization_policy = None
|
||||
|
||||
check = entra_thirdparty_integrated_apps_not_allowed()
|
||||
check = entra_users_thirdparty_integrated_apps_not_allowed()
|
||||
result = check.execute()
|
||||
assert len(result) == 0
|
||||
|
||||
@@ -47,15 +47,15 @@ class Test_entra_thirdparty_integrated_apps_not_allowed:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_thirdparty_integrated_apps_not_allowed.entra_thirdparty_integrated_apps_not_allowed.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_users_thirdparty_integrated_apps_not_allowed.entra_users_thirdparty_integrated_apps_not_allowed.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
AuthorizationPolicy,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_thirdparty_integrated_apps_not_allowed.entra_thirdparty_integrated_apps_not_allowed import (
|
||||
entra_thirdparty_integrated_apps_not_allowed,
|
||||
from prowler.providers.microsoft365.services.entra.entra_users_thirdparty_integrated_apps_not_allowed.entra_users_thirdparty_integrated_apps_not_allowed import (
|
||||
entra_users_thirdparty_integrated_apps_not_allowed,
|
||||
)
|
||||
|
||||
role_permissions = DefaultUserRolePermissions(allowed_to_create_apps=False)
|
||||
@@ -66,7 +66,7 @@ class Test_entra_thirdparty_integrated_apps_not_allowed:
|
||||
default_user_role_permissions=role_permissions,
|
||||
)
|
||||
|
||||
check = entra_thirdparty_integrated_apps_not_allowed()
|
||||
check = entra_users_thirdparty_integrated_apps_not_allowed()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "PASS"
|
||||
@@ -91,15 +91,15 @@ class Test_entra_thirdparty_integrated_apps_not_allowed:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_thirdparty_integrated_apps_not_allowed.entra_thirdparty_integrated_apps_not_allowed.entra_client",
|
||||
"prowler.providers.microsoft365.services.entra.entra_users_thirdparty_integrated_apps_not_allowed.entra_users_thirdparty_integrated_apps_not_allowed.entra_client",
|
||||
new=entra_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
AuthorizationPolicy,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.entra.entra_thirdparty_integrated_apps_not_allowed.entra_thirdparty_integrated_apps_not_allowed import (
|
||||
entra_thirdparty_integrated_apps_not_allowed,
|
||||
from prowler.providers.microsoft365.services.entra.entra_users_thirdparty_integrated_apps_not_allowed.entra_users_thirdparty_integrated_apps_not_allowed import (
|
||||
entra_users_thirdparty_integrated_apps_not_allowed,
|
||||
)
|
||||
|
||||
role_permissions = DefaultUserRolePermissions(allowed_to_create_apps=True)
|
||||
@@ -110,7 +110,7 @@ class Test_entra_thirdparty_integrated_apps_not_allowed:
|
||||
default_user_role_permissions=role_permissions,
|
||||
)
|
||||
|
||||
check = entra_thirdparty_integrated_apps_not_allowed()
|
||||
check = entra_users_thirdparty_integrated_apps_not_allowed()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -9,7 +9,7 @@ from tests.providers.microsoft365.microsoft365_fixtures import (
|
||||
)
|
||||
|
||||
|
||||
class Test_sharepoint_external_sharing_managed:
|
||||
class Test_sharepoint_settings_external_sharing_managed:
|
||||
def test_external_sharing_invalid_mode(self):
|
||||
"""
|
||||
Test when sharingDomainRestrictionMode is set to an invalid value (not "allowList" ni "blockList"):
|
||||
@@ -23,12 +23,12 @@ class Test_sharepoint_external_sharing_managed:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed.sharepoint_client",
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_external_sharing_managed.sharepoint_settings_external_sharing_managed.sharepoint_client",
|
||||
new=sharepoint_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed import (
|
||||
sharepoint_external_sharing_managed,
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_external_sharing_managed.sharepoint_settings_external_sharing_managed import (
|
||||
sharepoint_settings_external_sharing_managed,
|
||||
)
|
||||
|
||||
sharepoint_client.settings = SharePointSettings(
|
||||
@@ -41,7 +41,7 @@ class Test_sharepoint_external_sharing_managed:
|
||||
)
|
||||
sharepoint_client.tenant_domain = DOMAIN
|
||||
|
||||
check = sharepoint_external_sharing_managed()
|
||||
check = sharepoint_settings_external_sharing_managed()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -68,12 +68,12 @@ class Test_sharepoint_external_sharing_managed:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed.sharepoint_client",
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_external_sharing_managed.sharepoint_settings_external_sharing_managed.sharepoint_client",
|
||||
new=sharepoint_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed import (
|
||||
sharepoint_external_sharing_managed,
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_external_sharing_managed.sharepoint_settings_external_sharing_managed import (
|
||||
sharepoint_settings_external_sharing_managed,
|
||||
)
|
||||
|
||||
sharepoint_client.settings = SharePointSettings(
|
||||
@@ -86,7 +86,7 @@ class Test_sharepoint_external_sharing_managed:
|
||||
)
|
||||
sharepoint_client.tenant_domain = DOMAIN
|
||||
|
||||
check = sharepoint_external_sharing_managed()
|
||||
check = sharepoint_settings_external_sharing_managed()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -113,12 +113,12 @@ class Test_sharepoint_external_sharing_managed:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed.sharepoint_client",
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_external_sharing_managed.sharepoint_settings_external_sharing_managed.sharepoint_client",
|
||||
new=sharepoint_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed import (
|
||||
sharepoint_external_sharing_managed,
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_external_sharing_managed.sharepoint_settings_external_sharing_managed import (
|
||||
sharepoint_settings_external_sharing_managed,
|
||||
)
|
||||
|
||||
sharepoint_client.settings = SharePointSettings(
|
||||
@@ -131,7 +131,7 @@ class Test_sharepoint_external_sharing_managed:
|
||||
)
|
||||
sharepoint_client.tenant_domain = DOMAIN
|
||||
|
||||
check = sharepoint_external_sharing_managed()
|
||||
check = sharepoint_settings_external_sharing_managed()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -158,12 +158,12 @@ class Test_sharepoint_external_sharing_managed:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed.sharepoint_client",
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_external_sharing_managed.sharepoint_settings_external_sharing_managed.sharepoint_client",
|
||||
new=sharepoint_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed import (
|
||||
sharepoint_external_sharing_managed,
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_external_sharing_managed.sharepoint_settings_external_sharing_managed import (
|
||||
sharepoint_settings_external_sharing_managed,
|
||||
)
|
||||
|
||||
sharepoint_client.settings = SharePointSettings(
|
||||
@@ -176,7 +176,7 @@ class Test_sharepoint_external_sharing_managed:
|
||||
)
|
||||
sharepoint_client.tenant_domain = DOMAIN
|
||||
|
||||
check = sharepoint_external_sharing_managed()
|
||||
check = sharepoint_settings_external_sharing_managed()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -203,12 +203,12 @@ class Test_sharepoint_external_sharing_managed:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed.sharepoint_client",
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_external_sharing_managed.sharepoint_settings_external_sharing_managed.sharepoint_client",
|
||||
new=sharepoint_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed import (
|
||||
sharepoint_external_sharing_managed,
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_external_sharing_managed.sharepoint_settings_external_sharing_managed import (
|
||||
sharepoint_settings_external_sharing_managed,
|
||||
)
|
||||
|
||||
sharepoint_client.settings = SharePointSettings(
|
||||
@@ -221,7 +221,7 @@ class Test_sharepoint_external_sharing_managed:
|
||||
)
|
||||
sharepoint_client.tenant_domain = DOMAIN
|
||||
|
||||
check = sharepoint_external_sharing_managed()
|
||||
check = sharepoint_settings_external_sharing_managed()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -250,14 +250,14 @@ class Test_sharepoint_external_sharing_managed:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed.sharepoint_client",
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_external_sharing_managed.sharepoint_settings_external_sharing_managed.sharepoint_client",
|
||||
new=sharepoint_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed import (
|
||||
sharepoint_external_sharing_managed,
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_external_sharing_managed.sharepoint_settings_external_sharing_managed import (
|
||||
sharepoint_settings_external_sharing_managed,
|
||||
)
|
||||
|
||||
check = sharepoint_external_sharing_managed()
|
||||
check = sharepoint_settings_external_sharing_managed()
|
||||
result = check.execute()
|
||||
assert len(result) == 0
|
||||
@@ -9,7 +9,7 @@ from tests.providers.microsoft365.microsoft365_fixtures import (
|
||||
)
|
||||
|
||||
|
||||
class Test_sharepoint_external_sharing_restricted:
|
||||
class Test_sharepoint_settings_external_sharing_restricted:
|
||||
def test_external_sharing_restricted(self):
|
||||
"""
|
||||
Test when sharingCapability is set to an allowed value (e.g. "ExternalUserSharingOnly"):
|
||||
@@ -23,12 +23,12 @@ class Test_sharepoint_external_sharing_restricted:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_restricted.sharepoint_external_sharing_restricted.sharepoint_client",
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_external_sharing_restricted.sharepoint_settings_external_sharing_restricted.sharepoint_client",
|
||||
new=sharepoint_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_restricted.sharepoint_external_sharing_restricted import (
|
||||
sharepoint_external_sharing_restricted,
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_external_sharing_restricted.sharepoint_settings_external_sharing_restricted import (
|
||||
sharepoint_settings_external_sharing_restricted,
|
||||
)
|
||||
|
||||
sharepoint_client.settings = SharePointSettings(
|
||||
@@ -41,7 +41,7 @@ class Test_sharepoint_external_sharing_restricted:
|
||||
)
|
||||
sharepoint_client.tenant_domain = DOMAIN
|
||||
|
||||
check = sharepoint_external_sharing_restricted()
|
||||
check = sharepoint_settings_external_sharing_restricted()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "PASS"
|
||||
@@ -66,12 +66,12 @@ class Test_sharepoint_external_sharing_restricted:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_restricted.sharepoint_external_sharing_restricted.sharepoint_client",
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_external_sharing_restricted.sharepoint_settings_external_sharing_restricted.sharepoint_client",
|
||||
new=sharepoint_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_restricted.sharepoint_external_sharing_restricted import (
|
||||
sharepoint_external_sharing_restricted,
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_external_sharing_restricted.sharepoint_settings_external_sharing_restricted import (
|
||||
sharepoint_settings_external_sharing_restricted,
|
||||
)
|
||||
|
||||
sharepoint_client.settings = SharePointSettings(
|
||||
@@ -84,7 +84,7 @@ class Test_sharepoint_external_sharing_restricted:
|
||||
)
|
||||
sharepoint_client.tenant_domain = DOMAIN
|
||||
|
||||
check = sharepoint_external_sharing_restricted()
|
||||
check = sharepoint_settings_external_sharing_restricted()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -111,14 +111,14 @@ class Test_sharepoint_external_sharing_restricted:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_restricted.sharepoint_external_sharing_restricted.sharepoint_client",
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_external_sharing_restricted.sharepoint_settings_external_sharing_restricted.sharepoint_client",
|
||||
new=sharepoint_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_restricted.sharepoint_external_sharing_restricted import (
|
||||
sharepoint_external_sharing_restricted,
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_external_sharing_restricted.sharepoint_settings_external_sharing_restricted import (
|
||||
sharepoint_settings_external_sharing_restricted,
|
||||
)
|
||||
|
||||
check = sharepoint_external_sharing_restricted()
|
||||
check = sharepoint_settings_external_sharing_restricted()
|
||||
result = check.execute()
|
||||
assert len(result) == 0
|
||||
@@ -9,7 +9,7 @@ from tests.providers.microsoft365.microsoft365_fixtures import (
|
||||
)
|
||||
|
||||
|
||||
class Test_sharepoint_guest_sharing_restricted:
|
||||
class Test_sharepoint_settings_guest_sharing_restricted:
|
||||
def test_guest_sharing_restricted(self):
|
||||
"""
|
||||
Test when resharingEnabled is False:
|
||||
@@ -23,12 +23,12 @@ class Test_sharepoint_guest_sharing_restricted:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_guest_sharing_restricted.sharepoint_guest_sharing_restricted.sharepoint_client",
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_guest_sharing_restricted.sharepoint_settings_guest_sharing_restricted.sharepoint_client",
|
||||
new=sharepoint_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_guest_sharing_restricted.sharepoint_guest_sharing_restricted import (
|
||||
sharepoint_guest_sharing_restricted,
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_guest_sharing_restricted.sharepoint_settings_guest_sharing_restricted import (
|
||||
sharepoint_settings_guest_sharing_restricted,
|
||||
)
|
||||
|
||||
sharepoint_client.settings = SharePointSettings(
|
||||
@@ -41,7 +41,7 @@ class Test_sharepoint_guest_sharing_restricted:
|
||||
)
|
||||
sharepoint_client.tenant_domain = DOMAIN
|
||||
|
||||
check = sharepoint_guest_sharing_restricted()
|
||||
check = sharepoint_settings_guest_sharing_restricted()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -67,12 +67,12 @@ class Test_sharepoint_guest_sharing_restricted:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_guest_sharing_restricted.sharepoint_guest_sharing_restricted.sharepoint_client",
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_guest_sharing_restricted.sharepoint_settings_guest_sharing_restricted.sharepoint_client",
|
||||
new=sharepoint_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_guest_sharing_restricted.sharepoint_guest_sharing_restricted import (
|
||||
sharepoint_guest_sharing_restricted,
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_guest_sharing_restricted.sharepoint_settings_guest_sharing_restricted import (
|
||||
sharepoint_settings_guest_sharing_restricted,
|
||||
)
|
||||
|
||||
sharepoint_client.settings = SharePointSettings(
|
||||
@@ -85,7 +85,7 @@ class Test_sharepoint_guest_sharing_restricted:
|
||||
)
|
||||
sharepoint_client.tenant_domain = DOMAIN
|
||||
|
||||
check = sharepoint_guest_sharing_restricted()
|
||||
check = sharepoint_settings_guest_sharing_restricted()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
@@ -113,15 +113,15 @@ class Test_sharepoint_guest_sharing_restricted:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_guest_sharing_restricted.sharepoint_guest_sharing_restricted.sharepoint_client",
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_guest_sharing_restricted.sharepoint_settings_guest_sharing_restricted.sharepoint_client",
|
||||
new=sharepoint_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_guest_sharing_restricted.sharepoint_guest_sharing_restricted import (
|
||||
sharepoint_guest_sharing_restricted,
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_guest_sharing_restricted.sharepoint_settings_guest_sharing_restricted import (
|
||||
sharepoint_settings_guest_sharing_restricted,
|
||||
)
|
||||
|
||||
check = sharepoint_guest_sharing_restricted()
|
||||
check = sharepoint_settings_guest_sharing_restricted()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 0
|
||||
@@ -6,7 +6,7 @@ from tests.providers.microsoft365.microsoft365_fixtures import (
|
||||
)
|
||||
|
||||
|
||||
class Test_sharepoint_modern_authentication_required:
|
||||
class Test_sharepoint_settings_modern_authentication_required:
|
||||
def test_sharepoint_modern_authentication_disabled(self):
|
||||
"""
|
||||
Test when legacyAuth is False:
|
||||
@@ -20,16 +20,16 @@ class Test_sharepoint_modern_authentication_required:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_modern_authentication_required.sharepoint_modern_authentication_required.sharepoint_client",
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_modern_authentication_required.sharepoint_settings_modern_authentication_required.sharepoint_client",
|
||||
new=sharepoint_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_modern_authentication_required.sharepoint_modern_authentication_required import (
|
||||
sharepoint_modern_authentication_required,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_service import (
|
||||
SharePointSettings,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_modern_authentication_required.sharepoint_settings_modern_authentication_required import (
|
||||
sharepoint_settings_modern_authentication_required,
|
||||
)
|
||||
|
||||
sharepoint_client.settings = SharePointSettings(
|
||||
sharingCapability="ExternalUserAndGuestSharing",
|
||||
@@ -41,7 +41,7 @@ class Test_sharepoint_modern_authentication_required:
|
||||
)
|
||||
sharepoint_client.tenant_domain = DOMAIN
|
||||
|
||||
check = sharepoint_modern_authentication_required()
|
||||
check = sharepoint_settings_modern_authentication_required()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "PASS"
|
||||
@@ -66,16 +66,16 @@ class Test_sharepoint_modern_authentication_required:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_modern_authentication_required.sharepoint_modern_authentication_required.sharepoint_client",
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_modern_authentication_required.sharepoint_settings_modern_authentication_required.sharepoint_client",
|
||||
new=sharepoint_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_modern_authentication_required.sharepoint_modern_authentication_required import (
|
||||
sharepoint_modern_authentication_required,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_service import (
|
||||
SharePointSettings,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_modern_authentication_required.sharepoint_settings_modern_authentication_required import (
|
||||
sharepoint_settings_modern_authentication_required,
|
||||
)
|
||||
|
||||
sharepoint_client.settings = SharePointSettings(
|
||||
sharingCapability="ExternalUserAndGuestSharing",
|
||||
@@ -87,7 +87,7 @@ class Test_sharepoint_modern_authentication_required:
|
||||
)
|
||||
sharepoint_client.tenant_domain = DOMAIN
|
||||
|
||||
check = sharepoint_modern_authentication_required()
|
||||
check = sharepoint_settings_modern_authentication_required()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
@@ -114,14 +114,14 @@ class Test_sharepoint_modern_authentication_required:
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_modern_authentication_required.sharepoint_modern_authentication_required.sharepoint_client",
|
||||
"prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_modern_authentication_required.sharepoint_settings_modern_authentication_required.sharepoint_client",
|
||||
new=sharepoint_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_modern_authentication_required.sharepoint_modern_authentication_required import (
|
||||
sharepoint_modern_authentication_required,
|
||||
from prowler.providers.microsoft365.services.sharepoint.sharepoint_settings_modern_authentication_required.sharepoint_settings_modern_authentication_required import (
|
||||
sharepoint_settings_modern_authentication_required,
|
||||
)
|
||||
|
||||
check = sharepoint_modern_authentication_required()
|
||||
check = sharepoint_settings_modern_authentication_required()
|
||||
result = check.execute()
|
||||
assert len(result) == 0
|
||||
@@ -1,7 +1,14 @@
|
||||
import { AuthForm } from "@/components/auth/oss";
|
||||
import { isGithubOAuthEnabled, isGoogleOAuthEnabled } from "@/lib/helper";
|
||||
|
||||
const SignIn = () => {
|
||||
return <AuthForm type="sign-in" />;
|
||||
return (
|
||||
<AuthForm
|
||||
type="sign-in"
|
||||
isGoogleOAuthEnabled={isGoogleOAuthEnabled}
|
||||
isGithubOAuthEnabled={isGithubOAuthEnabled}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export default SignIn;
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { AuthForm } from "@/components/auth/oss";
|
||||
import { isGithubOAuthEnabled } from "@/lib/helper";
|
||||
import { isGoogleOAuthEnabled } from "@/lib/helper";
|
||||
import { SearchParamsProps } from "@/types";
|
||||
|
||||
const SignUp = ({ searchParams }: { searchParams: SearchParamsProps }) => {
|
||||
@@ -7,7 +9,14 @@ const SignUp = ({ searchParams }: { searchParams: SearchParamsProps }) => {
|
||||
? searchParams.invitation_token
|
||||
: null;
|
||||
|
||||
return <AuthForm type="sign-up" invitationToken={invitationToken} />;
|
||||
return (
|
||||
<AuthForm
|
||||
type="sign-up"
|
||||
invitationToken={invitationToken}
|
||||
isGoogleOAuthEnabled={isGoogleOAuthEnabled}
|
||||
isGithubOAuthEnabled={isGithubOAuthEnabled}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export default SignUp;
|
||||
|
||||
@@ -25,10 +25,14 @@ export const AuthForm = ({
|
||||
type,
|
||||
invitationToken,
|
||||
isCloudEnv,
|
||||
isGoogleOAuthEnabled,
|
||||
isGithubOAuthEnabled,
|
||||
}: {
|
||||
type: string;
|
||||
invitationToken?: string | null;
|
||||
isCloudEnv?: boolean;
|
||||
isGoogleOAuthEnabled?: boolean;
|
||||
isGithubOAuthEnabled?: boolean;
|
||||
}) => {
|
||||
const formSchema = authFormSchema(type);
|
||||
const router = useRouter();
|
||||
@@ -302,9 +306,11 @@ export const AuthForm = ({
|
||||
variant="bordered"
|
||||
as="a"
|
||||
href={getAuthUrl("google")}
|
||||
isDisabled={!isGoogleOAuthEnabled}
|
||||
>
|
||||
Continue with Google
|
||||
</Button>
|
||||
|
||||
<Button
|
||||
startContent={
|
||||
<Icon
|
||||
@@ -316,6 +322,7 @@ export const AuthForm = ({
|
||||
variant="bordered"
|
||||
as="a"
|
||||
href={getAuthUrl("github")}
|
||||
isDisabled={!isGithubOAuthEnabled}
|
||||
>
|
||||
Continue with Github
|
||||
</Button>
|
||||
|
||||
@@ -34,6 +34,14 @@ export const getAuthUrl = (provider: AuthSocialProvider) => {
|
||||
return url.toString();
|
||||
};
|
||||
|
||||
export const isGoogleOAuthEnabled =
|
||||
process.env.SOCIAL_GOOGLE_OAUTH_CLIENT_ID !== "" &&
|
||||
process.env.SOCIAL_GOOGLE_OAUTH_CLIENT_SECRET !== "";
|
||||
|
||||
export const isGithubOAuthEnabled =
|
||||
process.env.SOCIAL_GITHUB_OAUTH_CLIENT_ID !== "" &&
|
||||
process.env.SOCIAL_GITHUB_OAUTH_CLIENT_SECRET !== "";
|
||||
|
||||
export async function checkTaskStatus(
|
||||
taskId: string,
|
||||
): Promise<{ completed: boolean; error?: string }> {
|
||||
|
||||
Reference in New Issue
Block a user