×ðÁú¿­Ê±¹ÙÍøµÇ¼

ÔõÑùÔÚLinuxÉÏÉèÖûùÓÚ½ÇÉ«µÄ»á¼û¿ØÖÆ£¨RBAC£©

ÔõÑùÔÚlinuxÉÏÉèÖûùÓÚ½ÇÉ«µÄ»á¼û¿ØÖÆ£¨rbac£©

СÐò£º

ÔÚ¶àÓû§ÇéÐÎÏ £¬È·±£ÏµÍ³Çå¾²ÐÔºÍÊý¾ÝµÄÒþ˽ÐÔ³ÉΪһÏîÖ÷ҪʹÃü ¡£¶øÔÚLinuxϵͳÖÐ £¬½ÇɫΪ»ù´¡µÄ»á¼û¿ØÖÆ£¨Role-Based Access Control £¬¼ò³ÆRBAC£©±»ÆÕ±é½ÓÄÉÀ´ÖÎÀíÓû§È¨ÏÞºÍ×ÊÔ´»á¼û ¡£±¾ÎĽ«ÏÈÈÝÔõÑùÔÚLinuxϵͳÉÏÉèÖÃRBAC £¬²¢ÌṩһЩ´úÂëʾÀýÀ´×ÊÖú¶ÁÕ߸üºÃµØÃ÷ȷʵÏÖÀú³Ì ¡£

µÚÒ»²½£º×°ÖÃÐëÒªµÄÈí¼þ°ü

Ê×ÏÈ £¬ÎÒÃÇÐèҪװÖÃÐëÒªµÄÈí¼þ°üÒÔÆôÓÃRBAC¹¦Ð§ ¡£Ê¹ÓÃÒÔÏÂÏÂÁîÔÚLinuxϵͳÉÏ×°ÖÃSELinux£¨Security Enhanced Linux£©ºÍPAM£¨Pluggable Authentication Modules£©£º

sudo apt-get install selinux pam

µÇ¼ºó¸´ÖÆ

Íê³É×°Öúó £¬ÎÒÃÇ¿ÉÒÔ¼ÌÐø¾ÙÐÐÏÂÒ»²½²Ù×÷ ¡£

µÚ¶þ²½£º½¨ÉèÓû§ºÍ½ÇÉ«

ÔÚLinuxϵͳÖÐ £¬Ã¿¸öÓû§¿ÉÒÔ±»·ÖÅɵ½Ò»¸ö»ò¶à¸ö½ÇÉ« ¡£ÎÒÃÇ¿ÉÒÔʹÓÃadduserÏÂÁÉèÐÂÓû§ £¬²¢Ê¹ÓÃusermodÏÂÁÓû§Ìí¼Óµ½ÏìÓ¦µÄ½ÇÉ«ÖÐ ¡£

sudo adduser user1
sudo usermod -aG role1 user1

µÇ¼ºó¸´ÖÆ

ÉÏÊö´úÂëÖÐ £¬ÎÒÃǽ¨ÉèÁËÒ»¸öÃûΪuser1µÄÐÂÓû§ £¬²¢½«ÆäÌí¼Óµ½ÃûΪrole1µÄ½ÇÉ«ÖÐ ¡£Äã¿ÉÒÔƾ֤×Ô¼ºµÄÐèÇó½¨Éè¸ü¶àµÄÓû§ºÍ½ÇÉ« ¡£

µÚÈý²½£ºÉèÖýÇÉ«Õ½ÂÔÎļþ

½ÇÉ«Õ½ÂÔÎļþ½ç˵ÁËÿ¸ö½ÇÉ«µÄȨÏÞºÍ×ÊÔ´»á¼ûÕ½ÂÔ ¡£ÎÒÃÇ¿ÉÒÔʹÓÃÎı¾±à¼­Æ÷·­¿ª/etc/selinux/policy.confÎļþ £¬²¢Ìí¼Ó½ÇÉ«Õ½ÂÔ ¡£

sudo nano /etc/selinux/policy.conf

µÇ¼ºó¸´ÖÆ

ÔÚÎļþĩβÌí¼ÓÒÔÏÂÄÚÈÝ£º

role role1 types type1, type2, type3

µÇ¼ºó¸´ÖÆ

ÉÏÊö´úÂëÖÐ £¬ÎÒÃǽç˵ÁËÃûΪrole1µÄ½ÇÉ« £¬ÒÔ¼°½ÇÉ«¿ÉÒÔ»á¼ûµÄ×ÊÔ´ÀàÐÍ ¡£

µÚËIJ½£ºÉèÖÃPAMÄ£¿é

PAMÄ£¿éÊÇÒ»¸ö¿É²å°ÎµÄÉí·ÝÑé֤ģ¿é £¬ÓÃÓÚ¶ÔÓû§¾ÙÐÐÉí·ÝÑéÖ¤ºÍÊÚȨ ¡£ÎÒÃÇ¿ÉÒÔʹÓÃÎı¾±à¼­Æ÷·­¿ª/etc/pam.d/common-authÎļþ £¬²¢Ìí¼ÓPAMÄ£¿éÉèÖà ¡£

sudo nano /etc/pam.d/common-auth

µÇ¼ºó¸´ÖÆ

ÔÚÎļþ¿ªÍ·Ìí¼ÓÒÔÏÂÄÚÈÝ£º

auth [success=done new_authtok_reqd=ok default=ignore] pam_selinux_permit.so
auth required pam_deny.so

µÇ¼ºó¸´ÖÆ

ÉÏÊö´úÂëÖÐ £¬ÎÒÃÇʹÓÃpam_selinux_permit.soÄ£¿éÔÊÐíSELinuxÉèÖûá¼ûȨÏÞ £¬²¢Ê¹ÓÃpam_deny.soÄ£¿éեȡ¶Ô²»¾ß±¸»á¼ûȨÏÞµÄÓû§¾ÙÐÐÊÚȨ ¡£

µÚÎå²½£ºÖØÆôϵͳ

Íê³ÉÉÏÊöÉèÖúó £¬ÎÒÃÇÐèÒªÖØÆôLinuxϵͳÒÔʹRBACÉèÖÃÉúЧ ¡£

sudo reboot

µÇ¼ºó¸´ÖÆ

ÖØÆôºó £¬RBAC¹¦Ð§½«±»ÆôÓà £¬Óû§½«Æ¾Ö¤ÆäËùÊô½ÇÉ«µÄ»á¼ûȨÏÞ¾ÙÐÐÊÚȨ ¡£

´úÂëʾÀý£º

ÒÔÏÂÊÇÒ»¸ö¼òÆÓµÄRBAC´úÂëʾÀý £¬ÓÃÓÚÑÝʾÔõÑùʹÓÃRBACÉèÖÃÓû§È¨ÏÞ¿ØÖÆ ¡£

import os

def check_access(user, resource):
    output = os.system("id -Z")
    if user in output and resource in allowed_resources:
        return True
    else:
        return False

user = "user1"
allowed_resources = ["file1", "file2", "file3"]

if check_access(user, "file2"):
    print("Óû§ÓÐȨÏÞ»á¼û×ÊÔ´")
else:
    print("Óû§ÎÞȨÏÞ»á¼û×ÊÔ´")

µÇ¼ºó¸´ÖÆ

ÉÏÊö´úÂëÖÐ £¬check_accessº¯ÊýÓÃÓÚ¼ì²éÓû§ÊÇ·ñ¾ßÓлá¼û×ÊÔ´µÄȨÏÞ ¡£ÈôÊÇÓû§ÔÚÖ¸¶¨µÄ½ÇÉ«ÖÐ £¬²¢ÇÒËùÐè×ÊÔ´ÔÚÔÊÐí»á¼ûµÄ×ÊÔ´ÁбíÖÐ £¬Ôòº¯Êý·µ»ØTrue £¬²»È»·µ»ØFalse ¡£

½áÂÛ£º

ͨ¹ýÉèÖûùÓÚ½ÇÉ«µÄ»á¼û¿ØÖÆ£¨RBAC£© £¬ÎÒÃÇ¿ÉÒÔ¸üºÃµØÖÎÀíÓû§È¨ÏÞºÍ×ÊÔ´»á¼û £¬²¢Ìá¸ßϵͳµÄÇå¾²ÐÔºÍÊý¾ÝµÄÒþ˽ÐÔ ¡£ÔÚ±¾ÎÄÖÐ £¬ÎÒÃÇÏÈÈÝÁËÔÚLinuxϵͳÉÏÉèÖÃRBACµÄ°ì·¨ £¬²¢ÌṩÁËÒ»¸ö¼òÆӵĴúÂëʾÀýÀ´×ÊÖú¶ÁÕ߸üºÃµØÃ÷ȷʵÏÖÀú³Ì ¡£¶ÁÕß¿ÉÒÔƾ֤×Ô¼ºµÄÐèÇóÀ´À©Õ¹ºÍÐÞ¸ÄRBACÉèÖà £¬ÒÔʵÏÖ¸ü׼ȷµÄȨÏÞ¿ØÖÆ ¡£

ÒÔÉϾÍÊÇÔõÑùÔÚLinuxÉÏÉèÖûùÓÚ½ÇÉ«µÄ»á¼û¿ØÖÆ£¨RBAC£©µÄÏêϸÄÚÈÝ £¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡

ÃâÔð˵Ã÷£ºÒÔÉÏչʾÄÚÈÝȪԴÓÚÏàÖúýÌå¡¢ÆóÒµ»ú¹¹¡¢ÍøÓÑÌṩ»òÍøÂçÍøÂçÕûÀí £¬°æȨÕùÒéÓë±¾Õ¾ÎÞ¹Ø £¬ÎÄÕÂÉæ¼°¿´·¨Óë¿´·¨²»´ú±í×ðÁú¿­Ê±¹ÙÍøµÇ¼ÂËÓÍ»úÍø¹Ù·½Ì¬¶È £¬Çë¶ÁÕß½ö×ö²Î¿¼ ¡£±¾ÎĽӴýתÔØ £¬×ªÔØÇë˵Ã÷À´ÓÉ ¡£ÈôÄúÒÔΪ±¾ÎÄÇÖÕ¼ÁËÄúµÄ°æȨÐÅÏ¢ £¬»òÄú·¢Ã÷¸ÃÄÚÈÝÓÐÈκÎÉæ¼°ÓÐÎ¥¹«µÂ¡¢Ã°·¸Ö´·¨µÈÎ¥·¨ÐÅÏ¢ £¬ÇëÄúÁ¬Ã¦ÁªÏµ×ðÁú¿­Ê±¹ÙÍøµÇ¼ʵʱÐÞÕý»òɾ³ý ¡£

Ïà¹ØÐÂÎÅ

ÁªÏµ×ðÁú¿­Ê±¹ÙÍøµÇ¼

18523999891

¿É΢ÐÅÔÚÏß×Éѯ

ÊÂÇéʱ¼ä£ºÖÜÒ»ÖÁÖÜÎå £¬9:30-18:30 £¬½ÚãåÈÕÐÝÏ¢

QR code
ÍøÕ¾µØͼ