Repository: hbase
Updated Branches:
  refs/heads/branch-1 bfae8d541 -> 0a50a7a47


HBASE-12745 Visibility Labels:  support visibility labels for user groups. 
(Addendum for BC between 0.98 and branch-1)


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/0a50a7a4
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/0a50a7a4
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/0a50a7a4

Branch: refs/heads/branch-1
Commit: 0a50a7a472f4b7c8c0609f2da875c047ea2c0bf7
Parents: bfae8d5
Author: Enis Soztutar <e...@apache.org>
Authored: Sun Jan 25 18:11:06 2015 -0800
Committer: Enis Soztutar <e...@apache.org>
Committed: Sun Jan 25 18:11:40 2015 -0800

----------------------------------------------------------------------
 .../DefaultVisibilityLabelServiceImpl.java      | 21 +++++++++++++++++
 .../visibility/VisibilityLabelService.java      | 24 ++++++++++++++++++++
 .../ExpAsStringVisibilityLabelServiceImpl.java  | 20 ++++++++++++++++
 3 files changed, 65 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/0a50a7a4/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/DefaultVisibilityLabelServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/DefaultVisibilityLabelServiceImpl.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/DefaultVisibilityLabelServiceImpl.java
index 6b9a358..5b05d23 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/DefaultVisibilityLabelServiceImpl.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/DefaultVisibilityLabelServiceImpl.java
@@ -324,6 +324,13 @@ public class DefaultVisibilityLabelServiceImpl implements 
VisibilityLabelService
   }
 
   @Override
+  @Deprecated
+  public List<String> getAuths(byte[] user, boolean systemCall)
+      throws IOException {
+    return getUserAuths(user, systemCall);
+  }
+
+  @Override
   public List<String> getUserAuths(byte[] user, boolean systemCall)
       throws IOException {
     assert (labelsRegion != null || systemCall);
@@ -536,6 +543,20 @@ public class DefaultVisibilityLabelServiceImpl implements 
VisibilityLabelService
   }
 
   @Override
+  @Deprecated
+  public boolean havingSystemAuth(byte[] user) throws IOException {
+    // Implementation for backward compatibility
+    if (this.superUsers.contains(Bytes.toString(user))) {
+      return true;
+    }
+    List<String> auths = this.getUserAuths(user, true);
+    if (LOG.isTraceEnabled()) {
+      LOG.trace("The auths for user " + Bytes.toString(user) + " are " + 
auths);
+    }
+    return auths.contains(SYSTEM_LABEL);
+  }
+
+  @Override
   public boolean havingSystemAuth(User user) throws IOException {
     // A super user has 'system' auth.
     if (isSystemOrSuperUser(user)) {

http://git-wip-us.apache.org/repos/asf/hbase/blob/0a50a7a4/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelService.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelService.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelService.java
index 8ddd47e..e01f986 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelService.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelService.java
@@ -80,6 +80,18 @@ public interface VisibilityLabelService extends Configurable 
{
    * @param systemCall
    *          Whether a system or user originated call.
    * @return Visibility labels authorized for the given user.
+   * @deprecated Use {@link#getUserAuths(byte[], boolean)}
+   */
+  @Deprecated
+  List<String> getAuths(byte[] user, boolean systemCall) throws IOException;
+
+  /**
+   * Retrieve the visibility labels for the user.
+   * @param user
+   *          Name of the user whose authorization to be retrieved
+   * @param systemCall
+   *          Whether a system or user originated call.
+   * @return Visibility labels authorized for the given user.
    */
   List<String> getUserAuths(byte[] user, boolean systemCall) throws 
IOException;
 
@@ -135,6 +147,18 @@ public interface VisibilityLabelService extends 
Configurable {
    * @param user
    *          User for whom system auth check to be done.
    * @return true if the given user is having system/super auth
+   * @deprecated Use {@link#havingSystemAuth(User)}
+   */
+  @Deprecated
+  boolean havingSystemAuth(byte[] user) throws IOException;
+
+  /**
+   * System checks for user auth during admin operations. (ie. Label add, 
set/clear auth). The
+   * operation is allowed only for users having system auth. Also during read, 
if the requesting
+   * user has system auth, he can view all the data irrespective of its labels.
+   * @param user
+   *          User for whom system auth check to be done.
+   * @return true if the given user is having system/super auth
    */
   boolean havingSystemAuth(User user) throws IOException;
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/0a50a7a4/hbase-server/src/test/java/org/apache/hadoop/hbase/security/visibility/ExpAsStringVisibilityLabelServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/visibility/ExpAsStringVisibilityLabelServiceImpl.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/visibility/ExpAsStringVisibilityLabelServiceImpl.java
index e8ba08b..be5588d 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/visibility/ExpAsStringVisibilityLabelServiceImpl.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/visibility/ExpAsStringVisibilityLabelServiceImpl.java
@@ -149,6 +149,12 @@ public class ExpAsStringVisibilityLabelServiceImpl 
implements VisibilityLabelSer
   }
 
   @Override
+  @Deprecated
+  public List<String> getAuths(byte[] user, boolean systemCall) throws 
IOException {
+    return getUserAuths(user, systemCall);
+  }
+
+  @Override
   public List<String> getUserAuths(byte[] user, boolean systemCall) throws 
IOException {
     assert (labelsRegion != null || systemCall);
     List<String> auths = new ArrayList<String>();
@@ -431,6 +437,20 @@ public class ExpAsStringVisibilityLabelServiceImpl 
implements VisibilityLabelSer
   }
 
   @Override
+  @Deprecated
+  public boolean havingSystemAuth(byte[] user) throws IOException {
+    // Implementation for backward compatibility
+    if (this.superUsers.contains(Bytes.toString(user))) {
+      return true;
+    }
+    List<String> auths = this.getUserAuths(user, true);
+    if (LOG.isTraceEnabled()) {
+      LOG.trace("The auths for user " + Bytes.toString(user) + " are " + 
auths);
+    }
+    return auths.contains(SYSTEM_LABEL);
+  }
+
+  @Override
   public boolean havingSystemAuth(User user) throws IOException {
     if (isSystemOrSuperUser(user)) {
       return true;

Reply via email to