For production IRIS APIs, a practical baseline is to combine strong authentication, RBAC-based authorization, TLS everywhere, and auditing/monitoring, with API management in front of exposed services when appropriate. [1][2][3][4][5]
Authentication and authorization
- For API security, apply an OAuth or JWT plug-in to the API endpoint, and manage producer/consumer keys in the Admin Portal. [1]
- InterSystems IRIS REST services support multiple authentication approaches, including HTTP authentication headers, web session authentication, and OAuth 2.0 authentication. [3]
- For individual REST endpoints, you can use Basic Auth or JWT (OAuth 2.0), and you can specify required privileges by editing the OpenAPI XData block in the specification class and by using the
SECURITYRESOURCEparameter in the dispatch class. [3] - For broader enterprise identity integration, IRIS can use LDAP-mapped users for SSO, delegated authentication, instance-managed authentication, OS authentication, hash authentication, two-factor authentication, and Kerberos with OS authentication. [1][6]
Token management
- A documented approach is to use InterSystems API Management (IAM) either to validate incoming access tokens generated by a third-party authorization server, or to both issue and validate access tokens itself. [5]
- IAM also centralizes security mechanisms such as OAuth 2.0 or Key Token Authentication. [3]
Note: You should only use Resource Owner Password Credentials flow when the client app is highly trusted, as it directly handles user credentials. In most cases, the client should be a first-party app. [5]
Role-based access control
- IRIS uses a role-based access control model in which users are assigned roles, and roles are authorized to use specific resources. This applies to databases, services, applications, and administrative actions. [2][7]
- Recommended practice is to define resources for databases and services, create roles with the needed privileges, and assign roles to users rather than granting permissions directly to users. [2]
- IRIS authorization can also be restricted at schema, table, and row level, and fine-grained authorization rules can be implemented using method class callbacks such as
%SecurityPolicein persistent classes. [1]
API gateway / API management
- IAM provides centralized monitoring and control of API traffic, including throttling throughput, configuring payload size limits, whitelisting or blacklisting IP addresses, and placing endpoints into maintenance mode. [3]
- IAM also provides central security, developer onboarding, and scalability features, making it a suitable recommendation where you want a gateway layer in front of IRIS APIs. [3][5]
Encryption and secure communication
- Secure REST services with both authentication and SSL on the transport layer. [3]
- IRIS supports named SSL/TLS configurations for HTTP and other communications, so applications can programmatically reference a stored configuration and have IRIS handle the TLS connection. [4]
- IRIS also supports X.509 certificate storage and use, plus CA certificate-based validation of signatures. [4]
- For stored data protection, IRIS supports database encryption, and additional custom encryption of data elements is also possible. [1][4]
Monitoring and logging
- Auditing is enabled by default in InterSystems IRIS, and you can configure events under System Administration > Security > Auditing > Configure System Events. [2][6]
- Audit records are stored in the dedicated IRISAUDIT database, and you can review them under System Administration > Security > Auditing > View Audit Database. [2][6]
- Auditing can capture items such as user, IP, event source, and event details; for APIs, an audit plug-in can be configured. [1]
- Additional monitoring options mentioned for IRIS environments include Diagnostic Report, Log Monitor, System Monitor, and SAM (System Alerting and Monitoring). [1]
Important Notes: [2]
- The audit database is stored in a dedicated database called IRISAUDIT
- Audit events can be viewed through System Administration > Security > Auditing > View Audit Database
- Default enabled events vary based on installation security level (Minimal, Normal, or Locked-down)
Common mistakes to avoid
- Do not leave default passwords in place; specifically, the default
SYSpassword is identified as a critical vulnerability and should be changed immediately after deployment. [2] - Do not grant permissions directly to users; use roles and resources instead. [2]
- Do not transmit credentials or sensitive data over unencrypted connections; configure TLS/SSL for web apps, database connections, and external API calls. [2]
- Do not overprivilege users; follow least privilege and regularly review role assignments. [2]
- If exposing APIs publicly, avoid putting authentication/authorization complexity only in backend services when IAM can act as a front-door validator or authorization server. [5]
- When using OAuth flows, avoid using Resource Owner Password Credentials except for highly trusted first-party clients. [5]
Useful production-oriented approach
- Protect each REST application/web application with an appropriate authentication method and associated security resource. [6][3]
- Use OAuth 2.0/JWT for API access, preferably with IAM as the centralized enforcement point when you need gateway capabilities. [1][3][5]
- Implement RBAC with resources and roles, and apply least privilege. [2][7]
- Configure TLS/SSL for all inbound and outbound communications and use certificate management features as needed. [2][4]
- Enable and review auditing, especially login failures and other security-relevant events. [2][6]
- Add operational monitoring through IRIS monitoring tools and SAM where broader observability is needed. [1]
If you want, I can next turn this into a concrete IRIS production security checklist for REST APIs, or a reference architecture using IRIS + IAM + OAuth2 + RBAC.
Sources:
- Log in to post comments