Skip to content

Decouple package and repository permissions

Tim Rizzi requested to merge trizzi-master-patch-86776 into master

What does this MR do?

Relates to #332028 (comment 590728831)

This MR decouples the package registry permissions from the repository permissions.

Notes from the issue:

  • Deploy tokens get access to packages through a special condition in the project policy.
    • This works as expected
  • Now we have a negative rule that basically says if one of the below is true, all packages permissions are removed:
    • The packages feature is disabled
    • The repository feature is disabled
  • The ~bug lies when checking the repository feature. This check is mainly done by verifying if the user has access to the project feature.
  • Let's break down how this "has the current user access to this project feature" function:
    1. if the feature is currently DISABLED, well, we return false
    2. if the feature is currently PRIVATE, we check that the current user has the proper minimum access level for the feature
    3. all other cases (including feature is ENABLED), we return true
  • The problem is that when (2.) is evaluated against a DeployToken object, the backend thinks that it has no access level at all.
    • This case will reject the user from getting the package permissions.

Screenshots (strongly suggested)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

Does this MR contain changes to processing or storing of credentials or tokens, authorization and authentication methods or other items described in the security review guidelines? If not, then delete this Security section.

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team

Merge request reports