Class CatalogHandler
java.lang.Object
org.apache.polaris.service.catalog.common.CatalogHandler
- Direct Known Subclasses:
GenericTableCatalogHandler,IcebergCatalogHandler,PolicyCatalogHandler
An ABC for catalog wrappers which provides authorize methods that should be called before a
request is actually forwarded to a catalog. Child types must implement `initializeCatalog` which
will be called after a successful authorization.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected org.apache.polaris.core.persistence.resolver.PolarisResolutionManifest -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidauthorizeBasicNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.Namespace namespace) protected voidauthorizeBasicNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.Namespace namespace, List<org.apache.iceberg.catalog.Namespace> extraPassthroughNamespaces, List<org.apache.iceberg.catalog.TableIdentifier> extraPassthroughTableLikes, List<org.apache.polaris.service.types.PolicyIdentifier> extraPassThroughPolicies) protected voidauthorizeBasicTableLikeOperationsOrThrow(EnumSet<org.apache.polaris.core.auth.PolarisAuthorizableOperation> ops, org.apache.polaris.core.entity.PolarisEntitySubType subType, org.apache.iceberg.catalog.TableIdentifier identifier) protected voidauthorizeCollectionOfTableLikeOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.polaris.core.entity.PolarisEntitySubType subType, List<org.apache.iceberg.catalog.TableIdentifier> ids) protected voidauthorizeCreateNamespaceUnderNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.Namespace namespace) protected voidauthorizeCreateTableLikeUnderNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.TableIdentifier identifier) abstract org.apache.polaris.core.auth.PolarisAuthorizerprotected voidauthorizeRegisterTableOverwriteOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation overwriteOp, org.apache.polaris.core.auth.PolarisAuthorizableOperation fallbackOp, org.apache.iceberg.catalog.TableIdentifier identifier) Authorizes a register-table-with-overwrite operation.protected voidauthorizeRenameTableLikeOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.polaris.core.entity.PolarisEntitySubType subType, org.apache.iceberg.catalog.TableIdentifier src, org.apache.iceberg.catalog.TableIdentifier dst) protected voidauthorizeResolvedBasicTableLikeOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.polaris.core.entity.PolarisEntitySubType subType, org.apache.iceberg.catalog.TableIdentifier identifier) protected voidauthorizeResolvedCreateTableLikeUnderNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.TableIdentifier identifier) protected voidauthorizeResolvedRegisterTableOverwriteOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation overwriteOp, org.apache.polaris.core.auth.PolarisAuthorizableOperation fallbackOp, org.apache.iceberg.catalog.TableIdentifier identifier) abstract org.apache.polaris.core.context.CallContextabstract Stringprotected voidensureResolutionManifestForTable(org.apache.iceberg.catalog.TableIdentifier identifier) Ensures resolution manifest is initialized for a table identifier.protected abstract voidInitialize the catalog once authorized.abstract org.apache.polaris.core.persistence.PolarisMetaStoreManagerprotected org.apache.polaris.core.persistence.resolver.PolarisResolutionManifestabstract org.apache.polaris.core.auth.PolarisPrincipalorg.apache.polaris.core.config.RealmConfigorg.apache.polaris.core.context.RealmContextabstract org.apache.polaris.core.persistence.resolver.ResolutionManifestFactoryprotected voidresolveAndAuthorizeBasicTableLikeOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.polaris.core.entity.PolarisEntitySubType subType, org.apache.iceberg.catalog.TableIdentifier identifier) protected voidresolveBasicTableLikeTargetOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.TableIdentifier identifier)
-
Field Details
-
resolutionManifest
protected org.apache.polaris.core.persistence.resolver.PolarisResolutionManifest resolutionManifest
-
-
Constructor Details
-
CatalogHandler
public CatalogHandler()
-
-
Method Details
-
catalogName
-
polarisPrincipal
public abstract org.apache.polaris.core.auth.PolarisPrincipal polarisPrincipal() -
callContext
public abstract org.apache.polaris.core.context.CallContext callContext() -
realmConfig
@Derived public org.apache.polaris.core.config.RealmConfig realmConfig() -
realmContext
@Derived public org.apache.polaris.core.context.RealmContext realmContext() -
metaStoreManager
public abstract org.apache.polaris.core.persistence.PolarisMetaStoreManager metaStoreManager() -
resolutionManifestFactory
public abstract org.apache.polaris.core.persistence.resolver.ResolutionManifestFactory resolutionManifestFactory() -
authorizer
public abstract org.apache.polaris.core.auth.PolarisAuthorizer authorizer() -
newResolutionManifest
protected org.apache.polaris.core.persistence.resolver.PolarisResolutionManifest newResolutionManifest() -
initializeCatalog
protected abstract void initializeCatalog()Initialize the catalog once authorized. Called after all `authorize...` methods. -
authorizeBasicNamespaceOperationOrThrow
protected void authorizeBasicNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.Namespace namespace) -
authorizeBasicNamespaceOperationOrThrow
protected void authorizeBasicNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.Namespace namespace, List<org.apache.iceberg.catalog.Namespace> extraPassthroughNamespaces, List<org.apache.iceberg.catalog.TableIdentifier> extraPassthroughTableLikes, List<org.apache.polaris.service.types.PolicyIdentifier> extraPassThroughPolicies) -
authorizeCreateNamespaceUnderNamespaceOperationOrThrow
protected void authorizeCreateNamespaceUnderNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.Namespace namespace) -
authorizeCreateTableLikeUnderNamespaceOperationOrThrow
protected void authorizeCreateTableLikeUnderNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.TableIdentifier identifier) -
authorizeResolvedCreateTableLikeUnderNamespaceOperationOrThrow
protected void authorizeResolvedCreateTableLikeUnderNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.TableIdentifier identifier) -
authorizeRegisterTableOverwriteOrThrow
protected void authorizeRegisterTableOverwriteOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation overwriteOp, org.apache.polaris.core.auth.PolarisAuthorizableOperation fallbackOp, org.apache.iceberg.catalog.TableIdentifier identifier) Authorizes a register-table-with-overwrite operation. If the table already exists,overwriteOpis authorized against the table entity. If the table does not exist,fallbackOpis authorized against the parent namespace. -
authorizeResolvedRegisterTableOverwriteOrThrow
protected void authorizeResolvedRegisterTableOverwriteOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation overwriteOp, org.apache.polaris.core.auth.PolarisAuthorizableOperation fallbackOp, org.apache.iceberg.catalog.TableIdentifier identifier) -
ensureResolutionManifestForTable
protected void ensureResolutionManifestForTable(org.apache.iceberg.catalog.TableIdentifier identifier) Ensures resolution manifest is initialized for a table identifier. This allows checking catalog-level feature flags or other resolved entities before authorization. If already initialized, this is a no-op. -
resolveBasicTableLikeTargetOrThrow
protected void resolveBasicTableLikeTargetOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.TableIdentifier identifier) -
authorizeResolvedBasicTableLikeOperationOrThrow
protected void authorizeResolvedBasicTableLikeOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.polaris.core.entity.PolarisEntitySubType subType, org.apache.iceberg.catalog.TableIdentifier identifier) -
resolveAndAuthorizeBasicTableLikeOperationOrThrow
protected void resolveAndAuthorizeBasicTableLikeOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.polaris.core.entity.PolarisEntitySubType subType, org.apache.iceberg.catalog.TableIdentifier identifier) -
authorizeBasicTableLikeOperationsOrThrow
protected void authorizeBasicTableLikeOperationsOrThrow(EnumSet<org.apache.polaris.core.auth.PolarisAuthorizableOperation> ops, org.apache.polaris.core.entity.PolarisEntitySubType subType, org.apache.iceberg.catalog.TableIdentifier identifier) -
authorizeCollectionOfTableLikeOperationOrThrow
protected void authorizeCollectionOfTableLikeOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.polaris.core.entity.PolarisEntitySubType subType, List<org.apache.iceberg.catalog.TableIdentifier> ids) -
authorizeRenameTableLikeOperationOrThrow
protected void authorizeRenameTableLikeOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.polaris.core.entity.PolarisEntitySubType subType, org.apache.iceberg.catalog.TableIdentifier src, org.apache.iceberg.catalog.TableIdentifier dst)
-