Distributed security: specification #37
Replies: 7 comments
-
I would add that it should be possible for an admin to revoke access that has been previously granted. (If someone leaves DevResults, they can no longer access our Asana or FreshDesk, including items they've already seen.) |
Beta Was this translation helpful? Give feedback.
-
yup that's a good point. I've added points 5 & 6 above. |
Beta Was this translation helpful? Give feedback.
-
I'm also wondering about things like password reset flows. At the meeting, you talked about everyone having an encryption key. In most web apps I expect to have a password that is unique to me and that I can control. |
Beta Was this translation helpful? Give feedback.
-
Obviously there are limits to what you can do to retroactively conceal information from someone if you've already disclosed it to them! |
Beta Was this translation helpful? Give feedback.
-
My thinking about authentication is that you'd have your identity verified by an OAuth2 provider - could be Google, or an organization's SSO, or whatever. Any keys you required would be derived by the software from your identity and used as needed - a user wouldn't normally see or know about their keys. I'm drafting an outline of the solution I have in my head & I'll post that somewhere else for everyone to poke holes in it. |
Beta Was this translation helpful? Give feedback.
-
I realize that this is mostly a discussion for the specification of the situations that our authentication & authorization systems should cover but I'm wondering what research has been done in this arena. Surely there are papers or projects dedicated to authentication and authorization in distributed & peer-to-peer systems. I'll be very surprised if we're pioneering new ground here and I think that even bad examples/implementations should shed a lot of light on the possibilities of this working or not. I think it's worth spending some time trying to find existing evidence of this before we try to completely invent it. Regardless of the authentication/authorization potential, my personal opinion is that there is an audience (even if it is not DevResults and we choose to just turn this over as a public OSS project) for a non-centralized system even if it only offers equal permissions for all members. |
Beta Was this translation helpful? Give feedback.
-
I've posted a draft approach in #38; to discuss. |
Beta Was this translation helpful? Give feedback.
-
When all data resides on a server, authentication and authorization are well-understood problems with lots of off-the-shelf solutions to choose from. The server acts as a gatekeeper between users and the data: If you don't have the correct credentials, the server just won't let you see data you're not allowed to see, or change it in unauthorized ways.
In a distributed architecture, where data is transmitted from peer to peer and there is no server acting as a central point of access, we'll need a different approach.
The purpose of this issue is to describe the problems of authentication and authorization in the context of Cevitxe's distributed collaboration framework, and specify the criteria that an acceptable solution must meet.
Scenario
Alice has created a Cevitxe repository: a staff database for an organization that does clandestine work.
Sample data
Roles
Each actor belongs to one of these roles:
*An actor can only write data they can also read; in this column "all" really means "all visible".
Actors
Requirements
Authentication
Authorization
Administrative permissions: Only roles marked as
admin
can modify permissions, including designating other roles asadmin
.Record-level permissions: Some people work in civilian support roles, some work as secret agents. Agents' identities are very sensitive information: Their records should only be visible to users with the appropriate clearance.
Field-level permissions: Salary information is also sensitive, because the organization has not gone through the difficult but ultimately worthwhile process of salary transparency.
An actor's permissions must be enforced whether or not they're online.
An admin can update permissions for any role at any time, including adding, removing, or modifying any of its specific authorizations. The updated permissions will be replicated to all other peers (immediately or the next time they connect) and will be enforced as soon as they are received.
An admin can change an actor's role at any time. That change will be replicated to all other peers (immediately or the next time they connect). The affected actor's new permissions will be enforced as soon as they receive them.
Examples
Using the above sample data along with the given roles, here's what some specific actors should see.
Carol
As an auditor, Carol can see all data but can't edit any of it.
Dan
As a civilian, Dan can't see anything about agents, and he can't see any salary information.
Frank
As civilian HR, Frank can't see agents but can see and edit salary information.
Gloria
As a civilian manager, Gloria can't see agents; she can see salaries but not change them.
Beta Was this translation helpful? Give feedback.
All reactions