"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[545],{15680:(e,n,t)=>{t.d(n,{xA:()=>u,yg:()=>h});var a=t(96540);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?r(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):r(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,a,i=function(e,n){if(null==e)return{};var t,a,i={},r=Object.keys(e);for(a=0;a<r.length;a++)t=r[a],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)t=r[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=a.createContext({}),d=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},u=function(e){var n=d(e.components);return a.createElement(l.Provider,{value:n},e.children)},p="mdxType",g={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},c=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=d(t),c=i,h=p["".concat(l,".").concat(c)]||p[c]||g[c]||r;return t?a.createElement(h,o(o({ref:n},u),{},{components:t})):a.createElement(h,o({ref:n},u))}));function h(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,o=new Array(r);o[0]=c;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s[p]="string"==typeof e?e:i,o[1]=s;for(var d=2;d<r;d++)o[d]=t[d];return a.createElement.apply(null,o)}return a.createElement.apply(null,t)}c.displayName="MDXCreateElement"},67472:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>d,toc:()=>p});var a=t(58168),i=t(98587),r=(t(96540),t(15680)),o=["components"],s={id:"druid-ranger-security",title:"Apache Ranger Security"},l=void 0,d={unversionedId:"development/extensions-core/druid-ranger-security",id:"development/extensions-core/druid-ranger-security",title:"Apache Ranger Security",description:"\x3c!--",source:"@site/docs/latest/development/extensions-core/druid-ranger-security.md",sourceDirName:"development/extensions-core",slug:"/development/extensions-core/druid-ranger-security",permalink:"/docs/latest/development/extensions-core/druid-ranger-security",draft:!1,tags:[],version:"current",frontMatter:{id:"druid-ranger-security",title:"Apache Ranger Security"}},u={},p=[{value:"Configuration",id:"configuration",level:2},{value:"Enabling the extension",id:"enabling-the-extension",level:3},{value:"Properties to configure the extension in Apache Druid",id:"properties-to-configure-the-extension-in-apache-druid",level:4},{value:"Configuring the connection to Apache Ranger",id:"configuring-the-connection-to-apache-ranger",level:3},{value:"Adding the service definition for Apache Druid to Apache Ranger",id:"adding-the-service-definition-for-apache-druid-to-apache-ranger",level:3},{value:"Configuring Apache Ranger policies",id:"configuring-apache-ranger-policies",level:4},{value:"Usage",id:"usage",level:2},{value:"HTTP methods",id:"http-methods",level:3},{value:"SQL Permissions",id:"sql-permissions",level:3},{value:"Debugging",id:"debugging",level:3}],g={toc:p},c="wrapper";function h(e){var n=e.components,t=(0,i.A)(e,o);return(0,r.yg)(c,(0,a.A)({},g,t,{components:n,mdxType:"MDXLayout"}),(0,r.yg)("p",null,"This Apache Druid extension adds an Authorizer which implements access control for Druid, backed by ",(0,r.yg)("a",{parentName:"p",href:"https://ranger.apache.org/"},"Apache Ranger"),". Please see ",(0,r.yg)("a",{parentName:"p",href:"/docs/latest/operations/auth"},"Authentication and Authorization")," for more information on the basic facilities this extension provides."),(0,r.yg)("p",null,"Make sure to ",(0,r.yg)("a",{parentName:"p",href:"/docs/latest/configuration/extensions#loading-extensions"},"include")," ",(0,r.yg)("inlineCode",{parentName:"p"},"druid-ranger-security")," in the extensions load list."),(0,r.yg)("admonition",{type:"info"},(0,r.yg)("p",{parentName:"admonition"}," The latest release of Apache Ranger is at the time of writing version 2.0. This version has a dependency on ",(0,r.yg)("inlineCode",{parentName:"p"},"log4j 1.2.17")," which has a vulnerability if you configure it to use a ",(0,r.yg)("inlineCode",{parentName:"p"},"SocketServer")," (CVE-2019-17571). Next to that, it also includes Kafka 2.0.0 which has 2 known vulnerabilities (CVE-2019-12399, CVE-2018-17196). Kafka can be used by the audit component in Ranger, but is not required.")),(0,r.yg)("h2",{id:"configuration"},"Configuration"),(0,r.yg)("p",null,"Support for Apache Ranger authorization consists of three elements: "),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"configuring the extension in Apache Druid"),(0,r.yg)("li",{parentName:"ul"},"configuring the connection to Apache Ranger"),(0,r.yg)("li",{parentName:"ul"},"providing the service definition for Druid to Apache Ranger")),(0,r.yg)("h3",{id:"enabling-the-extension"},"Enabling the extension"),(0,r.yg)("p",null,"Ensure that you have a valid authenticator chain and escalator set in your ",(0,r.yg)("inlineCode",{parentName:"p"},"common.runtime.properties"),". For every authenticator your wish to use the authorizer for, set ",(0,r.yg)("inlineCode",{parentName:"p"},"druid.auth.authenticator.<authenticatorName>.authorizerName")," to the name you will give the authorizer, e.g. ",(0,r.yg)("inlineCode",{parentName:"p"},"ranger"),". "),(0,r.yg)("p",null,"Then add the following and amend to your needs (in case you need to use multiple authorizers):"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},'druid.auth.authorizers=["ranger"]\ndruid.auth.authorizer.ranger.type=ranger\n')),(0,r.yg)("p",null,"The following is an example that showcases using ",(0,r.yg)("inlineCode",{parentName:"p"},"druid-basic-security")," for authentication and ",(0,r.yg)("inlineCode",{parentName:"p"},"druid-ranger-security")," for authorization."),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},'druid.auth.authenticatorChain=["basic"]\ndruid.auth.authenticator.basic.type=basic\ndruid.auth.authenticator.basic.initialAdminPassword=password1\ndruid.auth.authenticator.basic.initialInternalClientPassword=password2\ndruid.auth.authenticator.basic.credentialsValidator.type=metadata\ndruid.auth.authenticator.basic.skipOnFailure=false\ndruid.auth.authenticator.basic.enableCacheNotifications=true\ndruid.auth.authenticator.basic.authorizerName=ranger\n\ndruid.auth.authorizers=["ranger"]\ndruid.auth.authorizer.ranger.type=ranger\n\n# Escalator\ndruid.escalator.type=basic\ndruid.escalator.internalClientUsername=druid_system\ndruid.escalator.internalClientPassword=password2\ndruid.escalator.authorizerName=ranger\n')),(0,r.yg)("admonition",{type:"info"},(0,r.yg)("p",{parentName:"admonition"}," Contrary to the documentation of ",(0,r.yg)("inlineCode",{parentName:"p"},"druid-basic-auth")," Ranger does not automatically provision a highly privileged system user, you will need to do this yourself. This system user in the case of ",(0,r.yg)("inlineCode",{parentName:"p"},"druid-basic-auth")," is named ",(0,r.yg)("inlineCode",{parentName:"p"},"druid_system")," and for the escalator it is configurable, as shown above. Make sure to take note of these user names and configure ",(0,r.yg)("inlineCode",{parentName:"p"},"READ")," access to ",(0,r.yg)("inlineCode",{parentName:"p"},"state:STATE")," and to ",(0,r.yg)("inlineCode",{parentName:"p"},"config:security")," in your ranger policies, otherwise system services will not work properly.")),(0,r.yg)("h4",{id:"properties-to-configure-the-extension-in-apache-druid"},"Properties to configure the extension in Apache Druid"),(0,r.yg)("table",null,(0,r.yg)("thead",{parentName:"table"},(0,r.yg)("tr",{parentName:"thead"},(0,r.yg)("th",{parentName:"tr",align:null},"Property"),(0,r.yg)("th",{parentName:"tr",align:null},"Description"),(0,r.yg)("th",{parentName:"tr",align:null},"Default"),(0,r.yg)("th",{parentName:"tr",align:null},"required"))),(0,r.yg)("tbody",{parentName:"table"},(0,r.yg)("tr",{parentName:"tbody"},(0,r.yg)("td",{parentName:"tr",align:null},(0,r.yg)("inlineCode",{parentName:"td"},"druid.auth.ranger.keytab")),(0,r.yg)("td",{parentName:"tr",align:null},"Defines the keytab to be used while authenticating against Apache Ranger to obtain policies and provide auditing"),(0,r.yg)("td",{parentName:"tr",align:null},"null"),(0,r.yg)("td",{parentName:"tr",align:null},"No")),(0,r.yg)("tr",{parentName:"tbody"},(0,r.yg)("td",{parentName:"tr",align:null},(0,r.yg)("inlineCode",{parentName:"td"},"druid.auth.ranger.principal")),(0,r.yg)("td",{parentName:"tr",align:null},"Defines the principal to be used while authenticating against Apache Ranger to obtain policies and provide auditing"),(0,r.yg)("td",{parentName:"tr",align:null},"null"),(0,r.yg)("td",{parentName:"tr",align:null},"No")),(0,r.yg)("tr",{parentName:"tbody"},(0,r.yg)("td",{parentName:"tr",align:null},(0,r.yg)("inlineCode",{parentName:"td"},"druid.auth.ranger.use_ugi")),(0,r.yg)("td",{parentName:"tr",align:null},"Determines if groups that the authenticated user belongs to should be obtained from Hadoop's ",(0,r.yg)("inlineCode",{parentName:"td"},"UserGroupInformation")),(0,r.yg)("td",{parentName:"tr",align:null},"null"),(0,r.yg)("td",{parentName:"tr",align:null},"No")))),(0,r.yg)("h3",{id:"configuring-the-connection-to-apache-ranger"},"Configuring the connection to Apache Ranger"),(0,r.yg)("p",null,"The Apache Ranger authorization extension will read several configuration files. Discussing the contents of those files is beyond the scope of this document. Depending on your needs you will need to create them. The minimum you will need to have is a ",(0,r.yg)("inlineCode",{parentName:"p"},"ranger-druid-security.xml")," file that you will need to put in the classpath (e.g. ",(0,r.yg)("inlineCode",{parentName:"p"},"_common"),"). For auditing, the configuration is in ",(0,r.yg)("inlineCode",{parentName:"p"},"ranger-druid-audit.xml"),"."),(0,r.yg)("h3",{id:"adding-the-service-definition-for-apache-druid-to-apache-ranger"},"Adding the service definition for Apache Druid to Apache Ranger"),(0,r.yg)("p",null,"At the time of writing of this document Apache Ranger (2.0) does not include an out of the box service and service definition for Druid. You can add the service definition to Apache Ranger by entering the following command:"),(0,r.yg)("p",null,(0,r.yg)("inlineCode",{parentName:"p"},'curl -u <user>:<password> -d "@ranger-servicedef-druid.json" -X POST -H "Accept: application/json" -H "Content-Type: application/json" http://localhost:6080/service/public/v2/api/servicedef/')),(0,r.yg)("p",null,"You should get back ",(0,r.yg)("inlineCode",{parentName:"p"},"json"),' describing the service definition you just added. You can now go to the web interface of Apache Ranger which should now include a widget for "Druid". Click the plus sign and create the new service. Ensure your service name is equal to what you configured in ',(0,r.yg)("inlineCode",{parentName:"p"},"ranger-druid-security.xml"),"."),(0,r.yg)("h4",{id:"configuring-apache-ranger-policies"},"Configuring Apache Ranger policies"),(0,r.yg)("p",null,"When installing a new Druid service in Apache Ranger for the first time, Ranger will provision the policies to allow the administrative user ",(0,r.yg)("inlineCode",{parentName:"p"},"read/write")," access to all properties and data sources. You might want to limit this. Do not forget to add the correct policies for the ",(0,r.yg)("inlineCode",{parentName:"p"},"druid_system")," user and the ",(0,r.yg)("inlineCode",{parentName:"p"},"internalClientUserName")," of the escalator."),(0,r.yg)("admonition",{type:"info"},(0,r.yg)("p",{parentName:"admonition"}," Loading new data sources requires ",(0,r.yg)("inlineCode",{parentName:"p"},"write")," access to the ",(0,r.yg)("inlineCode",{parentName:"p"},"datasource")," prior to the loading itself. So if you want to create a datasource ",(0,r.yg)("inlineCode",{parentName:"p"},"wikipedia")," you are required to have an ",(0,r.yg)("inlineCode",{parentName:"p"},"allow")," policy inside Apache Ranger before trying to load the spec.")),(0,r.yg)("h2",{id:"usage"},"Usage"),(0,r.yg)("h3",{id:"http-methods"},"HTTP methods"),(0,r.yg)("p",null,"For information on what HTTP methods are supported for a particular request endpoint, please refer to the ",(0,r.yg)("a",{parentName:"p",href:"/docs/latest/api-reference/"},"API documentation"),"."),(0,r.yg)("p",null,"GET requires READ permission, while POST and DELETE require WRITE permission."),(0,r.yg)("h3",{id:"sql-permissions"},"SQL Permissions"),(0,r.yg)("p",null,"Queries on Druid datasources require DATASOURCE READ permissions for the specified datasource."),(0,r.yg)("p",null,"Queries on the ",(0,r.yg)("a",{parentName:"p",href:"/docs/latest/querying/sql-metadata-tables#information-schema"},"INFORMATION_SCHEMA tables")," will return information about datasources that the caller has DATASOURCE READ access to. Other datasources will be omitted."),(0,r.yg)("p",null,"Queries on the ",(0,r.yg)("a",{parentName:"p",href:"/docs/latest/querying/sql-metadata-tables#system-schema"},"system schema tables")," require the following permissions:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"segments"),": Segments will be filtered based on DATASOURCE READ permissions."),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"servers"),": The user requires STATE READ permissions."),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"server_segments"),": The user requires STATE READ permissions and segments will be filtered based on DATASOURCE READ permissions."),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"tasks"),": Tasks will be filtered based on DATASOURCE READ permissions.")),(0,r.yg)("h3",{id:"debugging"},"Debugging"),(0,r.yg)("p",null,"If you face difficulty grasping why access is denied to certain elements, and the ",(0,r.yg)("inlineCode",{parentName:"p"},"audit")," section in Apache Ranger does not give you any detail, you can enable debug logging for ",(0,r.yg)("inlineCode",{parentName:"p"},"org.apache.druid.security.ranger"),". To do so add the following in your ",(0,r.yg)("inlineCode",{parentName:"p"},"log4j2.xml"),":"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-xml"},'\x3c!-- Set level="debug" to see access requests to Apache Ranger --\x3e\n<Logger name="org.apache.druid.security" level="debug" additivity="false">\n  <Appender-ref ref="Console"/>\n</Logger>\n')))}h.isMDXComponent=!0}}]);