DEV Community

Jacob Paris
Jacob Paris

Posted on

3 1

Thoughts on SaaS Tenant-Level User Management

Background

I'm designing a multi-tenant SaaS app to help businesses manage inventory. The backend is all Serverless using AWS Lambda for business logic, Cognito for user management and role access, DynamoDB for data storage, CloudFormation for configuring and updating the stack, as well as provisioning new tenants.

The frontend is JAMStack vanilla javascript hosted on S3 and provided by Cloudfront Edge.

Each code push triggers a Lambda function that builds the project, runs tests, and if successful pushes any new lambdas and replaces the static web assets.

User Management

Every user account is assigned a tenant-id that matches them to the company they work for. Using IAM I can create Groups for each user to manage their roles. HR, Dispatch, Warehouse, and Driver might be good examples, each with specific role access on the backend that defines which resources they can interact with, and are also exposed to the front end so I can customize the interface to reflect the actions they can take.

Someone who has read-only access to the inventory won't be able to select items, because they can't do anything with them if they could.

The HR group has read and write permissions for users. When there's a new hire, it's up them to create a new user account and assign it the relevant role.

I don't want to let HR have access to the user's password, so either the user changes their assigned password later or I open account creation to the public and then it becomes HR's job to assign roles to the account after the user creates it. I like that better, but I'm unsure how well that will work with many accounts to create and roll out. They might prefer to batch out a whole fleet of accounts and let the users handle their own authentication afterward.

Image of Datadog

The Essential Toolkit for Front-end Developers

Take a user-centric approach to front-end monitoring that evolves alongside increasingly complex frameworks and single-page applications.

Get The Kit

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay