v2.0.0 #3396
t83714
announced in
Announcements
v2.0.0
#3396
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
v2.0.0
v2.0.0 is the first major release since v1.0.0 was released last year. This release focuses on implementing the new policy engine based authorisation system design.
Overview
Before v2.0.0, we had started introducing the Open Policy Agent (OPA) as the central policy engine serving authorisation decisions at a handful of API endpoints. However, the following problems prevent us from rolling out the design to the whole system:
dcat-dataset-string
aspect.authnReadPolicyId
) to pick a responsible policy file.negated
) and local query translatorTo solve those issues, we introduced a new authorisation system design & implementation that:
object/record/read
) to ensure decision requests are properly routed. e.g.:object/record
), a joined decision will be given, including all subset resources policies (e.g.object/dataset
,object/distribution
etc.).object/dataset
, no matter whether we query it via registry API (require the permission ofobject/record/record
operation) or dataset search API (require the permission ofobject/dataset/read
operation) as the resourceobject/dataset
is a subset of resourceobject/record
.authnReadPolicyId
field) with the help of the single entry point policy model. Make it possible to create user-defined resources & operations.More Powerful APIs with fine-grained access control
Thanks to the new authorisation system design. We are able to re-implement fine-grained access control to ALL our existing APIs.
Many APIs (e.g. indexer APIs) that previously were not accessible outside the cluster can be accessible outside the cluster as we are able to grant access to non-admin users that enable more use cases.
With the help of the new policy mode, we still are able to make sure all APIs are compatible with existing plugins & sub-systems. Although all requests between sub-systems are now all governed by the policy engine now, requests from existing sub-systems will still work as existing admin users still have access to any resources.
However, authors of existing plugins/sub-systems might consider updating the code and using an account with the least privilege to communicate with the core APIs as it's possible now with fine-grained access control of APIs.
New Settings Panel
v2.0.0 also comes with a new settings panel for all signed-in users. Depending on your access, you might have access to different sections. e.g. all users should at least be able to access the "My Account" tab and users with the admin role can access all tabs. The settings panel UI is supplied to simplify the common admin tasks such as: users, roles, permissions, resources and operations management.
For a brand new system, to assign the admin role to the first user, please refer to this doc to set a user as admin using
acs-cmd
command line tool.Github Container Registry
Since v2.0.0, we also publish all our helm chart & docker images to Github Container Registry (in addition to existing HTTP helm chart repo & docker hub docker image releases ).
If you want to try our helm chart via OCI registry or prefer using a different docker registry other than the docker hub, you can give it a try.
Breaking Changes & Compatibility
authnReadPolicyId
field is not supported anymore.object/resourceB
should be put into packageobject.resourceB
. You might also want to read the decision API docisAdmin
field on the user will no longer grant the user the admin permission anymore.Migration
If you are on version <= v1.3.1, you should be able to migrate to v2.0.0 simply by deploying the v2.0.0 Helm Chart.
If you are any of the v2 alpha versions (e.g.
v2.0.0-alpha.8
), you will have to complete uninstall Magda before upgrading to v2.0.0 as the SQL migration files won't tell the difference between v2.0.0 and any of the v2 alpha versions.Changes since v1.3.1
dataset-access-control
aspect toaccess-control
aspectrecords/:id/aspects
&records/:id/aspects/count
APIs to registryorgUnitOwnerId
field toorgUnitId
#3333 Rename access-control aspect orgUnitOwnerId field to orgUnitIdallowAutoCrawlOnStartingUp
option to indexer/v0/status/live
&/v0/status/ready
endpoint to indexerServiceRunner
to launch an integrated test & dev environmentServiceRunner
rather than mini k8s clusterkind
debug
switch to registry API, search API & Auth APIauthnReadPolicyId
record fieldobject/registry/*
versionUpdateExclude
config in package.json is emptyset-scss-vars
script will use proper imagePullSecrets to generate the UI CSS update jobno cache
behaviour ofwhoami
&getUserById
api to be turned offGroup
concept as both a container that organises datasets and an access control toolkit for some use cases #3269 Backend support for Access Grouptarget
&rel
fields to footer link item schemadcat-dataset-strings
aspect for draft datasetsreversePageTokenOrder
parameter to registry APIsGET /records
,GET /records/summary
&GET /records/:recordId/history
publishing
aspect will be considered publishedmagda-scss-compile
#3317 Use multi-stage builds to build magda-scss-compileMUST_BE_ADMIN
middleware in auth API #3352 Remove usage of MUST_BE_ADMIN middleware in auth APIThis discussion was created from the release v2.0.0.
Beta Was this translation helpful? Give feedback.
All reactions