Skip to content

Commit 1dd64c6

Browse files
committed
Remove deprecated getColumnMask
1 parent 4e531e4 commit 1dd64c6

8 files changed

Lines changed: 7 additions & 94 deletions

File tree

core/trino-main/src/main/java/io/trino/security/InjectedConnectorAccessControl.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import io.trino.spi.security.Privilege;
3030
import io.trino.spi.security.TrinoPrincipal;
3131
import io.trino.spi.security.ViewExpression;
32-
import io.trino.spi.type.Type;
3332

3433
import java.util.List;
3534
import java.util.Map;
@@ -574,17 +573,6 @@ public List<ViewExpression> getRowFilters(ConnectorSecurityContext context, Sche
574573
throw new TrinoException(NOT_SUPPORTED, "Row filtering not supported");
575574
}
576575

577-
@Override
578-
public Optional<ViewExpression> getColumnMask(ConnectorSecurityContext context, SchemaTableName tableName, String columnName, Type type)
579-
{
580-
checkArgument(context == null, "context must be null");
581-
ColumnSchema column = ColumnSchema.builder().setName(columnName).setType(type).build();
582-
if (accessControl.getColumnMasks(securityContext, new QualifiedObjectName(catalogName, tableName.getSchemaName(), tableName.getTableName()), ImmutableList.of(column)).containsKey(column)) {
583-
return Optional.empty();
584-
}
585-
throw new TrinoException(NOT_SUPPORTED, "Column masking not supported");
586-
}
587-
588576
@Override
589577
public Map<ColumnSchema, ViewExpression> getColumnMasks(ConnectorSecurityContext context, SchemaTableName tableName, List<ColumnSchema> columns)
590578
{

core/trino-spi/src/main/java/io/trino/spi/connector/ConnectorAccessControl.java

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,11 @@
1818
import io.trino.spi.security.Privilege;
1919
import io.trino.spi.security.TrinoPrincipal;
2020
import io.trino.spi.security.ViewExpression;
21-
import io.trino.spi.type.Type;
2221

2322
import java.util.List;
2423
import java.util.Map;
2524
import java.util.Optional;
2625
import java.util.Set;
27-
import java.util.stream.Collectors;
2826

2927
import static io.trino.spi.security.AccessDeniedException.denyAddColumn;
3028
import static io.trino.spi.security.AccessDeniedException.denyAlterColumn;
@@ -794,21 +792,6 @@ default List<ViewExpression> getRowFilters(ConnectorSecurityContext context, Sch
794792
return emptyList();
795793
}
796794

797-
/**
798-
* Get column mask associated with the given table, column and identity.
799-
* <p>
800-
* The mask must be a scalar SQL expression of a type coercible to the type of the column being masked. The expression
801-
* must be written in terms of columns in the table.
802-
*
803-
* @return the mask if present, or empty if not applicable
804-
* @deprecated use {@link #getColumnMasks(ConnectorSecurityContext, SchemaTableName, List)}
805-
*/
806-
@Deprecated
807-
default Optional<ViewExpression> getColumnMask(ConnectorSecurityContext context, SchemaTableName tableName, String columnName, Type type)
808-
{
809-
return Optional.empty();
810-
}
811-
812795
/**
813796
* Bulk method for getting column masks for a subset of columns in a table.
814797
* <p>
@@ -819,9 +802,6 @@ default Optional<ViewExpression> getColumnMask(ConnectorSecurityContext context,
819802
*/
820803
default Map<ColumnSchema, ViewExpression> getColumnMasks(ConnectorSecurityContext context, SchemaTableName tableName, List<ColumnSchema> columns)
821804
{
822-
return columns.stream()
823-
.map(column -> Map.entry(column, getColumnMask(context, tableName, column.getName(), column.getType())))
824-
.filter(entry -> entry.getValue().isPresent())
825-
.collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().get()));
805+
return emptyMap();
826806
}
827807
}

lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/classloader/ClassLoaderSafeConnectorAccessControl.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import io.trino.spi.security.Privilege;
2525
import io.trino.spi.security.TrinoPrincipal;
2626
import io.trino.spi.security.ViewExpression;
27-
import io.trino.spi.type.Type;
2827

2928
import java.util.List;
3029
import java.util.Map;
@@ -638,14 +637,6 @@ public List<ViewExpression> getRowFilters(ConnectorSecurityContext context, Sche
638637
}
639638
}
640639

641-
@Override
642-
public Optional<ViewExpression> getColumnMask(ConnectorSecurityContext context, SchemaTableName tableName, String columnName, Type type)
643-
{
644-
try (ThreadContextClassLoader _ = new ThreadContextClassLoader(classLoader)) {
645-
return delegate.getColumnMask(context, tableName, columnName, type);
646-
}
647-
}
648-
649640
@Override
650641
public Map<ColumnSchema, ViewExpression> getColumnMasks(ConnectorSecurityContext context, SchemaTableName tableName, List<ColumnSchema> columns)
651642
{

lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/security/AllowAllAccessControl.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import io.trino.spi.security.Privilege;
2525
import io.trino.spi.security.TrinoPrincipal;
2626
import io.trino.spi.security.ViewExpression;
27-
import io.trino.spi.type.Type;
2827

2928
import java.util.List;
3029
import java.util.Map;
@@ -274,12 +273,6 @@ public List<ViewExpression> getRowFilters(ConnectorSecurityContext context, Sche
274273
return ImmutableList.of();
275274
}
276275

277-
@Override
278-
public Optional<ViewExpression> getColumnMask(ConnectorSecurityContext context, SchemaTableName tableName, String columnName, Type type)
279-
{
280-
return Optional.empty();
281-
}
282-
283276
@Override
284277
public Map<ColumnSchema, ViewExpression> getColumnMasks(ConnectorSecurityContext context, SchemaTableName tableName, List<ColumnSchema> columns)
285278
{

lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/security/FileBasedAccessControl.java

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import io.trino.spi.security.Privilege;
3131
import io.trino.spi.security.TrinoPrincipal;
3232
import io.trino.spi.security.ViewExpression;
33-
import io.trino.spi.type.Type;
3433

3534
import java.util.List;
3635
import java.util.Map;
@@ -111,7 +110,6 @@
111110
import static io.trino.spi.security.AccessDeniedException.denyShowTables;
112111
import static io.trino.spi.security.AccessDeniedException.denyTruncateTable;
113112
import static io.trino.spi.security.AccessDeniedException.denyUpdateTableColumns;
114-
import static java.lang.String.format;
115113

116114
public class FileBasedAccessControl
117115
implements ConnectorAccessControl
@@ -807,30 +805,6 @@ public List<ViewExpression> getRowFilters(ConnectorSecurityContext context, Sche
807805
.collect(toImmutableList());
808806
}
809807

810-
@Override
811-
public Optional<ViewExpression> getColumnMask(ConnectorSecurityContext context, SchemaTableName tableName, String columnName, Type type)
812-
{
813-
if (INFORMATION_SCHEMA_NAME.equals(tableName.getSchemaName())) {
814-
return Optional.empty();
815-
}
816-
817-
ConnectorIdentity identity = context.getIdentity();
818-
List<ViewExpression> masks = tableRules.stream()
819-
.filter(rule -> rule.matches(identity.getUser(), identity.getEnabledSystemRoles(), identity.getGroups(), tableName))
820-
.map(rule -> rule.getColumnMask(catalogName, tableName.getSchemaName(), columnName))
821-
// we return the first one we find
822-
.findFirst()
823-
.stream()
824-
.flatMap(Optional::stream)
825-
.toList();
826-
827-
if (masks.size() > 1) {
828-
throw new TrinoException(INVALID_COLUMN_MASK, format("Multiple masks defined for %s.%s", tableName, columnName));
829-
}
830-
831-
return masks.stream().findFirst();
832-
}
833-
834808
@Override
835809
public Map<ColumnSchema, ViewExpression> getColumnMasks(ConnectorSecurityContext context, SchemaTableName tableName, List<ColumnSchema> columns)
836810
{

lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/security/ForwardingConnectorAccessControl.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import io.trino.spi.security.Privilege;
2323
import io.trino.spi.security.TrinoPrincipal;
2424
import io.trino.spi.security.ViewExpression;
25-
import io.trino.spi.type.Type;
2625

2726
import java.util.List;
2827
import java.util.Map;
@@ -496,12 +495,6 @@ public List<ViewExpression> getRowFilters(ConnectorSecurityContext context, Sche
496495
return delegate().getRowFilters(context, tableName);
497496
}
498497

499-
@Override
500-
public Optional<ViewExpression> getColumnMask(ConnectorSecurityContext context, SchemaTableName tableName, String columnName, Type type)
501-
{
502-
return delegate().getColumnMask(context, tableName, columnName, type);
503-
}
504-
505498
@Override
506499
public Map<ColumnSchema, ViewExpression> getColumnMasks(ConnectorSecurityContext context, SchemaTableName tableName, List<ColumnSchema> columns)
507500
{

lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/BaseFileBasedConnectorAccessControlTest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import io.airlift.bootstrap.Bootstrap;
2121
import io.trino.spi.QueryId;
2222
import io.trino.spi.catalog.CatalogName;
23+
import io.trino.spi.connector.ColumnSchema;
2324
import io.trino.spi.connector.ConnectorAccessControl;
2425
import io.trino.spi.connector.ConnectorSecurityContext;
2526
import io.trino.spi.connector.ConnectorTransactionHandle;
@@ -395,16 +396,17 @@ public void testTableRulesForMixedGroupUsers()
395396
accessControl.checkCanDeleteFromTable(userGroup1Group2, myTable);
396397
accessControl.checkCanDropTable(userGroup1Group2, myTable);
397398
accessControl.checkCanSelectFromColumns(userGroup1Group2, myTable, ImmutableSet.of());
398-
assertThat(accessControl.getColumnMask(userGroup1Group2, myTable, "col_a", VARCHAR)).isEqualTo(Optional.empty());
399+
assertThat(accessControl.getColumnMasks(userGroup1Group2, myTable, List.of(ColumnSchema.builder().setName("col_a").setType(VARCHAR).build()))).isEmpty();
399400
assertThat(accessControl.getRowFilters(userGroup1Group2, myTable)).isEqualTo(ImmutableList.of());
400401

401402
assertDenied(() -> accessControl.checkCanCreateTable(userGroup2, myTable, Map.of()));
402403
assertDenied(() -> accessControl.checkCanInsertIntoTable(userGroup2, myTable));
403404
assertDenied(() -> accessControl.checkCanDeleteFromTable(userGroup2, myTable));
404405
assertDenied(() -> accessControl.checkCanDropTable(userGroup2, myTable));
405406
accessControl.checkCanSelectFromColumns(userGroup2, myTable, ImmutableSet.of());
407+
ColumnSchema colA = ColumnSchema.builder().setName("col_a").setType(VARCHAR).build();
406408
assertViewExpressionEquals(
407-
accessControl.getColumnMask(userGroup2, myTable, "col_a", VARCHAR).orElseThrow(),
409+
accessControl.getColumnMasks(userGroup2, myTable, List.of(colA)).get(colA),
408410
ViewExpression.builder()
409411
.catalog("test_catalog")
410412
.schema("my_schema")
@@ -420,15 +422,14 @@ public void testTableRulesForMixedGroupUsers()
420422
accessControl.checkCanDeleteFromTable(userGroup1Group3, myTable);
421423
accessControl.checkCanDropTable(userGroup1Group3, myTable);
422424
accessControl.checkCanSelectFromColumns(userGroup1Group3, myTable, ImmutableSet.of());
423-
assertThat(accessControl.getColumnMask(userGroup1Group3, myTable, "col_a", VARCHAR)).isEqualTo(Optional.empty());
424-
425+
assertThat(accessControl.getColumnMasks(userGroup1Group3, myTable, List.of(ColumnSchema.builder().setName("col_a").setType(VARCHAR).build()))).isEmpty();
425426
assertDenied(() -> accessControl.checkCanCreateTable(userGroup3, myTable, Map.of()));
426427
assertDenied(() -> accessControl.checkCanInsertIntoTable(userGroup3, myTable));
427428
assertDenied(() -> accessControl.checkCanDeleteFromTable(userGroup3, myTable));
428429
assertDenied(() -> accessControl.checkCanDropTable(userGroup3, myTable));
429430
accessControl.checkCanSelectFromColumns(userGroup3, myTable, ImmutableSet.of());
430431
assertViewExpressionEquals(
431-
accessControl.getColumnMask(userGroup3, myTable, "col_a", VARCHAR).orElseThrow(),
432+
accessControl.getColumnMasks(userGroup3, myTable, List.of(colA)).get(colA),
432433
ViewExpression.builder()
433434
.catalog("test_catalog")
434435
.schema("my_schema")

plugin/trino-hive/src/main/java/io/trino/plugin/hive/security/SqlStandardAccessControl.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import io.trino.spi.security.RoleGrant;
3737
import io.trino.spi.security.TrinoPrincipal;
3838
import io.trino.spi.security.ViewExpression;
39-
import io.trino.spi.type.Type;
4039

4140
import java.util.List;
4241
import java.util.Map;
@@ -709,12 +708,6 @@ public List<ViewExpression> getRowFilters(ConnectorSecurityContext context, Sche
709708
return ImmutableList.of();
710709
}
711710

712-
@Override
713-
public Optional<ViewExpression> getColumnMask(ConnectorSecurityContext context, SchemaTableName tableName, String columnName, Type type)
714-
{
715-
return Optional.empty();
716-
}
717-
718711
@Override
719712
public Map<ColumnSchema, ViewExpression> getColumnMasks(ConnectorSecurityContext context, SchemaTableName tableName, List<ColumnSchema> columns)
720713
{

0 commit comments

Comments
 (0)