Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -525,6 +525,13 @@ void checkCanRevokeRoles(SecurityContext context,
*/
void checkCanExecuteFunction(SecurityContext context, String functionName);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we deprecate or remove this one?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No. This will be possible only after all functions gain some namespace, which i guess will happen rather sooner than later, but did not happen yet.


/**
* Check if identity is allowed to execute function
*
* @throws AccessDeniedException if not allowed
*/
void checkCanExecuteFunction(SecurityContext context, QualifiedObjectName functionName);

/**
* Check if identity is allowed to execute given table procedure on given table
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1134,6 +1134,22 @@ public void checkCanExecuteFunction(SecurityContext context, String functionName
systemAuthorizationCheck(control -> control.checkCanExecuteFunction(context.toSystemSecurityContext(), functionName));
}

@Override
public void checkCanExecuteFunction(SecurityContext securityContext, QualifiedObjectName functionName)
{
requireNonNull(securityContext, "securityContext is null");
requireNonNull(functionName, "functionName is null");

checkCanAccessCatalog(securityContext, functionName.getCatalogName());

systemAuthorizationCheck(control -> control.checkCanExecuteFunction(securityContext.toSystemSecurityContext(), functionName.asCatalogSchemaRoutineName()));

catalogAuthorizationCheck(
functionName.getCatalogName(),
securityContext,
(control, context) -> control.checkCanExecuteFunction(context, functionName.asSchemaRoutineName()));
}

@Override
public void checkCanExecuteTableProcedure(SecurityContext securityContext, QualifiedObjectName tableName, String procedureName)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,11 @@ public void checkCanExecuteFunction(SecurityContext context, String functionName
{
}

@Override
public void checkCanExecuteFunction(SecurityContext context, QualifiedObjectName functionName)
{
}

@Override
public void checkCanExecuteTableProcedure(SecurityContext context, QualifiedObjectName tableName, String procedureName)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -491,6 +491,12 @@ public void checkCanExecuteFunction(SecurityContext context, String functionName
denyExecuteFunction(functionName);
}

@Override
public void checkCanExecuteFunction(SecurityContext context, QualifiedObjectName functionName)
{
denyExecuteFunction(functionName.toString());
}

@Override
public void checkCanExecuteTableProcedure(SecurityContext context, QualifiedObjectName tableName, String procedureName)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -448,6 +448,12 @@ public void checkCanExecuteFunction(SecurityContext context, String functionName
delegate().checkCanExecuteFunction(context, functionName);
}

@Override
public void checkCanExecuteFunction(SecurityContext context, QualifiedObjectName functionName)
{
delegate().checkCanExecuteFunction(context, functionName);
}

@Override
public void checkCanExecuteTableProcedure(SecurityContext context, QualifiedObjectName tableName, String procedureName)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -446,6 +446,13 @@ public void checkCanExecuteTableProcedure(ConnectorSecurityContext context, Sche
procedure);
}

@Override
public void checkCanExecuteFunction(ConnectorSecurityContext context, SchemaRoutineName function)
{
checkArgument(context == null, "context must be null");
accessControl.checkCanExecuteFunction(securityContext, new QualifiedObjectName(catalogName, function.getSchemaName(), function.getRoutineName()));
}

@Override
public List<ViewExpression> getRowFilters(ConnectorSecurityContext context, SchemaTableName tableName)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,9 @@ public void checkCanExecuteProcedure(SecurityContext context, QualifiedObjectNam
@Override
public void checkCanExecuteFunction(SecurityContext context, String functionName) {}

@Override
public void checkCanExecuteFunction(SecurityContext context, QualifiedObjectName functionName) {}

@Override
public void checkCanExecuteTableProcedure(SecurityContext context, QualifiedObjectName tableName, String procedureName) {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import static io.trino.spi.security.AccessDeniedException.denyDropSchema;
import static io.trino.spi.security.AccessDeniedException.denyDropTable;
import static io.trino.spi.security.AccessDeniedException.denyDropView;
import static io.trino.spi.security.AccessDeniedException.denyExecuteFunction;
import static io.trino.spi.security.AccessDeniedException.denyExecuteProcedure;
import static io.trino.spi.security.AccessDeniedException.denyExecuteTableProcedure;
import static io.trino.spi.security.AccessDeniedException.denyGrantRoles;
Expand Down Expand Up @@ -596,6 +597,16 @@ default void checkCanExecuteTableProcedure(ConnectorSecurityContext context, Sch
denyExecuteTableProcedure(tableName.toString(), procedure);
}

/**
* Check if identity is allowed to execute function.
*
* @throws io.trino.spi.security.AccessDeniedException if not allowed
*/
default void checkCanExecuteFunction(ConnectorSecurityContext context, SchemaRoutineName function)
{
denyExecuteFunction(function.toString());
}

/**
* Get a row filter associated with the given table and identity.
* <p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -808,6 +808,16 @@ default void checkCanExecuteFunction(SystemSecurityContext systemSecurityContext
denyExecuteFunction(functionName);
}

/**
* Check if identity is allowed to execute the specified function
*
* @throws AccessDeniedException if not allowed
*/
default void checkCanExecuteFunction(SystemSecurityContext systemSecurityContext, CatalogSchemaRoutineName functionName)
{
denyExecuteFunction(functionName.toString());
}

/**
* Check if identity is allowed to execute the specified table procedure on specified table
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -493,6 +493,14 @@ public void checkCanExecuteTableProcedure(ConnectorSecurityContext context, Sche
}
}

@Override
public void checkCanExecuteFunction(ConnectorSecurityContext context, SchemaRoutineName function)
{
try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) {
delegate.checkCanExecuteFunction(context, function);
}
}

@Override
public List<ViewExpression> getRowFilters(ConnectorSecurityContext context, SchemaTableName tableName)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,11 @@ public void checkCanExecuteTableProcedure(ConnectorSecurityContext context, Sche
{
}

@Override
public void checkCanExecuteFunction(ConnectorSecurityContext context, SchemaRoutineName function)
{
}

@Override
public List<ViewExpression> getRowFilters(ConnectorSecurityContext context, SchemaTableName tableName)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,11 @@ public void checkCanExecuteFunction(SystemSecurityContext systemSecurityContext,
{
}

@Override
public void checkCanExecuteFunction(SystemSecurityContext systemSecurityContext, CatalogSchemaRoutineName functionName)
{
}

@Override
public void checkCanExecuteTableProcedure(SystemSecurityContext systemSecurityContext, CatalogSchemaTableName table, String procedure)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -591,6 +591,11 @@ public void checkCanExecuteTableProcedure(ConnectorSecurityContext context, Sche
{
}

@Override
public void checkCanExecuteFunction(ConnectorSecurityContext context, SchemaRoutineName function)
{
}

@Override
public List<ViewExpression> getRowFilters(ConnectorSecurityContext context, SchemaTableName tableName)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -938,6 +938,11 @@ public void checkCanExecuteFunction(SystemSecurityContext systemSecurityContext,
{
}

@Override
public void checkCanExecuteFunction(SystemSecurityContext systemSecurityContext, CatalogSchemaRoutineName functionName)
{
}

@Override
public void checkCanExecuteTableProcedure(SystemSecurityContext systemSecurityContext, CatalogSchemaTableName table, String procedure)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -386,6 +386,12 @@ public void checkCanExecuteTableProcedure(ConnectorSecurityContext context, Sche
delegate().checkCanExecuteTableProcedure(context, tableName, procedure);
}

@Override
public void checkCanExecuteFunction(ConnectorSecurityContext context, SchemaRoutineName function)
{
delegate().checkCanExecuteFunction(context, function);
}

@Override
public Optional<ViewExpression> getRowFilter(ConnectorSecurityContext context, SchemaTableName tableName)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -468,6 +468,12 @@ public void checkCanExecuteFunction(SystemSecurityContext systemSecurityContext,
delegate().checkCanExecuteFunction(systemSecurityContext, functionName);
}

@Override
public void checkCanExecuteFunction(SystemSecurityContext systemSecurityContext, CatalogSchemaRoutineName functionName)
{
delegate().checkCanExecuteFunction(systemSecurityContext, functionName);
}

@Override
public void checkCanExecuteTableProcedure(SystemSecurityContext systemSecurityContext, CatalogSchemaTableName table, String procedure)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -388,6 +388,11 @@ public void checkCanExecuteTableProcedure(ConnectorSecurityContext context, Sche
{
}

@Override
public void checkCanExecuteFunction(ConnectorSecurityContext context, SchemaRoutineName function)
{
}

@Override
public List<ViewExpression> getRowFilters(ConnectorSecurityContext context, SchemaTableName tableName)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -569,6 +569,11 @@ public void checkCanExecuteTableProcedure(ConnectorSecurityContext context, Sche
}
}

@Override
public void checkCanExecuteFunction(ConnectorSecurityContext context, SchemaRoutineName function)
{
}

@Override
public List<ViewExpression> getRowFilters(ConnectorSecurityContext context, SchemaTableName tableName)
{
Expand Down