Skip to content

iam

iam serves Turna's embedded identity and access management API/UI. It stores users, service accounts, roles, permissions, LDAP mappings, and access-check data.

yaml
server:
  http:
    middlewares:
      iam:
        iam:
          prefix_path: /iam
          database:
            path: ./data/iam
            memory: false
            flatten: true
            backup_path: ""
            write_api: ""
            pubsub_topic: turna-iam
            redis:
              addrs:
                - localhost:6379
          check:
            default_hosts:
              - example.com
            no_host_check: false

Fields

FieldDescription
prefix_pathBase path for IAM API, UI, and Swagger. It is normalized to start with /.
database.pathBadger database path. Required unless database.memory is true.
database.memoryUse in-memory storage.
database.backup_pathRestore database from a backup on startup.
database.flattenFlatten inherited role/permission data on startup.
database.write_apiRead-only mode: sync from another IAM service's API.
database.redisRedis connection used for IAM synchronization.
database.pubsub_topicRedis Pub/Sub topic for sync notifications.
ldapOptional LDAP configuration for user/group sync.
check.default_hostsHosts used when permission resources do not define hosts.
check.no_host_checkDisable host checks in permission evaluation.

Main Routes

With prefix_path: /iam, the middleware exposes:

RoutePurpose
/iam/ui/*Embedded IAM UI.
/iam/swagger/*Embedded Swagger files.
/iam/v1/usersUser API.
/iam/v1/service-accountsService account API.
/iam/v1/rolesRole API.
/iam/v1/permissionsPermission API.
/iam/v1/checkPermission check API used by iam_check.
/iam/checkUser-facing check API.
/iam/v1/backup, /iam/v1/restore, /iam/v1/syncBackup and synchronization APIs.

iam registers itself by middleware name, which allows oauth2 and iam_forward_auth to use it directly.