This is an automated email from the ASF dual-hosted git repository.

liuxun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/submarine.git


The following commit(s) were added to refs/heads/master by this push:
     new fd9b577  SUBMARINE-433. Expose Spark Security API with Authz w/ w/o 
DataMasking and Row Filtering
fd9b577 is described below

commit fd9b577ee1036b104e743babbafef232b293d0ba
Author: Kent Yao <[email protected]>
AuthorDate: Tue Mar 17 15:43:56 2020 +0800

    SUBMARINE-433. Expose Spark Security API with Authz w/ w/o DataMasking and 
Row Filtering
    
    ### What is this PR for?
    
    Expose Spark Security API with Authz w/ w/o DataMasking and Row Filtering
    Then one is only enabled with security features with authorization and conf 
restricting
    the other is fully applied data masking and row filtering too.
    
    ### What type of PR is it?
    Improvement
    ### Todos
    * [ ] - Task
    
    ### What is the Jira issue?
    * Open an issue on Jira https://issues.apache.org/jira/browse/SUBMARINE-433
    * Put link here, and add [SUBMARINE-*Jira number*] in PR title, eg. 
[SUBMARINE-23]
    
    ### How should this be tested?
    * First time? Setup Travis CI as described on 
https://submarine.apache.org/contribution/contributions.html#continuous-integration
    * Strongly recommended: add automated unit tests for any new or changed 
behavior
    * Outline any manual steps to test the PR here.
    
    pass current travis
    
    ### Screenshots (if appropriate)
    
    ### Questions:
    * Does the licenses files need update? No
    * Is there breaking changes for older versions? No
    * Does this needs documentation? No
    
    Author: Kent Yao <[email protected]>
    
    Closes #231 from yaooqinn/SUBMARINE-433 and squashes the following commits:
    
    e511a59 [Kent Yao] SUBMARINE-433. Expose Spark Security API with Authz w/ 
w/o DataMasking and Row Filtering
---
 .../RangerSparkAuthzExtension.scala}                | 21 ++++++++++++++-------
 .../{ => api}/RangerSparkSQLExtension.scala         | 15 ++++++++++++++-
 2 files changed, 28 insertions(+), 8 deletions(-)

diff --git 
a/submarine-security/spark-security/src/main/scala/org/apache/submarine/spark/security/RangerSparkSQLExtension.scala
 
b/submarine-security/spark-security/src/main/scala/org/apache/submarine/spark/security/api/RangerSparkAuthzExtension.scala
similarity index 68%
copy from 
submarine-security/spark-security/src/main/scala/org/apache/submarine/spark/security/RangerSparkSQLExtension.scala
copy to 
submarine-security/spark-security/src/main/scala/org/apache/submarine/spark/security/api/RangerSparkAuthzExtension.scala
index 1dc1ad0..42b4b7e 100644
--- 
a/submarine-security/spark-security/src/main/scala/org/apache/submarine/spark/security/RangerSparkSQLExtension.scala
+++ 
b/submarine-security/spark-security/src/main/scala/org/apache/submarine/spark/security/api/RangerSparkAuthzExtension.scala
@@ -17,18 +17,25 @@
  * under the License.
  */
 
-package org.apache.submarine.spark.security
+package org.apache.submarine.spark.security.api
 
 import org.apache.spark.sql.SparkSessionExtensions
-import 
org.apache.spark.sql.catalyst.optimizer.{SubmarineConfigurationCheckExtension, 
SubmarineDataMaskingExtension, SubmarineRowFilterExtension, 
SubmarineSparkRangerAuthorizationExtension}
-import org.apache.spark.sql.execution.SubmarineSparkPlanOmitStrategy
+import 
org.apache.spark.sql.catalyst.optimizer.{SubmarineConfigurationCheckExtension, 
SubmarineSparkRangerAuthorizationExtension}
+import org.apache.submarine.spark.security.Extensions
 
-class RangerSparkSQLExtension extends Extensions {
+/**
+ * ACL Management for Apache Spark SQL with Apache Ranger, enabling:
+ * <ul>
+ *   <li>Table/Column level authorization</li>
+ * <ul>
+ *
+ * To work with Spark SQL, we need to enable it via spark extensions
+ *
+ * 
spark.sql.extensions=org.apache.submarine.spark.security.api.RangerSparkAuthzExtension
+ */
+class RangerSparkAuthzExtension extends Extensions {
   override def apply(ext: SparkSessionExtensions): Unit = {
     ext.injectCheckRule(SubmarineConfigurationCheckExtension)
     ext.injectOptimizerRule(SubmarineSparkRangerAuthorizationExtension)
-    ext.injectOptimizerRule(SubmarineRowFilterExtension)
-    ext.injectOptimizerRule(SubmarineDataMaskingExtension)
-    ext.injectPlannerStrategy(SubmarineSparkPlanOmitStrategy)
   }
 }
diff --git 
a/submarine-security/spark-security/src/main/scala/org/apache/submarine/spark/security/RangerSparkSQLExtension.scala
 
b/submarine-security/spark-security/src/main/scala/org/apache/submarine/spark/security/api/RangerSparkSQLExtension.scala
similarity index 76%
rename from 
submarine-security/spark-security/src/main/scala/org/apache/submarine/spark/security/RangerSparkSQLExtension.scala
rename to 
submarine-security/spark-security/src/main/scala/org/apache/submarine/spark/security/api/RangerSparkSQLExtension.scala
index 1dc1ad0..25cd7d9 100644
--- 
a/submarine-security/spark-security/src/main/scala/org/apache/submarine/spark/security/RangerSparkSQLExtension.scala
+++ 
b/submarine-security/spark-security/src/main/scala/org/apache/submarine/spark/security/api/RangerSparkSQLExtension.scala
@@ -17,12 +17,25 @@
  * under the License.
  */
 
-package org.apache.submarine.spark.security
+package org.apache.submarine.spark.security.api
 
 import org.apache.spark.sql.SparkSessionExtensions
 import 
org.apache.spark.sql.catalyst.optimizer.{SubmarineConfigurationCheckExtension, 
SubmarineDataMaskingExtension, SubmarineRowFilterExtension, 
SubmarineSparkRangerAuthorizationExtension}
 import org.apache.spark.sql.execution.SubmarineSparkPlanOmitStrategy
+import org.apache.submarine.spark.security.Extensions
 
+/**
+ * ACL Management for Apache Spark SQL with Apache Ranger, enabling:
+ * <ul>
+ *   <li>Table/Column level authorization</li>
+ *   <li>Row level filtering</li>
+ *   <li>Data masking</li>
+ * <ul>
+ *
+ * To work with Spark SQL, we need to enable it via spark extensions
+ *
+ * 
spark.sql.extensions=org.apache.submarine.spark.security.api.RangerSparkSQLExtension
+ */
 class RangerSparkSQLExtension extends Extensions {
   override def apply(ext: SparkSessionExtensions): Unit = {
     ext.injectCheckRule(SubmarineConfigurationCheckExtension)


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to