Skip to content

Commit 4b79557

Browse files
fix(alibabacloud): implement ram_password_policy_number and fix cs weekly check loading (#11685)
Co-authored-by: Daniel Barranquero <74871504+danibarranqueroo@users.noreply.github.com>
1 parent 46f4ef5 commit 4b79557

4 files changed

Lines changed: 109 additions & 0 deletions

File tree

prowler/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
All notable changes to the **Prowler SDK** are documented in this file.
44

5+
## [5.31.1] (Prowler UNRELEASED)
6+
7+
### 🐞 Fixed
8+
9+
- Alibaba Cloud `ram_password_policy_number` and `cs_kubernetes_cluster_check_weekly` checks not being loaded due to missing implementation and package files [(#11683)](https://github.com/prowler-cloud/prowler/pull/11683)
10+
11+
---
12+
513
## [5.31.0] (Prowler v5.31.0)
614

715
### 🚀 Added

prowler/providers/alibabacloud/services/cs/cs_kubernetes_cluster_check_weekly/__init__.py

Whitespace-only changes.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from prowler.lib.check.models import Check, CheckReportAlibabaCloud
2+
from prowler.providers.alibabacloud.services.ram.ram_client import ram_client
3+
4+
5+
class ram_password_policy_number(Check):
6+
"""Check if RAM password policy requires at least one number."""
7+
8+
def execute(self) -> list[CheckReportAlibabaCloud]:
9+
findings = []
10+
11+
if ram_client.password_policy:
12+
report = CheckReportAlibabaCloud(
13+
metadata=self.metadata(), resource=ram_client.password_policy
14+
)
15+
report.region = ram_client.region
16+
report.resource_id = f"{ram_client.audited_account}-password-policy"
17+
report.resource_arn = (
18+
f"acs:ram::{ram_client.audited_account}:password-policy"
19+
)
20+
21+
if ram_client.password_policy.require_numbers:
22+
report.status = "PASS"
23+
report.status_extended = (
24+
"RAM password policy requires at least one number."
25+
)
26+
else:
27+
report.status = "FAIL"
28+
report.status_extended = (
29+
"RAM password policy does not require at least one number."
30+
)
31+
32+
findings.append(report)
33+
34+
return findings
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
from unittest import mock
2+
3+
from tests.providers.alibabacloud.alibabacloud_fixtures import (
4+
set_mocked_alibabacloud_provider,
5+
)
6+
7+
8+
class TestRamPasswordPolicyNumber:
9+
def test_numbers_not_required_fails(self):
10+
ram_client = mock.MagicMock()
11+
ram_client.audited_account = "1234567890"
12+
ram_client.region = "cn-hangzhou"
13+
14+
with (
15+
mock.patch(
16+
"prowler.providers.common.provider.Provider.get_global_provider",
17+
return_value=set_mocked_alibabacloud_provider(),
18+
),
19+
mock.patch(
20+
"prowler.providers.alibabacloud.services.ram.ram_password_policy_number.ram_password_policy_number.ram_client",
21+
new=ram_client,
22+
),
23+
):
24+
from prowler.providers.alibabacloud.services.ram.ram_password_policy_number.ram_password_policy_number import (
25+
ram_password_policy_number,
26+
)
27+
from prowler.providers.alibabacloud.services.ram.ram_service import (
28+
PasswordPolicy,
29+
)
30+
31+
ram_client.password_policy = PasswordPolicy(require_numbers=False)
32+
33+
check = ram_password_policy_number()
34+
result = check.execute()
35+
36+
assert len(result) == 1
37+
assert result[0].status == "FAIL"
38+
39+
def test_numbers_required_passes(self):
40+
ram_client = mock.MagicMock()
41+
ram_client.audited_account = "1234567890"
42+
ram_client.region = "cn-hangzhou"
43+
44+
with (
45+
mock.patch(
46+
"prowler.providers.common.provider.Provider.get_global_provider",
47+
return_value=set_mocked_alibabacloud_provider(),
48+
),
49+
mock.patch(
50+
"prowler.providers.alibabacloud.services.ram.ram_password_policy_number.ram_password_policy_number.ram_client",
51+
new=ram_client,
52+
),
53+
):
54+
from prowler.providers.alibabacloud.services.ram.ram_password_policy_number.ram_password_policy_number import (
55+
ram_password_policy_number,
56+
)
57+
from prowler.providers.alibabacloud.services.ram.ram_service import (
58+
PasswordPolicy,
59+
)
60+
61+
ram_client.password_policy = PasswordPolicy(require_numbers=True)
62+
63+
check = ram_password_policy_number()
64+
result = check.execute()
65+
66+
assert len(result) == 1
67+
assert result[0].status == "PASS"

0 commit comments

Comments
 (0)