rules/findings/azure/storage/azure-storage-account-geo-redundancy-storage-not-set.json

{
    "provider": "Azure",
    "serviceType": "Storage Accounts",
    "serviceName": "Storage",
    "displayName": "Ensure Redundancy is set to 'geo-redundant storage (GRS)' on critical Azure Storage Accounts",
    "description": "Geo-redundant storage (GRS) in Azure replicates data three times within the primary region using locally redundant storage (LRS) and asynchronously copies it to a secondary region hundreds of miles away. This setup ensures high availability and resilience by providing 16 nines (99.99999999999999%) durability over a year, safeguarding data against regional outages.",
    "rationale": "Enabling GRS protects critical data from regional failures by maintaining a copy in a geographically separate location. This significantly reduces the risk of data loss, supports business continuity, and meets high availability requirements for disaster recovery.",
    "impact": "Enabling geo-redundant storage on Azure storage accounts increases costs due to cross-region data replication.",
    "remediation": {
        "text": "Remediate from Azure Portal 1. Go to Storage accounts. 2. Click on a storage account. 3. Under Data management, click Redundancy. 4. From the Redundancy drop-down menu, select Geo-redundant storage (GRS). 5. Click Save. 6. Repeat steps 1-5 for each storage account requiring remediation. Remediate from Azure CLI For each storage account requiring remediation, run the following command to enable geo-redundant storage:",
        "code": {
            "powerShell": null,
            "iac": null,
            "terraform": null,
            "other": null
        }
    },
    "recommendation": null,
    "references": [
        "https://learn.microsoft.com/en-us/azure/storage/common/storage-redundancy2",
        "https://learn.microsoft.com/en-us/azure/storage/common/redundancy-migration",
        "https://learn.microsoft.com/en-us/cli/azure/storage/account?view=azure-clilatest#az-storage-account-update",
        "https://learn.microsoft.com/en-us/powershell/module/az.storage/setazstorageaccount",
        "https://learn.microsoft.com/en-us/azure/storage/common/storage-disasterrecovery-guidance"
    ],
    "compliance": [
        {
            "name": "CIS Microsoft Azure Foundations",
            "version": "5.0.0",
            "reference": "9.3.11",
            "profile": [
                "Level 2"
            ]
        }
    ],
    "level": "info",
    "tags": [],
    "rule": {
        "path": "az_storage_accounts",
        "subPath": null,
        "selectCondition": {
             
        },
        "query": [
            {
                "filter": [
                    {
                        "conditions": [
                            [
                                "skuName",
                                "match",
                                "^(?!Standard_(GRS|GZRS|RAGRS|RAGZRS)$)"
                            ]
                        ]
                    }
                ]
            }
        ],
        "shouldExist": null,
        "returnObject": null,
        "removeIfNotExists": null
    },
    "output": {
        "html": {
            "data": {
                "properties": {
                    "name": "Name",
                    "location": "Location",
                    "ResourceGroupName": "ResourceGroupName",
                    "skuName": "SKU"
                },
                "expandObject": null
            },
            "table": "default",
            "decorate": [],
            "emphasis": [],
            "actions": {
                "objectData": {
                    "properties": [
                        "id",
                        "skuName",
                        "name",
                        "properties",
                        "locks"
                    ],
                    "expandObject": null,
                    "limit": null
                },
                "showGoToButton": "True",
                "showModalButton": "True",
                "directLink": null
            }
        },
        "text": {
            "data": {
                "properties": {
                    "name": "Name",
                    "location": "Location",
                    "ResourceGroupName": "ResourceGroupName",
                    "skuName": "SKU"
                },
                "expandObject": null
            },
            "status": {
                "keyName": ["name"],
                "message": "Ensure Redundancy is set to 'geo-redundant storage (GRS)' for {name} Storage Account",
                "defaultMessage": "Ensure Redundancy is set to 'geo-redundant storage (GRS)' on critical Azure Storage Accounts"
            },
            "properties": {
                "resourceName": "name",
                "resourceId": "id",
                "resourceType": "AzureStorageAccount"
            },
            "onlyStatus": false
        }
    },
    "idSuffix": "storage_accounts_geo_redundancy_not_set",
    "notes": [
         
    ],
    "categories": [
         
    ],
    "immutable_properties": [
        "id"
    ],
    "id": "azure_storage_021"
}