Nexeed
    • Introduction
    • User manual
      • Basic operation
      • Getting started
      • User
      • Groups
      • Roles
      • Organizations
      • Contracts
      • Modules
      • Identity providers
        • General Settings for the Identity Provider
        • Mapper Overview
      • Reports
      • Activity log
      • My Account
        • Overview: Login Tab
      • Configuration
        • Contents of the configuration file
        • How to work with the configuration file
    • Operations manual
      • Overview
      • System Architecture and Interfaces
      • System Requirements
        • macma/macma-webapp-backend
        • macma/macma-core
        • macma/macma-keycloak-mssql
      • Migration from Previous Versions
        • Migration to 1.37+
        • Migration to 1.34+
        • Migration to 1.33+
        • Migration to 1.32+
        • Migration to 1.31+
        • Migration to 1.29+
        • Migration to 1.28+
        • Migration to 1.27+
        • Migration to 1.26+
        • Migration to 1.25+
        • Migration to 1.21+
        • Migration to 1.20+
        • Migration to 1.19+
        • Migration to 1.18+
        • Migration to 1.17+
        • Migration to 1.16.0
        • Migration to 1.15.0
      • Setup and Configuration
        • Helm Configuration
        • macma/macma-core Configuration
        • macma/macma-keycloak-mssql Configuration
        • macma/macma-webapp-backend Configuration
        • Installation guide
        • Identity provider integration
        • Optional Configuration
        • Recommendations
        • Module Health Verification Endpoints and K8S Probes
      • Start and Shutdown
      • Regular Operations
        • Registering a new application in MACMA
          • Allowing application to use other applications
        • Change client secret of an application
      • Logging and Monitoring
        • Required Monitoring
        • Security Logging
          • Macma Security Events
          • Keycloak Security Events
          • Security Logging Format
        • Activity Logging
          • Activity Log Events
      • Known Limitations
        • Performance
        • General
        • Allowed characters and Internationalization
    • Developer documentation
      • Concepts
        • Authentication
        • Authorization
        • Resources
        • Roles
        • Sharing
      • Getting started
        • Registration
        • Authentication
        • Authorization
        • Multitenancy
      • How-to
        • Get & handle tokens
        • OAuth 2.0 for Mobile and Native Apps
        • Evolve authorization in your application lifecycle
        • Use Web Core for user login
        • Handle our integration events
        • Frequent How-To Questions for Application Developers
        • Do automated testing
        • Advertise things to colleagues
        • Integrate with additional environments
      • Deep dives
        • OAuth2 and its flows
        • OpenID Connect endpoints
    • Troubleshooting
      • Startup and availability
      • Identity provider integration
      • Resource deletion
      • Authentication
      • Authorization
    • API documentation
      • HTTP API
      • Event API
    • Glossary
Multitenant Access Control
  • Industrial Application System
  • Core Services
    • Block Management
    • Deviation Processor
    • ID Builder
    • Multitenant Access Control
    • Notification Service
    • Ticket Management
    • Web Portal
  • Shopfloor Management
    • Andon Live
    • Global Production Overview
    • KPI Reporting
    • Operational Routines
    • Shift Book
    • Shopfloor Management Administration
  • Product & Quality
    • Product Setup Management
    • Part Traceability
    • Process Quality
    • Setup Specs
  • Execution
    • Line Control
    • Material Management
    • Order Management
    • Packaging Control
    • Rework Control
  • Intralogistics
    • AGV Control Center
    • Stock Management
    • Transport Management
  • Machine & Equipment
    • Condition Monitoring
    • Device Portal
    • Maintenance Management
    • Tool Management
  • Enterprise & Shopfloor Integration
    • Archiving Bridge
    • Data Publisher
    • Direct Data Link
    • Engineering UI
    • ERP Connectivity
    • Gateway
    • Information Router
    • Master Data Management
    • Orchestrator

Nexeed Learning Portal

  • Multitenant Access Control
  • Operations manual
  • Setup and Configuration
  • Recommendations
1.37.1 1.37.0

Recommendations

Default tenant at bootstrapping

Configuring a default id is mandatory. Configuring a default tenant name for the initial setup is also highly recommended. When starting MACMA the new tenant will be created including an admin user.

Restarting with different default tenant or admin user is not supported. Use a clean environment instead and start with the desired variables.

MACMA will not bootstrap if:
  • values for tenant id and name are not provided

  • the provided tenant does not exist but an existing tenant has MACMA application on startup (this indicates bootstrapping happened before)

SAML Support

MACMA does not support SAML. For this reason avoid to configure realms and clients that support SAML in Keycloak. Reasoning: SAML is based on XML and XXE is one of the most important threats according to OWASP.

Session ID Disclosure

When in Keycloak the log level is set to DEBUG, the session ID will be logged on login and logout. Avoid this session ID disclosure by using less verbose log levels like WARN or INFO but never DEBUG in a productive environment.

Host Hardening

The Center for Internet Security (CIS) provides a detailed list of recommendations regarding the usage of docker in production. Those recommendations should be applied to the docker host on which MACMA containers will run. The proper implementation of those recommendations should be checked with corresponding tooling (e.g. docker-bench). It’s a matter of great importance to apply the described security hardening in order to ensure a secure usage of MACMA.

Data security

Depending on the module version, data in transit and rest is not encrypted. Please check known_limitations

MACMA does not encrypt any communication between client and application itself by default. The server certificates need to be handled in the Nexeed IAS Gateway. Keep in mind that the browser being used needs to trust the given CA as well in order to be able to communicate with MACMA.

TLS can be disabled by configuration. Do not consider this for production purposes.

Service meshes

Service meshes are state-of-the-art technology to secure all communication within and between Kubernetes clusters. They typically intercept and redirect traffic to/from the Pods using proxy containers injected into the application Pods. These proxies can then secure communication between Pods using mTLS. In such scenarios, the service mesh control plane manages the complex and error-prone certificate management for the various mTLS connections, while being transparent to the actual application workloads.

The installation and configuration of a service mesh is the responsibility of the cluster operator and is not part of the NEXEED IAS installation process. However, it is recommended to use service meshes to secure all communication between MACMA services and NEXEED IAS modules running in the same cluster.

Database connection encryption

MACMA does not encrypt the database connection by default since this is highly database-specific. Depending on the database being used, the following adaptations are highly recommended:

MsSql
# Setting environment variables for TLS connection to databases
NEXEED_MACMA_KEYCLOAK_DATABASE_JDBC_PARAMS="encrypt=true;trustServerCertificate=false;"
NEXEED_MACMA_MASTER_DATA_DATASOURCE_URL="jdbc:sqlserver://<host>:<port>;databaseName=<database-name>;encrypt=true;trustServerCertificate=false;"

Keycloak DB connection pool background validation interval

The underlying Keycloak connection pool supports configuring the interval between liveness checks of idle DB connections. Lower values mean faster recovery in case of connection loss - but also mean higher load.

The environment variable that needs to be configured for Keycloak is DB_BG_VALIDATION_DURATION and defaults to 55 seconds (55S).

Restrict access to Keycloak Administrative UI

It is highly recommended that access to Keycloak administration UI (https://<BASE_URL><CONTEXT_PATH>/auth/admin) is limited to dedicated systems or local access.

See also the Installation guide.

Contents

© Robert Bosch Manufacturing Solutions GmbH 2023-2025, all rights reserved

Changelog Corporate information Legal notice Data protection notice Third party licenses