Skip to content

Commit 211da6d

Browse files
committed
address review comments
1 parent 249c321 commit 211da6d

File tree

2 files changed

+12
-43
lines changed

2 files changed

+12
-43
lines changed

extensions/spark/kyuubi-spark-authz/src/main/scala/org/apache/kyuubi/plugin/spark/authz/ranger/RangerSparkExtension.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ class RangerSparkExtension extends (SparkSessionExtensions => Unit) {
4545

4646
override def apply(v1: SparkSessionExtensions): Unit = {
4747
v1.injectCheckRule(AuthzConfigurationChecker)
48+
// RuleFunctionAuthorization should use injectCheckRule instead of injectOptimizerRule,
49+
// because ConstantFolding will optimize deterministic UDFs with foldable
50+
// inputs (e.g., literals), replacing them with their results and bypassing permission checks.
4851
v1.injectCheckRule(RuleFunctionAuthorization)
4952
v1.injectResolutionRule(_ => RuleReplaceShowObjectCommands)
5053
v1.injectResolutionRule(_ => RuleApplyPermanentViewMarker)

extensions/spark/kyuubi-spark-authz/src/test/scala/org/apache/kyuubi/plugin/spark/authz/ranger/RangerSparkExtensionSuite.scala

Lines changed: 9 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -220,16 +220,8 @@ abstract class RangerSparkExtensionSuite extends AnyFunSuite
220220
val e = intercept[AccessControlException](sql(create))
221221
assert(e.getMessage === errorMessage("create", "mydb"))
222222
withCleanTmpResources(Seq((testDb, "database"))) {
223-
doAs(
224-
admin,
225-
assert(Try {
226-
sql(create)
227-
}.isSuccess))
228-
doAs(
229-
admin,
230-
assert(Try {
231-
sql(alter)
232-
}.isSuccess))
223+
doAs(admin, assert(Try { sql(create) }.isSuccess))
224+
doAs(admin, assert(Try { sql(alter) }.isSuccess))
233225
val e1 = intercept[AccessControlException](sql(alter))
234226
assert(e1.getMessage === errorMessage("alter", "mydb"))
235227
val e2 = intercept[AccessControlException](sql(drop))
@@ -251,34 +243,14 @@ abstract class RangerSparkExtensionSuite extends AnyFunSuite
251243
assert(e.getMessage === errorMessage("create"))
252244

253245
withCleanTmpResources(Seq((s"$db.$table", "table"))) {
254-
doAs(
255-
bob,
256-
assert(Try {
257-
sql(create0)
258-
}.isSuccess))
259-
doAs(
260-
bob,
261-
assert(Try {
262-
sql(alter0)
263-
}.isSuccess))
246+
doAs(bob, assert(Try { sql(create0) }.isSuccess))
247+
doAs(bob, assert(Try { sql(alter0) }.isSuccess))
264248

265249
val e1 = intercept[AccessControlException](sql(drop0))
266250
assert(e1.getMessage === errorMessage("drop"))
267-
doAs(
268-
bob,
269-
assert(Try {
270-
sql(alter0)
271-
}.isSuccess))
272-
doAs(
273-
bob,
274-
assert(Try {
275-
sql(select).collect()
276-
}.isSuccess))
277-
doAs(
278-
kent,
279-
assert(Try {
280-
sql(s"SELECT key FROM $db.$table").collect()
281-
}.isSuccess))
251+
doAs(bob, assert(Try { sql(alter0) }.isSuccess))
252+
doAs(bob, assert(Try { sql(select).collect() }.isSuccess))
253+
doAs(kent, assert(Try { sql(s"SELECT key FROM $db.$table").collect() }.isSuccess))
282254

283255
Seq(
284256
select,
@@ -669,18 +641,12 @@ class HiveCatalogRangerSparkExtensionSuite extends RangerSparkExtensionSuite {
669641
// query all columns of the permanent view
670642
// with access privileges to the permanent view but no privilege to the source table
671643
val sql1 = s"SELECT * FROM $db1.$permView"
672-
doAs(
673-
userPermViewOnly, {
674-
sql(sql1).collect()
675-
})
644+
doAs(userPermViewOnly, { sql(sql1).collect() })
676645

677646
// query the second column of permanent view with multiple columns
678647
// with access privileges to the permanent view but no privilege to the source table
679648
val sql2 = s"SELECT name FROM $db1.$permView"
680-
doAs(
681-
userPermViewOnly, {
682-
sql(sql2).collect()
683-
})
649+
doAs(userPermViewOnly, { sql(sql2).collect() })
684650
}
685651
}
686652

0 commit comments

Comments
 (0)