Networks are administratively enabled
OpenStack networks are evaluated to verify that admin_state_up is True (administratively enabled). Networks with admin_state_up=False cannot carry traffic and are typically disabled temporarily during maintenance or troubleshooting. Best practices recommend re-enabling networks promptly after maintenance to prevent service outages from forgotten disabled networks.
Risk
Networks with admin_state_up=False cause complete connectivity loss for all attached instances, preventing access to databases, APIs, and storage. Forgotten disabled networks after maintenance result in prolonged outages that violate SLAs. Multi-tier applications (web-app-db) fail when inter-tier networks are disabled, breaking functionality even when instances are healthy.
Run this check with Prowler
Run in Prowler Cloudprowler openstack --checks networking_admin_state_downRecommendation
Enable admin state on all production networks unless there is a documented maintenance window. Implement change management procedures to track network administrative state changes and ensure re-enablement after maintenance. Use monitoring alerts to detect when networks remain disabled longer than expected.
Remediation
CLI
openstack network set --enable <network_id>Terraform
resource "openstack_networking_network_v2" "network" {
name = "app-network"
admin_state_up = true # GOOD: Administratively enabled
}Other
Check Code
"""OpenStack Network Admin State Check."""
from typing import List
from prowler.lib.check.models import Check, CheckReportOpenStack
from prowler.providers.openstack.services.networking.networking_client import (
networking_client,
)
class networking_admin_state_down(Check):
"""Ensure networks are administratively enabled."""
def execute(self) -> List[CheckReportOpenStack]:
"""Execute networking_admin_state_down check.
Iterates over all networks and verifies that admin_state_up is True,
meaning networks are administratively enabled and operational.
Returns:
list[CheckReportOpenStack]: List of findings for each network.
"""
findings: List[CheckReportOpenStack] = []
for network in networking_client.networks:
report = CheckReportOpenStack(metadata=self.metadata(), resource=network)
report.resource_id = network.id
report.resource_name = network.name
report.region = network.region
if not network.admin_state_up:
report.status = "FAIL"
report.status_extended = f"Network {network.name} ({network.id}) is administratively disabled (admin_state_up=False) and cannot carry traffic."
else:
report.status = "PASS"
report.status_extended = f"Network {network.name} ({network.id}) is administratively enabled."
findings.append(report)
return findings