AbacQueryPolicy

abstract class AbacQueryPolicy(val options: AbacQueryOptions = AbacQueryOptions.DEFAULT) : QueryPolicy

Resolves terminal access conditions using attribute-based access control (ABAC).

Principal tags from the current context are converted into query conditions and appended to snapshot queries, whose resource tags are the tags system field, and to the queries of a dataset that binds tag columns (DatasetQueryModelProfile.tags): a string column holds one tag value per record and a string-array column several, and an empty string or array is a record without the tag. Other query models, and datasets that bind no tag, are unrestricted by this policy and do not resolve principal tags.

Matching rules

Principal tagsResource tagsResult
wildcard (["*"])anymatch
["a", "b"]["a"]match
["a", "b"]["c"]no match
anykey absentmatch (public resource)
no tagsanymatch

The last two rows are the defaults; AbacQueryOptions tightens each.

Constructors

Link copied to clipboard
constructor(options: AbacQueryOptions = AbacQueryOptions.DEFAULT)

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard

Functions

Link copied to clipboard
open override fun evaluate(contextView: ContextView, context: QueryContext<*>): Mono<FilterExpression>

Resolves the ABAC condition for the current context.

Link copied to clipboard
abstract fun getPrincipalTags(contextView: ContextView, context: QueryContext<*>): Mono<AbacTags>

Resolves the principal's ABAC tags from the current context.