¹ØÓÚÔÆÔÉúÓ¦Óã¬ÕâЩÇ徲Σº¦ÏàʶһÏÂ
2021-08-05
ÕªÒª£ºÔÆÔÉúÓ¦ÓÃÊÂʵºÍ¹Å°åÓ¦ÓÃÓкβî±ð£¬Ç徲Σº¦ÉÏÓкÎת±ä£¿±¾ÎĽ«´Ó¹Å°åÓ¦ÓÃΣº¦¡¢Ó¦Óüܹ¹Àå¸ï´øÀ´µÄΣº¦¡¢ÔÆÅÌËãģʽ´øÀ´µÄΣº¦Èý¸öά¶È¾ÙÐÐÏÈÈÝ¡£
Ò». ¸ÅÊö
Ëæ×ÅÔÆÅÌËãÊÖÒÕµÄÒ»Ö±Éú³¤£¬ÉÏÔÆÒѾ²»ÔÙÊÇÒ»ÖÖÑ¡Ôñ£¬¶øÊÇÒ»ÖÖ¹²Ê¶£¬ÊÇÆóÒµÊý×Ö»¯×ªÐ͵ÄÐëÒªÌõ¼þ¡£ÔÚÏìӦʵ¼ùÀú³ÌÖУ¬¹Å°åÓ¦Óñ£´æÉý¼¶»ºÂý¡¢¼Ü¹¹Ó·Öס¢ÎÞ·¨µ¯ÐÔÀ©Õ¹¼°¿ìËÙµü´úµÈÎÊÌ⣬ÓÚÊǽüÄêÀ´ÔÆÔÉúµÄ¿´·¨Ó¦Ô˶øÉú£¬ÒÀ¸½×ÅÔÆÔÉúµ¯ÐÔ¡¢Ñ¸ËÙ¡¢×ÊÔ´³ØºÍ·þÎñ»¯µÈÌØÕ÷£¬½â¾öÁËÓªÒµÔÚ¿ª·¢¡¢¼¯³É¡¢·Ö·¢ºÍÔËÐеÈÕû¸öÉúÃüÖÜÆÚÖÐÓöµ½µÄÎÊÌâ¡£
ÔÆÔÉúÇéÐÎÖУ¬Ó¦ÓÃÓɹŰåµÄµ¥Ìå¼Ü¹¹×ªÏò΢·þÎñ¼Ü¹¹£¬ÔÆÅÌËãģʽҲÏìÓ¦µÄ´Ó»ù´¡ÉèÊ©¼´·þÎñ£¨Infrastructure as a Service£¬IaaS£©×ªÏòΪÈÝÆ÷¼´·þÎñ£¨Container as a Service£¬CaaS£©ºÍº¯Êý¼´·þÎñ£¨Function as a Service£¬FaaS£©¡£Ó¦Óüܹ¹ºÍÔÆÅÌËãģʽµÄÀå¸ïÊÇ·ñ»áµ¼Ö½øÒ»²½µÄΣº¦£¬ÕâЩΣº¦½ÏÖ®¹Å°åÓ¦ÓÃΣº¦ÓÖÓÐÄÄÐ©Çø±ð£¿ÔÚ½²ÊöÔÆÔÉúÓ¦ÓÃÏêϸΣº¦Ç°£¬Ê×ÏÈö¾ÙÒÔÏÂÈý¸ö¿´·¨£¬ÕâЩ¿´·¨ÓÐÖúÓÚ¸÷È˸üºÃµØÃ÷È·±¾ÎÄËù½²ÊöµÄÄÚÈÝ¡£
¿´·¨Ò» ÔÆÔÉúÓ¦ÓüÌÐøÁ˹ŰåÓ¦ÓõÄΣº¦ºÍAPIµÄΣº¦
ÔÆÔÉúÓ¦ÓÃÔ´ÓڹŰåÓ¦Óã¬Òò¶øÔÆÔÉúÓ¦ÓÃΣº¦Ò²¾Í¼ÌÐøÁ˹ŰåÓ¦ÓõÄΣº¦¡£±ðµÄ£¬ÓÉÓÚÔÆÔÉúÓ¦Óüܹ¹µÄת±ä½ø¶øµ¼ÖÂÓ¦ÓÃAPI½»»¥µÄÔö¶à£¬¿ÉÒÔËµÔÆÔÉúÓ¦ÓÃÖд󲿷ֽ»»¥Ä£Ê½ÒÑ´ÓWebÇëÇó/ÏìӦתÏòÖÖÖÖAPIÇëÇó/ÏìÓ¦ £¬ÀýÈçRESTful/HTTP¡¢gRPCµÈ£¬Òò¶øAPIΣº¦Ò²½øÒ»²½ÌáÉý¡£
¿´·¨¶þ Ó¦Óüܹ¹Àå¸ï½«»á´øÀ´ÐµÄΣº¦
ÓÉÓÚÓ¦Óüܹ¹Àå¸ï£¬ÔÆÔÉúÓ¦ÓÃ×ñÕÕÃæÏò΢·þÎñ»¯µÄÉè¼Æ·½·¨£¬´Ó¶øµ¼Ö¹¦Ð§×é¼þ»¯¡¢·þÎñÊýÄ¿¼¤Ôö¡¢ÉèÖÃÖØ´óµÈÎÊÌ⣬½ø¶øÎªÔÆÔÉúÓ¦ÓúÍÓªÒµ´øÀ´ÁËеÄΣº¦¡£
¿´·¨Èý ÅÌËãģʽÀå¸ï½«»á´øÀ´ÐµÄΣº¦
Ëæ×ÅÔÆÅÌËãµÄÒ»Ö±Éú³¤£¬ÆóÒµÔÚÓ¦ÓõÄ΢·þÎñ»¯ºó£¬»á½øÒ»²½¾Û½¹ÓÚÓªÒµ×ÔÉí£¬²¢½«¹¦Ð§º¯Êý»¯£¬Òò¶ø·ºÆðÁËÎÞ·þÎñÆ÷ÅÌË㣨Serverless Computing£©ÕâÀàеÄÔÆÅÌËãģʽ£¬½ø¶øÒýÈëÁËServerlessÓ¦ÓúÍServerlessƽ̨µÄÐÂΣº¦¡£
×ÛÉÏËùÊö£¬¿ÉÒÔ¿´³öÔÆÔÉúÓ¦ÓôøÀ´µÄΣº¦ÊǽûֹСêïµÄ¡£±¾ÎĽ«´Ó¹Å°åÓ¦ÓÃΣº¦¡¢Ó¦Óüܹ¹Àå¸ï´øÀ´µÄÐÂΣº¦¡¢ÔÆÅÌËãģʽÀå¸ï´øÀ´µÄÐÂΣº¦Èý¸öά¶È»®·Ö¾ÙÐÐÏÈÈÝ£¬Ï£Íû¿ÉÒÔÒý·¢¸÷È˸ü¶àµÄ˼Ë÷¡£
¶þ. ¹Å°åÓ¦ÓÃÃæÁÙµÄΣº¦
ÔÆÔÉúÓ¦ÓÃΣº¦¿ÉÒԲο¼¹Å°åÓ¦ÓÃΣº¦¡£¹Å°åÓ¦ÓÃΣº¦ÒÔWebÓ¦ÓÃΣº¦ÎªÖ÷£¬Ö÷Òª°üÀ¨×¢Èë¡¢Ãô¸ÐÊý¾Ýй¶¡¢¿çÕ¾¾ç±¾¡¢Ê¹Óú¬ÓÐÒÑÖªÎó²îµÄ×é¼þ¡¢È±·¦µÄÈÕÖ¾¼Í¼ºÍ¼à¿ØµÈΣº¦¡£
±ðµÄ£¬ÔÆÔÉúÇéÐÎÖУ¬Ó¦ÓõÄAPI½»»¥Ä£Ê½Öð½¥ÓÉ“ÈË»ú½»»¥”ת±äΪ“»ú»ú½»»¥”£¬ËäÈ»API´ó×Ú·ºÆðÊÇÔÆÔÉúÇéÐεÄÒ»´óÌØµã£¬µ«ÊµÖÊÉÏÀ´Ëµ£¬APIΣº¦²¢ÎÞеÄת±ä£¬Òò¶øÆäΣº¦¿ÉÒԲο¼ÏÖÓеÄAPIΣº¦£¬Ö÷Òª°üÀ¨Çå¾²ÐÔ¹ýʧÉèÖá¢×¢Èë¡¢×ʲúÖÎÀí²»µ±¡¢×ÊԴȱʧºÍËÙÂÊÏÞÖÆµÈΣº¦¡£
ÓйعŰåÓ¦ÓÃΣº¦ºÍAPIΣº¦µÄ¸ü¶àϸ½Ú¿ÉÒÔ»®·Ö²Î¿¼OWASP×éÖ¯ÔÚ2017ºÍ2019ÄêÐû²¼µÄÓ¦ÓÃÊ®´óΣº¦±¨¸æ[1]ºÍAPIÊ®´óΣº¦±¨¸æ[2]¡£
Èý. Ó¦Óüܹ¹Àå¸ï´øÀ´µÄÐÂΣº¦
3.1 ÔÆÔÉúÓ¦ÓôøÀ´µÄÐÂΣº¦
ÔÆÔÉúÓ¦ÓÃÃæÁÙµÄÐÂΣº¦Ö÷ÒªÌåÏÖÔÚ£ºÐÂÓ¦Óüܹ¹µÄ·ºÆð¡£ÐÂÓ¦Óüܹ¹×ñÕÕ΢·þÎñ»¯µÄÉè¼ÆÄ£Ê½£¬Í¨¹ýÓ¦ÓõÄ΢·þÎñ»¯£¬ÎÒÃÇÄܹ»¹¹½¨ÈÝ´íÐԺá¢Ò×ÓÚÖÎÀíµÄËÉñîºÏϵͳ£¬Óë´Ëͬʱ£¬ÐÂÓ¦Óüܹ¹µÄ·ºÆðÒ²»áÒýÈëеÄΣº¦£¬ÎªÁ˽ÏΪÍêÕûµØ¶ÔΣº¦¾ÙÐÐÆÊÎö£¬±¾ÎĽ«ÒÔÐÅϢϵͳÇ徲Ʒ¼¶ÈýÒªËØ£¬¼´ÉñÃØÐÔ£¨Confidentiality£©¡¢ÍêÕûÐÔ£¨Integrity£©¡¢¿ÉÓÃÐÔ£¨Availability£©×÷Ϊµ¼ÏòÏÈÈÝÓ¦Óüܹ¹×ª±ä´øÀ´µÄÐÂΣº¦¡£
ÉñÃØÐÔÊÜËðµÄΣº¦
µä·¶µÄÈçÐÅϢй¶Σº¦£¬¹¥»÷Õß¿Éͨ¹ýʹÓÃ×ʲúųÈõÐÔºÍÐá̽¡¢±©Á¦ÆÆ½âµÈ¹¥»÷·½·¨ÇÔÈ¡Óû§Òþ˽Êý¾Ý£¬´Ó¶øÔì³ÉÐÅϢй¶Σº¦¡£
ÍêÕûÐÔÊÜËðµÄΣº¦
µä·¶µÄÈçδÊÚȨ»á¼ûΣº¦£¬¹¥»÷Õß¿Éͨ¹ýʹÓÃ×ʲúųÈõÐÔºÍÖÐÐÄÈ˹¥»÷µÈÐÐÎªÈÆ¹ýϵͳµÄÈÏÖ¤ÊÚȨ»úÖÆ£¬Ö´ÐÐԽȨ²Ù×÷£¬´Ó¶øÔì³ÉδÊÚȨ»á¼ûµÄΣº¦¡£
¿ÉÓÃÐÔÊÜËðµÄΣº¦
µä·¶µÄÈçϵͳ±»¾Ü¾ø·þÎñµÄΣº¦£¬Ò»·½Ã棬¹¥»÷Õß¿Éͨ¹ý»ûÐα¨ÎÄ¡¢SYN·ººéµÈ¹¥»÷·½·¨ÎªÄ¿µÄϵͳÌṩ·ÇÕý³£·þÎñ£¬ÁíÒ»·½Ã棬ϵͳÇó¹ýÓÚ¹©µÄ³¡¾°Ò²»áµ¼ÖÂϵͳÔâÊܾܾø·þÎñΣº¦¡£
±¾Ð¡½Ú½ÓÏÂÀ´µÄÄÚÈÝ£¬½«ÒÔÐÅϢй¶¡¢Î´ÊÚȨ»á¼û¡¢¾Ü¾ø·þÎñΪÀý£¬»®·ÖÏÈÈÝÉÏÊöÈýÀàΣº¦¡£
3.1.1 Êý¾Ýй¶µÄΣº¦
ÔÆÔÉúÇéÐÎÖУ¬ËäÈ»Ôì³ÉÓ¦ÓÃÊý¾Ýй¶Σº¦µÄÔµ¹ÊÔÓÉÓÐÐí¶à£¬µ«¶¼Àë²»¿ªÒÔϼ¸¸öÒòËØ£º
Ó¦ÓÃÎó²î£ºÍ¨¹ý×ʲúÎó²î¶ÔÓ¦ÓÃÊý¾Ý¾ÙÐÐÇÔÈ¡¡£
ÃÜÔ¿²»¹æ·¶ÖÎÀí£ºÍ¨¹ý²»¹æ·¶µÄÃÜÔ¿ÖÎÀí¶ÔÓ¦ÓÃÊý¾Ý¾ÙÐÐÇÔÈ¡¡£
Ó¦ÓüäͨѶδ¾¼ÓÃÜ£ºÍ¨¹ýÓ¦ÓüäͨѶδ¾¼ÓÃܵÄȱÏݶԴ«ÊäÖÐÊý¾Ý¾ÙÐÐÇÔÈ¡£¬½ø¶øÉý¼¶µ½¶ÔÓ¦ÓÃÊý¾ÝµÄÇÔÈ¡¡£
3.1.1.1 Ó¦ÓÃÎó²î´øÀ´µÄΣº¦
Ó¦ÓÃÖд洢µÄÊý¾Ý¶àÊÇ»ùÓÚAPI¾ÙÐлá¼û£¬ÈôÓ¦ÓÃÖÐijAPIº¬ÓÐδÊÚȨ»á¼ûÎó²î£¬ÀýÈçRedisδÊÚȨ»á¼ûÎó²î£¬¹¥»÷Õß±ã¿ÉʹÓôËÎó²îÈÆ¹ýRedisÈÏÖ¤»úÖÆ£¬»á¼ûµ½ÄÚ²¿Êý¾Ý£¬½ø¶øµ¼ÖÂÁËÃô¸ÐÐÅϢй¶µÄΣº¦¡£
¹Å°åµ¥ÌåÓ¦Óüܹ¹Ï£¬ÓÉÓÚAPI»á¼û¹æÄ£ÎªÓû§µ½Ó¦Ó㬹¥»÷ÕßÖ»ÄÜ¿´µ½Íⲿ½øÈëÖÁÓ¦ÓõÄÁ÷Á¿£¬ÎÞ·¨¿´µ½Ó¦ÓÃÄÚ²¿µÄÁ÷Á¿£¬ÒÔÊÇÕë¶Ô¶ñÒâʹÓÃAPIÎó²î¾ÙÐÐÊý¾ÝÇÔÈ¡Ôì³ÉµÄËðʧ¹æÄ£Í¨³£ÊÇÓÐÏ޵ġ£
·´¹Û΢·þÎñ»¯Ó¦Óüܹ¹£¬µ±µ¥ÌåÓ¦Óñ»²ð·ÖΪÈô¸É¸ö·þÎñºó£¬ÕâЩ·þÎñ»áƾ֤ӪҵÇéÐξÙÐÐÏ໥»á¼û£¬API»á¼û¹æÄ£±äΪ·þÎñµ½·þÎñ£¨Service to Service£©£¬Èôij·þÎñÒòAPIÎó²îµ¼Ö¹¥»÷ÕßÓÐÀû¿Éͼ£¬ÄÇô¹¥»÷Õß½«»á¿´µ½Ó¦ÓÃÄÚ²¿µÄÁ÷Á¿£¬ÕâÎÞÒÉΪ¹¥»÷ÕßÌṩÁ˸ü¶àµÄ¹¥»÷ÇþµÀ£¬Òò¶øÕë¶ÔÊý¾Ýй¶µÄΣº¦Ë®Æ½¶øÑÔ£¬Î¢·þÎñ¼Ü¹¹Ïà±È¹Å°åµ¥ÌåÓ¦Óüܹ¹´øÀ´µÄΣº¦¸ü´ó¡£±ðµÄ£¬Ëæ×Å·þÎñÊýÄ¿µÖ´ïÒ»¶¨¹æÄ££¬APIÊýÄ¿½«Ò»Ö±µÝÔö£¬½ø¶øÀ©´óÁ˹¥»÷Ãæ£¬Ôö´óÁËÊý¾Ýй¶µÄΣº¦¡£
3.1.1.2 ÃÜÔ¿²»¹æ·¶ÖÎÀí´øÀ´µÄΣº¦
ÔÚÓ¦ÓõĿª·¢Àú³ÌÖУ¬¿ª·¢Õß³£ÊèÓÚ¶ÔÃÜÔ¿µÄÖÎÀí´Ó¶øµ¼ÖÂÊý¾Ýй¶µÄΣº¦£¬ÀýÈ翪·¢Õß½«ÃÜÔ¿ÐÅÏ¢¡¢Êý¾Ý¿âÅþÁ¬ÃÜÂëµÈÃô¸ÐÐÅÏ¢Ó²±àÂëÔÚÓ¦ÓóÌÐòÖУ¬´Ó¶øÔö´óÁËÖîÈçÓ¦ÓóÌÐòÈÕ־й¶¡¢Ó¦ÓóÌÐò»á¼ûÃÜԿй¶µÄΣº¦¡£
¹Å°åµ¥ÌåÓ¦Óüܹ¹ÖУ¬¿ª·¢Õß³£½«ÉèÖÃÁ¬Í¬Ó¦ÓÃÒ»Æð´ò°ü£¬µ±ÐèÒªÐÞ¸ÄÉèÖÃʱ£¬Ö»ÐèµÇ¼ÖÁ·þÎñ¶Ë¾ÙÐÐÏìÓ¦Ð޸ģ¬ÔÙ¶ÔÓ¦ÓþÙÐÐÖØÆô±ã¿ÉʵÏÖ£¬ÕâÖÖµ¥¸ö¼¯ÖÐʽÉèÖÃÎļþµÄ´æ´¢·½·¨´ÓÃÜÔ¿ÖÎÀíΣº¦µÄ½Ç¶ÈÉϽ²ÊÇÏà¶Ô¿É¿ØµÄ¡£
΢·þÎñÓ¦Óüܹ¹ÖУ¬Ó¦ÓõÄÉèÖÃÊýÄ¿Óë·þÎñÊýÄ¿µÄÖð½¥Ôö¶àÊdzÉÕý±ÈµÄ£¬ÀýÈç΢·þÎñÓ¦ÓÃÖлᱣ´æÖÖÖÖ·þÎñ¡¢ÖÖÖÖÊý¾Ý¿â»á¼û¡¢ÖÖÖÖÇéÐαäÁ¿µÄÉèÖã¬ÇÒ¸÷ÉèÖÃÖ§³Ö¶¯Ì¬µ÷½â¡£Í¬Ê±£¬Î¢·þÎñÓ¦Óüܹ¹¶Ô·þÎñµÄÉèÖÃÖÎÀíÒ²Ìá³öÁ˸ü¸ßµÄÒªÇó£¬ÀýÈç´úÂëÓëÉèÖÿÉÊèÉ¢¡¢ÉèÖÃÖ§³ÖÂþÑÜʽ¡¢ÉèÖøüеÄʵʱÐÔ¡¢ÉèÖÿÉͳһ¾ÙÐÐÖÎÀíµÈ£¬Òò¶øÎ¢·þÎñϵÄÉèÖÃÖÎÀíÔ½·¢Öش󣬶ÔÔËάְԱµÄÒªÇó¸ü¸ß£¬ÃÜÔ¿ÖÎÀíµÄÄѶÈÒ²ÔÚÒ»Ö±ÌáÉý£¬×îÖÕ»áÔì³É¸ü´óµÄÊý¾Ýй¶Σº¦¡£
3.1.1.3 Ó¦ÓÃͨѶδ¾¼ÓÃÜ´øÀ´µÄΣº¦
ÈôÊÇÓ¦ÓýÓÄÉHTTPÐÒé¾ÙÐÐÊý¾Ý´«Ê䣬ÄÇôHTTPÒ³ÃæµÄËùÓÐÐÅÏ¢½«¶¼ÒÔ´¿Îı¾ÐÎʽ¾ÙÐд«Ê䣬²¢ÇÒĬÈϲ»ÌṩÈκμÓÃܲ½·¥¡£Òò¶øÔÚÊý¾Ý´«ÊäÀú³ÌÖÐÒ×±»¹¥»÷Õß¼àÌý¡¢½Ø»ñºÍ¸Ä¶¯£¬µä·¶µÄ¹¥»÷Á÷³ÌΪ¹¥»÷Õßͨ¹ýFiddler¡¢WiresharkµÈ×¥°ü¹¤¾ß¾ÙÐÐÁ÷Á¿¼àÌý£¬½Ø»ñ´«ÊäµÄÃô¸ÐÐÅÏ¢£¨ÀýÈçÊý¾Ý¿âÃÜÂë¡¢µÇ¼ÃÜÂëµÈ£©£¬×îºó¹¥»÷Õ߯¾Ö¤×ÔÉíÒâͼ¶ÔÃô¸ÐÊý¾Ý¾ÙÐи͝²¢·¢ËÍÖÁ·þÎñ¶Ë£¬½ø¶øµ¼ÖÂÊý¾Ýй¶µÄΣº¦¡£
¹Å°åµ¥ÌåÓ¦Óüܹ¹ÖУ¬ÓÉÓÚÍøÂçÍØÆËÏà¶Ô¼òÆÓ£¬ÇÒÓ¦ÓÃͨѶ¶à»ùÓÚHTTP/HTTPS£¬Òò¶øÔì³ÉµÄÊý¾Ýй¶Σº¦¶àÊÇÓÉÓÚ½ÓÄÉÁËHTTPÐÒ顣΢·þÎñÓ¦Óüܹ¹ÖУ¬ÍøÂçÍØÆËÏà¶ÔÖØ´ó£¬Òò×ñÕÕÂþÑÜʽµÄÌØµã£¬Ó¦ÓüäµÄͨѶ²»µ«½ÓÄÉHTTP/HTTPSÐÒ飬»¹½ÓÄÉgRPCµÈÐÒ飬ÓÉÓÚgRPCÐÒéĬÈϲ»¼ÓÃÜ£¬Òò¶ø½«»áµ¼Ö¹¥»÷ÃæµÄÔö¶à£¬ÎªÊý¾Ýй¶´øÀ´Á˸ü¶àµÄΣº¦¡£
3.1.2 δÊÚȨ»á¼ûµÄΣº¦
ÔÆÔÉúÇéÐÎÖУ¬Ó¦ÓÃδÊÚȨ»á¼ûµÄΣº¦¶àÊÇÓÉÓÚÓ¦ÓÃ×ÔÉíÎó²î»ò»á¼ûȨÏÞ¹ýʧµØÉèÖõ¼Ö¡£
3.1.2.1 Ó¦ÓÃÎó²î´øÀ´µÄΣº¦
Ó¦ÓÃÎó²îÊÇÔì³ÉδÊÚȨ»á¼ûµÄÒ»´óÒòËØ¡£Î´ÊÚȨ»á¼ûÎó²îºÜÊÇÖ®¶à£¬½ÏΪ³£ÓõÄÈçRedis¡¢MongoDB¡¢Jenkins¡¢Docker¡¢Zookeeper¡¢HadoopµÈÓ¦Óö¼ÔøÆØ¹â¹ýÏà¹ØÎó²î£¬ÀýÈçDockerÆØ³öµÄDocker Remote APIδÊÚȨ»á¼ûÎó²î£¬¹¥»÷Õß¿Éͨ¹ýDocker Client»òHTTPÇëÇóÖ±½Ó»á¼ûDocker Remote API£¬½ø¶ø¶ÔÈÝÆ÷¾ÙÐÐн¨¡¢É¾³ý¡¢ÔÝÍ£µÈΣÏÕ²Ù×÷£¬ÉõÖÁÊÇ»ñÈ¡ËÞÖ÷»úshellȨÏÞ¡£ÔÙÈçMongoDBδÊÚȨ»á¼ûÎó²î£¬¸ÃÎó²îÔì³ÉµÄ»ù´¡Ôµ¹ÊÔÓÉÔÚÓÚMongoDBÔÚÆô¶¯Ê±½«ÈÏÖ¤ÐÅϢĬÈÏÉèÖÃΪ¿Õ¿ÚÁ´Ó¶øµ¼ÖµÇÈÎÃü»§¿Éͨ¹ýĬÈ϶˿ÚÎÞÐèÃÜÂë¶ÔÊý¾Ý¿â¾ÙÐÐí§Òâ²Ù×÷²¢ÇÒ¿ÉÒÔÔ¶³Ì»á¼ûÊý¾Ý¿â¡£
´ÓÎó²î³ÉÒòµÄÆðµãÀ´¿´£¬ÈÏÖ¤¼°ÊÚȨ»úÖÆµÄ±¡ÈõÊÇÆäÖ÷ÒªÔµ¹ÊÔÓÉ£¬ÔÚµ¥ÌåÓ¦Óüܹ¹Ï£¬Ó¦ÓÃ×÷Ϊһ¸öÕûÌå¶ÔÓû§¾ÙÐÐÈÏÖ¤ÊÚȨ£¬ÇÒÓ¦ÓõĻá¼ûȪԴÏà¶Ô¼òµ¥£¬»ù±¾Îªä¯ÀÀÆ÷£¬Òò¶øÎ£º¦ÊÇÏà¶Ô¿É¿ØµÄ£¬Î¢·þÎñÓ¦Óüܹ¹Ï£¬Æä°üÀ¨µÄËùÓзþÎñ¾ùÐè¶Ô¸÷×ԵĻá¼û¾ÙÐÐÊÚȨ£¬´Ó¶øÃ÷È·Ä¿½ñÓû§µÄ»á¼û¿ØÖÆÈ¨ÏÞ£¬±ðµÄ£¬·þÎñµÄ»á¼ûȪԴ³ýÁËÓû§Í⻹°üÀ¨ÄÚ²¿µÄÆäËû·þÎñ£¬Òò¶øÔÚ΢·þÎñ¼Ü¹¹Ï£¬Ó¦ÓõÄÈÏÖ¤ÊÚȨ»úÖÆ¸üÎªÖØ´ó£¬ÎªÔÆÔÉúÓ¦ÓôøÀ´Á˸ü¶àµÄ¹¥»÷Ãæ¡£
3.1.2.2 »á¼ûȨÏÞ¹ýʧÉèÖôøÀ´µÄΣº¦
ÓÉÓÚÔËάְԱ¶ÔÓû§µÄ»á¼ûȨÏÞ¾ÙÐÐÁ˹ýʧÉèÖ㬽ø¶ø»áÔö´ó±»¹¥»÷ÕßʹÓõÄΣº¦¡£ÀýÈ磬ÔËάְԱ¶ÔWebÓ¦Óûá¼ûȨÏÞ¾ÙÐÐÏìÓ¦ÉèÖã¬Õë¶ÔͨË×Óû§£¬ÔËάְԱӦֻ¸¶ÓëÆäÖ»¶Á²Ù×÷£¬ÈôÔËάְԱ¾ÙÐÐÁ˹ýʧµÄÉèÖã¬ÀýÈçΪͨË×Óû§ÉèÖÃÁËд²Ù×÷£¬ÄÇô¹¥»÷Õß±ã»áʹÓôËȱÏÝÈÆ¹ýÈÏÖ¤»áÊ¶È¤ÖÆ¶ÔÓ¦ÓÃÌᳫδÊÚȨ»á¼û¹¥»÷¡£
¹Å°åÓ¦Óüܹ¹ÖУ¬Ó¦ÓÃÓÉÓÚÉè¼ÆÏà¶Ô¼òµ¥£¬Æä»á¼ûȨÏÞÒ²Ïà¶Ô¼òµ¥£¬ÏÕÐ©Ö»Éæ¼°Óû§¶ÔÓ¦ÓõĻá¼ûȨÏÞÕâÒ»²ãÃæ£¬Òò´Ë¶ÔÓ¦µÄ»á¼ûȨÏÞÉèÖÃÒ²Ïà¶Ô¼òÆÓ¡£ÓÉÓÚ»á¼ûȨÏÞÉèÖüòÆÓµÄÌØµã£¬Óû§Éí·Ýƾ֤µÈÃô¸ÐÐÅÏ¢³£´æ´¢ÔÚÓ¦ÓõķþÎñ¶Ë£¬Ò»µ©¹¥»÷ÕßʹÓÃÉèÖõÄȱÏݶÔÓ¦ÓÃÌᳫδÊÚȨ»á¼ûÈëÇÖ£¬¾ÍÓпÉÄÜÄõ½ËùÓÐÉúÑÄÔÚºó¶ËµÄÊý¾Ý£¬´Ó¶øÔì³ÉÖØ´óΣº¦¡£
΢·þÎñÓ¦Óüܹ¹Ï£¬ÓÉÓÚ»á¼ûȨÏÞ»¹ÐèÉæ¼°·þÎñ¶Ô·þÎñÕâÒ»²ãÃæ£¬Òò´Ë½«»áµ¼ÖÂȨÏÞÓ³Éä¹ØÏµ±äµÃÔ½·¢ÖØ´ó£¬ÏìÓ¦µÄȨÏÞÉèÖÃÄѶÈÒ²ÔÚͬ²½ÔöÌí£¬ÀýÈçÒ»¸öÖØ´óÓ¦Óñ»²ð·ÖΪ100¸ö·þÎñ£¬ÔËάְԱÐèÒªÑÏÃܵضÔÿ¸ö·þÎñ¸¶ÓëÆäÓ¦ÓеÄȨÏÞ£¬ÈôÊÇÒòÊèºöµ¼ÖÂΪij¸ö·þÎñÉèÖÃÁ˹ýʧµÄȨÏÞ£¬¹¥»÷Õß¾ÍÓпÉÄÜʹÓôËȱÏݶԷþÎñÕö¿ª¹¥»÷£¬Èô¸Ã·þÎñÖаüÀ¨Îó²î£¬½ø¶ø¿ÉÄܻᵼÖ¼òµ¥Îó²îÀ©Õ¹ÖÁÕû¸öÓ¦ÓõÄΣº¦¡£ÒÔÊÇÔõÑù¶ÔÔÆÔÉúÓ¦ÓõĻá¼ûȨÏÞ¾ÙÐиßЧÂÊÖÎÀí³ÉΪÁËÒ»¸ö½ÏÄѵÄÎÊÌ⣬ÕâÒ²Êǵ¼ÖÂÆäΣº¦µÄÒªº¦ÒòËØ¡£
3.1.3 ±»¾Ü¾ø·þÎñµÄΣº¦
±»¾Ü¾ø·þÎñÊÇÓ¦ÓóÌÐòµÄÃæÁٵij£¼ûΣº¦¡£Ôì³É¾Ü¾ø·þÎñµÄÖ÷ÒªÔµ¹ÊÔÓɰüÀ¨Á½·½Ã棬һ·½ÃæÊÇÓÉÓÚÓ¦ÓÃ×ÔÉíÎó²îËùÖ£¬ÀýÈçReDoSÎó²î¡¢Nginx¾Ü¾ø·þÎñÎó²îµÈ£¬ÁíÒ»·½ÃæÊÇÓÉÓÚ»á¼ûÐèÇóÓë×ÊÔ´ÄÜÁ¦²»Æ¥ÅäËùÖ£¬ÀýÈçijµçÉÌÆ½Ì¨µÄ¹ºÖÃAPIÓÉÓÚ´¦Öóͷ£ÇëÇóÄÜÁ¦ÓÐÏÞ£¬Òò¶øÎÞ·¨ÃæÁÙÍ»ÈçÆäÀ´µÄ´ó×Ú¹ºÖÃÇëÇ󣬵¼ÖÂÁËÆ½Ì¨×ÊÔ´£¨CPU¡¢ÄÚ´æ¡¢ÍøÂ磩µÄºÄ¾¡ÉõÖÁÍ߽⡣ÕâÖÖ³¡¾°ÍùÍù²»´øÓжñÒâÍýÏ룬¶ø´øÓжñÒâÍýÏëµÄÔòÖ÷ÒªÒÔACK¡¢SYNC·ººé¹¥»÷¼°CC£¨Challenge Collapsar£©µÈ¹¥»÷ΪÖ÷£¬Æä×îÖÕÄ¿µÄÒ²ÊÇÓ¦ÓÃ×ÊÔ´µÄºÄ¾¡¡£
3.1.3.1Ó¦ÓÃÎó²î´øÀ´µÄΣº¦
Ó¦ÓÃÎó²î¿ÉÒÔµ¼ÖÂÓ¦Óñ»¾Ü¾ø·þÎñ£¬ÄÇôÏêϸÊÇÔõÑùµ¼ÖµÄÄØ£¿ÒÔReDoS£¨Regular expression Denial of Service£©Îó²îΪÀý£¬ReDoSΪÕýÔò±í´ïʽ¾Ü¾ø·þÎñ£¬¹¥»÷Õß¶Ô¸ÃÎó²îµÄʹÓÃͨ³£ÊÇÕâÑùµÄÒ»¸ö³¡¾°£¬Ó¦ÓóÌÐòΪÓû§ÌṩÁËÕýÔò±í´ïʽµÄÊäÈëÀàÐÍÓÖûÓжÔÏêϸµÄÊäÈë¾ÙÐÐÓÐÓÃÑéÖ¤£¬ÄÇô¹¥»÷Õß±ã¿Éͨ¹ý½á¹¹ÆÊÎöЧÂʼ«µÍµÄÕýÔò±í´ïʽ×÷ΪÊäÈë½ø¶øÔÚ¶Ìʱ¼äÄÚÒý·¢100%µÄCPUÕ¼ÓÃÂÊ£¬×îÖÕµ¼ÖÂ×ÊÔ´ºÄ¾¡£¬ÉõÖÁÓ¦ÓóÌÐòÍß½âµÄΣº¦¡£
3.1.3.2»á¼ûÐèÇóÓë×ÊÔ´ÄÜÁ¦²»Æ¥Åä´øÀ´µÄΣº¦
´Ë´¦ÒÔCC¹¥»÷¾ÙÀý£¬Æä¹¥»÷ÔÀíͨ³£Êǹ¥»÷Õßͨ¹ý¿ØÖƽ©Ê¬ÍøÂç¡¢È⼦»òÊðÀí·þÎñÆ÷Ò»Ö±µØÏòÄ¿µÄÖ÷»ú·¢ËÍ´ó×ÚÕýµ±ÇëÇ󣬴ӶøÊ¹Õý³£Óû§µÄÇëÇó´¦Öóͷ£±äµÃÒì³£»ºÂý¡£
¹Å°åWeb³¡¾°ÖУ¬¹¥»÷ÕßʹÓÃÊðÀí·þÎñÆ÷ÏòÊܺ¦ÕßÌᳫ´ó×ÚHTTP GETÇëÇ󣬸ÃÇëÇóÖ÷Ҫͨ¹ý¶¯Ì¬Ò³ÃæÏòÊý¾Ý¿â·¢ËÍ»á¼û²Ù×÷£¬Í¨¹ý´ó×ÚµÄÅþÁ¬£¬Êý¾Ý¿â¸ºÔؼ«¸ß£¬Áè¼ÝÆäÕý³£´¦Öóͷ£ÄÜÁ¦£¬´Ó¶øÎÞ·¨ÏìÓ¦Õý³£ÇëÇ󣬲¢×îÖÕµ¼Ö·þÎñÆ÷å´»ú¡£
ÔÚ΢·þÎñÓ¦Óüܹ¹Ï£¬ÓÉÓÚAPIÊýÄ¿»áËæ×Å·þÎñÊýÄ¿µÄµÝÔö¶øµÝÔö£¬Òò¶ø¿ÉÄܽ«»áµ¼Ö¼òµ¥ÇëÇóÌìÉúÊýÒÔÍò¼ÆµÄÖØ´óÖÐÐIJãºÍºó¶Ë·þÎñŲÓ㬽ø¶ø¸üÈÝÒ×ÒýÆð±»¾Ü¾ø·þÎñµÄΣº¦£¬ÀýÈçÈô΢·þÎñÓ¦ÓõÄAPIÉè¼ÆÎ´Ë¼Á¿Ì«¶àÒòµ¥¸öAPIŲÓÃÒýÆðµÄºÄʱÎÊÌ⣬ÄÇôµ±Íⲿ»á¼ûÁ¿Í»Ôöʱ£¬½«»áµ¼Ö»á¼ûÐèÇóÓë×ÊÔ´ÄÜÁ¦²»Æ¥ÅäµÄÎÊÌ⣬ʹ·þÎñ¶ËÎÞ·¨¶ÔÇëÇó×÷³öʵʱµÄÏìÓ¦£¬Ôì³ÉÒ³Ãæ¿¨ËÀµÄÕ÷Ï󣬽ø¶ø»áÒýÆðϵͳÍß½âµÄΣº¦¡£
3.2 ÔÆÔÉúÓªÒµ´øÀ´µÄÐÂΣº¦
ÔÆÔÉúÓ¦ÓÃӪҵΣº¦ºÍÔÆÔÉúÓ¦ÓÃΣº¦ÓкÎÇø±ð£¿ÔÆÔÉúÓ¦ÓÃΣº¦Ö÷ÒªÊÇWebÓ¦ÓÃΣº¦£¬¼´ÍøÂç²ãÃæµÄΣº¦£¬¶øÔÆÔÉúÓ¦ÓÃӪҵΣº¦ÎÞÏÔ×ŵÄÍøÂç¹¥»÷ÌØÕ÷£¬¶àÊÇʹÓÃӪҵϵͳµÄÎó²î»ò¹æÔò¶ÔӪҵϵͳ¾ÙÐй¥»÷À´Ä²Àû£¬´Ó¶øÔì³ÉÒ»¶¨µÄËðʧ¡£
±ðµÄ£¬Óë¹Å°åÓ¦Óüܹ¹ÖеÄӪҵΣº¦²î±ð£¬Î¢·þÎñÓ¦Óüܹ¹ÖУ¬Èô·þÎñ¼äµÄÇå¾²²½·¥²»ÍêÉÆ£¬ÀýÈçÓû§ÊÚȨ²»Êʵ±¡¢ÇëÇóȪԴУÑé²»ÑÏ¿áµÈ£¬½«»áµ¼ÖÂÕë¶Ô΢·þÎñÓªÒµ²ãÃæµÄ¹¥»÷±äµÃÔ½·¢ÈÝÒ×£¬ÀýÈçÕë¶ÔÒ»¸öµçÉÌÓ¦Ó㬹¥»÷Õß¿ÉÒÔ¶ÔÌØ¶¨µÄ·þÎñ¾ÙÐй¥»÷£¬ÀýÈçͨ¹ýAPI´«Èë²»·¨Êý¾Ý£¬»òÕßÖ±½ÓÐ޸ķþÎñµÄÊý¾Ý¿âϵͳµÈ¡£¹¥»÷Õß¿ÉÒÔÈÆ¹ýÑéÖ¤Âë·þÎñ£¬Ö±½ÓŲÓö©µ¥ÖÎÀí·þÎñÀ´¾ÙÐÐÞ¶ÑòëµÈ¶ñÒâ²Ù×÷¡£¹¥»÷ÕßÉõÖÁ¿ÉÒÔͨ¹ýÖ±½ÓÐ޸Ķ©µ¥ÖÎÀíºÍÖ§¸¶Ëù¶ÔÓ¦µÄ·þÎñϵͳ£¬ÈƹýÖ§¸¶µÄ°ì·¨£¬Ö±½ÓÀֳɹºÖÃÉÌÆ·µÈ¡£
×ÛÉÏ£¬Ó¦ÓÃ΢·þÎñ»¯µÄÉè¼ÆÄ£Ê½´øÀ´µÄӪҵΣº¦¿É°üÀ¨Á½·½Ã棬һ·½ÃæÊÇδÊÚȨ»á¼ûΣº¦£¬µä·¶³¡¾°Îª¹¥»÷Õßͨ¹ýȨÏÞÈÆ¹ý¶ÔӪҵϵͳµÄÒªº¦²ÎÊý¾ÙÐÐÐ޸ĴӶøÔì³ÉÓªÒµËðʧ£¬ÁíÒ»·½ÃæÔòÊÇAPIÀÄÓõÄΣº¦£¬µä·¶µÄÊǶÔӪҵϵͳµÄÞ¶Ñòë²Ù×÷¡£
3.2.1 δÊÚȨ»á¼ûµÄΣº¦
ÔÚÔÆÔÉúÓªÒµÇéÐÎÖУ¬Ôì³ÉδÊÚȨ»á¼ûΣº¦µÄÔµ¹ÊÔÓÉ£¬¿ÉÒÔ´óÖ·ÖΪӪҵ²ÎÊýÒì³£ºÍÓªÒµÂß¼Òì³£Á½·½Ã棬ΪÁ˸üΪÇåÎúµÄ˵Ã÷ÉÏÊöÒì³£ÔõÑùµ¼ÖÂδÊÚȨ»á¼ûµÄΣº¦£¬ÕâÀïÒÔÒ»¸ö΢·þÎñ¼Ü¹¹µÄµçÉÌϵͳ¾ÙÀý˵Ã÷¡£Èçͼ1Ëùʾ£º

ͼ 1ijµçÉÌϽµµÍ÷³Ìͼ
3.2.1.1ÓªÒµ²ÎÊýÒì³£´øÀ´µÄΣº¦
APIŲÓÃÀú³ÌÖÐÍùÍù»áת´ïÏà¹ØµÄ²ÎÊý¡£²ÎÊýµÄȡֵƾ֤Ӫҵ³¡¾°µÄ²î±ð»áÓвî±ðµÄȡֵ¹æÄ£¡£ÀýÈçÉÌÆ·ÊýÄ¿±ØÐèΪ·Ç¸ºÕûÊý£¬¼ÛÇ®±ØÐè´óÓÚ0µÈ¡£ÈôAPI¶ÔÏìÓ¦²ÎÊýµÄ¼à²â»úÖÆ²»ÍêÉÆ£¬ÄÇô¹¥»÷Õß±ã¿Éͨ¹ýÊäÈëÒì³£²ÎÊýµ¼ÖÂӪҵϵͳÊܵ½Ëðʧ¡£ÀýÈçÔÚͼ1ËùʾµÄµçÉÌϵͳÖУ¬ÈôÉÌÆ·¼ÛǮֻÔÚÉÌÆ·ÏÈÈÝ·þÎñÖоÙÐÐУÑ飬¶øÎ´ÔÚ¶©µ¥ÖÎÀíºÍÖ§¸¶·þÎñÖоÙÐÐУÑ飬ÄÇô¹¥»÷ÕßÔò¿ÉÒÔͨ¹ýÖ±½ÓŲÓö©µ¥ÖÎÀíºÍÖ§¸¶·þÎñµÄAPI½«¶©µ¥¼ÛÇ®ÐÞ¸ÄΪ0Ôª»òÕ߸ºÖµ£¬´Ó¶ø¸øÓªÒµÏµÍ³Ôì³ÉËðʧ¡£
3.2.1.2ÓªÒµÂß¼Òì³£´øÀ´µÄΣº¦
Ïà±ÈÓÚǰһÀàÒì³££¬´ËÀàÒì³£Ò»Ñùƽ³£½ÏΪÒþ²Ø¡£¹¥»÷Õß½ÓÄÉijЩҪÁìʹAPIŲÓõÄÂ߼˳Ðò·ºÆðÒì³££¬°üÀ¨Òªº¦Å²Óð취ȱʧ¡¢µ¹Öõȡ£ÀýÈçÔÚͼ1ËùʾµÄµçÉÌϵͳÖУ¬¹¥»÷Õß¿ÉÒÔʹÓÃÎó²îÈÆ¹ýÖ§¸¶µÄ°ì·¨Ö±½ÓÌá½»¶©µ¥¡£ÕâÑù¾Í»á·ºÆðÓªÒµÂß¼Òªº¦°ì·¨È±Ê§µÄÇéÐΣ¬½ø¶ø»áΪӪҵϵͳ´øÀ´Ëðʧ£¬ÀýÈçÑéÖ¤ÂëÈÆ¹ýÒì³£¾ÍÊôÓÚÓªÒµÂß¼Òì³£µÄÒ»ÖÖ¡£
3.2.2 APIÀÄÓõÄΣº¦
Õë¶Ô´ËÀàΣº¦£¬Í¨³£Ö¸µÄÊǹ¥»÷Õß¶ÔӪҵϵͳµÄÞ¶Ñòë²Ù×÷£¬Î£º¦³ÉÒòÔòÊÇÓÉÓÚӪҵƵÂÊÒì³£ËùÖ£¬ÕâÀïÒÔµçÉÌϵͳ¾ÙÀý˵Ã÷¡£
ӪҵƵÂÊÒì³£Ö÷ÒªÖ¸Õë¶ÔÒ»¸ö»òÒ»×éAPIµÄƵÈÔŲÓá£ÓªÒµÏµÍ³ÍùÍùͨ¹ýͼÐÎÑéÖ¤ÂëµÄ·½·¨À´×èÖ¹»úеÈËË¢µ¥µÄ²Ù×÷¡£ÀýÈçÔÚͼ1ËùʾµÄµçÉÌϵͳÖУ¬¹¥»÷Õß¿ÉÒÔÈÆ¹ýÑéÖ¤ÂëËù¶ÔÓ¦µÄ·þÎñ£¬Ö±½Ó¶Ô¶©µ¥¾ÙÐвÙ×÷£¬½ø¶øÊµÏÖ»úеˢµ¥£¬¶ÔµçÉ̾ÙÐÐÞ¶Ñòë¡£
ËÄ. ÔÆÅÌËãģʽÀå¸ï´øÀ´µÄÐÂΣº¦
×÷ΪһÖÖеÄÔÆÅÌËãģʽ£¬Serverless¾ß±¸Ðí¶àÌØÕ÷£¬µä·¶µÄÖ÷ÒªÓÐÊäÈëÔ´µÄ²»È·¶¨ÐÔ¡¢·þÎñÆ÷ÍйÜÔÆ·þÎñÉÌ¡¢¹©Ó¦ÉÌËø¶¨µÈ£¬ÕâÐ©ÌØÕ÷¿ÉÄÜ»á¸øServerless´øÀ´ÐµÄΣº¦¡£
±ðµÄ£¬ÓÉÓÚServerless×îÖÕ·ºÆðµÄÕվɶà¸öº¯Êý×é³ÉµÄÓ¦Óã¬ÇÒ±»ServerlessÌṩµÄ·þÎñ¶ËÔËÐУ¬Òò´ËServerlessΣº¦»¹Ó¦°üÀ¨ServerlessÓ¦ÓõÄΣº¦¼°Serverlessƽ̨µÄΣº¦¡£
×îºóServerlessÒò¹ºÖᢰ²Åű¾Ç®µÍ¡¢º¯Êý»á¼ûÓòÃûÏà¶Ô¿ÉÐŵȽ«»áʹServerlessÃæÁÙ±»ÀÄÓõÄΣº¦¡£
4.1 ServerlessÌØÕ÷´øÀ´µÄΣº¦
4.1.1 ÊäÈëÔ´²»È·¶¨´øÀ´µÄΣº¦
Serverlessº¯ÊýÊÇÓÉһϵÁÐÊÂÎñ´¥·¢µÄ£¬ÈçÔÆ´æ´¢ÊÂÎñ£¨S3¡¢BlobsºÍÆäËûÔÆ´æ´¢£©¡¢Á÷Êý¾Ý´¦Öóͷ££¨È磺AWS Kinesis£©¡¢Í¨Öª£¨È磺SMS¡¢µç×ÓÓʼþ¡¢IoT£©µÈ£¬¼øÓÚ´ËÌØÕ÷£¬ÎÒÃDz»Ó¦¸Ã°ÑÀ´×ÔAPIŲÓõÄÊäÈë×÷ΪΨһ¹¥»÷Ãæ¡£±ðµÄ£¬ÎÒÃDz»ÔÙ¿ØÖÆÔ´µ½×ÊÔ´¼äµÄÕâÌõÏߣ¬ÈôÊǺ¯Êý±»Óʼþ»òÊý¾Ý¿â´¥·¢£¬½«ÎÞ´¦¿ÉÉèÖ÷À»ðǽ»òÈÎºÎÆäËû¿ØÖƲ½·¥À´ÑéÖ¤ÊÂÎñÔ´[4]¡£¿É¼ûÊäÈëÔ´µÄ²»È·¶¨ÐÔ½«¿ÉÄܵ¼ÖÂÒ»¶¨µÄΣº¦¡£
ÔڹŰåÓ¦ÓóÌÐò¿ª·¢ÖУ¬¿ª·¢Õ߯¾Ö¤×ÔÉíʵ¼ùÂÄÀú£¬ÔÚÊýÄ¿ÓÐÏ޵ĿÉÄÜÐÔÖпÉÅжϳö¶ñÒâÊäÈëȪԴ£¬µ«ServerlessģʽϺ¯ÊýŲÓÃÊÇÓÉÊÂÎñÔ´´¥·¢£¬ÊäÈëȪԴµÄ²»È·¶¨ÐÔÏÞÖÆÁË¿ª·¢ÕßµÄÅжϡ£ÀýÈçµ±º¯Êý¶©ÔÄÒ»¸öÊÂÎñÔ´ºó£¬¸Ãº¯ÊýÔÚ¸ÃÀàÐ͵ÄÊÂÎñ±¬·¢Ê±±»´¥·¢£¬ÕâЩÊÂÎñ¿ÉÄÜȪԴÓÚFaaSƽ̨£¬Ò²¿ÉÄÜȪԴÓÚδ֪µÄÊÂÎñÔ´£¬¹ØÓÚȪԴδ֪µÄÊÂÎñÔ´¿ÉÒÔ±»±êעΪ²»ÊÜÐÅÍС£ÔÚÏÖʵӦÓó¡¾°ÖУ¬ÈôÊÇ¿ª·¢ÕßûÓÐÓÅÒìµÄϰ¹ß¶ÔÊÂÎñÔ´¾ÙÐзÖÀ࣬Ôò»á¾³£µ¼Ö½«²»ÊÜÐÅÍеÄÊÂÎñ´íÒÔΪÊÇFaaSƽ̨ÊÂÎñ£¬½ø¶ø½«ÆäÊÓΪÊÜÐÅÍеÄÊäÈëÀ´´¦Öóͷ££¬×îÖÕ´øÀ´ÁËΣº¦¡£
ÏêϸµØ£¬ÊäÈëȪԴµÄ²»È·¶¨ÐÔ»áΪServerlessÓ¦ÓôøÀ´×¢ÈëµÄΣº¦£¬Óë¹Å°åÓ¦ÓÃÏàͬµÄÊÇ£¬×¢Èë¹¥»÷Àú³ÌÓë²¢ÎÞÌ«´óÇø±ð£¬²î±ðµÄÊǹ¥»÷ÏòÁ¿µÄת±ä£¬¹Å°åÓ¦ÓÃÖÐÓÃÓÚ×¢Èë¹¥»÷µÄÏòÁ¿Í¨³£Ö¸¹¥»÷Õß¿ÉÒÔ¿ØÖÆ»òʹÓÃÓ¦ÓÃÊäÈëµÄÈκÎλÖ㬵«ServerlessÓ¦ÓÃÓÉÓÚÊäÈëµÄ²»È·¶¨ÐÔÒò¶ø´øÀ´Á˸ü´óµÄ¹¥»÷Ãæ¡£
4.1.2 ·þÎñÍйÜÔÆ·þÎñ³§ÉÌ´øÀ´µÄΣº¦
¹Å°åÓ¦ÓÃÖУ¬ÀýÈçWebÓ¦Óó£°²ÅÅÔÚÍâµØ/Ô¶³Ì·þÎñÆ÷ÉÏ£¬¹ØÓÚ·þÎñ¶ËµÄ²Ù×÷ϵͳÎó²îÐÞ²¹¡¢ÍøÂçÍØÆËµÄÇå¾²¡¢Ó¦ÓÃÔÚ·þÎñ¶ËµÄ»á¼ûÈÕÖ¾¼°¼à¿ØµÈ¾ùÐèÒªÌØ¶¨µÄÔËάְԱÐÐÖ¹Ö㬶øServerlessµÄ·þÎñÆ÷ÍйÜÔÆ·þÎñÉ̵ÄÌØµã½«µ¼Ö¿ª·¢ÕßÎÞ·¨¸ÐÖªµ½·þÎñÆ÷µÄ±£´æ£¬ÏÖʵÉÏ¿ª·¢ÕßÒ²ÎÞÐë¶Ô·þÎñÆ÷¾ÙÐвÙ×÷£¬Ö»Ðè¹Ø×¢Ó¦ÓÃ×Ô¼ºµÄÇå¾²¼´¿É£¬·þÎñÆ÷µÄÇå¾²Ôò½»ÓÉÔÆ³§ÉÌÖÎÀíServerlessµÄÕâÒ»ÌØÕ÷ÏÖʵÉϽµµÍÁËÇ徲Σº¦¡£
4.1.3 ¹©Ó¦ÉÌËø¶¨´øÀ´µÄΣº¦
“¹©Ó¦ÉÌËø¶¨”ÊÇÖ¸Óû§ÒÀÀµÌض¨¹©Ó¦ÉÌÌṩµÄ²úÆ·¼°·þÎñ£¬²¢ÇÒÔÚ²»±¬·¢ÊµÖÊÐÔת»»±¾Ç®»òÔËÓªÓ°ÏìµÄÇéÐÎÏÂÎÞ·¨Ê¹ÓÃÆäËû¹©Ó¦É̵ÄÔÆ·þÎñ£¬ÔÚServerlessÖУ¬“¹©Ó¦ÉÌËø¶¨”ÊÇÏÖÔÚ±£´æµÄÒ»´óÎÊÌ⣬ÀýÈçÓû§Ñ¡ÔñAWS×÷ΪӦÓõÄÔËÐÐÇéÐΣ¬ÓÉÓÚһЩԵ¹ÊÔÓÉ£¬¸ÃÓ¦ÓÃÐèǨáãÖÁMicrosoft Azureƽ̨£¬µ«“¹©Ó¦ÉÌËø¶¨”µÄÎÊÌâµ¼ÖÂÎÞ·¨ÈÝÒ׵Ľ«Ö®Ç°ÔËÐеÄÓ¦Óü°Ê¹ÓõÄÏìÓ¦×ÊÔ´ÈçS3´æ´¢Í°µÈƽ»¬Ç¨áãÖÁMicrosoft Azureƽ̨ÖУ¬½ø¶øµ¼ÖÂÆóÒµÃæÁÙÓ¦ÓÃת»»±¾Ç®µÄΣº¦¡£
4.2 ServerlessÓ¦ÓÃΣº¦
ServerlessÓ¦ÓÃÊôÓÚÔÆÔÉúÓ¦Óã¬ÆäÓ¦ÓÃ×Ô¼ºÓë¹Å°åÓ¦Óûù±¾ÊÇÏàͬµÄ£¬Î¨Ò»Çø±ðÊÇÓ¦ÓôúÂë±àдÐèÒª²ÎÕÕÔÆ³§ÉÌÌṩµÄÌØÓдúÂëÄ£°æ£¬¶ø¹Å°åÓ¦ÓÃͨ³£Ã»ÓÐÕâ¸öÏÞÖÆ¡£
ServerlessÓ¦ÓÃÊôÓÚÔÆÔÉúÓ¦Óã¬ÔÆÔÉúÓ¦ÓÃÓÖÔ´ÓڹŰåÓ¦Óã¬Òò¶ø¹Å°åÓ¦ÓÃÃæÁÙµÄΣº¦ÏÕЩ¿ÉÒÔÖÜÈ«ÁýÕÖServerlessÓ¦ÓÃΣº¦£¬¹ØÓÚΣº¦ÆÊÎö²¿·Ö¿ÉÒԲο¼Ö®Ç°¹Å°åÓ¦ÓÃΣº¦µÄÄÚÈÝ£¬¸üÏêϸµÄÄÚÈÝ¿ÉÒԲο¼OWASP×éÖ¯ÔÚ2017ÄêÐû²¼µÄServerlessÓ¦ÓÃÊ®´óΣº¦±¨¸æ[4]¡£
4.3 Serverlessƽ̨Σº¦
Serverlessƽ̨Ö÷ÒªÖ¸FaaSƽ̨£¬ÏÖÔÚÖ÷Á÷µÄFaaSƽ̨·ÖΪÁ½ÖÖÀàÐÍ£¬Ò»ÖÖÊÇÃæÏò¹«ÓÐÔÆÌṩÉ̵ÄFaaSƽ̨£¬³£¼ûµÄÓÐAWS Lambda¡¢Microsoft Azure Functions¡¢Google Cloud FunctionsµÈ£¬ÁíÒ»·½ÃæÔòÊÇÃæÏò˽ÓÐÔÆµÄFaaSƽ̨£¬´ËÀàÒÔ¿ªÔ´ÏîÄ¿¾Ó¶à£¬ÇÒ¾ùÖ§³ÖÔÚKubernetesÉϾÙÐа²ÅÅ£¬³£¼ûµÄÓÐApache OpenWhisk[7]¡¢Kubeless[8]¡¢OpenFaaS[9]¡¢Fission[10]µÈ¡£ÀàËÆÔÚIaaSƽ̨ÉÏÔËÐÐÐé»ú¡¢PaaSƽ̨ÉÏÔËÐвÙ×÷ϵͳºÍÓ¦Óã¬FaaSƽ̨½ÏÖ®ÉÏÊöƽ̨µÄÖ÷񻂿±ðΪÆäÔËÐеÄÊÇÒ»¸ö¸öServerlessº¯Êý¡£FaaSƽ̨×ÔÉíÈÏÕæÔÆÇéÐεØÇå¾²ÖÎÀí£¬Ö÷Òª°üÀ¨Êý¾Ý¡¢´æ´¢¡¢ÍøÂç¡¢ÅÌËã¡¢²Ù×÷ϵͳµÈ¡£
4.4 Serverless±»ÀÄÓõÄΣº¦
Serverless±»ÀÄÓÃÏêϸÊÇÖ¸¹¥»÷Õßͨ¹ý¶ñÒâ¹¹½¨Serverlessº¯Êý²¢Ê¹ÓÃÆä³äµ±Õû¸ö¹¥»÷ÖеÄÒ»»·£¬ÕâÖÖ·½·¨¿ÉÔÚÒ»¶¨Ë®Æ½ÉϹæ±ÜÇå¾²×°±¸µÄ¼ì²â¡£µ¼ÖÂServerless±»ÀÄÓõÄÔµ¹ÊÔÓÉÖ÷Òª°üÀ¨ÒÔϼ¸µã£º
1. ÔÆ³§ÉÌÌṩServerlessº¯ÊýµÄÃâ·ÑÊÔÓÃ
½üЩÄ꣬¸÷´óÔÆ³§ÉÌΪÁËÓû§ÌåÑ飬¾ù¶ÔÓû§ÌṩÃâ·ÑµÄServerlessÌײͣ¬°üÀ¨Ã¿ÔÂÃâ·ÑµÄº¯ÊýŲÓöî¶È£¬ÕâÖÖ·½·¨ËäÈ»ÎüÒýÁ˸ü¶àµÄÓû§È¥Ê¹ÓÃServerlessº¯Êý, µ«Ò²Ê¹µÃ¹¥»÷ÕߵĹ¥»÷±¾Ç®´ó·ù½µµÍ¡£
2. Óû§°²ÅÅServerlessº¯ÊýµÄ±¾Ç®µÍ
ÓÉÓÚServerless·þÎñ¶ËÍйÜÔÆ³§É̵ĻúÖÆ£¬¹ÊÓû§Ö»ÐèʵÏÖº¯ÊýµÄ½¹µãÂß¼£¬¶øÎÞÐëÌåÌùº¯ÊýÊÇÔõÑù±»°²Åż°Ö´Ðеģ¬Ê¹ÓÃÕâÐ©ÌØµã£¬¹¥»÷Õß¿ÉÒÔ±àд¶ÔÆäÓÐÀûµÄServerlessº¯Êý²¢ÄÜʡȥ°²Åŵı¾Ç®¡£
3. Serverlessº¯Êý»á¼ûÓòÃû¿ÉÐÅ
µ±Óû§°²ÅÅÍêServerlessº¯Êýºó£¬ÐèҪͨ¹ý´¥·¢Æ÷È¥´¥·¢º¯ÊýµÄÖ´ÐУ¬Í¨³£Óû§Ê¹ÓÃÔÆ³§ÉÌÌṩµÄAPIÍø¹Ø×÷Ϊ´¥·¢Æ÷£¬½¨ÉèAPIÍø¹Ø´¥·¢Æ÷Ö®ºó£¬ÔƳ§ÉÌ»áΪÓû§Ìṩһ¸ö¹«ÍøµÄÓòÃû£¬ÓÃÓÚ»á¼ûÓû§±àдµÄServerlessº¯Êý¡£ÐèÒª×¢ÖØµÄÊÇ£¬¸Ã¹«ÍøÓòÃûͨ³£ÊÇÔÆ³§ÉÌÓòÃûÏà¹ØµÄ×ÓÓòÃû£¬Òò¶øÊÇÏà¶Ô¿ÉÐŵ쬼øÓÚ´Ë£¬¹¥»÷Õß¿ÉÒÔʹÓú¯Êý»á¼ûÓòÃûµÄ¿ÉÐÅÈ¥Òþ²ØÆä¹¥»÷×ʲú£¬ÌÓ±ÜÇå¾²×°±¸µÄ¼ì²â¡£
Îå. ×ܽá
±¾ÎÄÏêϸÆÊÎöÁËÔÆÔÉúÓ¦ÓÃÃæÁÙµÄΣº¦£¬¿ÉÒÔ¿´³ö£¬ÔÆÔÉúÓ¦ÓÃÏà±È¹Å°åÓ¦ÓÃÃæÁÙµÄΣº¦Ö÷ҪΪӦÓüܹ¹Àå¸ï¼°ÐµÄÔÆÅÌËãģʽ´øÀ´µÄΣº¦£¬¶øÕë¶ÔÓ¦ÓÃ×Ô¼ºµÄΣº¦²¢Î޽ϴóת±ä£¬Òò¶ø¶ÔÔÆÔÉúÓ¦Óüܹ¹ºÍÎÞ·þÎñÆ÷ÅÌËãģʽµÄÉî¶ÈÃ÷È·½«»áÓÐÖúÓÚÏàʶÕû¸öÔÆÔÉúÓ¦ÓÃÇå¾²¡£
²Î¿¼ÎÄÏ×
[1] https://owasp.org/www-project-top-ten/
[2] https://owasp.org/www-project-api-security/
[3] https://netflixtechblog.com/starting-the-avalanche-640e69b14a06
[4] https://www.owasp.org/index.php/OWASP_Serverless_Top_10_Project
[5] https://github.com/apache/openwhisk
[6] https://github.com/kubeless/kubeless
[7 https://github.com/openfaas/faas
[8] https://github.com/fission/fission

AG¹«Ë¾ÔÆ







