SEC 2: How are you ensuring that tenant resources are protected from cross-tenant access?

Create isolation boundaries between the tenants of your system, ensuring that tenants are not able to access the resources of another tenant. Use AWS accounts, network constructs, microservice decomposition, and policies to define and enforce these boundaries.

Resources

SaaS Tenant Isolation Strategies Isolating Resources in a Multi-Tenant Environment Whitepaper
Isolating SaaS Tenants with Dynamically Generated IAM Policies
SaaS Tenant Isolation Patterns (ARC372-P)
Modeling SaaS Tenant Profiles on AWS
SaaS Storage Strategies whitepaper

Best Practices:

Improvement Plan

Use coarse-grained constructs, application-enforced policies, or both

  • Use a silo isolation model for resources that have strict isolation requirements
  • For compute isolation, tenants must have dedicated compute resources. These resources can be separate EC2 instances, separate container clusters, or separate functions for each tenant. These resources run in the context of specific IAM roles that scope their access to downstream resources.
    SaaS Tenant Isolation Strategies Isolating Resources in a Multi-Tenant Environment Whitepaper
  • For storage isolation, tenant data is partitioned in a way that each has distinct storage resources. This partitioning could be achieved using separate databases for each tenant with Amazon RDS, separate tables with DynamoDB, separate buckets/keys for S3, and so on. Data for tenants is not comingled in this model. Each storage service can have its own notion of isolation.
    SaaS Storage Strategies whitepaper
  • For message processing with Amazon SQS, tenants have dedicated queues that process their messages to isolate message processing.
  • Use application-enforced policies to enforce tenant isolation boundaries
  • Apply a combination of IAM and application-enforced policies

  • IAM is used to configure and enforce tenant isolation policies
  • Add application-enforced policies with IAM