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

Scan's default auths behavior under Visibility labels

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.98.7, 0.99.1
    • Fix Version/s: 0.98.9, 0.99.2
    • Component/s: API, security
    • Labels:
      None
    • Hadoop Flags:
      Incompatible change, Reviewed
    • Release Note:
      When no Authorizations passed in Scan , will take user's Auth labels for the Scan and return results accordingly. Prior to this Jira, we were returning only those cells with out any visibility in such a case.

      Description

      In Visibility Labels security, a set of labels (auths) are administered and associated with a user.
      A user can normally only see cell data during scan that are part of the user's label set (auths).
      Scan uses setAuthorizations to indicates its wants to use the auths to access the cells.
      Similarly in the shell:

      scan 'table1', AUTHORIZATIONS => ['private']
      

      But it is a surprise to find that setAuthorizations seems to be 'mandatory' in the default visibility label security setting. Every scan needs to setAuthorizations before the scan can get any cells even the cells are under the labels the request user is part of.

      The following steps will illustrate the issue:

      Run as superuser.

      1. create a visibility label called 'private'
      2. create 'table1'
      3. put into 'table1' data and label the data as 'private'
      4. set_auths 'user1', 'private'
      5. grant 'user1', 'RW', 'table1'
      

      Run as 'user1':

      1. scan 'table1'
      This show no cells.
      2. scan 'table1', scan 'table1', AUTHORIZATIONS => ['private']
      This will show all the data.
      

      I am not sure if this is expected by design or a bug.
      But a more reasonable, more client application backward compatible, and less surprising default behavior should probably look like this:

      A scan's default auths, if its Authorizations attributes is not set explicitly, should be all the auths the request user is administered and allowed on the server.

      If scan.setAuthorizations is used, then the server further filter the auths during scan: use the input auths minus what is not in user's label set on the server.

        Attachments

        1. HBASE-12346_0.99_addendum.patch
          2 kB
          Anoop Sam John
        2. HBASE-12346_0.98_addendum.patch
          2 kB
          Anoop Sam John
        3. HBASE-12346-master-v5.patch
          22 kB
          Jerry He
        4. HBASE-12346-master-v4.patch
          22 kB
          Jerry He
        5. HBASE-12346-master-v3.patch
          21 kB
          Jerry He
        6. HBASE-12346-master-v2.patch
          8 kB
          Jerry He
        7. HBASE-12346-master.patch
          1 kB
          Jerry He

          Issue Links

            Activity

              People

              • Assignee:
                jinghe Jerry He
                Reporter:
                jinghe Jerry He
              • Votes:
                0 Vote for this issue
                Watchers:
                6 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: