Yep, using separate storage accounts per client-environment (e.g., ClientA-Dev
, ClientA-Pre
, ClientA-Pro
) is a good practice for stronger isolation and security, particularly in multi-tenant architectures. This gives you the following benefits
- Isolation & Security
- Stronger isolation between environments (Dev, Pre, Prod) prevents accidental data mixing.
- Separate access controls (IAM, networking, firewall rules) per environment.
- Compliance benefits by keeping production data strictly separate.
- Performance & Scalability
- Azure Storage has scalability limits (e.g., transactions per second).
- Isolating environments prevents Dev/Test workloads from affecting Production.
- Easier to scale independently per environment.
- Cost Optimization
- Separate billing & monitoring per environment.
- Cost controls (e.g., setting different lifecycle policies for Dev vs. Prod).
- Can enforce lower-cost redundancy options in non-production environments.
- Operational Flexibility
- Easier rollback strategies (e.g., deleting
ClientA-Dev
storage without affectingClientA-Pro
). - Environment-specific storage policies (e.g., shorter retention for Dev).
- Easier rollback strategies (e.g., deleting
However, if managing multiple storage accounts becomes too complex, you could consider a single storage account per client, with containers per environment:
Storage Account: ClientA
Containers:
- dev-bronze
- dev-silver
- dev-gold
- pre-bronze
- pre-silver
- pre-gold
- pro-bronze
- pro-silver
- pro-gold
To conclude, for higher security and isolation, stick with one storage account per client-environment. If complexity becomes a challenge, evaluate a single account per client with environment-specific containers.
If the above response helps answer your question, remember to "Accept Answer" so that others in the community facing similar issues can easily find the solution. Your contribution is highly appreciated.
hth
Marcin