ACLEntry

Defines access control list entries that specify precise permissions for principals on specific resources, implementing discretionary access control (DAC) at the most granular level. ACL entries are the building blocks of resource-centric security, where each resource (file, folder, database, API endpoint) maintains a list of who can do what with it. Unlike role-based permissions that apply broadly, ACL entries provide fine-grained control for specific resource instances. Each entry defines a principal (user, group, or service), the resource they can access, and exactly what operations are allowed or denied. This is essential for implementing ownership models where resource creators control access, handling exceptions to broader policies, and managing shared resources with complex permission requirements. ACL entries support inheritance from parent resources (folders passing permissions to files), explicit deny rules that override allows, and conditional access based on resource state or context. They can specify different permissions for different aspects of a resource - for example, allowing read of metadata but not content, or permitting updates to certain fields only. The system evaluates ACL entries in a specific order, considering inheritance, explicit entries, and deny-before-allow rules. This granular control is crucial for compliance scenarios requiring proof of exactly who had access to specific data at specific times.

30 properties
Schema

Properties

PropertyTypeModeDescriptionRequired
aclIduuid
stored

Unique identifier for this ACL entry

Required
resourceTypestring
stored

Type of resource this ACL applies to

Example: "document"

Required
resourceIdstring
stored

Specific resource identifier

Example: "doc_financial_report_2024"

Required
principalTypestring
enum

Type of principal being granted access

Values: user, group, role, service, everyone, authenticated, anonymous

Required
principalIdstring
stored

Identifier of the principal

Required
permissionsstring
stored

JSON array of granted permissions

Example: "[\"read\",\"write\",\"delete\",\"share\"]"

Required
grantTypestring
enum

Whether permissions are granted or denied

Values: allow, deny

Required
scopestring
enum

Scope of the ACL entry

Values: resource_only, resource_and_children, children_only, recursive

Optional
inheritanceTypestring
enum

How this ACL interacts with inherited permissions

Values: override, merge, block_inheritance

Optional
isInheritedboolean
stored

Whether this ACL was inherited from parent

Optional
inheritedFromstring
stored

Parent resource this was inherited from

Optional
priorityinteger
stored

Evaluation order (higher priority evaluated first)

Optional
conditionsstring
stored

JSON conditions for when ACL applies

Example: "{\"resource_state\":\"published\",\"time_range\":\"business_hours\"}"

Optional
fieldRestrictionsstring
stored

JSON specifying field-level permissions

Example: "{\"allowed_fields\":[\"title\",\"summary\"],\"denied_fields\":[\"salary\",\"ssn\"]}"

Optional
maxAccessCountinteger
stored

Maximum number of times resource can be accessed

Optional
currentAccessCountinteger
stored

Current access count

Optional
validFromDateTime
stored

When this ACL becomes effective

Optional
validUntilDateTime
stored

When this ACL expires

Optional
grantedByUser
stored

Who created this ACL entry

Optional
grantedAtDateTime
stored

When ACL was granted

Required
reasonstring
stored

Explanation for this ACL entry

Optional
requiresMfaboolean
stored

Whether MFA is required for access

Optional
requiresApprovalboolean
stored

Whether access requires runtime approval

Optional
approvalConfigstring
stored

JSON configuration for approval workflow

Optional
auditLevelstring
enum

Level of auditing for access via this ACL

Values: none, basic, detailed, full

Optional
propagateboolean
stored

Whether to propagate to child resources

Optional
isActiveboolean
stored

Whether this ACL entry is active

Optional
lastUsedAtDateTime
stored

Last time this ACL was used for access

Optional
usageCountinteger
stored

Number of times this ACL has been used

Optional
metadataobject
stored

Additional ACL configuration

Optional

Examples

Example 1

{
  "@type": "ACLEntry",
  "aclId": "acl_doc_001",
  "resourceType": "document",
  "resourceId": "doc_annual_report_2024",
  "principalType": "group",
  "principalId": "grp_finance_team",
  "permissions": "[\"read\",\"write\",\"comment\",\"version\"]",
  "grantType": "allow",
  "scope": "resource_only",
  "inheritanceType": "merge",
  "isInherited": false,
  "priority": 50,
  "conditions": "{\"document_state\":[\"draft\",\"review\"],\"work_hours\":true}",
  "fieldRestrictions": "{\"denied_fields\":[\"executive_summary\",\"confidential_notes\"]}",
  "validFrom": "2024-01-01T00:00:00Z",
  "validUntil": "2024-12-31T23:59:59Z",
  "grantedBy": "user_cfo",
  "grantedAt": "2024-01-01T00:00:00Z",
  "reason": "Finance team needs edit access to prepare annual report",
  "requiresMfa": true,
  "requiresApproval": false,
  "auditLevel": "detailed",
  "propagate": false,
  "isActive": true,
  "lastUsedAt": "2024-03-15T10:30:00Z",
  "usageCount": 156,
  "metadata": {
    "project": "annual_report_2024",
    "sensitivity": "high"
  }
}

Example 2

{
  "@type": "ACLEntry",
  "aclId": "acl_folder_002",
  "resourceType": "folder",
  "resourceId": "folder_customer_data",
  "principalType": "user",
  "principalId": "user_contractor_123",
  "permissions": "[\"read\",\"list\"]",
  "grantType": "deny",
  "scope": "recursive",
  "inheritanceType": "override",
  "isInherited": false,
  "priority": 100,
  "conditions": "{\"after_date\":\"2024-06-01\"}",
  "maxAccessCount": 0,
  "validFrom": "2024-06-01T00:00:00Z",
  "grantedBy": "user_security_admin",
  "grantedAt": "2024-05-15T00:00:00Z",
  "reason": "Contractor engagement ends May 31, 2024 - preventive access removal",
  "requiresMfa": true,
  "auditLevel": "full",
  "propagate": true,
  "isActive": true,
  "metadata": {
    "contract_end": "2024-05-31",
    "security_review": "required"
  }
}