OPA/RegoãæŽ»çšã§ããé å
ãã®æ¬ãæžãã«ããã£ãŠéå»ã«å·çãããOPA/Regoã®èšäºãçºè¡šã飿ºããŠããããŒã«ãªã©ã調ã¹ãŸãããã ã¯ã©ãŠããªãœãŒã¹ã®miss configurationãããªã·ãŒéåãé²ã ãšããç®çã®å 容ãå€ãèŠãããŸãããäŸãã°Kubernetesã«ãããã€ããããªãœãŒã¹ã«é¢ããããªã·ãŒãèšè¿°ããŠãããªã·ãŒã«éåãããªãœãŒã¹ã®ãããã€ãæ¢ããããã®Gatekeeperããterraformãªã©ã®èšå®æ å ±ãæ€æ»ããConftestãªã©ãæããããŸããããã¯OPAãCloud Native Computing Foundationã®ãããžã§ã¯ããšããŠæé·ããŠããããšã«ã匷ãé¢é£ããŠãããšæããŸããOPAã®ä»çµã¿ããèããŠããè¿ä»£çãªã¯ã©ãŠãã®ç£èŠãInfrastructure as Codeã®æ€æ»ã¯ãããã«çžæ§ãããåéãšèšããããšæããŸãã
ãã®ä»ã«ãæ§ã ãªå¿çšé åããããŸãã
- èªå¯ã®å¶åŸ¡
- ãªãœãŒã¹ç¶æ ã®æ€æ»
- èŠçŽã®æ€æ»
- ãªã¹ã¯ã®å€å®
- 察å¿ã®æ±ºå®
ãã®ããã«OPA/RegoãæŽ»çšã§ããé åã¯çããããŸãããçŸç¶ã§ã¯å¯Ÿå¿ããŠããã¢ããªã±ãŒã·ã§ã³ãã·ã¹ãã ããµãŒãã¹ã¯ãŸã ãŸã å°ãªãã§ãããä»åŸæ§ã ãªé£æºãåæã§å®è£ ãããŠãã£ãŠã»ãããšèããŠããŸããäžè¬çãªããã°ã©ãã³ã°èšèªã§ããã¡ããåçã®ããšã¯å®çŸã§ããã®ã§ããã ããªã·ãŒãæžãããšã«å°å¿µã§ãã ãšãã芳ç¹ããOPA/Rego㯠Policy as Code ãæ®åãããŠããäžã€ã®æé©è§£ãªã®ã§ã¯ãªãããšèããŠããŸãã
Policy as Code ã§åŸãããããš
Policy as Codeã«ã€ããŠãå ·äœçãªã¡ãªããã«ã€ããŠã¯ãã§ã«ç޹ä»ããŸããããããäžæ®µäžã®èŠç¹ããã©ã®ãããªå¹æãåŸãããã®ããèããããšæããŸãã
ã»ãã¥ãªãã£é¢é£æ¥åã®å¹çå
ãŸã倧ããªå¹æãšããŠãç¹°ãè¿ãçºçããæäœæ¥[1]ãåæžã§ããŸãããªãœãŒã¹å€æŽã®ã¬ãã¥ãŒãç£æ»çãªãã§ãã¯ãã»ãã¥ãªãã£ã¢ã©ãŒãã®å¯Ÿå¿ãªã©ã§æ±ºãŸããã£ããã®ã«äººéã察å¿ããå¿ èŠããªããªããŸãã1ã€ã®å¯Ÿå¿ã®æ°åããããã¯æ°åç§ããããããªãã£ããšããŠãããã¯ä»¶æ°ãå¢ãããšç·åœ¢ã«ã³ã¹ãã嵩ãã§ãããŸããç¹ã«çµç¹ããµãŒãã¹ãã¹ã±ãŒã«ããéã«å¢ããŠãããããªäœæ¥ã ãšãäºæ¥ã®æ¡å€§ã«ãšããªã£ãŠå¯Ÿå¿ããäººã®æéãå²ãããã«ãªã£ãŠããŸããæçµçã«ãã®äœæ¥ãçµç¹å šäœã®ããã«ããã¯ã«ãªã£ãŠããŸããŸããPolicy as Code åã«ãã£ãŠå€æã察å¿ãèªåçã«å®æœã§ããããã«ãªãããšã§ãäŸå€çã«å¯Ÿå¿ããªããã°ãªããªããããªäºè±¡ã«éäžã§ããŸãã
ãŸãããããã€ãèªååãããããšã§äœæ¥ã®ãã¹ãªã©ãæžå°ãããšããã®ãæ¥åã®å¹çåã«å¯äžããŠããŸãã人æã§ãããããã€äœæ¥ã¯äºæ ãèµ·ããããããæ ¹æ¬çã«ãã¹ãç¡ããã®ã¯å°é£ã§ããããã«ãäºæ ãèµ·ããå Žåã«æ¹åçãšããŠããã«ãã§ãã¯ã§äœæ¥ããããã«äœå¶ãå€ããããããšãããŸã广ããªã[2]ã«äžã«ããã«äººæãå¿ èŠã«ãªããšããæªåŸªç°ãçºçããŸãããããé¿ããŠæ ¹æ¬çã«ãã¹ãç¡ããããã«ããèªååã«ããæ¥åå¹çåã®æ©æµã¯å€§ãããšèšããŸãã
ç£æ»æ§ã®åäž
ãã坿¬¡çãªå¹æã§ã¯ãããŸãããPolicy as Codeã®éçšã«ããããšã§ç£æ»ã«å¿ èŠãªæ å ±ãèªããšåéã§ããããã«ãªããŸããOPAãµãŒãã§ãããã§ãããã©ã®ãããªåãåãããããã©ã®ãããªçµæãè¿ãããïŒãšããããšã¯ãã°ãšããŠèšé²ã§ããããã倿ã«é¢ããèšŒè·¡ãæ®ãã®ã容æã«ãªããŸãããŸããããªã·ãŒèªäœããã€ã©ã®ãããªç¶æ ã§ã誰ããã€ã©ã®ãããªå€æŽãå ããã®ãïŒãšããããšãGitãªã©ã®ããŒãžã§ã³ç®¡çããŒã«ã䜿ãããšã§èšé²ã§ããŸãã
ãã®ãããªç£æ»ã«é¢ããæ å ±ã人éãèšŒè·¡ãæ®ãããã«ãããšèšé²ã®æŒããåéãããã£ãããèšŒè·¡ãæ®ããšããæé ãã®ãã®ã«è² è·ãããã£ãŠããŸããŸããç£æ»èªäœãããããããããã€äœæ¥ãããã¡ã³ããŒã®è² æ ã軜æžããããšãã§ããçµæãšããŠãã®ç¹æ§ãæ¥åã®å¹çåã«å¯äžããããšã«ãªããŸãã
ç©æ¥µçãªããªã·ãŒã®è¿œå ã»å€æŽ
æåŸã¯éå»ã®èšäºã§ã玹ä»ããŸããããèªåãã¹ããçšæããŠå€æŽã®ãã³ã«ãã¹ãã宿œããããšã§ãç©æ¥µçã«ããªã·ãŒã倿ŽãããããªããŸããããªã·ãŒã¯èŠæš¡ã倧ãããªã£ãŠããã«é£ããçžäºå¹²æžããŠããéšåããããã¥ãããªãã倿Žããéã«ãµã€ããšãã§ã¯ããçºçããªããåžžã«ç¢ºèªããå¿ èŠããããŸããããã人æã§ãããšãªããšå€æŽã«äŒŽãã³ã¹ããèŠæš¡ã«å¿ããŠå¢å ããåŸã ã«å€æŽãæãååŠãåãããã«ãªã£ãŠããŸããŸãã
ãããªã·ãŒã¯äžåºŠæ±ºãããããŸã倿Žããªãããšããã®ã¯å¹»æ³ã§ãç¹ã«äºæ¥ã®ç¶æ³ãæ¿ããå€åããããã®ã§ããã°ããªã·ãŒãããã«äŒŽã£ãŠå€åããŠãããªããã°ãªããŸããããããã§ããªããšå€ãããªã·ãŒããã€ãŸã§ãåŒãããããšã«ãªã£ããã宿 ãšã®ä¹é¢ãã§ãããšã§ããªã·ãŒã«ãã£ãŠå®ããããã®ãå®ããªããªã£ããããšããããšãèµ·ãããŸããäºæ¥åŽã®åãã«é©åã«è¿œåŸããããªã·ãŒãæŽæ°ããŠãããäœå¶ã«ããããšã§ãã»ãã¥ãªãã£é¢é£ã®ã·ã¹ãã ãä»çµã¿ã«ããå®å šæ§ã®æ©æµãåãã€ã€ããŠãŒã¶ããªãã£ãæãªããªããããªéçšãã§ããããã«ãªããŸãã
æ å ±ã»ãã¥ãªãã£DXã®æä»£
ãã®ãã㪠Policy as Code ã«ãã£ãŠåŸããã广ãäžèšã§è¡šçŸãããªããæ å ±ã»ãã¥ãªãã£ã®DXããªã®ã§ã¯ãªããããšèããŸãããDXïŒããžã¿ã«ãã©ã³ã¹ãã©ãŒã¡ãŒã·ã§ã³ïŒã®å®çŸ©ã¯æªã ã«æ··æ²ãšããŠããå®ãŸã£ãŠããªããšæããŸãããå人çã«ã¯ã¬ã¬ã·ãŒãªé åã以äžã®ãããªã¹ãããã«ãã£ãŠå€é©ããããšãšæããŠããŸãã
- ããžã¿ã«ãã€ãã£ãåã«ãã£ãŠã
- ãœãããŠã§ã¢ã«åŽååãç§»è²ãã
- çŽ æ©ãå€åãšæ°ããææŠãã§ããããã«ãªã
ããšããšã®DXã¯ã¬ã¬ã·ãŒãªçµç¹ãããžã¿ã«ãã€ãã£ãåãããšããæå³ããšèããŠããŸãããæ å ±ã»ãã¥ãªãã£ã®é åãšããŠèãããšãã«ã¬ã¬ã·ãŒãªãã€ãŸã人æã«é Œã£ããã®ã ã·ã¹ãã åããŠäººéã®åŽååãæžããããã€å€åãç¶ãããã ãã®ã«ããŠããã®ã¯DXã§ã¯ãªãããšããçºæ³ã§ãããŸããäºæ¥ã®å€åã«å¯ŸããŠç©æ¥µçã«ããªã·ãŒãå€ããŠãããäœå¶ã«ãªãããšã¯ãæ¬æ¥ã®äºæ¥åŽã®DXã«ã倧ããè²¢ç®ãããã®ã§ããããã®èгç¹ãããDXãšåŒãã§å·®ãæ¯ããªãã®ã§ã¯ãšæããŸãã
æ å ±ã»ãã¥ãªãã£ã®é åã¯åœç¶ãªããæ å ±æè¡ãšå¯æ¥ãªé¢ããããããŸããããœãããŠã§ã¢ã»ãšã³ãžãã¢ãªã³ã°ãããªãã¡ãœãããŠã§ã¢ã®åã«ãã£ãŠæ¥åãå¹çåããŠãããšããæåããé ããã®ãå€ããããŸããäŸãã°ã»ãã¥ãªãã£ç£èŠããã®åæããããã¯ããå©çšããŠãããœãããŠã§ã¢ã®è匱æ§ç®¡çãç£æ»ã«ãããã°ã®æ€æ»ããªãœãŒã¹ã®ç¶æ³ãæš©éã®ãã§ãã¯ãªã©ããããã®å€ãã¯äººéãã¬ãããã®ããæäœæ¥ã§å®æœããŠããŸããããã¡ããäžå®å°å ¥ãããã·ã¹ãã ãªã©ã¯äœ¿ããŸããèéãå¹ããªãã£ããæè»ãªå€æŽãã§ããªããã®ãç¡çãã䜿ããšãããããªããšã«ãªããäžäŸ¿ã匷ããããå Žé¢ã決ããŠå°ãªããªãã£ããšæããŸãããã®ãããªããšã«æéããšããã人ã ãæ¶èãããšããããšã床ã ãã£ãã®ã§ã¯ãšæããŸãã
ãããããã¯æè¿ã«ãªã£ãŠãããã転æ©ã蚪ããããã«æããŠããŸããã»ãã¥ãªãã£ã®åé¡ããœãããŠã§ã¢ã®åã§è§£æ±ºããã»ãã¥ãªãã£ãå°éãšããäººãæ¬åœã«äººéã«ããã§ããªããæ°ãããã£ã¬ã³ãžãæªç¥ã®åºæ¥äºã®è§£æ±ºãšãã£ãããšã«åãçµããããã«ããŠãããæ©éãåæã§èµ·ãã£ãŠããŸããOPA/Regoã¯ãã®äžã®äžã€ã§ãããããã ãã§ã¬ã¬ã·ãŒãªæ å ±ã»ãã¥ãªãã£ã®åé¡ããã¹ãŠè§£æ±ºããããã§ã¯ãããŸããããã ãæ¬æ¥ã§ããã°ãœãããŠã§ã¢éçºã§èªåãã¡ã«å¿ èŠãªãçµç¹ããšã«ç°ãªããã®ãäžåŒæããªããšåé¡ã解決ããªãã£ãã®ã«å¯Ÿããããªã·ãŒã®éšåã ããé«ã衚çŸåã§ã«ã¹ã¿ãã€ãºã§ããããã«ãªãããšããã®ã¯äžã€ã®èŠçŽ ãšããŠéèŠãªã®ã§ã¯ãªããããšå人çã«èããŠããŸããè¿ãå°æ¥ãã»ãã¥ãªãã£ãšã³ãžãã¢ã®å€ãã¯ãœãããŠã§ã¢éçºã®ã¹ãã«ãæã€ããããã¯Regoã«éããã§ããããªã·ãŒèšè¿°èšèªã䜿ã£ãŠãæ§ã ãªæ¥åã®åé¡ã解決ãããããªååšã«ãªã£ãŠããã®ã§ã¯ãªããããšæ³åããŠããŸãã
ãœãããŠã§ã¢ã®åã䜿ã£ãŠæ©åæ§é«ãããã€å®å šã«ã¹ã±ãŒã«ããŠãããããªã»ãã¥ãªãã£ãå®çŸããããã«ã¯ããœãããŠã§ã¢ã®èŠçŽ ã ãã§ã¯ãªãçµç¹ãæåãå¶åºŠãäžã®äžã®æœ®æµã瀟äŒå šäœãªã©ã§è¶ ããªããã°ãããªãå£ãããã€ãããããã©ãçãã®ã¯å®¹æã§ã¯ãªããšèããŠããŸããããããããžåãã£ãŠãããã£ã¬ã³ãžã«æå³ã¯ãããæ¬æžãŸãšããç¥èãæ å ±ããã®äžå©ã«ãªãã°å¹žãã§ãã
-
Site Reliability Engineering ã®æèã§ã¯ãã€ã«ïŒToilïŒãšåŒã°ãããã®ã§ã â©ïž
-
https://www.igaku-shoin.co.jp/paper/archive/y2021/3433_01 ã«ãããšå¹æããªãã©ããã2äººã®æ¹ããšã©ãŒçãé«ããªãã±ãŒã¹ããããããã§ã â©ïž