0

For example there is a simple CRUD record management application. Let for simplicity the records are some documents.

I need to implement a mandatory access control to the records. For example if some record is marked as confidential, then only users with a confidential access level can work with this record. Sounds trivial :)

The problem is that I don't want to certificate the application, and I need to move authorization function to some external system. If it's a desktop application then the user can be authenticated using his credentials, and then these credentials are used to access a database. So the authorization is implemented on the database level. I don't need to certificate my application.

But my application is a web one. The app backend connects to the database using a single system user. So the authorization is implemented on the backend level and I have to certificate it.

Everything is complicated even more by the fact that the backend uses GraphQL API. If it would be a REST API, then I could place some security proxy between frontend and backend filtering REST API requests, and certificate this proxy only. But it's a GraphQL.

The only solution I see is to create two separate web-applications: 1) with access to public information 2) with access to public and confidential information. For both applications the single database is used with two tables: public_records and confidential_records. 1st application is connected to the database using a system user with access to public_records. 2nd application is connected to the database using a system user with access to both tables.

Maybe you could suggest a better solution?

Denis
  • 153
  • 3

0 Answers0