Semetey Coskun created RANGER-4683:
--------------------------------------
Summary: Trino Schema Creation Permission
Key: RANGER-4683
URL: https://issues.apache.org/jira/browse/RANGER-4683
Project: Ranger
Issue Type: Bug
Components: plugins
Reporter: Semetey Coskun
Hi,
I'm running Trino in docker (trinodb/trino:423) and this environment is
integrated to Apache Ranger (2.4.0) for authz policies. Every permissions seem
OK but "Create Schema" in a catalog. I've tried various configurations;
specifying catalog names with "*" or exact name of the catalog which I'm trying
to create schema in it but every time same error.
{{io.cloudbeaver.DBWebException: Error executing query: SQL Error [4]: Query
failed (#20240129_203356_00589_c9776): Access Denied: Cannot create schema
delta.trino_poc at
io.cloudbeaver.service.sql.WebSQLProcessor.processQuery(WebSQLProcessor.java:264)
at io.cloudbeaver.service.sql.impl.WebServiceSQL$1.run(WebServiceSQL.java:377)
at io.cloudbeaver.model.session.WebSession$1.run(WebSession.java:692) at
org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:105) at
org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) Caused by:
org.jkiss.dbeaver.model.sql.DBSQLException: SQL Error [4]: Query failed
(#20240129_203356_00589_c9776): Access Denied: Cannot create schema
delta.trino_poc at
org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:133)
at
io.cloudbeaver.service.sql.WebSQLProcessor.lambda$1(WebSQLProcessor.java:250)
at
org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:190)
at
io.cloudbeaver.service.sql.WebSQLProcessor.processQuery(WebSQLProcessor.java:207)
... 4 more Caused by: java.sql.SQLException: Query failed
(#20240129_203356_00589_c9776): Access Denied: Cannot create schema
delta.trino_poc at
io.trino.jdbc.AbstractTrinoResultSet.resultsException(AbstractTrinoResultSet.java:1937)
at io.trino.jdbc.TrinoResultSet.getColumns(TrinoResultSet.java:318) at
io.trino.jdbc.TrinoResultSet.create(TrinoResultSet.java:61) at
io.trino.jdbc.TrinoStatement.internalExecute(TrinoStatement.java:262) at
io.trino.jdbc.TrinoStatement.execute(TrinoStatement.java:240) at
org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.execute(JDBCStatementImpl.java:330)
at
org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:131)
... 7 more Caused by: io.trino.spi.security.AccessDeniedException: Access
Denied: Cannot create schema delta.trino_poc at
io.trino.spi.security.AccessDeniedException.denyCreateSchema(AccessDeniedException.java:150)
at
io.trino.spi.security.AccessDeniedException.denyCreateSchema(AccessDeniedException.java:145)
at
io.trino.spi.security.SystemAccessControl.checkCanCreateSchema(SystemAccessControl.java:286)
at
io.trino.security.AccessControlManager.lambda$checkCanCreateSchema$11(AccessControlManager.java:340)
at
io.trino.security.AccessControlManager.systemAuthorizationCheck(AccessControlManager.java:1363)
at
io.trino.security.AccessControlManager.checkCanCreateSchema(AccessControlManager.java:340)
at
io.trino.security.ForwardingAccessControl.checkCanCreateSchema(ForwardingAccessControl.java:125)
at
io.trino.tracing.TracingAccessControl.checkCanCreateSchema(TracingAccessControl.java:166)
at
io.trino.execution.CreateSchemaTask.internalExecute(CreateSchemaTask.java:117)
at io.trino.execution.CreateSchemaTask.execute(CreateSchemaTask.java:82) at
io.trino.execution.CreateSchemaTask.execute(CreateSchemaTask.java:54) at
io.trino.execution.DataDefinitionExecution.start(DataDefinitionExecution.java:145)
at io.trino.execution.SqlQueryManager.createQuery(SqlQueryManager.java:256) at
io.trino.dispatcher.LocalDispatchQuery.startExecution(LocalDispatchQuery.java:145)
at
io.trino.dispatcher.LocalDispatchQuery.lambda$waitForMinimumWorkers$2(LocalDispatchQuery.java:129)
at
io.airlift.concurrent.MoreFutures.lambda$addSuccessCallback$12(MoreFutures.java:568)
at io.airlift.concurrent.MoreFutures$3.onSuccess(MoreFutures.java:543) at
com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1133)
at io.trino.$gen.Trino_423____20240129_094308_2.run(Unknown Source) at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)}}
{{When I grep the coordinator logs the only policy id I can see in the logs is
27;}}
2024-01-29T20:02:57.087Z INFO Query-20240129_200257_00416_c9776-2066 stdout
20:02:57.087 [Query-20240129_200257_00416_c9776-2066] DEBUG
org.apache.ranger.plugin.policyevaluator.RangerDefaultPolicyEvaluator - ==>
RangerDefaultPolicyEvaluator.evaluate(policyId=27,
RangerAccessRequestImpl=\{resource={RangerResourceImpl={ownerUser={null}
elements=\{catalog=delta; } }} accessType=\{use} user=\{005269} userGroups=\{MY
USER GROUP LIST } userRoles={} accessTime=\{Mon Jan 29 20:02:57 UTC 2024}
clientIPAddress=\{null} forwardedAddresses={} remoteIPAddress=\{null}
clientType=\{null} action=\{null} requestData=\{null} sessionId=\{null}
resourceMatchingScope=\{SELF} clusterName={} clusterType={}
context=\{token:USER={005269} } },
RangerAccessResult=\{isAccessDetermined={false} isAllowed=\{false}
isAuditedDetermined=\{false} isAudited=\{false} auditLogId=\{null}
policyType=\{0} policyId=\{-1} zoneName=\{null} auditPolicyId=\{-1}
policyVersion=\{null} evaluatedPoliciesCount=\{1} reason=\{null}
additionalInfo={}})
Policy ID 27 is the default "all - catalog, schema, table, column"
configuration:
!https://private-user-images.githubusercontent.com/1835976/300598323-d3c802a8-a8e5-48aa-ad14-64f0bb3fa8cc.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MDY2ODExOTMsIm5iZiI6MTcwNjY4MDg5MywicGF0aCI6Ii8xODM1OTc2LzMwMDU5ODMyMy1kM2M4MDJhOC1hOGU1LTQ4YWEtYWQxNC02NGYwYmIzZmE4Y2MucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDEzMSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDAxMzFUMDYwMTMzWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NDkxNzU2MmY5MmQwNmY5YmQ4MDM3YzI3OTg2MDc2NzQ4ZGI5NGMxMjhiZDNiM2JmYWJjOTQwZGZkODA2ZmRhZSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.vPiKcbzEz4z9lg-mxOJLQNdMaW5VxB5b4SAuegGlGwk!
!https://private-user-images.githubusercontent.com/1835976/300598455-dd5dd6b1-9f34-444f-a66d-b04cf4874c8e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MDY2ODExOTMsIm5iZiI6MTcwNjY4MDg5MywicGF0aCI6Ii8xODM1OTc2LzMwMDU5ODQ1NS1kZDVkZDZiMS05ZjM0LTQ0NGYtYTY2ZC1iMDRjZjQ4NzRjOGUucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDEzMSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDAxMzFUMDYwMTMzWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NGYxMDcxMDhhZWMwZDhiYjVkMmZkNzIxYWMwMGJmZDMwYTc5ZTA3MjViMGRjMGY4NTU5NjYyY2E3MWYxZGQyOCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.75LoXJsRRMJ1sRoVWJLeYs_-ssZxMfk0Mx-R7tWvB-0!
Is there any point that I'm missing?
Thank you,
Kind Regards.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)