FSx Windows file system is configured for Multi-AZ deployment
FSx for Windows File Server file systems are evaluated for Multi-AZ deployment, determined when SubnetIds include more than one subnet in different Availability Zones.
Risk
Using Single-AZ creates a single point of failure. AZ outages, server failures, or maintenance can cause extended file share downtime, impacting availability. Crash scenarios may leave data inconsistent, threatening integrity, and recovery may rely on backups, increasing RTO/RPO.
Run this check with Prowler
Run in Prowler Cloudprowler aws --checks fsx_windows_file_system_multi_az_enabledRecommendation
Prefer MULTI_AZ_1 for production to uphold high availability and avoid AZ-level single points of failure. Apply resilience and defense in depth: design to tolerate AZ loss, capacity-plan for failover, and test failover regularly. If Single-AZ is unavoidable, limit to noncritical or app-replicated workloads and keep frequent, verified backups.
Remediation
Terraform
# Terraform: FSx for Windows File Server configured for Multi-AZ
resource "aws_fsx_windows_file_system" "<example_resource_name>" {
storage_capacity = 32
subnet_ids = ["<example_subnet_id_1>", "<example_subnet_id_2>"] # CRITICAL: two subnets in different AZs
throughput_capacity = 8
deployment_type = "MULTI_AZ_1" # CRITICAL: enables Multi-AZ deployment
preferred_subnet_id = "<example_subnet_id_1>"
}NativeIaC
# CloudFormation: Create FSx for Windows File Server with Multi-AZ
Resources:
<example_resource_name>:
Type: AWS::FSx::FileSystem
Properties:
FileSystemType: WINDOWS
StorageCapacity: 32
SubnetIds:
- <example_subnet_id_1> # CRITICAL: two subnets -> Multi-AZ across AZs
- <example_subnet_id_2> # CRITICAL: two subnets -> Multi-AZ across AZs
WindowsConfiguration:
ThroughputCapacity: 8
DeploymentType: MULTI_AZ_1 # CRITICAL: enables Multi-AZ deployment
PreferredSubnetId: <example_subnet_id_1>Other
Check Code
from prowler.lib.check.models import Check, Check_Report_AWS
from prowler.providers.aws.services.fsx.fsx_client import fsx_client
class fsx_windows_file_system_multi_az_enabled(Check):
def execute(self):
findings = []
for file_system in fsx_client.file_systems.values():
if file_system.type == "WINDOWS":
report = Check_Report_AWS(
metadata=self.metadata(), resource=file_system
)
if len(file_system.subnet_ids) > 1:
report.status = "PASS"
report.status_extended = f"FSx Windows file system {file_system.id} is configured for Multi-AZ deployment."
else:
report.status = "FAIL"
report.status_extended = f"FSx Windows file system {file_system.id} is not configured for Multi-AZ deployment."
findings.append(report)
return findingsReferences
- https://docs.aws.amazon.com/fsx/latest/WindowsGuide/dfs-r.html
- https://docs.aws.amazon.com/fsx/latest/APIReference/API_WindowsFileSystemConfiguration.html
- https://docs.aws.amazon.com/securityhub/latest/userguide/fsx-controls.html
- https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html