feat(policy): extract Policy resource metadata automated (#6558)

This commit is contained in:
Rubén De la Torre Vico
2025-01-16 16:29:28 +01:00
committed by GitHub
parent ee7d32d460
commit dc80b011f2
4 changed files with 64 additions and 41 deletions
@@ -8,13 +8,13 @@ class policy_ensure_asc_enforcement_enabled(Check):
for subscription_name, policies in policy_client.policy_assigments.items():
if "SecurityCenterBuiltIn" in policies:
report = Check_Report_Azure(self.metadata())
report.status = "PASS"
report = Check_Report_Azure(
metadata=self.metadata(),
resource_metadata=policies["SecurityCenterBuiltIn"],
)
report.subscription = subscription_name
report.resource_name = "SecurityCenterBuiltIn"
report.resource_id = policies["SecurityCenterBuiltIn"].id
report.status = "PASS"
report.status_extended = f"Policy assigment '{policies['SecurityCenterBuiltIn'].id}' is configured with enforcement mode '{policies['SecurityCenterBuiltIn'].enforcement_mode}'."
if policies["SecurityCenterBuiltIn"].enforcement_mode != "Default":
report.status = "FAIL"
report.status_extended = f"Policy assigment '{policies['SecurityCenterBuiltIn'].id}' is not configured with enforcement mode Default."
@@ -7,7 +7,6 @@ from prowler.providers.azure.azure_provider import AzureProvider
from prowler.providers.azure.lib.service.service import AzureService
########################## Policy
class Policy(AzureService):
def __init__(self, provider: AzureProvider):
super().__init__(PolicyClient, provider)
@@ -27,6 +26,7 @@ class Policy(AzureService):
{
policy_assigment.name: PolicyAssigment(
id=policy_assigment.id,
name=policy_assigment.name,
enforcement_mode=policy_assigment.enforcement_mode,
)
}
@@ -42,4 +42,5 @@ class Policy(AzureService):
@dataclass
class PolicyAssigment:
id: str
name: str
enforcement_mode: str
@@ -13,12 +13,15 @@ class Test_policy_ensure_asc_enforcement_enabled:
policy_client = mock.MagicMock
policy_client.policy_assigments = {}
with mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_azure_provider(),
), mock.patch(
"prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled.policy_client",
new=policy_client,
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_azure_provider(),
),
mock.patch(
"prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled.policy_client",
new=policy_client,
),
):
from prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled import (
policy_ensure_asc_enforcement_enabled,
@@ -32,12 +35,15 @@ class Test_policy_ensure_asc_enforcement_enabled:
policy_client = mock.MagicMock
policy_client.policy_assigments = {AZURE_SUBSCRIPTION_ID: {}}
with mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_azure_provider(),
), mock.patch(
"prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled.policy_client",
new=policy_client,
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_azure_provider(),
),
mock.patch(
"prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled.policy_client",
new=policy_client,
),
):
from prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled import (
policy_ensure_asc_enforcement_enabled,
@@ -52,16 +58,21 @@ class Test_policy_ensure_asc_enforcement_enabled:
resource_id = uuid4()
policy_client.policy_assigments = {
AZURE_SUBSCRIPTION_ID: {
"policy-1": PolicyAssigment(id=resource_id, enforcement_mode="Default")
"policy-1": PolicyAssigment(
id=resource_id, name="policy-1", enforcement_mode="Default"
)
}
}
with mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_azure_provider(),
), mock.patch(
"prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled.policy_client",
new=policy_client,
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_azure_provider(),
),
mock.patch(
"prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled.policy_client",
new=policy_client,
),
):
from prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled import (
policy_ensure_asc_enforcement_enabled,
@@ -73,21 +84,26 @@ class Test_policy_ensure_asc_enforcement_enabled:
def test_policy_subscription_asc_default(self):
policy_client = mock.MagicMock
resource_id = uuid4()
resource_id = str(uuid4())
policy_client.policy_assigments = {
AZURE_SUBSCRIPTION_ID: {
"SecurityCenterBuiltIn": PolicyAssigment(
id=resource_id, enforcement_mode="Default"
id=resource_id,
name="SecurityCenterBuiltIn",
enforcement_mode="Default",
)
}
}
with mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_azure_provider(),
), mock.patch(
"prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled.policy_client",
new=policy_client,
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_azure_provider(),
),
mock.patch(
"prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled.policy_client",
new=policy_client,
),
):
from prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled import (
policy_ensure_asc_enforcement_enabled,
@@ -107,22 +123,26 @@ class Test_policy_ensure_asc_enforcement_enabled:
def test_policy_subscription_asc_not_default(self):
policy_client = mock.MagicMock
resource_id = uuid4()
resource_id = str(uuid4())
policy_client.policy_assigments = {
AZURE_SUBSCRIPTION_ID: {
"SecurityCenterBuiltIn": PolicyAssigment(
id=resource_id,
name="SecurityCenterBuiltIn",
enforcement_mode="DoNotEnforce",
)
}
}
with mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_azure_provider(),
), mock.patch(
"prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled.policy_client",
new=policy_client,
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_azure_provider(),
),
mock.patch(
"prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled.policy_client",
new=policy_client,
),
):
from prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled import (
policy_ensure_asc_enforcement_enabled,
@@ -13,7 +13,9 @@ from tests.providers.azure.azure_fixtures import (
def mock_policy_assigments(_):
return {
AZURE_SUBSCRIPTION_ID: {
"policy-1": PolicyAssigment(id="id-1", enforcement_mode="Default")
"policy-1": PolicyAssigment(
id="id-1", name="policy-1", enforcement_mode="Default"
)
}
}