Back to Checks
ECS instances should not use the default security group
ecs_instance_no_default_security_group
Service: ecsSeverity: medium
OfficialBuilt-inVerified
Categories:internet-exposed
Resource Type:NotDefined
Ensure that Elastic Cloud Server (ECS) instances do not use the default security group, which may have overly permissive rules.
Risk
The default security group in Huawei Cloud may allow unrestricted traffic. Using it for ECS instances increases the risk of unauthorized network access.
Run this check with Prowler
Run in Prowler CloudRun
prowler huaweicloud --checks ecs_instance_no_default_security_groupRecommendation
Create custom security groups with least-privilege rules and replace the default security group on all ECS instances.
Remediation
CLI
hcloud ECS NovaDisassociateSecurityGroup --server_id=<instance_id> --removeSecurityGroup.name="default"Other
1Log on to the **Huawei Cloud** console
2Navigate to **Elastic Cloud Server**
3Select the instance
4Click **More** > **Manage Security Group**
5Remove the **default security group**
6Attach a custom **security group** with restrictive rules
Check Code
from prowler.lib.check.models import Check, CheckReportHuaweiCloud
from prowler.providers.huaweicloud.services.ecs.ecs_client import ecs_client
class ecs_instance_no_default_security_group(Check):
"""Ensure ECS instances do not use the default security group."""
def execute(self) -> list[CheckReportHuaweiCloud]:
findings = []
for instance in ecs_client.instances.values():
report = CheckReportHuaweiCloud(metadata=self.metadata(), resource=instance)
report.region = instance.region
report.resource_id = instance.id
report.resource_arn = f"huaweicloud:ecs:{instance.region}:{ecs_client.audited_account}:instance/{instance.id}"
default_sgs = [
sg_id
for sg_id, sg_name in instance.security_groups.items()
if sg_name == "default" or sg_id == "default"
]
if default_sgs:
report.status = "FAIL"
report.status_extended = f"ECS instance {instance.name} ({instance.id}) uses the default security group: {', '.join(default_sgs)}."
else:
report.status = "PASS"
report.status_extended = f"ECS instance {instance.name} ({instance.id}) does not use the default security group."
findings.append(report)
return findings