This is an automated email from the ASF dual-hosted git repository.

suneet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new 9c51047  Document correlation between credential iterations and query 
latency (#10532)
9c51047 is described below

commit 9c51047cc8f1aa49b77bbfc7a1f0cc14df691a6b
Author: Charles Smith <[email protected]>
AuthorDate: Thu Oct 29 12:47:24 2020 -0700

    Document correlation between credential iterations and query latency 
(#10532)
    
    use link / heading instead of footnote
---
 .../extensions-core/druid-basic-security.md        | 35 +++++++++++++++-------
 1 file changed, 24 insertions(+), 11 deletions(-)

diff --git a/docs/development/extensions-core/druid-basic-security.md 
b/docs/development/extensions-core/druid-basic-security.md
index 892306e..2338530 100644
--- a/docs/development/extensions-core/druid-basic-security.md
+++ b/docs/development/extensions-core/druid-basic-security.md
@@ -23,22 +23,29 @@ title: "Basic Security"
   -->
 
 
-This Apache Druid extension adds:
+The Basic Security extension for Apache Druid adds:
 
-- an Authenticator which supports [HTTP Basic 
authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) 
using the Druid metadata store or LDAP as its credentials store
-- an Authorizer which implements basic role-based access control for Druid 
metadata store or LDAP users and groups
+- an Authenticator which supports [HTTP Basic 
authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) 
using the Druid metadata store or LDAP as its credentials store.
+- an Authorizer which implements basic role-based access control for Druid 
metadata store or LDAP users and groups.
 
-Make sure to [include](../../development/extensions.md#loading-extensions) 
`druid-basic-security` as an extension.
+To load the extension, 
[include](../../development/extensions.md#loading-extensions) 
`druid-basic-security` in the `druid.extensions.loadList` in your 
`common.runtime.properties`. For example:
+```
+druid.extensions.loadList=["postgresql-metadata-storage", 
"druid-hdfs-storage", "druid-basic-security"]
+```
 
-Please see [Authentication and Authorization](../../design/auth.md) for more 
information on the extension interfaces being implemented.
+See [Authentication and Authorization](../../design/auth.md) for more 
information on the implemented extension interfaces.
 
 ## Configuration
 
-The examples in the section will use "MyBasicMetadataAuthenticator", 
"MyBasicLDAPAuthenticator", "MyBasicMetadataAuthorizer", and 
"MyBasicLDAPAuthorizer" as names for the Authenticators and Authorizer.
+The examples in the section use the following names for the Authenticators and 
Authorizers:
+- `MyBasicMetadataAuthenticator`
+- `MyBasicLDAPAuthenticator`
+- `MyBasicMetadataAuthorizer`
+- `MyBasicLDAPAuthorizer`.
 
 These properties are not tied to specific Authenticator or Authorizer 
instances.
 
-These configuration properties should be added to the common runtime 
properties file.
+To set the value for the configuration properties, add them to the common 
runtime properties file.
 
 ### Properties
 |Property|Description|Default|required|
@@ -62,8 +69,8 @@ 
druid.auth.authenticator.MyBasicMetadataAuthenticator.authorizerName=MyBasicMeta
 ```
 
 To use the Basic authenticator, add an authenticator with type `basic` to the 
authenticatorChain.
-The authenticator needs to also define a credentialsValidator with type 
'metadata' or 'ldap'.
-If credentialsValidator is not specified, type 'metadata' will be used as 
default.
+The default credentials validator (`credentialsValidator`) is `metadata`. To 
use the LDAP validator, define a credentials validator with a type of 'ldap'.
+
 
 Configuration of the named authenticator is assigned through properties with 
the form:
 
@@ -71,7 +78,7 @@ Configuration of the named authenticator is assigned through 
properties with the
 druid.auth.authenticator.<authenticatorName>.<authenticatorProperty>
 ```
 
-The authenticator configuration examples in the rest of this document will use 
"MyBasicMetadataAuthenticator" or "MyBasicLDAPAuthenticator" as the name of the 
authenticators being configured.
+The remaining examples of authenticator configuration use either 
`MyBasicMetadataAuthenticator` or `MyBasicLDAPAuthenticator` as the 
authenticator name.
 
 
 #### Properties for Druid metadata store user authentication
@@ -81,11 +88,17 @@ The authenticator configuration examples in the rest of 
this document will use "
 
|`druid.auth.authenticator.MyBasicMetadataAuthenticator.initialInternalClientPassword`|Initial
 [Password Provider](../../operations/password-provider.md) for the default 
internal system user, used for internal process communication. If no password 
is specified, the default internal system user will not be created. If the 
default internal system user already exists, setting this property will not 
affect its password.|null|No|
 
|`druid.auth.authenticator.MyBasicMetadataAuthenticator.enableCacheNotifications`|If
 true, the Coordinator will notify Druid processes whenever a configuration 
change to this Authenticator occurs, allowing them to immediately update their 
state without waiting for polling.|true|No|
 
|`druid.auth.authenticator.MyBasicMetadataAuthenticator.cacheNotificationTimeout`|The
 timeout in milliseconds for the cache notifications.|5000|No|
-|`druid.auth.authenticator.MyBasicMetadataAuthenticator.credentialIterations`|Number
 of iterations to use for password hashing.|10000|No|
+|`druid.auth.authenticator.MyBasicMetadataAuthenticator.credentialIterations`|Number
 of iterations to use for password hashing. See [Credential iterations and API 
performance](#credential-iterations-and-api-performance)|10000|No|
 
|`druid.auth.authenticator.MyBasicMetadataAuthenticator.credentialsValidator.type`|The
 type of credentials store (metadata) to validate requests 
credentials.|metadata|No|
 |`druid.auth.authenticator.MyBasicMetadataAuthenticator.skipOnFailure`|If true 
and the request credential doesn't exists or isn't fully configured in the 
credentials store, the request will proceed to next Authenticator in the 
chain.|false|No|
 
|`druid.auth.authenticator.MyBasicMetadataAuthenticator.authorizerName`|Authorizer
 that requests should be directed to|N/A|Yes|
 
+##### Credential iterations and API performance
+The credential iterations setting affects API performance, including query 
times. The default setting of 10000 is intentionally high to prevent attackers 
from using brute force to guess passwords, but it adds latency.
+
+You can decrease the number of iterations to speed up API response times, but 
it potentially exposes your system to dictionary attacks. Therefore, only 
reduce the number of iterations if your environment fits one of the following 
conditions:
+- **All** passwords are long and random which make them as safe as a 
randomly-generated token.
+- You have secured network access to Druid so that no attacker can execute a 
dictionary attack against it.
 #### Properties for LDAP user authentication
 |Property|Description|Default|required|
 |--------|-----------|-------|--------|


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to