Alluxio
ProductsLanguageHome
AI-3.6 (stable)
AI-3.6 (stable)
  • Overview
    • Alluxio Namespace and Under File System
    • Worker Management and Consistent Hashing
    • Multi Tenancy and Unified Management
    • I/O Resiliency
  • Getting Started with K8s
    • Resource Prerequisites and Compatibility
    • Installation
      • Install on Kubernetes
      • Handling Images
      • Advanced Configuration
      • License
    • Monitoring and Metrics
    • Management Console
      • Deployment
      • Navigation
      • User Roles & Access Control
    • Cluster Administration
    • System Health Check & Quick Recovery
    • Diagnostic Snapshot
  • Storage Integrations
    • Amazon AWS S3
    • Google Cloud GCS
    • Azure Blob Store
    • Aliyun OSS
    • Tencent COS
    • Volcengine TOS
    • Baidu Object Storage
    • HDFS
    • Network Attached Storage (NAS)
  • Data Access
    • Access via FUSE (POSIX API)
      • Client Writeback
      • Client Virtual Path Mapping
    • Access via S3 API
    • Access via PythonSDK/FSSpec
    • Data Access High Availability
      • Multiple Replicas
      • Multiple Availability Zones (AZ)
    • Performance Optimizations
      • File Reading
      • File Writing
      • Metadata Listing
    • UFS Bandwidth Limiter
  • Cache Management
    • Cache Filter Policy
    • Cache Loading
    • Cache Eviction
      • Manual Eviction by Free Command
      • Auto Eviction by TTL Policy
      • Auto Eviction by Priority Policy
    • Stale Cache Cleaning
    • Cache Quota
  • Performance Benchmarks
    • Fio (POSIX) Benchmark
    • COSBench (S3) Benchmark
    • MLPerf Storage Benchmark
  • Security
    • TLS Support
  • Reference
    • User CLI
    • Metrics
    • S3 API Usage
    • Third Party Licenses
  • Release Notes
Powered by GitBook
On this page
  • Prerequisites
  • Example Configuration
  • Default Permission Model
  • OPA Configuration Parameters
  • Dashboard Group Structure
  • Gateway Group Structure
  • Configuration Example
  • Dashboard Configuration
  • Custom Authorization via OPA
  • Available disallowPages Options:
  • Available disallowComponents Options:
  • Example Response
  1. Getting Started with K8s
  2. Management Console

User Roles & Access Control

The Management Console implements role-based access control (RBAC) to ensure users can only access resources and perform actions permitted by their assigned roles or groups.

Prerequisites

To enable role-based access control, you need to configure the following settings:

  1. In the dashboard configuration:

    • Set authorization.enabled to true

    • Configure Okta authentication by setting:

      • web.authType to okta

      • oktaIssuer with your Okta issuer URL

      • oktaClientID with your Okta client ID

    • Ensure your Okta instance has proper role/group configurations set up

  2. In the gateway configuration:

    • Set authorization.enabled and authentication.enabled to true

    • Configure OIDC settings for token validation in the authentication section

Example Configuration

Dashboard configuration:

apiVersion: k8s-operator.alluxio.com/v1
kind: AlluxioCluster
spec:
  dashboard:
    image: <PRIVATE_REGISTRY>/alluxio-dashboard
    imageTag: AI-3.6-12.0.2
    enabled: true
    authorization:
      enabled: true
      type: opa
      opa:
        opa config for web console...    
    web:
      authType: okta
      oktaIssuer: your-okta-issuer-url
      oktaClientID: your-okta-client-id

  gateway:
    image: <PRIVATE_REGISTRY>/alluxio-gateway
    imageTag: AI-3.6-12.0.2
    enabled: true
    authentication:
      enabled: true
      type: oidc
      oidc:
        jwksConfigMapName: your-jwks-config-map-name
        jwksFilename: your-jwks-filename
    authorization:
      enabled: true
      opa:
        opa config for gateway...  

Important Notes: Ensure your Okta instance is properly configured with the necessary groups and roles. Each user should be assigned to appropriate groups that correspond to their access level in the system.

Default Permission Model

The system provides three predefined user types with distinct access levels:

  • Super User: Has unrestricted access to all pages and actions within the system.

  • Admin User: Functions as a group-level administrator with read-only access to all data, but can only modify resources within their assigned group.

  • Regular Users: By default, these users have no access and will be redirected to a 403 Forbidden page upon login.

For more flexible access control, you can implement custom authorization rules using OPA files. See the "Custom Authorization via OPA" section for details.

OPA Configuration Parameters

In the authorization section, the following key parameters are available:

  • roleFieldName: Specifies the token field that contains the user's role information.

  • groupFieldName: Specifies the token field that contains the user's group information.

  • superUser / adminUser: Defines lists of roles that are granted super-user or admin privileges.

  • allowApis (gateway only): Lists API endpoints that bypass authorization checks.

  • denyApis (gateway only): Lists API endpoints that will be blocked.

  • groups: Defines access control rules for each group. This section serves as a data.yaml in OPA. The default rego file uses this data to determine user authorization.

Dashboard Group Structure

groups:
- group: some-group
  role:
  - some-role
  pages:
  - /some-page
  components:
  - some-component

Gateway Group Structure

groups:
- group: some-group
  allow:
    pathPrefixes:
      - prefix: /some-path
        apis:
          - /some-api
  deny:
    pathPrefixes:
      - prefix: /some-path
        apis:
          - /some-api

The groups field is a list where each entry defines which resource paths a group can or cannot access. Under the allow section, you define resource prefixes that can be accessed by APIs. Under the deny section, you define resource prefixes that cannot be accessed by specific APIs.

Configuration Example

The following example demonstrates how to implement a role-based access control system with the following requirements:

  • User roles are determined by the userType field in the user's token (pre-configured in Okta)

  • User groups are determined by the department field in the user's token (pre-configured in Okta)

  • Super Users have full access to all pages and actions

  • Search Admins can view all pages but are restricted to mounting and loading paths prefixed with /search and /related-to-search

  • Recommend Admins can view all pages but are limited to operating on resources prefixed with /recommend

  • All other roles are denied access and redirected to a 403 Forbidden page after login

Dashboard Configuration

apiVersion: k8s-operator.alluxio.com/v1
kind: AlluxioCluster
spec:
  dashboard:
    image: <PRIVATE_REGISTRY>/alluxio-dashboard
    imageTag: AI-3.6-12.0.2
    enabled: true
    authorization:
      enabled: true
      type: opa
      opa:
        roleFieldName: userType
        groupFieldName: department
        superUser: ['Super', 'SuperUser']
        adminUser: ['Admin', 'Team-Admin']
        groups:
    #      You can leave this section empty if the default permission model is sufficient.
    #      If uncommented, Search Admin will not be able to view the mount page
    #      - group: Search
    #        role:
    #          - Admin
    #        pages:
    #          - /mount
  gateway:
    image: <PRIVATE_REGISTRY>/alluxio-gateway
    imageTag: AI-3.6-12.0.2
    enabled: true
    authorization:
      enabled: true
      type: opa
      opa:
        roleFieldName: userType
        groupFieldName: department
        allowApis: ['/api/allow/all']
        denyApis: ['/api/deny/all']
        superUser: ['Super', 'SuperUser']
        adminUser: ['Admin', 'Team-Admin']
        groups:
        - group: Search
          allow:
            pathPrefixes:
              - prefix: /search
              # If not defined, defaults to allowing all APIs with /search path
              - prefix: /related-to-search
                apis:
                  - /mount
                  - /load
        - group: Recommend
          allow:
            pathPrefixes:
              - prefix: /recommend

Custom Authorization via OPA

  1. Mount the file using a ConfigMap

  2. List it in filenames

  3. Set the appropriate query

You can examine and modify the default OPA files in the ConfigMap for both dashboard and gateway as needed.

Note: Dashboard OPA policies must return an object in the following format:

{
  "disallowPages": [],
  "disallowComponents": []
}

The dashboard uses this response to dynamically hide pages and UI elements based on user permissions.

Available disallowPages Options:

/monitoring/overview
/monitoring/components
/storage
/operations/preload
/operations/free
/settings/resource-management
/settings/cache-eviction
/support/snapshot
/license
/documentation
* (all pages)

Available disallowComponents Options:

  • createMount – "Create" button on the Mount page

  • createQuota – "Create" button on the Quota page

  • createTTL – "Create" button on the TTL page

  • createPriority – "Create" button on the Priority page

  • createJob – "Create" button on Preload and Free pages

  • * - All components

Example Response

If the OPA evaluation returns:

{
  "disallowPages": ["/license"],
  "disallowComponents": ["createMount"]
}

The user will be unable to access the License page, and the "Create" button on the Mount page will be hidden.

If the OPA evaluation returns:

{
  "disallowPages": ["*"],
  "disallowComponents": ["*"]
}

The user will be redirected to a 403 Forbidden page after login.

Last updated 19 hours ago

The groups field is a list where each entry defines which pages and components are accessible to specific roles within a group. If the default permission model meets your requirements, no additional configuration is needed. However, if you want to hide certain UI elements from specific roles within a group, you can add this configuration. See and for configurable options.

You can implement custom authorization rules by providing your own policy file (.rego). To use a custom policy:

OPA (Open Policy Agent)
described above
Available disallowPages Options
Available disallowComponents Options