Skip to content

Commit

Permalink
Move and rename TransactionalConnectorAccessControl
Browse files Browse the repository at this point in the history
  • Loading branch information
erichwang committed Dec 28, 2015
1 parent 953732f commit 850b691
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 33 deletions.
Expand Up @@ -24,14 +24,14 @@
import com.facebook.presto.spi.SystemTable; import com.facebook.presto.spi.SystemTable;
import com.facebook.presto.spi.classloader.ThreadContextClassLoader; import com.facebook.presto.spi.classloader.ThreadContextClassLoader;
import com.facebook.presto.spi.connector.Connector; import com.facebook.presto.spi.connector.Connector;
import com.facebook.presto.spi.connector.ConnectorAccessControl;
import com.facebook.presto.spi.connector.ConnectorFactory; import com.facebook.presto.spi.connector.ConnectorFactory;
import com.facebook.presto.spi.connector.ConnectorIndexProvider; import com.facebook.presto.spi.connector.ConnectorIndexProvider;
import com.facebook.presto.spi.connector.ConnectorPageSinkProvider; import com.facebook.presto.spi.connector.ConnectorPageSinkProvider;
import com.facebook.presto.spi.connector.ConnectorPageSourceProvider; import com.facebook.presto.spi.connector.ConnectorPageSourceProvider;
import com.facebook.presto.spi.connector.ConnectorRecordSetProvider; import com.facebook.presto.spi.connector.ConnectorRecordSetProvider;
import com.facebook.presto.spi.connector.ConnectorRecordSinkProvider; import com.facebook.presto.spi.connector.ConnectorRecordSinkProvider;
import com.facebook.presto.spi.connector.ConnectorSplitManager; import com.facebook.presto.spi.connector.ConnectorSplitManager;
import com.facebook.presto.spi.security.TransactionalConnectorAccessControl;
import com.facebook.presto.split.PageSinkManager; import com.facebook.presto.split.PageSinkManager;
import com.facebook.presto.split.PageSourceManager; import com.facebook.presto.split.PageSourceManager;
import com.facebook.presto.split.RecordPageSinkProvider; import com.facebook.presto.split.RecordPageSinkProvider;
Expand Down Expand Up @@ -251,7 +251,7 @@ private synchronized void addConnectorInternal(ConnectorType type, String catalo
requireNonNull(connector.getSessionProperties(), format("Connector %s returned null session properties", connectorId)); requireNonNull(connector.getSessionProperties(), format("Connector %s returned null session properties", connectorId));
requireNonNull(connector.getTableProperties(), format("Connector %s returned null table properties", connectorId)); requireNonNull(connector.getTableProperties(), format("Connector %s returned null table properties", connectorId));


TransactionalConnectorAccessControl accessControl = null; ConnectorAccessControl accessControl = null;
try { try {
accessControl = connector.getAccessControl(); accessControl = connector.getAccessControl();
} }
Expand Down
Expand Up @@ -15,11 +15,11 @@


import com.facebook.presto.metadata.QualifiedObjectName; import com.facebook.presto.metadata.QualifiedObjectName;
import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.PrestoException;
import com.facebook.presto.spi.connector.ConnectorAccessControl;
import com.facebook.presto.spi.connector.ConnectorTransactionHandle; import com.facebook.presto.spi.connector.ConnectorTransactionHandle;
import com.facebook.presto.spi.security.Identity; import com.facebook.presto.spi.security.Identity;
import com.facebook.presto.spi.security.SystemAccessControl; import com.facebook.presto.spi.security.SystemAccessControl;
import com.facebook.presto.spi.security.SystemAccessControlFactory; import com.facebook.presto.spi.security.SystemAccessControlFactory;
import com.facebook.presto.spi.security.TransactionalConnectorAccessControl;
import com.facebook.presto.transaction.TransactionId; import com.facebook.presto.transaction.TransactionId;
import com.facebook.presto.transaction.TransactionManager; import com.facebook.presto.transaction.TransactionManager;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
Expand Down Expand Up @@ -101,7 +101,7 @@ public void addSystemAccessControlFactory(SystemAccessControlFactory accessContr
} }
} }


public void addCatalogAccessControl(String connectorId, String catalogName, TransactionalConnectorAccessControl accessControl) public void addCatalogAccessControl(String connectorId, String catalogName, ConnectorAccessControl accessControl)
{ {
requireNonNull(connectorId, "connectorId is null"); requireNonNull(connectorId, "connectorId is null");
requireNonNull(catalogName, "catalogName is null"); requireNonNull(catalogName, "catalogName is null");
Expand Down Expand Up @@ -402,15 +402,15 @@ private static Map<String, String> loadProperties(File file)
private class CatalogAccessControlEntry private class CatalogAccessControlEntry
{ {
private final String connectorId; private final String connectorId;
private final TransactionalConnectorAccessControl accessControl; private final ConnectorAccessControl accessControl;


public CatalogAccessControlEntry(String connectorId, TransactionalConnectorAccessControl accessControl) public CatalogAccessControlEntry(String connectorId, ConnectorAccessControl accessControl)
{ {
this.connectorId = requireNonNull(connectorId, "connectorId is null"); this.connectorId = requireNonNull(connectorId, "connectorId is null");
this.accessControl = requireNonNull(accessControl, "accessControl is null"); this.accessControl = requireNonNull(accessControl, "accessControl is null");
} }


public TransactionalConnectorAccessControl getAccessControl() public ConnectorAccessControl getAccessControl()
{ {
return accessControl; return accessControl;
} }
Expand Down
Expand Up @@ -14,19 +14,18 @@
package com.facebook.presto.security; package com.facebook.presto.security;


import com.facebook.presto.spi.SchemaTableName; import com.facebook.presto.spi.SchemaTableName;
import com.facebook.presto.spi.connector.ConnectorAccessControl;
import com.facebook.presto.spi.connector.ConnectorTransactionHandle; import com.facebook.presto.spi.connector.ConnectorTransactionHandle;
import com.facebook.presto.spi.security.ConnectorAccessControl;
import com.facebook.presto.spi.security.Identity; import com.facebook.presto.spi.security.Identity;
import com.facebook.presto.spi.security.TransactionalConnectorAccessControl;


import static java.util.Objects.requireNonNull; import static java.util.Objects.requireNonNull;


public class LegacyConnectorAccessControl public class LegacyConnectorAccessControl
implements TransactionalConnectorAccessControl implements ConnectorAccessControl
{ {
private final ConnectorAccessControl accessControl; private final com.facebook.presto.spi.security.ConnectorAccessControl accessControl;


public LegacyConnectorAccessControl(ConnectorAccessControl accessControl) public LegacyConnectorAccessControl(com.facebook.presto.spi.security.ConnectorAccessControl accessControl)
{ {
this.accessControl = requireNonNull(accessControl, "accessControl is null"); this.accessControl = requireNonNull(accessControl, "accessControl is null");
} }
Expand Down
Expand Up @@ -19,6 +19,7 @@
import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.PrestoException;
import com.facebook.presto.spi.SystemTable; import com.facebook.presto.spi.SystemTable;
import com.facebook.presto.spi.connector.Connector; import com.facebook.presto.spi.connector.Connector;
import com.facebook.presto.spi.connector.ConnectorAccessControl;
import com.facebook.presto.spi.connector.ConnectorIndexProvider; import com.facebook.presto.spi.connector.ConnectorIndexProvider;
import com.facebook.presto.spi.connector.ConnectorMetadata; import com.facebook.presto.spi.connector.ConnectorMetadata;
import com.facebook.presto.spi.connector.ConnectorPageSinkProvider; import com.facebook.presto.spi.connector.ConnectorPageSinkProvider;
Expand All @@ -27,7 +28,6 @@
import com.facebook.presto.spi.connector.ConnectorRecordSinkProvider; import com.facebook.presto.spi.connector.ConnectorRecordSinkProvider;
import com.facebook.presto.spi.connector.ConnectorSplitManager; import com.facebook.presto.spi.connector.ConnectorSplitManager;
import com.facebook.presto.spi.connector.ConnectorTransactionHandle; import com.facebook.presto.spi.connector.ConnectorTransactionHandle;
import com.facebook.presto.spi.security.TransactionalConnectorAccessControl;
import com.facebook.presto.spi.session.PropertyMetadata; import com.facebook.presto.spi.session.PropertyMetadata;
import com.facebook.presto.spi.transaction.IsolationLevel; import com.facebook.presto.spi.transaction.IsolationLevel;


Expand Down Expand Up @@ -134,7 +134,7 @@ public List<PropertyMetadata<?>> getTableProperties()
} }


@Override @Override
public TransactionalConnectorAccessControl getAccessControl() public ConnectorAccessControl getAccessControl()
{ {
return new LegacyConnectorAccessControl(connector.getAccessControl()); return new LegacyConnectorAccessControl(connector.getAccessControl());
} }
Expand Down
Expand Up @@ -18,13 +18,13 @@
import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.PrestoException;
import com.facebook.presto.spi.SchemaTableName; import com.facebook.presto.spi.SchemaTableName;
import com.facebook.presto.spi.connector.Connector; import com.facebook.presto.spi.connector.Connector;
import com.facebook.presto.spi.connector.ConnectorAccessControl;
import com.facebook.presto.spi.connector.ConnectorMetadata; import com.facebook.presto.spi.connector.ConnectorMetadata;
import com.facebook.presto.spi.connector.ConnectorSplitManager; import com.facebook.presto.spi.connector.ConnectorSplitManager;
import com.facebook.presto.spi.connector.ConnectorTransactionHandle; import com.facebook.presto.spi.connector.ConnectorTransactionHandle;
import com.facebook.presto.spi.security.Identity; import com.facebook.presto.spi.security.Identity;
import com.facebook.presto.spi.security.SystemAccessControl; import com.facebook.presto.spi.security.SystemAccessControl;
import com.facebook.presto.spi.security.SystemAccessControlFactory; import com.facebook.presto.spi.security.SystemAccessControlFactory;
import com.facebook.presto.spi.security.TransactionalConnectorAccessControl;
import com.facebook.presto.spi.transaction.IsolationLevel; import com.facebook.presto.spi.transaction.IsolationLevel;
import com.facebook.presto.transaction.TransactionManager; import com.facebook.presto.transaction.TransactionManager;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
Expand Down Expand Up @@ -198,7 +198,7 @@ public void checkCanSetSystemSessionProperty(Identity identity, String propertyN
} }


private static class DenyConnectorAccessControl private static class DenyConnectorAccessControl
implements TransactionalConnectorAccessControl implements ConnectorAccessControl
{ {
@Override @Override
public void checkCanSelectFromTable(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName tableName) public void checkCanSelectFromTable(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName tableName)
Expand Down
Expand Up @@ -15,7 +15,6 @@


import com.facebook.presto.spi.ConnectorHandleResolver; import com.facebook.presto.spi.ConnectorHandleResolver;
import com.facebook.presto.spi.SystemTable; import com.facebook.presto.spi.SystemTable;
import com.facebook.presto.spi.security.TransactionalConnectorAccessControl;
import com.facebook.presto.spi.session.PropertyMetadata; import com.facebook.presto.spi.session.PropertyMetadata;
import com.facebook.presto.spi.transaction.IsolationLevel; import com.facebook.presto.spi.transaction.IsolationLevel;


Expand Down Expand Up @@ -105,7 +104,7 @@ default List<PropertyMetadata<?>> getTableProperties()
/** /**
* @throws UnsupportedOperationException if this connector does not have an access control * @throws UnsupportedOperationException if this connector does not have an access control
*/ */
default TransactionalConnectorAccessControl getAccessControl() default ConnectorAccessControl getAccessControl()
{ {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
Expand Down
Expand Up @@ -11,76 +11,76 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.facebook.presto.spi.security; package com.facebook.presto.spi.connector;


import com.facebook.presto.spi.SchemaTableName; import com.facebook.presto.spi.SchemaTableName;
import com.facebook.presto.spi.connector.ConnectorTransactionHandle; import com.facebook.presto.spi.security.Identity;


public interface TransactionalConnectorAccessControl public interface ConnectorAccessControl
{ {
/** /**
* Check if identity is allowed to create the specified table in this catalog. * Check if identity is allowed to create the specified table in this catalog.
* @throws AccessDeniedException if not allowed * @throws com.facebook.presto.spi.security.AccessDeniedException if not allowed
*/ */
void checkCanCreateTable(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName tableName); void checkCanCreateTable(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName tableName);


/** /**
* Check if identity is allowed to drop the specified table in this catalog. * Check if identity is allowed to drop the specified table in this catalog.
* @throws AccessDeniedException if not allowed * @throws com.facebook.presto.spi.security.AccessDeniedException if not allowed
*/ */
void checkCanDropTable(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName tableName); void checkCanDropTable(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName tableName);


/** /**
* Check if identity is allowed to rename the specified table in this catalog. * Check if identity is allowed to rename the specified table in this catalog.
* @throws AccessDeniedException if not allowed * @throws com.facebook.presto.spi.security.AccessDeniedException if not allowed
*/ */
void checkCanRenameTable(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName tableName, SchemaTableName newTableName); void checkCanRenameTable(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName tableName, SchemaTableName newTableName);


/** /**
* Check if identity is allowed to add columns to the specified table in this catalog. * Check if identity is allowed to add columns to the specified table in this catalog.
* @throws AccessDeniedException if not allowed * @throws com.facebook.presto.spi.security.AccessDeniedException if not allowed
*/ */
void checkCanAddColumn(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName tableName); void checkCanAddColumn(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName tableName);


/** /**
* Check if identity is allowed to rename a column in the specified table in this catalog. * Check if identity is allowed to rename a column in the specified table in this catalog.
* @throws AccessDeniedException if not allowed * @throws com.facebook.presto.spi.security.AccessDeniedException if not allowed
*/ */
void checkCanRenameColumn(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName tableName); void checkCanRenameColumn(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName tableName);


/** /**
* Check if identity is allowed to select from the specified table in this catalog. * Check if identity is allowed to select from the specified table in this catalog.
* @throws AccessDeniedException if not allowed * @throws com.facebook.presto.spi.security.AccessDeniedException if not allowed
*/ */
void checkCanSelectFromTable(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName tableName); void checkCanSelectFromTable(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName tableName);


/** /**
* Check if identity is allowed to insert into the specified table in this catalog. * Check if identity is allowed to insert into the specified table in this catalog.
* @throws AccessDeniedException if not allowed * @throws com.facebook.presto.spi.security.AccessDeniedException if not allowed
*/ */
void checkCanInsertIntoTable(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName tableName); void checkCanInsertIntoTable(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName tableName);


/** /**
* Check if identity is allowed to delete from the specified table in this catalog. * Check if identity is allowed to delete from the specified table in this catalog.
* @throws AccessDeniedException if not allowed * @throws com.facebook.presto.spi.security.AccessDeniedException if not allowed
*/ */
void checkCanDeleteFromTable(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName tableName); void checkCanDeleteFromTable(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName tableName);


/** /**
* Check if identity is allowed to create the specified view in this catalog. * Check if identity is allowed to create the specified view in this catalog.
* @throws AccessDeniedException if not allowed * @throws com.facebook.presto.spi.security.AccessDeniedException if not allowed
*/ */
void checkCanCreateView(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName viewName); void checkCanCreateView(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName viewName);


/** /**
* Check if identity is allowed to drop the specified view in this catalog. * Check if identity is allowed to drop the specified view in this catalog.
* @throws AccessDeniedException if not allowed * @throws com.facebook.presto.spi.security.AccessDeniedException if not allowed
*/ */
void checkCanDropView(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName viewName); void checkCanDropView(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName viewName);


/** /**
* Check if identity is allowed to select from the specified view in this catalog. * Check if identity is allowed to select from the specified view in this catalog.
* @throws AccessDeniedException if not allowed * @throws com.facebook.presto.spi.security.AccessDeniedException if not allowed
*/ */
void checkCanSelectFromView(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName viewName); void checkCanSelectFromView(ConnectorTransactionHandle transactionHandle, Identity identity, SchemaTableName viewName);


Expand All @@ -98,7 +98,7 @@ public interface TransactionalConnectorAccessControl


/** /**
* Check if identity is allowed to set the specified property in this catalog. * Check if identity is allowed to set the specified property in this catalog.
* @throws AccessDeniedException if not allowed * @throws com.facebook.presto.spi.security.AccessDeniedException if not allowed
*/ */
void checkCanSetCatalogSessionProperty(Identity identity, String propertyName); void checkCanSetCatalogSessionProperty(Identity identity, String propertyName);
} }

0 comments on commit 850b691

Please sign in to comment.