Description
Main idea
Our current user authentication architecture allows user to have only one keypair at once. Let's extend this architecture so that we can let users create multiple keypairs for a single account.
We can split this issue to smaller chunks, like:
-
manager: let main keypair (the one generated when creating user) as a "default keypair" to user, and use it as a login credential when logging in to Backend.AI WebUI with session mode
-
manager: add API to support arbitrary keypair creation/removal*
limit additional keypairs not to have resource limits bigger than default keypair -
feature: Materialization of the "main" keypair concept #1761 now enforces user-wide resource constraints via the main keypair's resource policy
-
Migrate and merge the keypair resource policy into the user resource policy
-
manager: search for usages of keypair in manager code, and if the structure isn't suitable for multiple keypair situation, update it
-
webui: create corresponding UI for keypair creation/removal
Side-effects of keypair-based resource policy
-
What users wanted* lablup/giftbox#191
-
lablup/giftbox#10
-
Bulk-updating project-wise user (=keypair) resource policies with a filtered view of projects that the keypair's owner is a member of.
-
We implemented feat: Let the queryfilter-minilang engine to fetch multiple rows from joined tables #1022 to add the "projects" column to the view of "keypairs" in the control panel.
-
Side-effects that happened* User who doesn't have a project cannot log in. #1625
-
23.09: Polish the current multiple keypair scheme
{code:[tasklist]}
Tasks
- fix: Unable to login and missing keypairs when a user does not have any project #1360
- feature: Materialization of the "main" keypair concept #1761
- fix: Update fixtures to include setting main keypairs #1785
- fix: Regression of purging user due to fkey constraint of
main_access_key
#1775
{code}
- 24.03: Ultimately we need to deprecate per-keypair resource policy and keep per-user resource policy only.* fix: Deprecates querying projects from KeyPair query #1779
- Split the
users
table intoidentities
anduser_profiles
#1783
Activity