Are you creating a security system for a SaaS application? This article is here to help! It lists the important questions to ask from the beginning of your project to avoid security breaches or functional limitations that will hold you back later.
Ideally, the security of your SaaS application should combine both strength and flexibility:
System strength will guarantee application security by:
· Controlling user access within the limits of their subscription
· Assuring data confidentiality between the users sharing the application
· Eliminating security breaches at protecting you from exterior attacks
System flexibility will contribute to the development of your business by:
· Facilitating the evolution of your business model and the creation of your offer
· Responding to client needs related to user management (see below)
· Supporting scalability: optimizing performance and simplifying administration of large numbers of users and secured components
This article lists the technical and functional specifications allowing you to attain both goals. It will help you conceptualize the security of your SaaS application, taking into account important constraints from the beginning of your project. You will thus be able to cover short terms needs, while at the same time anticipation any future evolutions necessary to the development of your business.
Administration: centralize or delegate?
Initially, you may be managing users and access rights yourself.
As the volume of users increases, you – and your clients – may wish to delegate certain administration rights so that your clients are managing their users and accounts themselves.
If this is the case, you will need:
- An administration interface accessible to non-technical users. You can then delegate user administration to local business managers
- This administration interface should offer all required access control functions via the Internet (account management, assignment of groups and access rights, visibility and control of security data…)
If you develop a multi-tenant Saas application (a single instance of the application used by multiple clients), you should restrain client administration rights to their own user accounts: you don’t want them to be able to modify another client’s accounts! More generally, you can restrict delegated access rights in three ways:
- Limit user account administration to a client, or a subset of the clients’ users.
- Limit the types of administration operations.
- Limit administration to certain application.
With all these possible scenarios, you need to plan a flexible access control system, allowing you to delegate several levels of administration rights, according to your clients’ internal organization and needs.
Deployment in the Cloud
- Adapt the system to the chosen platform. In the case of Windows AZURE, you must take into account the specifications of the operating system and SQL Azure.
- Adapt the scalability and sizing of your server resources according to the needs of your SaaS application
Pay-per-use Billing and Payment
If your business model is based on a pay-per-use SaaS model, or includes temporary use rights, you will access control system must support:
- User accounts with a limited time span
- An API enabling collaboration with a billing system to automatically update the expiry date of each account
- A user interface that allows the sales team or helpdesk to modify this information – for example, the treatment of unique cases or errors, taken immediately into effect for the user
Single Sign-On (SSO): a must for software suites
If your product catalogue is composed of a suite of applications, your access control system should probably include Single Sign-On to simplify the user experience:
- The user will be able to access multiple applications, passing freely from one to another
- If the applications make calls to Secured Web Services, the user will also be authenticated for each web service used
- The user will log in to the first site and will then be able to access other sites without having to re-enter their credentials (Single Sign-On)
A typical SSO system for SaaS applications includes the following functionalities:
1 – User session management:
When the user passes from one site to another, the SSO system should
- Identify the user
- Recreate their session for each site visited
- Load the security data (attributes, roles, permissions…)
To accomplish this, mechanisms to manage security tokens should be included (to create, transfer and secure the tokens). These mechanisms must be optimized, to avoid overloading the server (you cannot “simply” authenticate a user and then reload their security for each page visited: the response times become too long when the number of visits increases).
2 – Provide a Single Sign-On front-end:
A front-end authentication portal should:
- Allow a user to authenticate before accessing a website
- Memorize all or a part of a user’s credentials to avoid requiring users to re-enter them on each visit (for example, the username and password)
- Automatically redirect users that navigate between sites federated by the same SSO: the user will immediately arrive at the second site and their security profile is automatically applied
3 – Facilitate the integration of applications into the SSO system:
- Ideally, the integration of SSO should not require any changes in the application
- The integration process should be the same no matter the type of application and the development technology used
- It is likely that SSO will be used by developers other than those that created it. You should plan for corresponding documentation and assistance
4 – Support for complex configurations:
According to your needs, the Single Sign-On system may need to support the following situations:
- Not all sites are on the same network (LAN or WAN)
- Not all user accounts are stored in the same network as the SSO
- Not all sites are under the same web domain
- Not all sites are developed in the same technology
What if your users could reuse existing accounts?
By default, you will create a new account for each user that needs to access the SaaS application.
The problem with this is that a user will already have multiple accounts to remember.
Certain clients may wish to reuse their existing user accounts (for example, their Windows accounts). Your access control system should therefore permit giving these accounts access rights to your applications.
Anticipate changes in your business model:
An access control system is often tied to the business model (pay-per-use or perpetual license) and to the software delivery model (Saas or on premise)
Depending on your company’s strategy and the evolution of the market, your initial go-to-market strategy may be filled out by other models (for example, to serve new client categories or increase your line of products).
Your security system should allow for this type of evolution.
Here are several of the most pertinent models your company may want to look at:
Case 1: Default SaaS model.
The application is hosted by the vendor with the security system. Users access it via the Internet.
Customers pay to use your application on a time-limited, recurring basis.
Business model: pay-per-use
Software delivery model: SaaS
Case 2: For security or technical reasons, customers may request that you install the application in their environment. Users access it via LAN or Internet.
The vendor still manages the Access Control: customers pay to use the application on a time-limited, recurring basis.
Business model: pay-per-use
Software delivery model: on-premise
Case 3: Clients wish to reuse their user accounts (for example, their Windows accounts).
The access control system should therefore be able to give existing accounts access to your SaaS applications.
Business model: pay-per-use
Software delivery model: SaaS
Case 4: Classic software delivery model. The client owns a copy of the application. They manage access control themselves.
The software vendor can add this model to their catalogue (in addition to a SaaS model) to increase their product offering.
The access control system should be easily deployed to clients (simple and sound administration tools, completed documentation…).
For all that, this type of deployment does not prohibit a pay-per-use model. For that, you will need a system that manages license keys on a time-limited basis.
Business model: pay-per-use or perpetual license
Software delivery model: on-premise
Reliability and Performance:
The administration interface must be conceived to manage large numbers of users and access rights (to guide the administrator performing operations and searches, optimize the response time of the security repository…).
When the SaaS application is in to production, the user authentication process and the calculation of their access rights must be optimized to avoid long wait times. For example, a system that needs to access the security repository each time a user opens a new page has a greater chance of performance issues when the number of users and page views increases.
Protection against Security breaches:
Since a SaaS application is accessible via the internet and manages client data, it is necessary to create a system that will not be vulnerable to the following types of the most common attacks:
Unauthorized access to security data:
- Security data should not be readable by direct SQL access. You should require a connection via the SaaS application or via the administration interface to read and modify this data.
- Sensitive data like passwords should be encrypted.
Denial-of-service: the access control system should include protection against attempts to make it unavailable to customers by saturating it with numerous logon requests.
Unauthorized administration operations: a user could discover how to access the administration interface or the APIs that manage access control. You need to include protection that blocks giving supplementary access rights to user accounts.
Interception of confidential information:
- Between the client browser and the web server (Support for SSL/HTTPS protocols, encryption of communications between the browser and the web server…).
- Between the .NET components inside the SaaS application.
Password cracking: the access control system should allow you to define a sophisticated Password Policy to protect against password cracking (guessing a password via trial and error).
Packet sniffing: the access control system should include protection against the capture of data packets to find passwords or security tokens in transit over the network. A hacker could steal these tokens to make calls to the system as though they were a user.
The access control system probably contains search fields – for example, to find a user account. You need to pre-arm this system against SQL injections, which consist of inserting parts of SQL orders in the search, with the goal of consulting confidential information, or illegally changing the security data.
Make or buy?
Timeframe is key: we’ve seen in this article that security and access control for SaaS applications involve complex functionalities. If you are working on an internal project, they require a significant time commitment and skilled developers.
If you are working in a limited timeframe or the required expertise is not available, a ready-to-use access control solution may be the best solution.
Risk management: a ready-to-use solution will limit short-term risks (cost and time overruns, bugs and security breaches), but you will be exposed to other risks for which you will need to cover:
·Evolution: consult the history and past versions of the solution: does it follow the technical evolutions of the market; are new versions published regularly, and most importantly, recently (risk of obsolescence)?
- Product and support quality: choose a stable and well-deployed solution, for which you can consult the reviews of other users
- Longevity: what will happen if the solution provider disappears? Is the solution delivered with its source code? Does the provider propose an escrow agreement (a copy of the source code is deposited with a third party who will send it to all clients if there is an interruption in service by the provider)?
Why not combine all these advantages? If providers are attentive to their users’ needs when choosing how to continually evolve their application with the market, you will benefit from the advantages of a standard solution (more stable and complete at a lower cost) while being able to influence future development to better cover your specific needs. Ask to see the product roadmap and verify if the provider knows how to take into account user suggestions.