Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-6104

Require EXEC permission to call coprocessor endpoints

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 0.98.0, 0.99.0
    • Coprocessors, security
    • None
    • Reviewed
    • Hide
      If access control is active (the AccessController coprocessor is installed either as a system coprocessor or on a table as a table coprocessor) and the "hbase.security.exec.permission.checks" configuration setting is "true", then you must now grant all relevant users EXEC privilege if they require the ability to execute coprocessor endpoint calls. EXEC privilege, like any other permission, can be granted globally to a user, or to a user on a per table or per namespace basis. For more information on coprocessor endpoints, see the coprocessor section of the HBase online manual. For more information on granting or revoking permissions using the AccessController, see the security section of the HBase online manual.
      Show
      If access control is active (the AccessController coprocessor is installed either as a system coprocessor or on a table as a table coprocessor) and the "hbase.security.exec.permission.checks" configuration setting is "true", then you must now grant all relevant users EXEC privilege if they require the ability to execute coprocessor endpoint calls. EXEC privilege, like any other permission, can be granted globally to a user, or to a user on a per table or per namespace basis. For more information on coprocessor endpoints, see the coprocessor section of the HBase online manual. For more information on granting or revoking permissions using the AccessController, see the security section of the HBase online manual.

    Description

      The EXEC action currently exists as only a placeholder in access control. It should really be used to enforce access to coprocessor endpoint RPC calls, which are currently unrestricted.

      How the ACLs to support this would be modeled deserves some discussion:

      • Should access be scoped to a specific table and CoprocessorProtocol extension?
      • Should it be possible to grant access to a CoprocessorProtocol implementation globally (regardless of table)?
      • Are per-method restrictions necessary?
      • Should we expose hooks available to endpoint implementors so that they could additionally apply their own permission checks? Some CP endpoints may want to require READ permissions, others may want to enforce WRITE, or READ + WRITE.

      To apply these kinds of checks we would also have to extend the RegionObserver interface to provide hooks wrapping HRegion.exec().

      Attachments

        1. 6104.patch
          8 kB
          Andrew Kyle Purtell
        2. 6104.patch
          9 kB
          Andrew Kyle Purtell
        3. 6104.patch
          16 kB
          Andrew Kyle Purtell
        4. 6104.patch
          19 kB
          Andrew Kyle Purtell
        5. 6104.patch
          20 kB
          Andrew Kyle Purtell
        6. 6104-addendum-1.patch
          0.8 kB
          Andrew Kyle Purtell
        7. 6104-revert.patch
          19 kB
          Andrew Kyle Purtell
        8. 6104.patch
          19 kB
          Andrew Kyle Purtell
        9. 6104.patch
          23 kB
          Andrew Kyle Purtell

        Issue Links

          Activity

            People

              apurtell Andrew Kyle Purtell
              ghelmling Gary Helmling
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: