Outline of the authorization Doc for 4.3
Overview
TBD
Highlights of the Auth policy
Pluggable authorization backend
Supports granular privileges at individual entity level
Privileges on each entity are evaluated independently
Privileges are not hierarchical
Supports wildcard privileges for simpler privilege management
Only admins of the authorization backend can do grants
Brief overview of the auth policy
Supported privileges - READ, WRITE, EXECUTE, ADMIN
Create or deploy or delete an entity - ADMIN on the entity
Read from a dataset or stream or secure key - READ on the entity
Write to a dataset or stream or secure key - WRITE on the entity
Execute a program - EXECUTE on the program
Deploy an app that runs impersonating another user - ADMIN on the principal
Get information (need a good term) on an entity - any privilege on the entity
For an entity to be visible to an user - any privilege on the entity or its descendants
Give a link to the auth matrix here
Misc usage notes
Explain Wildcards etc.
We can discuss -
what wildcard privileges are required to make someone an admin on all entities in a namespace, etc
wildcard privileges required to give someone execute on all programs in an app
Sentry integration
Grant revoke list commands for Sentry along with entity formats and wildcards (* and ?)
Talk about roles, groups, how to assign privileges etc. here
Sentry property to update to add an admin, etc.
After any update to privileges, user/group wait for 15 mins (depends on cache timeout)
Differences between 4.2 and 4.3
No hierarchy
No instance admin, no privileges on instance
No auto-grants to entity creator
Pre-grants on entity required to create entities
Migrating from 4.2 to 4.3
Come up with the new authorization model for your CDAP instance since the old one will not work anymore.
Upgrade from 4.2 to 4.3
After CDAP has started up run the following command (needs cleanup) to drop the old roles (note the auth token should be of the sentry admin for dropping roles)
$ for role in curl -v "http://<hostname>:11015/v3//security/authorization/roles" -H "Authorization: Bearer AghjZGFwANzsmf3CV9zczM/DV87Xqs4HQAycFxjjL1owXSdbprQxJExjL3tscVI9+FaDQ4cmTGGu" | python -m json.tool | fgrep '"name": ".' | cut -f 4 -d '"'; do curl -H "Authorization: Bearer AghjZGFwANzsmf3CV9zczM/DV87Xqs4HQAycFxjjL1owXSdbprQxJExjL3tscVI9+FaDQ4cmTGGu" "http://<hostname>:11015/v3//security/authorization/roles/$role" -X DELETE; done
Grant the new privileges
Auth matrix
TBD
Debugging (internal)
Understand the auth model of the user, and figure out what privileges are present and what should be given
Wait for (cache timeout * 2) + 1 seconds after any change to privileges or user/group for it to take effect
Enable TRACE logging on class co.cask.cdap.security.authorization.sentry.binding.SentryAuthorizer. This should tell what policies are being used for what enforcement