"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9544],{15680:(e,t,a)=>{a.d(t,{xA:()=>c,yg:()=>h});var r=a(96540);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?n(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):n(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function s(e,t){if(null==e)return{};var a,r,i=function(e,t){if(null==e)return{};var a,r,i={},n=Object.keys(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var u=r.createContext({}),l=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=l(e.components);return r.createElement(u.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},y=r.forwardRef((function(e,t){var a=e.components,i=e.mdxType,n=e.originalType,u=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=l(a),y=i,h=d["".concat(u,".").concat(y)]||d[y]||p[y]||n;return a?r.createElement(h,o(o({ref:t},c),{},{components:a})):r.createElement(h,o({ref:t},c))}));function h(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=a.length,o=new Array(n);o[0]=y;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[d]="string"==typeof e?e:i,o[1]=s;for(var l=2;l<n;l++)o[l]=a[l];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}y.displayName="MDXCreateElement"},77775:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>h,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var r=a(58168),i=a(98587),n=(a(96540),a(15680)),o=["components"],s={id:"security-overview",title:"Security overview",description:"Overiew of Apache Druid security. Includes best practices, configuration instructions, a description of the security model and documentation on how to report security issues."},u=void 0,l={unversionedId:"operations/security-overview",id:"operations/security-overview",title:"Security overview",description:"Overiew of Apache Druid security. Includes best practices, configuration instructions, a description of the security model and documentation on how to report security issues.",source:"@site/docs/29.0.0/operations/security-overview.md",sourceDirName:"operations",slug:"/operations/security-overview",permalink:"/docs/29.0.0/operations/security-overview",draft:!1,tags:[],version:"current",frontMatter:{id:"security-overview",title:"Security overview",description:"Overiew of Apache Druid security. Includes best practices, configuration instructions, a description of the security model and documentation on how to report security issues."},sidebar:"docs",previous:{title:"Durable storage",permalink:"/docs/29.0.0/operations/durable-storage"},next:{title:"User authentication and authorization",permalink:"/docs/29.0.0/operations/security-user-auth"}},c={},d=[{value:"Best practices",id:"best-practices",level:2},{value:"Enable TLS",id:"enable-tls",level:2},{value:"Generating keys",id:"generating-keys",level:3},{value:"Update Druid TLS configurations",id:"update-druid-tls-configurations",level:3},{value:"Authentication and authorization",id:"authentication-and-authorization",level:2},{value:"Enable an authenticator",id:"enable-an-authenticator",level:2},{value:"Enable authorizers",id:"enable-authorizers",level:2},{value:"Configuring an LDAP authenticator",id:"configuring-an-ldap-authenticator",level:2},{value:"Druid security trust model",id:"druid-security-trust-model",level:2},{value:"Reporting security issues",id:"reporting-security-issues",level:2},{value:"Vulnerability handling",id:"vulnerability-handling",level:3}],p={toc:d},y="wrapper";function h(e){var t=e.components,s=(0,i.A)(e,o);return(0,n.yg)(y,(0,r.A)({},p,s,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("p",null,"This document provides an overview of Apache Druid security features, configuration instructions, and some best practices to secure Druid."),(0,n.yg)("p",null,"By default, security features in Druid are disabled, which simplifies the initial deployment experience. However, security features must be configured in a production deployment. These features include TLS, authentication, and authorization."),(0,n.yg)("h2",{id:"best-practices"},"Best practices"),(0,n.yg)("p",null,"The following recommendations apply to the Druid cluster setup:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},"Run Druid as an unprivileged Unix user. Do not run Druid as the root user.",(0,n.yg)("admonition",{parentName:"li",type:"caution"},(0,n.yg)("p",{parentName:"admonition"},"Druid administrators have the same OS permissions as the Unix user account running Druid. See ",(0,n.yg)("a",{parentName:"p",href:"/docs/29.0.0/operations/security-user-auth#authentication-and-authorization-model"},"Authentication and authorization model"),". If the Druid process is running under the OS root user account, then Druid administrators can read or write all files that the root account has access to, including sensitive files such as ",(0,n.yg)("inlineCode",{parentName:"p"},"/etc/passwd"),"."))),(0,n.yg)("li",{parentName:"ul"},"Enable authentication to the Druid cluster for production environments and other environments that can be accessed by untrusted networks."),(0,n.yg)("li",{parentName:"ul"},"Enable authorization and do not expose the web console without authorization enabled. If authorization is not enabled, any user that has access to the web console has the same privileges as the operating system user that runs the web console process."),(0,n.yg)("li",{parentName:"ul"},"Grant users the minimum permissions necessary to perform their functions. For instance, do not allow users who only need to query data to write to data sources or view state."),(0,n.yg)("li",{parentName:"ul"},"Do not provide plain-text passwords for production systems in configuration specs. For example, sensitive properties should not be in the ",(0,n.yg)("inlineCode",{parentName:"li"},"consumerProperties")," field of ",(0,n.yg)("inlineCode",{parentName:"li"},"KafkaSupervisorIngestionSpec"),". See ",(0,n.yg)("a",{parentName:"li",href:"/docs/29.0.0/operations/dynamic-config-provider#environment-variable-dynamic-config-provider"},"Environment variable dynamic config provider")," for more information."),(0,n.yg)("li",{parentName:"ul"},"Disable JavaScript, as noted in the ",(0,n.yg)("a",{parentName:"li",href:"https://druid.apache.org/docs/latest/development/javascript.html#security"},"Security section")," of the JavaScript guide.")),(0,n.yg)("p",null,"The following recommendations apply to the network where Druid runs:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},"Enable TLS to encrypt communication within the cluster."),(0,n.yg)("li",{parentName:"ul"},"Use an API gateway to:",(0,n.yg)("ul",{parentName:"li"},(0,n.yg)("li",{parentName:"ul"},"Restrict access from untrusted networks"),(0,n.yg)("li",{parentName:"ul"},"Create an allow list of specific APIs that your users need to access"),(0,n.yg)("li",{parentName:"ul"},"Implement account lockout and throttling features."))),(0,n.yg)("li",{parentName:"ul"},"When possible, use firewall and other network layer filtering to only expose Druid services and ports specifically required for your use case. For example, only expose Broker ports to downstream applications that execute queries. You can limit access to a specific IP address or IP range to further tighten and enhance security.")),(0,n.yg)("p",null,"The following recommendation applies to Druid's authorization and authentication model:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},"Only grant ",(0,n.yg)("inlineCode",{parentName:"li"},"WRITE")," permissions to any ",(0,n.yg)("inlineCode",{parentName:"li"},"DATASOURCE")," to trusted users. Druid's trust model assumes those users have the same privileges as the operating system user that runs the web console process. Additionally, users with ",(0,n.yg)("inlineCode",{parentName:"li"},"WRITE")," permissions can make changes to datasources and they have access to both task and supervisor update (POST) APIs which may affect ingestion."),(0,n.yg)("li",{parentName:"ul"},"Only grant ",(0,n.yg)("inlineCode",{parentName:"li"},"STATE READ"),", ",(0,n.yg)("inlineCode",{parentName:"li"},"STATE WRITE"),", ",(0,n.yg)("inlineCode",{parentName:"li"},"CONFIG WRITE"),", and ",(0,n.yg)("inlineCode",{parentName:"li"},"DATASOURCE WRITE")," permissions to highly-trusted users. These permissions allow users to access resources on behalf of the Druid server process regardless of the datasource."),(0,n.yg)("li",{parentName:"ul"},"If your Druid client application allows less-trusted users to control the input source or firehose of an ingestion task, validate the URLs from the users. It is possible to point unchecked URLs to other locations and resources within your network or local file system.")),(0,n.yg)("h2",{id:"enable-tls"},"Enable TLS"),(0,n.yg)("p",null,"Enabling TLS encrypts the traffic between external clients and the Druid cluster and traffic between services within the cluster."),(0,n.yg)("h3",{id:"generating-keys"},"Generating keys"),(0,n.yg)("p",null,"Before you enable TLS in Druid, generate the KeyStore and truststore. When one Druid process, e.g. Broker, contacts another Druid process , e.g. Historical, the first service is a client for the second service, considered the server."),(0,n.yg)("p",null,"The client uses a trustStore that contains certificates trusted by the client. For example, the Broker."),(0,n.yg)("p",null,"The server uses a KeyStore that contains private keys and certificate chain used to securely identify itself."),(0,n.yg)("p",null,"The following example demonstrates how to use Java keytool to generate the KeyStore for the server and then create a trustStore to trust the key for the client:"),(0,n.yg)("ol",null,(0,n.yg)("li",{parentName:"ol"},"Generate the KeyStore with the Java ",(0,n.yg)("inlineCode",{parentName:"li"},"keytool")," command:")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-bash"},"keytool -keystore keystore.jks -alias druid -genkey -keyalg RSA\n")),(0,n.yg)("ol",{start:2},(0,n.yg)("li",{parentName:"ol"},"Export a public certificate:")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-bash"},"keytool -export -alias druid -keystore keystore.jks -rfc -file public.cert\n")),(0,n.yg)("ol",{start:3},(0,n.yg)("li",{parentName:"ol"},"Create the trustStore:")),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-bash"},"keytool -import -file public.cert -alias druid -keystore truststore.jks\n")),(0,n.yg)("p",null,"Druid uses Jetty as its embedded web server. See ",(0,n.yg)("a",{parentName:"p",href:"https://www.eclipse.org/jetty/documentation/jetty-11/operations-guide/index.html#og-keystore"},"Configuring SSL/TLS KeyStores\n")," from the Jetty documentation."),(0,n.yg)("admonition",{type:"caution"},(0,n.yg)("p",{parentName:"admonition"},"Do not use self-signed certificates for production environments. Instead, rely on your current public key infrastructure to generate and distribute trusted keys.")),(0,n.yg)("h3",{id:"update-druid-tls-configurations"},"Update Druid TLS configurations"),(0,n.yg)("p",null,"Edit ",(0,n.yg)("inlineCode",{parentName:"p"},"common.runtime.properties")," for all Druid services on all nodes. Add or update the following TLS options. Restart the cluster when you are finished."),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-properties"},'# Turn on TLS globally\ndruid.enableTlsPort=true\n\n# Disable non-TLS communicatoins\ndruid.enablePlaintextPort=false\n\n# For Druid processes acting as a client\n# Load simple-client-sslcontext to enable client side TLS\n# Add the following to extension load list\ndruid.extensions.loadList=[......., "simple-client-sslcontext"]\n\n# Setup client side TLS\ndruid.client.https.protocol=TLSv1.2\ndruid.client.https.trustStoreType=jks\ndruid.client.https.trustStorePath=truststore.jks # replace with correct trustStore file\ndruid.client.https.trustStorePassword=secret123  # replace with your own password\n\n# Setup server side TLS\ndruid.server.https.keyStoreType=jks\ndruid.server.https.keyStorePath=my-keystore.jks # replace with correct keyStore file\ndruid.server.https.keyStorePassword=secret123 # replace with your own password\ndruid.server.https.certAlias=druid\n')),(0,n.yg)("p",null,"For more information, see ",(0,n.yg)("a",{parentName:"p",href:"/docs/29.0.0/operations/tls-support"},"TLS support")," and ",(0,n.yg)("a",{parentName:"p",href:"/docs/29.0.0/development/extensions-core/simple-client-sslcontext"},"Simple SSLContext Provider Module"),"."),(0,n.yg)("h2",{id:"authentication-and-authorization"},"Authentication and authorization"),(0,n.yg)("p",null,"You can configure authentication and authorization to control access to the Druid APIs. Then configure users, roles, and permissions, as described in the following sections. Make the configuration changes in the ",(0,n.yg)("inlineCode",{parentName:"p"},"common.runtime.properties")," file on all Druid servers in the cluster."),(0,n.yg)("p",null,"Within Druid's operating context, authenticators control the way user identities are verified. Authorizers employ user roles to relate authenticated users to the datasources they are permitted to access. You can set the finest-grained permissions on a per-datasource basis."),(0,n.yg)("p",null,"The following graphic depicts the course of request through the authentication process:"),(0,n.yg)("p",null,(0,n.yg)("img",{alt:"Druid security check flow",src:a(63783).A,title:"Druid security check flow",width:"889",height:"638"})),(0,n.yg)("h2",{id:"enable-an-authenticator"},"Enable an authenticator"),(0,n.yg)("p",null,"To authenticate requests in Druid, you configure an Authenticator. Authenticator extensions exist for HTTP basic authentication, LDAP, and Kerberos."),(0,n.yg)("p",null,"The following takes you through sample configuration steps for enabling basic auth:"),(0,n.yg)("ol",null,(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("p",{parentName:"li"},"Add the ",(0,n.yg)("inlineCode",{parentName:"p"},"druid-basic-security")," extension to ",(0,n.yg)("inlineCode",{parentName:"p"},"druid.extensions.loadList")," in ",(0,n.yg)("inlineCode",{parentName:"p"},"common.runtime.properties"),". For the quickstart installation, for example, the properties file is at ",(0,n.yg)("inlineCode",{parentName:"p"},"conf/druid/cluster/_common"),":"),(0,n.yg)("pre",{parentName:"li"},(0,n.yg)("code",{parentName:"pre",className:"language-properties"},'druid.extensions.loadList=["druid-basic-security", "druid-histogram", "druid-datasketches", "druid-kafka-indexing-service"]\n'))),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("p",{parentName:"li"},"Configure the basic Authenticator, Authorizer, and Escalator settings in the same common.runtime.properties file. The Escalator defines how Druid processes authenticate with one another."),(0,n.yg)("p",{parentName:"li"},"An example configuration:"),(0,n.yg)("pre",{parentName:"li"},(0,n.yg)("code",{parentName:"pre",className:"language-properties"},"# Druid basic security\ndruid.auth.authenticatorChain=[\"MyBasicMetadataAuthenticator\"]\ndruid.auth.authenticator.MyBasicMetadataAuthenticator.type=basic\n\n# Default password for 'admin' user, should be changed for production.\ndruid.auth.authenticator.MyBasicMetadataAuthenticator.initialAdminPassword=password1\n\n# Default password for internal 'druid_system' user, should be changed for production.\ndruid.auth.authenticator.MyBasicMetadataAuthenticator.initialInternalClientPassword=password2\n\n# Uses the metadata store for storing users.\n# You can use the authentication API to create new users and grant permissions\ndruid.auth.authenticator.MyBasicMetadataAuthenticator.credentialsValidator.type=metadata\n\n# If true and if the request credential doesn't exist in this credentials store,\n# the request will proceed to next Authenticator in the chain.\ndruid.auth.authenticator.MyBasicMetadataAuthenticator.skipOnFailure=false\n\ndruid.auth.authenticator.MyBasicMetadataAuthenticator.authorizerName=MyBasicMetadataAuthorizer\n\n# Escalator\ndruid.escalator.type=basic\ndruid.escalator.internalClientUsername=druid_system\ndruid.escalator.internalClientPassword=password2\ndruid.escalator.authorizerName=MyBasicMetadataAuthorizer\n\ndruid.auth.authorizers=[\"MyBasicMetadataAuthorizer\"]\n\ndruid.auth.authorizer.MyBasicMetadataAuthorizer.type=basic\n"))),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("p",{parentName:"li"},"Restart the cluster."))),(0,n.yg)("p",null,"See the following topics for more information:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"/docs/29.0.0/operations/auth"},"Authentication and Authorization")," for more information about the Authenticator,\nEscalator, and Authorizer."),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"/docs/29.0.0/development/extensions-core/druid-basic-security"},"Basic Security")," for more information about\nthe extension used in the examples above."),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"/docs/29.0.0/development/extensions-core/druid-kerberos"},"Kerberos")," for Kerberos authentication."),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"/docs/29.0.0/operations/security-user-auth"},"User authentication and authorization")," for details about permissions."),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"/docs/29.0.0/operations/security-user-auth#sql-permissions"},"SQL permissions")," for permissions on SQL system tables.")),(0,n.yg)("h2",{id:"enable-authorizers"},"Enable authorizers"),(0,n.yg)("p",null,"After enabling the basic auth extension, you can add users, roles, and permissions via the Druid Coordinator ",(0,n.yg)("inlineCode",{parentName:"p"},"user")," endpoint. Note that you cannot assign permissions directly to individual users. They must be assigned through roles."),(0,n.yg)("p",null,"The following diagram depicts the authorization model, and the relationship between users, roles, permissions, and resources."),(0,n.yg)("p",null,(0,n.yg)("img",{alt:"Druid Security model",src:a(13100).A,title:"Druid security model",width:"845",height:"406"})),(0,n.yg)("p",null,"The following steps walk through a sample setup procedure:"),(0,n.yg)("admonition",{type:"info"},(0,n.yg)("p",{parentName:"admonition"}," The default Coordinator API port is 8081 for non-TLS connections and 8281 for secured connections.")),(0,n.yg)("ol",null,(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("p",{parentName:"li"},"Create a user by issuing a POST request to ",(0,n.yg)("inlineCode",{parentName:"p"},"druid-ext/basic-security/authentication/db/MyBasicMetadataAuthenticator/users/<USERNAME>"),".\nReplace ",(0,n.yg)("inlineCode",{parentName:"p"},"<USERNAME>")," with the ",(0,n.yg)("em",{parentName:"p"},"new")," username you are trying to create. For example:"),(0,n.yg)("pre",{parentName:"li"},(0,n.yg)("code",{parentName:"pre",className:"language-bash"},"curl -u admin:password1 -XPOST https://my-coordinator-ip:8281/druid-ext/basic-security/authentication/db/MyBasicMetadataAuthenticator/users/myname\n")),(0,n.yg)("admonition",{parentName:"li",type:"info"},(0,n.yg)("p",{parentName:"admonition"}," If you have TLS enabled, be sure to adjust the curl command accordingly. For example, if your Druid servers use self-signed certificates,\nyou may choose to include the ",(0,n.yg)("inlineCode",{parentName:"p"},"insecure")," curl option to forgo certificate checking for the curl command."))),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("p",{parentName:"li"},"Add a credential for the user by issuing a POST request to ",(0,n.yg)("inlineCode",{parentName:"p"},"druid-ext/basic-security/authentication/db/MyBasicMetadataAuthenticator/users/<USERNAME>/credentials"),". For example:"),(0,n.yg)("pre",{parentName:"li"},(0,n.yg)("code",{parentName:"pre",className:"language-bash"},"curl -u admin:password1 -H'Content-Type: application/json' -XPOST https://my-coordinator-ip:8281/druid-ext/basic-security/authentication/db/MyBasicMetadataAuthenticator/users/myname/credentials --data-raw '{\"password\": \"my_password\"}'\n"))),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("p",{parentName:"li"},"For each authenticator user you create, create a corresponding authorizer user by issuing a POST request to ",(0,n.yg)("inlineCode",{parentName:"p"},"druid-ext/basic-security/authorization/db/MyBasicMetadataAuthorizer/users/<USERNAME>"),". For example:"),(0,n.yg)("pre",{parentName:"li"},(0,n.yg)("code",{parentName:"pre",className:"language-bash"},"curl -u admin:password1 -XPOST https://my-coordinator-ip:8281/druid-ext/basic-security/authorization/db/MyBasicMetadataAuthorizer/users/myname\n"))),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("p",{parentName:"li"},"Create authorizer roles to control permissions by issuing a POST request to ",(0,n.yg)("inlineCode",{parentName:"p"},"druid-ext/basic-security/authorization/db/MyBasicMetadataAuthorizer/roles/<ROLENAME>"),". For example:"),(0,n.yg)("pre",{parentName:"li"},(0,n.yg)("code",{parentName:"pre",className:"language-bash"},"curl -u admin:password1 -XPOST https://my-coordinator-ip:8281/druid-ext/basic-security/authorization/db/MyBasicMetadataAuthorizer/roles/myrole\n"))),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("p",{parentName:"li"},"Assign roles to users by issuing a POST request to ",(0,n.yg)("inlineCode",{parentName:"p"},"druid-ext/basic-security/authorization/db/MyBasicMetadataAuthorizer/users/<USERNAME>/roles/<ROLENAME>"),". For example:"),(0,n.yg)("pre",{parentName:"li"},(0,n.yg)("code",{parentName:"pre",className:"language-bash"},"curl -u admin:password1 -XPOST https://my-coordinator-ip:8281/druid-ext/basic-security/authorization/db/MyBasicMetadataAuthorizer/users/myname/roles/myrole | jq\n"))),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("p",{parentName:"li"},"Finally, attach permissions to the roles to control how they can interact with Druid at ",(0,n.yg)("inlineCode",{parentName:"p"},"druid-ext/basic-security/authorization/db/MyBasicMetadataAuthorizer/roles/<ROLENAME>/permissions"),". For example:"),(0,n.yg)("pre",{parentName:"li"},(0,n.yg)("code",{parentName:"pre",className:"language-bash"},"curl -u admin:password1 -H'Content-Type: application/json' -XPOST --data-binary @perms.json https://my-coordinator-ip:8281/druid-ext/basic-security/authorization/db/MyBasicMetadataAuthorizer/roles/myrole/permissions\n")),(0,n.yg)("p",{parentName:"li"},"   The payload of ",(0,n.yg)("inlineCode",{parentName:"p"},"perms.json")," should be in the following form:"),(0,n.yg)("pre",{parentName:"li"},(0,n.yg)("code",{parentName:"pre",className:"language-json"},'[\n   {\n     "resource": {\n       "type": "DATASOURCE",\n       "name": "<PATTERN>"\n     },\n     "action": "READ"\n   },\n   {\n     "resource": {\n       "type": "STATE",\n       "name": "STATE"\n     },\n     "action": "READ"\n   }\n]\n')),(0,n.yg)("admonition",{parentName:"li",type:"info"},(0,n.yg)("p",{parentName:"admonition"}," Note: Druid treats the resource name as a regular expression (regex). You can use a specific datasource name or regex to grant permissions for multiple datasources at a time.")))),(0,n.yg)("h2",{id:"configuring-an-ldap-authenticator"},"Configuring an LDAP authenticator"),(0,n.yg)("p",null,"As an alternative to using the basic metadata authenticator, you can use LDAP to authenticate users. See ",(0,n.yg)("a",{parentName:"p",href:"/docs/29.0.0/operations/auth-ldap"},"Configure LDAP authentication")," for information on configuring Druid for LDAP and LDAPS."),(0,n.yg)("h2",{id:"druid-security-trust-model"},"Druid security trust model"),(0,n.yg)("p",null,"Within Druid's trust model there users can have different authorization levels:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},"Users with resource write permissions are allowed to do anything that the druid process can do."),(0,n.yg)("li",{parentName:"ul"},"Authenticated read only users can execute queries against resources to which they have permissions."),(0,n.yg)("li",{parentName:"ul"},"An authenticated user without any permissions is allowed to execute queries that don't require access to a resource.")),(0,n.yg)("p",null,"Additionally, Druid operates according to the following principles:"),(0,n.yg)("p",null,"From the innermost layer:"),(0,n.yg)("ol",null,(0,n.yg)("li",{parentName:"ol"},"Druid processes have the same access to the local files granted to the specified system user running the process."),(0,n.yg)("li",{parentName:"ol"},"The Druid ingestion system can create new processes to execute tasks. Those tasks inherit the user of their parent process. This means that any user authorized to submit an ingestion task can use the ingestion task permissions to read or write any local files or external resources that the Druid process has access to.")),(0,n.yg)("admonition",{type:"info"},(0,n.yg)("p",{parentName:"admonition"}," Note: Only grant the ",(0,n.yg)("inlineCode",{parentName:"p"},"DATASOURCE WRITE")," to trusted users because they can act as the Druid process.")),(0,n.yg)("p",null,"Within the cluster:"),(0,n.yg)("ol",null,(0,n.yg)("li",{parentName:"ol"},"Druid assumes it operates on an isolated, protected network where no reachable IP within the network is under adversary control. When you implement Druid, take care to setup firewalls and other security measures to secure both inbound and outbound connections.\nDruid assumes network traffic within the cluster is encrypted, including API calls and data transfers. The default encryption implementation uses TLS."),(0,n.yg)("li",{parentName:"ol"},"Druid assumes auxiliary services such as the metadata store and ZooKeeper nodes are not under adversary control.")),(0,n.yg)("p",null,"Cluster to deep storage:"),(0,n.yg)("ol",null,(0,n.yg)("li",{parentName:"ol"},"Druid does not make assumptions about the security for deep storage. It follows the system's native security policies to authenticate and authorize with deep storage."),(0,n.yg)("li",{parentName:"ol"},"Druid does not encrypt files for deep storage. Instead, it relies on the storage system's native encryption capabilities to ensure compatibility with encryption schemes across all storage types.")),(0,n.yg)("p",null,"Cluster to client:"),(0,n.yg)("ol",null,(0,n.yg)("li",{parentName:"ol"},"Druid authenticates with the client based on the configured authenticator."),(0,n.yg)("li",{parentName:"ol"},"Druid only performs actions when an authorizer grants permission. The default configuration is ",(0,n.yg)("inlineCode",{parentName:"li"},"allowAll authorizer"),".")),(0,n.yg)("h2",{id:"reporting-security-issues"},"Reporting security issues"),(0,n.yg)("p",null,"The Apache Druid team takes security very seriously. If you find a potential security issue in Druid, such as a way to bypass the security mechanisms described earlier, please report this problem to ",(0,n.yg)("a",{parentName:"p",href:"mailto:security@apache.org"},"security@apache.org"),". This is a private mailing list. Please send one plain text email for each vulnerability you are reporting."),(0,n.yg)("h3",{id:"vulnerability-handling"},"Vulnerability handling"),(0,n.yg)("p",null,"The following list summarizes the vulnerability handling process:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},"The reporter reports the vulnerability privately to ",(0,n.yg)("a",{parentName:"li",href:"mailto:security@apache.org"},"security@apache.org")),(0,n.yg)("li",{parentName:"ul"},"The reporter receives a response that the Druid team has received the report and will investigate the issue."),(0,n.yg)("li",{parentName:"ul"},"The Druid project security team works privately with the reporter to resolve the vulnerability."),(0,n.yg)("li",{parentName:"ul"},"The Druid team delivers the fix by creating a new release of the package that the vulnerability affects."),(0,n.yg)("li",{parentName:"ul"},"The Druid team publicly announces the vulnerability and describes how to apply the fix.")),(0,n.yg)("p",null,"Committers should read a ",(0,n.yg)("a",{parentName:"p",href:"https://www.apache.org/security/committers.html"},"more detailed description of the process"),". Reporters of security vulnerabilities may also find it useful."))}h.isMDXComponent=!0},63783:(e,t,a)=>{a.d(t,{A:()=>r});const r=a.p+"assets/images/security-model-1-52af921005928cc8df8fa854071ac883.png"},13100:(e,t,a)=>{a.d(t,{A:()=>r});const r=a.p+"assets/images/security-model-2-983fc88399981fc0d7e5119e928b45e3.png"}}]);