THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Sqoop 2 needs a pluggable role based access controller (RBAC), which is responsible for the authorization to Sqoop 2 resources, such as server, connector, link, job, etc.
...
Resource, actions and rules
Resource | Global Namespace | Instance |
---|---|---|
Connector |
|
|
Link |
|
|
Job |
|
|
Resource | Action | Implicit action |
---|---|---|
Connector | View | |
Connector | Use | View |
Link | Create | View, Update, Delete, Use, Enable_Disable |
Link | View | |
Link | Update | View, Delete, Use, Enable_Disable |
Link | Delete | View, Use, Enable_Disable |
Link | Use | View, Enable_Disable |
Link | Enable_Disable | View |
Job | Create | View, Update, Delete, Use, Enable_Disable, Start_Stop, Status |
Job | View | |
Job | Update | View, Delete, Enable_Disable, Start_Stop, Status |
Job | Delete | View, Enable_Disable, Start_Stop, Status |
Job | Enable_Disable | View |
Job | Start_Stop | View, Enable_Disable, Status |
Job | Status | View |
Server has three children: Connector, Link, Job.
- It is a hierarchy mode. If a user has the privilege of {server, all}, then he/she has all privileges of {connector, all}, {link, all} and {job, all}.
- If a user has the privilege of {job, all}, then he/she has both privileges of {job, read} and {job, write}.
- If a user want to create a link, then he/she need to have the privilege of {server, create}
Resource | Global Namespace |
---|---|
Server |
|
Connector |
|
Link |
|
Job |
|
Action | Privilege needed |
---|---|
show connector |
|
show link |
|
create link |
|
update link |
|
delete link |
|
enable link |
|
disable link |
|
show job |
|
create job |
|
update job |
|
delete job |
|
enable job |
|
disable job |
|
start job |
|
stop job |
|
show submission |
|
Authorization framework
...
Code Block |
---|
#org.apache.sqoop.authorization.handler=org.apache.sqoop.security.DefaultAuthorizationHandler #org.apache.sqoop.authorization.controller=org.apache.sqoop.security.DefaultAccessController #org.apache.sqoop.authorization.validator=org.apache.sqoop.security.DefaultAuthorizationValidator |
- Four metadata classes.
- Role
- principal
- This class defines user or group.
- Type: user, group, role.
- principal could be granted a role. i.e. if we want to grant a admin role to user hadoop, then grantRole (principal (name=hadoop, type=user), role (name=admin)).
- Resource
- This class defines four resources in Sqoop 2.
- Type: server, connector, link, job.
- Privilege
- Action: createall, view, update, delete, use, enable, disableread, write.
- with_grant_option: boolean, defines whether the role could grant this privilege to other role.
...
Code Block |
---|
Override public void createLinkPrivilige() throws SqoopAccessControlException { List<Privilege> privileges; privileges.add(new Privilege(new Resource("Link", "1"), "Create", null)); privileges.add(new Privilege(new Resource("Connector", "1"), "UseRead", null)); AuthorizationManager.getAuthenticationHandler.checkPrivileges(privileges); } |
...