py_abac.policy package

Subpackages

Submodules

py_abac.policy.policy module

Policy class

class py_abac.policy.policy.Policy(uid: str, description: str, rules: py_abac.policy.rules.Rules, targets: py_abac.policy.targets.Targets, effect: str, priority: int)[source]

Bases: object

Policy class containing rules and targets

fits(ctx: py_abac.context.EvaluationContext) → bool[source]

Check if the request fits policy

Parameters

ctx – evaluation context

Returns

True if fits else False

static from_json(data: dict) → py_abac.policy.policy.Policy[source]

Create Policy object from JSON

to_json()[source]

Convert policy object to JSON

property is_allowed

Check if access is allowed

class py_abac.policy.policy.PolicySchema(*, only: Union[Sequence[str], Set[str], None] = None, exclude: Union[Sequence[str], Set[str]] = (), many: bool = False, context: Optional[Dict] = None, load_only: Union[Sequence[str], Set[str]] = (), dump_only: Union[Sequence[str], Set[str]] = (), partial: Union[bool, Sequence[str], Set[str]] = False, unknown: Optional[str] = None)[source]

Bases: marshmallow.schema.Schema

JSON schema for policy

post_load(data, **_)[source]
opts = <marshmallow.schema.SchemaOpts object>

py_abac.policy.rules module

Policy rules class

class py_abac.policy.rules.RuleField(*, load_default: Any = <marshmallow.missing>, missing: Any = <marshmallow.missing>, dump_default: Any = <marshmallow.missing>, default: Any = <marshmallow.missing>, data_key: Optional[str] = None, attribute: Optional[str] = None, validate: Union[Callable[[Any], Any], Iterable[Callable[[Any], Any]], None] = None, required: bool = False, allow_none: Optional[bool] = None, load_only: bool = False, dump_only: bool = False, error_messages: Optional[Dict[str, str]] = None, metadata: Optional[Mapping[str, Any]] = None, **additional_metadata)[source]

Bases: marshmallow.fields.Field

Marshmallow field class for rules

class py_abac.policy.rules.Rules(subject: Union[List, Dict], resource: Union[List, Dict], action: Union[List, Dict], context: Union[List, Dict])[source]

Bases: object

Policy rules

is_satisfied(ctx: py_abac.context.EvaluationContext)[source]

Check if request satisfies all conditions

Parameters

ctx – policy evaluation context

Returns

True if satisfied else False

class py_abac.policy.rules.RulesSchema(*, only: Union[Sequence[str], Set[str], None] = None, exclude: Union[Sequence[str], Set[str]] = (), many: bool = False, context: Optional[Dict] = None, load_only: Union[Sequence[str], Set[str]] = (), dump_only: Union[Sequence[str], Set[str]] = (), partial: Union[bool, Sequence[str], Set[str]] = False, unknown: Optional[str] = None)[source]

Bases: marshmallow.schema.Schema

JSON schema for rules

post_load(data, **_)[source]
opts = <marshmallow.schema.SchemaOpts object>

py_abac.policy.targets module

Policy targets class

class py_abac.policy.targets.TargetField(*, load_default: Any = <marshmallow.missing>, missing: Any = <marshmallow.missing>, dump_default: Any = <marshmallow.missing>, default: Any = <marshmallow.missing>, data_key: Optional[str] = None, attribute: Optional[str] = None, validate: Union[Callable[[Any], Any], Iterable[Callable[[Any], Any]], None] = None, required: bool = False, allow_none: Optional[bool] = None, load_only: bool = False, dump_only: bool = False, error_messages: Optional[Dict[str, str]] = None, metadata: Optional[Mapping[str, Any]] = None, **additional_metadata)[source]

Bases: marshmallow.fields.Field

Marshmallow field class for targets

class py_abac.policy.targets.Targets(subject_id: list, resource_id: list, action_id: list)[source]

Bases: object

Policy targets

match(ctx: py_abac.context.EvaluationContext)[source]

Check if request matches policy targets

Parameters

ctx – policy evaluation context

Returns

True if matches else False

class py_abac.policy.targets.TargetsSchema(*, only: Union[Sequence[str], Set[str], None] = None, exclude: Union[Sequence[str], Set[str]] = (), many: bool = False, context: Optional[Dict] = None, load_only: Union[Sequence[str], Set[str]] = (), dump_only: Union[Sequence[str], Set[str]] = (), partial: Union[bool, Sequence[str], Set[str]] = False, unknown: Optional[str] = None)[source]

Bases: marshmallow.schema.Schema

JSON schema for targets

post_load(data, **_)[source]
opts = <marshmallow.schema.SchemaOpts object>

Module contents

Exposed classes and methods