Typical project structure and metadata
Authoring XACML policies using ALFA requires a set of metadata declarations to define the essential elements of access control rules. Typically, an ALFA project contains the following artifact types:
XACML data types
Operators
Functions
Combining algorithms
Attribute categories
Attributes
Files with custom attribute declarations
Files with custom advice and obligation declarations
Files with the policies themselves
The system.alfa file provides standard declarations for the artifacts listed above.
It is possible to define custom data types, operators, functions, combining algorithms and attribute categories, but it is typically not necessary.
Namespaces
To facilitate the management and reuse of these artifacts, ALFA projects utilize namespaces. Two common namespace organization approaches are recommended:
Artifact type structure
For small projects or simple policy structures, a dedicated namespace can be assigned to each artifact type. For instance, "Attributes" for custom attribute declarations, "Obligations" and "Advice" for obligation and advice declarations, and "Policies" for the actual policy definitions.
Domain-based organization
For larger projects or complex policy requirements, a domain-based namespace structure is recommended. Each domain, such as "User" for subject attributes, "Document" for resource-related attributes, "Export" for export control-related attributes, and "PortalA" for policies specific to the "Portal A" application, can have its own namespace.