diff --git a/site/content/3.12/about-arangodb/features/_index.md b/site/content/3.12/about-arangodb/features/_index.md index 8b7a334e71..7f40fb9d3a 100644 --- a/site/content/3.12/about-arangodb/features/_index.md +++ b/site/content/3.12/about-arangodb/features/_index.md @@ -94,7 +94,7 @@ security, such as for scaling graphs and managing your data safely. - Multi-tenant deployment option for the transactional guarantees and performance of a single server - Enhanced data security with on-disk and backup encryption, key rotation, - audit logging, and LDAP authentication + and audit logging - Incremental backups without downtime and off-site replication See all [Enterprise Edition Features](enterprise-edition.md). @@ -120,7 +120,6 @@ See all [Enterprise Edition Features](enterprise-edition.md). | ACID transactions for multi-document / multi-collection queries on single servers, for single document operations in clusters, and for multi-document queries in clusters for collections with a single shard | In addition, ACID transactions for multi-collection queries using the OneShard feature | | Always read from leader shards in clusters | Optionally allow dirty reads to **read from followers** to scale reads | | TLS key and certificate rotation | In addition, **key rotation for JWT secrets** and **server name indication** (SNI) | -| Built-in user management and authentication | Additional **LDAP authentication** option | | Only server logs | **Audit log** of server interactions | | No on-disk encryption | **Encryption at Rest** with hardware-accelerated on-disk encryption and key rotation | | Only regular backups | **Datacenter-to-Datacenter Replication** for disaster recovery | diff --git a/site/content/3.12/about-arangodb/features/enterprise-edition.md b/site/content/3.12/about-arangodb/features/enterprise-edition.md index 1d65d4cb8a..f2ca8bd623 100644 --- a/site/content/3.12/about-arangodb/features/enterprise-edition.md +++ b/site/content/3.12/about-arangodb/features/enterprise-edition.md @@ -103,9 +103,6 @@ features outlined below. For additional information, see - [**Auditing**](../../operations/security/audit-logging.md): Audit logs of all server interactions. -- [**LDAP Authentication**](../../components/arangodb-server/ldap.md): - ArangoDB user authentication with an LDAP server. - - [**Encryption at Rest**](../../operations/security/encryption-at-rest.md): Hardware-accelerated on-disk encryption for your data. diff --git a/site/content/3.12/about-arangodb/features/highlights-by-version.md b/site/content/3.12/about-arangodb/features/highlights-by-version.md index b2e84b0743..5156baefa9 100644 --- a/site/content/3.12/about-arangodb/features/highlights-by-version.md +++ b/site/content/3.12/about-arangodb/features/highlights-by-version.md @@ -401,7 +401,7 @@ Also see [What's New in 3.3](../../release-notes/version-3.3/whats-new-in-3-3.md **Enterprise Edition** -- [**LDAP integration**](../../components/arangodb-server/ldap.md): Users and permissions +- **LDAP integration**: Users and permissions can be managed from outside ArangoDB with an LDAP server in different authentication configurations. diff --git a/site/content/3.12/components/arangodb-server/ldap.md b/site/content/3.12/components/arangodb-server/ldap.md deleted file mode 100644 index a3200d52ac..0000000000 --- a/site/content/3.12/components/arangodb-server/ldap.md +++ /dev/null @@ -1,564 +0,0 @@ ---- -title: ArangoDB Server LDAP Options -menuTitle: LDAP -weight: 10 -description: >- - LDAP authentication options in the ArangoDB server -archetype: default ---- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} - -## Basics Concepts - -The basic idea is that one can keep the user authentication setup for -an ArangoDB instance (single or cluster) outside of ArangoDB in an LDAP -server. A crucial feature of this is that one can add and withdraw users -and permissions by only changing the LDAP server and in particular -without touching the ArangoDB instance. Changes are effective in -ArangoDB within a few minutes. - -Since there are many different possible LDAP setups, we must support a -variety of possibilities for authentication and authorization. Here is -a short overview: - -To map ArangoDB user names to LDAP users there are two authentication -methods called "simple" and "search". In the "simple" method the LDAP bind -user is derived from the ArangoDB user name by prepending a prefix and -appending a suffix. For example, a user "alice" could be mapped to the -distinguished name `uid=alice,dc=arangodb,dc=com` to perform the LDAP -bind and authentication. -See [Simple authentication method](#simple-authentication-method) -below for details and configuration options. - -In the "search" method there are two phases. In Phase 1 a generic -read-only admin LDAP user account is used to bind to the LDAP server -first and search for an LDAP user matching the ArangoDB user name. In -Phase 2, the actual authentication is then performed against the LDAP -user that was found in phase 1. Both methods are sensible and are -recommended to use in production. -See [Search authentication method](#search-authentication-method) -below for details and configuration options. - -Once the user is authenticated, there are now two methods for -authorization: (a) "roles attribute" and (b) "roles search". - -In method (a) ArangoDB acquires a list of roles the authenticated LDAP -user has from the LDAP server. The actual access rights to databases -and collections for these roles are configured in ArangoDB itself. -Users effectively have the union of all access rights of all roles -they have. This method is probably the most common one for production use -cases. It combines the advantages of managing users and roles outside of -ArangoDB in the LDAP server with the fine grained access control within -ArangoDB for the individual roles. See [Roles attribute](#roles-attribute) -below for details about method (a) and for the associated configuration -options. - -Method (b) is very similar and only differs from (a) in the way the -actual list of roles of a user is derived from the LDAP server. -See [Roles search](#roles-search) below for details about method (b) -and for the associated configuration options. - -## Fundamental options - -The fundamental options for specifying how to access the LDAP server are -the following: - - - `--ldap.enabled` this is a boolean option which must be set to - `true` to activate the LDAP feature - - `--ldap.server` is a string specifying the host name or IP address - of the LDAP server - - `--ldap.port` is an integer specifying the port the LDAP server is - running on, the default is `389` - - `--ldap.basedn` specifies the base distinguished name under which - the search takes place (can alternatively be set via `--ldap.url`) - - `--ldap.binddn` and `--ldap.bindpasswd` are distinguished name and - password for a read-only LDAP user to which ArangoDB can bind to - search the LDAP server. Note that it is necessary to configure these - for both the "simple" and "search" authentication methods, since - even in the "simple" method, ArangoDB occasionally has to refresh - the authorization information from the LDAP server - even if the user session persists and no new authentication is - needed! It is, however, allowed to leave both empty, but then the - LDAP server must be readable with anonymous access. - - `--ldap.refresh-rate` is a floating point value in seconds. The - default is 300, which means that ArangoDB refreshes the - authorization information for authenticated users after at most 5 - minutes. This means that changes in the LDAP server like removed - users or added or removed roles for a user are effective after - at most 5 minutes. - -Note that the `--ldap.server` and `--ldap.port` options can -alternatively be specified in the `--ldap.url` string together with -other configuration options. For details see Section "LDAP URLs" below. - -Here is an example on how to configure the connection to the LDAP server, -with anonymous bind: - -``` ---ldap.enabled=true \ ---ldap.server=ldap.arangodb.com \ ---ldap.basedn=dc=arangodb,dc=com -``` - -With this configuration ArangoDB binds anonymously to the LDAP server -on host `ldap.arangodb.com` on the default port 389 and executes all searches -under the base distinguished name `dc=arangodb,dc=com`. - -If we need a user to read in LDAP here is the example for it: - -``` ---ldap.enabled=true \ ---ldap.server=ldap.arangodb.com \ ---ldap.basedn=dc=arangodb,dc=com \ ---ldap.binddn=uid=arangoadmin,dc=arangodb,dc=com \ ---ldap.bindpasswd=supersecretpassword -``` - -The connection is identical but the searches are executed with the -given distinguished name in `binddn`. - -Note here: -The given user (or the anonymous one) needs at least read access on -all user objects to find them and in the case of Roles search -also read access on the objects storing the roles. - -Up to this point ArangoDB can now connect to a given LDAP server -but it is not yet able to authenticate users properly with it. -For this pick one of the following two authentication methods. - -### LDAP URLs - -As an alternative one can specify the values of multiple LDAP related configuration -options by specifying a single LDAP URL. Here is an example: - -``` ---ldap.url ldap://ldap.arangodb.com:1234/dc=arangodb,dc=com?uid?sub -``` - -This one option has the combined effect of setting the following: - -``` ---ldap.server=ldap.arangodb.com \ ---ldap.port=1234 \ ---ldap.basedn=dc=arangodb,dc=com \ ---ldap.searchAttribute=uid \ ---ldap.searchScope=sub -``` - -That is, the LDAP URL consists of the LDAP `server` and `port`, a `basedn`, a -`searchAttribute`, and a `searchScope` which can be one of `base`, `one`, or -`sub`. There is also the possibility to use the `ldaps` protocol as in: - -``` ---ldap.url ldaps://ldap.arangodb.com:636/dc=arangodb,dc=com?uid?sub -``` - -This does exactly the same as the one above, except that it uses the -LDAP over TLS protocol. This is a non-standard method which does not -involve using the STARTTLS protocol. Note that this does not work in the -Windows version! We suggest to use the `ldap` protocol and STARTTLS -as described in the next section. - -### TLS options - -{{< warning >}} -TLS is not supported in the Windows version of ArangoDB! -{{< /warning >}} - -To configure the usage of encrypted TLS to communicate with the LDAP server -the following options are available: - -- `--ldap.tls`: the main switch to active TLS. can either be - `true` (use TLS) or `false` (do not use TLS). It is switched - off by default. If you switch this on and do not use the `ldaps` - protocol via the [LDAP URL](#ldap-urls), then ArangoDB - uses the `STARTTLS` protocol to initiate TLS. This is the - recommended approach. -- `--ldap.tls-version`: the minimal TLS version that ArangoDB should accept. - Available versions are `1.0`, `1.1` and `1.2`. The default is `1.2`. If - your LDAP server does not support Version 1.2, you have to change - this setting. -- `--ldap.tls-cert-check-strategy`: strategy to validate the LDAP server - certificate. Available strategies are `never`, `hard`, - `demand`, `allow` and `try`. The default is `hard`. -- `--ldap.tls-cacert-file`: a file path to one or more (concatenated) - certificate authority certificates in PEM format. - As default no file path is configured. This certificate - is used to validate the server response. -- `--ldap.tls-cacert-dir`: a directory path to certificate authority certificates in - [c_rehash](https://www.openssl.org/docs/man3.0/man1/c_rehash.html) - format. As default no directory path is configured. - -Assuming you have the TLS CAcert file that is given to the server at -`/path/to/certificate.pem`, here is an example on how to configure TLS: - -``` ---ldap.tls true \ ---ldap.tls-cacert-file /path/to/certificate.pem -``` - -You can use TLS with any of the following authentication mechanisms. - -### Secondary server options (`ldap2`) - -The `ldap.*` options configure the primary LDAP server. It is possible to -configure a secondary server with the `ldap2.*` options to use it as a -fail-over for the case that the primary server is not reachable, but also to -let the primary servers handle some users and the secondary others. - -Instead of `--ldap.