±à¼ÍƼö: |
±¾ÎÄÖ÷Òª´ÓȨÏÞÄ£ÐÍ¡¢×ÜÌå¼Ü¹¹¡¢ÏµÍ³²å¼þÈý¸ö·½ÃæÆÊÎöÁËApache
Ranger¡£Ï£Íû¶ÔÄãÓаïÖú¡£
±¾ÎÄÀ´×Ô²©¿ÍÔ°£¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼¡¢ÍƼö¡£ |
|
ǰÑÔ
2016Ä꣬HadoopÓÀ´ÁË×Ô¼ºÊ®ÖÜËêÉúÈÕ¡£¹ýÈ¥µÄÊ®Ä꣬HadoopÐÛ°ÔÎäÁÖÃËÖ÷֮룬ºÅÁîÌìÏ£¬ÒýÁì´óÊý¾Ý¼¼ÊõÉú̬²»¶Ï·¢Õ¹×³´ó£¬Ò»Ê±¼ä°Ù¼ÒÕùÃù£¬°Ù»¨Æë·Å¡£È»¶ø£¬ÐֵܶàÁ˲»ºÃ¹Ü£¬ÎªÁËÇÀÕ¼ÆóÒµ¼¶Êг¡£¬¸÷¼Ò¶¼µü´ú³ö×Ô¼ºµÄÒ»Ì×·ÃÎÊ¿ØÖÆÌåϵ£¬²»¹ÜÊÇÀÏÅÆÏµÍ³(±ÈÈçHDFS¡¢HBase)£¬»¹ÊÇÉú̬йó(±ÈÈçKafka¡¢Alluxio)£¬ACL(Access
Control List)Ö§³Ö¶¼ÊÇRoadmapÀï±»¹Ø×¢×î¸ßµÄissueÖ®Ò»¡£
ÀúÊ·Ö¤Ã÷Ìø³ö»ìãç״̬µÄ×îºÃ·½Ê½¾ÍÊÇ¡ª¡ª³ǫ̈±ê×¼¡£ÓÚÊÇ£¬HadoopÁ½´ó³§ClouderaºÍHortonworksÏ鼗᢮ð±ê×¼»¯Ô˶¯£¬·Ö±ð¿ªÔ´ÁËSentryºÍRanger£¬ÔÚcentralized·ÃÎÊ¿ØÖÆÁìÓòÕ¹¿ªÐÂÒ»ÂֵĽÇÖð¡£
RangerÔÚ0.4°æ±¾µÄʱºò±»Hortonworks¼ÓÈëµ½ÆäHadoop·¢ÐаæHDPÀĿǰ×÷ΪApache
incubatorÏîÄ¿£¬×îа汾ÊÇ0.6¡£ËüÖ÷ÒªÌṩÈçÏÂÌØÐÔ:
»ùÓÚ²ßÂÔ(Policy-based)µÄ·ÃÎÊȨÏÞÄ£ÐÍ
ͨÓõIJßÂÔͬ²½Óë¾ö²ßÂß¼£¬·½±ã¿ØÖƲå¼þµÄÀ©Õ¹½ÓÈë
ÄÚÖó£¼ûϵͳ(ÈçHDFS¡¢YARN¡¢HBase)µÄ¿ØÖƲå¼þ£¬ÇÒ¿ÉÀ©Õ¹
ÄÚÖûùÓÚLDAP¡¢ÎļþµÄÓû§Í¬²½»úÖÆ£¬ÇÒ¿ÉÀ©Õ¹
ͳһµÄ¹ÜÀí½çÃæ£¬°üÀ¨²ßÂÔ¹ÜÀí¡¢Éó¼Æ²é¿´¡¢²å¼þ¹ÜÀíµÈ
±¾ÎĽ«´ÓȨÏÞÄ£ÐÍ¡¢×ÜÌå¼Ü¹¹¡¢ÏµÍ³²å¼þÈý¸ö½Ç¶ÈÀ´Õ¹¿ª£¬ÆÊÎöRangerÈçºÎʵÏÖcentralized·ÃÎÊ¿ØÖÆ¡£
ȨÏÞÄ£ÐÍ
·ÃÎÊȨÏÞÎÞ·ÇÊǶ¨ÒåÁË¡°Óû§-×ÊÔ´-ȨÏÞ¡±ÕâÈýÕß¼äµÄ¹ØÏµ£¬Ranger»ùÓÚ²ßÂÔÀ´³éÏóÕâÖÖ¹ØÏµ£¬½ø¶øÑÓÉì³ö×Ô¼ºµÄȨÏÞÄ£ÐÍ¡£ÎªÁ˼ò»¯Ä£ÐÍ£¬±ãÓÚÀí½â£¬ÎÒÓÃÒÔϱí´ïʽÀ´ÃèÊöËü£º
Policy = Service + List<Resource> + AllowACL
+ DenyACL
AllowACL = List<AccessItem> allow + List<AccssItem>
allowException
DenyACL = List<AccessItem> deny + List<AccssItem>
denyException
AccessItem = List<User/Group> + List<AccessType>
½ÓÏÂÀ´´Ó¡±Óû§-×ÊÔ´-ȨÏÞ*¡±µÄ½Ç¶ÈÀ´Ïê½âÉÏÊö±í´ï£º
Óû§£ºÓÉUser»òGroupÀ´±í´ï£»User´ú±í·ÃÎÊ×ÊÔ´µÄÓû§£¬Group´ú±íÓû§ËùÊôµÄÓû§×é¡£
×ÊÔ´£ºÓÉ(Service, Resource)¶þÔª×éÀ´±í´ï£»Ò»ÌõPolicyΨһ¶ÔÓ¦Ò»¸öService£¬µ«¿ÉÒÔ¶ÔÓ¦¶à¸öResource¡£
ȨÏÞ£ºÓÉ(AllowACL, DenyACL)¶þÔª×éÀ´±í´ï£¬Á½Õß¶¼°üº¬Á½×éAccessItem¡£¶øAccessItemÔòÃèÊöÒ»×éÓû§ÓëÒ»×é·ÃÎÊÖ®¼äµÄ¹ØÏµ¡ª¡ªÔÚAllowACLÖбíʾÔÊÐíÖ´ÐУ¬¶øDenyACLÖбíʾ¾Ü¾øÖ´ÐС£
ϱíÁгöÁ˼¸ÖÖ³£¼ûϵͳµÄÄ£ÐÍʵÌåö¾ÙÖµ£º

¹ØÓÚȨÏÞÕâ¸ö²¿·Ö£¬»¹ÓÐÒ»µãûÓнâÊÍÇå³þ£ºÎªÊ²Ã´AllowACLºÍDenyACLÐèÒª·Ö±ð¶ÔÓ¦Á½×éAccessItem£¿ÕâÊÇÓɾßÌåʹÓó¡¾°Òý³öµÄÉè¼Æ£º
ÒÔAllowACLΪÀý£¬¼Ù¶¨ÎÒÃÇÒª½«×ÊÔ´ÊÚȨ¸øÒ»¸öÓû§×éG1£¬µ«ÊÇÓû§×éÀïij¸öÓû§U1³ýÍ⣬ÕâʱֻҪÔö¼ÓÒ»Ìõ°üº¬G1µÄAccessItemµ½AllowACL_allow£¬Í¬Ê±Ôö¼ÓÒ»Ìõ°üº¬U1µÄAccessItemµ½AllowACL_allowException¼´¿É¡£ÀàËÆµÄÔÒò¿É·´ÍƵ½DenyACL¡£
¼ÈÈ»ÏÖÔÚÒ»ÌõPolicyÓÐ(allow, allowException, deny, denyException)ÕâôËÄ×éAccessItem£¬ÄÇôÅжÏÓû§×îÖÕȨÏ޵ľö²ß¹ý³ÌÊÇÔõÑùµÄ£¿
×ÜÌåÀ´Ëµ£¬ÕâËÄ×éAccessItemµÄ×÷ÓÃÓÅÏȼ¶Óɸߵ½µÍÒÀ´ÎÊÇ£º
denyException > deny > allowException >
allow
·ÃÎʾö²ßÊ÷¿ÉÒÔÓÃÒÔÏÂÁ÷³ÌͼÀ´ÃèÊö£º
ÕâÀïÒª¶Ô¾ö²ßÏ·Å×öÒ»¸ö½âÊÍ£ºÈç¹ûûÓÐpolicyÄܾö²ß·ÃÎÊ£¬Ranger¿ÉÒÔÑ¡Ôñ½«¾ö²ßÏ·ŸøÏµÍ³×ÔÉíµÄ·ÃÎÊ¿ØÖƲ㣬±ÈÈçHDFSµÄACL¡£
×ÜÌå¼Ü¹¹
RangerµÄ×ÜÌå¼Ü¹¹ÈçÏÂͼËùʾ£¬Ö÷ÒªÓÉÒÔÏÂÈý¸ö×é¼þ¹¹³É£º
AdminServer: ÒÔRESTFULÐÎʽÌṩ²ßÂÔµÄÔöɾ¸Ä²é½Ó¿Ú£¬Í¬Ê±ÄÚÖÃÒ»¸öWeb¹ÜÀíÒ³Ãæ¡£
AgentPlugin: ǶÈëµ½¸÷ϵͳִÐÐÁ÷³ÌÖУ¬¶¨ÆÚ´ÓAdminServerÀÈ¡²ßÂÔ£¬¸ù¾Ý²ßÂÔÖ´ÐзÃÎʾö²ßÊ÷£¬²¢ÇÒ¶¨ÆÚ¼Ç¼·ÃÎÊÉ󼯡£²å¼þµÄʵÏÖÔÀí½«ÔÚºóÎÄÏêϸ½éÉÜ¡£
UserSync: ¶¨ÆÚ´ÓLDAP/FileÖмÓÔØÓû§£¬Éϱ¨¸øAdminServer¡£

ϵͳ²å¼þ
ǰÎÄÒѾÌáµ½£¬ÏµÍ³²å¼þÖ÷Òª¸ºÔðÈý¼þÊ£º
¶¨ÆÚ´ÓAdminServerÀÈ¡²ßÂÔ
¸ù¾Ý²ßÂÔÖ´ÐзÃÎʾö²ßÊ÷
¶¨ÆÚ¼Ç¼·ÃÎÊÉó¼Æ
ÒÔÉÏÖ´ÐÐÂß¼ÊÇͨÓõģ¬¿ÉÓÉËùÓÐϵͳ²å¼þÒýÓã¬Òò´ËʣϵÄÎÊÌâÊÇÈçºÎ°ÑÕâЩÂ߼ǶÈëµ½¸÷¸öϵͳµÄ·ÃÎʾö²ßÁ÷³ÌÖÐÈ¥¡£Ä¿Ç°RangerÀïÓÐÁ½ÖÖ×ö·¨£º
ʵÏÖ¿ÉÀ©Õ¹½Ó¿Ú£º¶àÊýµÄϵͳÔÚʵÏÖʱ¶¼Óп¼Âǹ¦ÄÜÀ©Õ¹ÐÔµÄÎÊÌ⣬һ°ã»áΪºËÐĵÄÄ£¿é±©Â¶³ö¿ÉÀ©Õ¹µÄ½Ó¿Ú£¬·ÃÎÊ¿ØÖÆÄ£¿éÒ²²»ÀýÍâ¡£Rangerͨ¹ýʵÏÖ·ÃÎÊ¿ØÖƽӿڣ¬½«×Ô¼ºµÄÂ߼ǶÈë¸÷¸öϵͳ¡£Ï±íÁгöÁËRanger²å¼þ¶Ô¼¸¸ö³£¼ûϵͳµÄÀ©Õ¹½Ó¿Ú£º
´úÂë×¢È룺²»ÅųýÓÐÉÙÊýϵͳûÓн«·ÃÎÊ¿ØÖÆÄ£¿é±©Â¶³öÀ©Õ¹µã£¬Õâ¸öʱºòRangerÒÀÀµJava´úÂë×¢Èë»úÖÆ(java.lang.instrument)À´ÊµÏÖÂ߼ǶÈë¡£ÒÔHDFS²å¼þΪÀý£¬RangerÀûÓÃClassFileTransformer£¬Ö±½ÓÐÞ¸ÄHDFS·ÃÎÊ¿ØÖÆÀàFSPermissionCheckerµÄClassFile£¬½«checkPermission·½·¨Ìæ»»³ÉRangerµÄ×Ô¶¨ÒåʵÏÖ¡£
ºó»°
Ëæ×ÅHadoopÉú̬Ȧ½ø¾üÆóÒµ¼¶Êг¡£¬Êý¾Ý°²È«Öð½¥³ÉΪ¹Ø×¢½¹µã¡£Ranger×÷Ϊ±ê×¼»¯µÄ·ÃÎÊ¿ØÖƲ㣬ÒýÈëͳһµÄȨÏÞÄ£ÐÍÓë¹ÜÀí½çÃæ£¬¼«´óµØ¼ò»¯ÁËÊý¾ÝȨÏ޵ĹÜÀí¡£²»¹ý£¬RangerĿǰ´¦ÓÚ·õ»¯ÏîÄ¿£¬ÔÚ¹¦ÄÜÐÔÓëÎȶ¨ÐÔÉÏÈÔÈ»ÓнϴóµÄÌáÉý¿Õ¼ä£¬ÆäÄÜ·ñ¸²¸Ç¸ü¶àµÄϵͳ£¬Ò»Í³½ºþ³ÉΪ±ê×¼£¬ÈÃÎÒÃÇÊÃÄ¿ÒÔ´ý¡£
|