ãªãOPA/Regoã䜿ã£ãŠããªã·ãŒãã³ãŒãåããã®ãïŒãšããçåã«ã€ããŠã¯ Policy as Code ã®èãæ¹ãçããç¥ããã³ãã«ãªãã§ãããã
å€ãã®ãããã¯ãããµãŒãã¹ã§ã¯ããªã·ãŒïŒçºçããäºè±¡ã調æ»çµæãªã©ã«å¯ŸããŠæ·±å»åºŠãå¯Ÿå¿æ¹æ³ã倿ããã«ãŒã«ïŒããªãããªGUIã§èšå®ããããèšå®ãã¡ã€ã«äžã§èšè¿°ããããšããã®ãäžè¬çããšæããŸãããŸãããããäœãã®å€æã¯ãœãããŠã§ã¢åŽã§ããã®ã§ã¯ãªãã人éã宿œããããšããã±ãŒã¹ãå€ãããããšæããŸãããããããããRegoãšããèšèªã§èšè¿°ããçç±ã«ã€ããŠã¯ Policy as Code ãšããèãæ¹ãåèã«ãªãããšæããŸããäžèšã¯OPAãšçŽæ¥é¢ä¿ãããŸããããterraformãªã©ãéçºããHashiCorpã®ãããã¯ãã®äžã€ãSentielã®ããã¥ã¡ã³ãå ã§Policy as Codeã«ã€ããŠè¿°ã¹ããããã®ã§ãã
Policy as Code ã§ã¯ã¢ã¯ã»ã¹ã®å¶éããªãœãŒã¹ã®äœ¿ãæ¹ã®å¶éã宿œããã ãã§ãªããçºçããäºè±¡ã®æ·±å»åºŠè©äŸ¡ããããã¯äºè±¡ã«å¯ŸããŠã©ã®ãããªå¯Ÿå¿ãåãã¹ããããšãã倿ãã³ãŒãã§è¡šçŸãããšããèãæ¹ã§ãã
è¿å¹Žæ®åãã€ã€ããDevOpsã¯ããœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã°ã®ããŒã«ãã¢ã€ãã£ã¢ãªã©ã®ãã¹ããã©ã¯ãã£ã¹ããµãŒãã¹éçšã®å Žé¢ã«å°å ¥ããŠæ¹åããããšããèãæ¹ã«åºã¥ããŠããŸããPolicy as CodeããŸãã«ãã®çºæ³ã§ãããªã·ãŒãããã¹ã圢åŒã®ã³ãŒããšããŠæ±ãããšã§ãœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã°ã§ããªãã¿ã®ããŒãžã§ã³ç®¡çãèªåãã¹ããèªåãããã€ãã¬ãã¥ãŒææ³ãªã©ã®æ©æµããããããããšããèãæ¹ã«ãªããŸãã
Policy as Codeã®äŸ¡å€
ããããæŽ»çšããããšã«ãã£ãŠæ åœè ã¯ãããªã·ãŒå€æŽã«ãŸã€ããè² æ ã軜æžãããããšãã广ãåŸãããŸãããæãéèŠãªã®ã¯è² æ ã®è»œæžã«ãã ãé »ç¹ã«ããªã·ãŒã®å€æŽãã§ããããã«ãªãã ãšããçµæã§ãã
ã¢ã¯ã»ã¹å¶åŸ¡ãªã©ã®ããªã·ãŒã¯äžåºŠå®ãããã»ãšãã©èª¿æŽããããšã¯ãªããšæãããã¡ã§ãããå®éã«ã¯ã»ãã¥ãªãã£ã«ãŸã€ããç°å¢ã®å€åãããžãã¹èŠä»¶ãæ¥åèŠä»¶ãããã«ã¯çµç¹ã人å¡ãªã©ãæµåããããšãå€ããããã«äŒŽã£ãŠããã¹ãã¢ã¯ã»ã¹å¶åŸ¡ã®åœ¢ãå€åããŸãããŸããæ»æãè匱æ§ãžã®å¯Ÿå¿ã«ãŸã€ããããªã·ãŒã®å Žåãé©åãªèšå®ã«è³ããŸã§ãé£ãããç¹°ãè¿ããã¥ãŒãã³ã°ãããªããã°ãªããŸããããã®éã«ãä»ãŸã§æ£åžžã ã£ããã®ãããŸãåäœããªããªããããããªããããã§ãã¯ããããã«äººæããããããèšå®åæ ã®äœæ¥ã«æ³šæãèŠããããšãããããªç¶æ³ã ãšåçŽã«æéããããã ãã§ãªããå¿ççéå£ã倧ãããªã£ãŠããŸããŸãã
ãã®ãããªè² æ ãå¿ççéå£ãåãé€ããå¿ èŠã«å¿ããŠçŽ æ©ãããããŠèªä¿¡ãæã£ãŠããªã·ãŒã倿Žã§ããããã«ããããšã Policy as Code ã®æ¬è³ªã§ãããšçè ã¯èããŠããŸãã倿Žã«å¿ èŠãªæéãççž®ããããšã§æ¥åã®ãããã«ãŒã«ãªãã®ãé²ããäžé©åãªèšå®ãçŽ æ©ããã¥ãŒãã³ã°ããŠããããšã§ãã»ãã¥ã¢ã«ããžãã¹ãªã©ã®äŸ¡å€ãæå€§åããŠãããããšãæåŸ ãããŸãã
å ·äœçãªéçšã®ã¡ãªãã
å®éã«éçšäžã©ã®ãããªã¡ãªãããããããããšãã芳ç¹ã§ã詳现ãèŠãŠãããããšæããŸãã
åçŸæ§
åçŸæ§ã¯ããããããœãããŠã§ã¢ã§ã¯ãªã人éãéœåºŠå€æããŠããããªã·ãŒãã³ãŒãåããéã®å©ç¹ã§ããã»ãã¥ãªãã£ã¢ã©ãŒãããœãããŠã§ã¢ã®è匱æ§ã®æ·±å»åºŠãããäŸã§ããããããŸã§ã¯ãœãããŠã§ã¢ã«é Œããã«å°éå®¶ãèªãã®ç¥èãçµéšã«åºã¥ããŠå€æãããšããã±ãŒã¹ãå€ãã£ããšæããŸããããã¯å€æã«å¿ èŠãªæ å ±ãMachine Readableãªãã©ãŒãããã«ãªã£ãŠãããèªã¿åããªãã£ããããããã¯ãããããªã³ã©ã€ã³åãããŠãããæ©æ¢°çã«åéã§ããªãããšãããããªç¶æ³ãèŠå ã ã£ããšèããããŸãããããè¿å¹Žã§ã¯ããããæ¹åããã€ã€ãããå€ãã®æ å ±ã®å€ããé éããæ©æ¢°çã«åéã»å©çšã§ããããã«ãªããŸããã
å°éå®¶ã®å€æã®åºæºãé©åã«èšèªåããããšã§ãããªã·ãŒã«ãåçŸæ§ããçãŸããŸãããã¡ããã»ãã¥ãªãã£ã«éãããäŸå€çãªç¶æ³ãã®ãã¿ãŒã³ãç¶²çŸ ããã®ã¯é£ãããå šãŠãæ©æ¢°çãªããªã·ãŒã§åŠçããã®ã¯å°é£ã§ãããããäžæ¹ã§é »åºãããã¿ãŒã³ãèšèªåã§ãããã®ã«ã€ããŠã¯ã³ãŒãåãããœãããŠã§ã¢ã§åŠçããããšã§äººéã®è² æ ã倧ãã軜æžã§ããŸãããŸããå°éå®¶ã®ãã«ã³ãã®ãããªåçŸå°é£ãªãã®ã§ã¯ãªãèšèªåããããããªã·ãŒãã¯ä»ã®ã¡ã³ããŒã«ãçè§£ããããããªããå ±éèªèã®ç¢ºç«ãããªã·ãŒæ¹åã®ããã®è°è«ãããããããªããŸãã
ãã¹ãã®èªåå
ãã£ãšãéèŠãªã¡ãªããã®1ã€ã¯ãèšè¿°ããããªã·ãŒã®ãã¹ãããããããç¹ã ãšèããŸããããªã·ãŒã¯ããŠããŠè€éã«ãªããã¡ã§ãããè€éãªããªã·ãŒãæ£ããåäœããããæ€èšŒããªããã°ãªããŸãããæ°ãã«è¿œå ããããªã·ãŒã«ãã£ãŠæ¢åã®ããªã·ãŒãæå³ããéãã«åããªããªããšããããšãèµ·ããããŸãããã®ããé·æçã«ããªã·ãŒã倿Žãç¶ããããã«ã¯å®¹æã«ãã¹ãã宿œããæ€èšŒããªããã°ãªããŸããã
ããªã·ãŒãã³ãŒãã«ãã£ãŠèšè¿°ãããŠããããšã§ãèªååããããã¹ããå°ãªãè² æ ã§å®æœã§ããŸãããã¹ãã®æ©èœãçšæãããŠããªããšãåäœæ€èšŒã®ããã«æ¬çªãšåæ§ã®ç°å¢ãç¶æ³ãäœãåºãå¿ èŠããããããªã·ãŒãå¢ããŠããã«ã€ããŠæãããæéãããã£ãŠããŸããŸããããã«ããããªã·ãŒã®æŽæ°ãæ»ãããã«ãªãã宿 ã«ããããªãããªã·ãŒã䜿ããç¶ãããšããäžå¹žãããã£ãŠããŸããã¡ã§ãããœãããŠã§ã¢éçºã«ãããååž°ãã¹ãã®çºæ³ã§åžžã«ããªã·ãŒãæ£åžžã«åäœããããšã確èªããããšã§ãå°ãªãè² æ ã§ããªã·ãŒãã¡ã³ããã³ã¹ãç¶ããããšãå¯èœã§ãã
ããŒãžã§ã³ç®¡çãã¬ãã¥ãŒã®å°å ¥
ãŸãã«ãµããŒããããŠããããšã¯ãããŸããã倧éšåã®ãããã¯ãã«ããŒãžã§ã³ç®¡çãã¬ãã¥ãŒæ©èœã¯å®è£ ãããŠããªãã®ãçŸç¶ããšæããŸãããœãããŠã§ã¢éçºãçµéšããããšããã人ã«ãšã£ãŠã¯èšãããããªã§ãããé·æçã«ã¡ã³ããã³ã¹ãããŠããã«ããã
- ãã€å€æŽãããã
- ã©ã®ãããªæå³ããã£ãŠå€æŽãããã
- ä»ã«ã©ã®ãããªå€æŽããã£ãã
- 誰ã倿Žããã
ãªã©ã¯åŸããã³ãŒããèªã¿è§£ãããã«éèŠãªæãããã«ãªããŸãããŸã倿Žã«å¯ŸããŠã¬ãã¥ãŒã宿œããä»ã®ã¡ã³ããŒãé©åãªå€æŽã§ããããææ¡ã»ç¢ºèªããããšã倧åã§ãã
ãã®ãããªããŒãžã§ã³ç®¡çãã¬ãã¥ãŒã®æ©èœãæããªããããã¯ãã«å¯ŸããŠã¯å€æŽç®¡ç祚ãªã©ãçšããŠäžèšã®ãããªæç¶ããããŠããã±ãŒã¹ãå€ãã®ã§ã¯ãšæããŸãããããææ³ãæšæºåãããŠããªãã£ãããææç©ã®ç®¡çãé£ããã£ãããªã©ã§ãäœæ¥ãã人ç©ã®è² æ ã倧ãããªã£ãŠããŸããã¡ã§ãããŸããæäœæ¥ãå€ãå Žåã¯äœæ¥è ã®ãã¹ãçºçããã¡ãšããåé¡ããããŸãã
ãã®ãããªåé¡ã«å¯ŸããŠGitãå§ããšããæ§ã ãªããŒã«ããã¹ããã©ã¯ãã£ã¹ããµãŒãã¹ã掻çšããããšã§ãè² æ ã軜ããã€ã€äœæ¥ãã¹ãæžããããšã¯éèŠã§ãããšèããããŸãã倿Žãã¬ãã¥ãŒã®èšé²ã¯ããšããåå ããã¡ã³ããŒãåç §ããããšã§ãåããããªå€æŽãããããšãã®æãããã«ããªããããšãã£ãã坿¬¡çãªå¹æãæåŸ ã§ããŸãã
ãããã€ã®èªåå
DevOpsã§å®è·µãããCI/CDïŒContinuous Integration, Continuous DeliveryïŒãããªã·ãŒã®ã³ãŒãåã«ããå®çŸãããããªãå ŽåããããŸããããã¯ãããã¯ããªã©ã®å¯Ÿå¿ç¶æ³ã«å€§ããäŸåããããäžæŠã«èªååã§ãããšã¯èšããŸããããèªååã§ããå Žåã®æ©æµã¯ãšãŠã倧ããã§ãã
GUIããŒã¹ã§ã®èšå®å€æŽã¯ã¢ãããã¯ã«èšå®ã詊ããšãã£ããããªç¶æ³ã§ã¯ãšãŠã䟿å©ã§ãããããæ±ºãŸã£ãæé ãæ±ºãŸã£ãããã«ããããããèšå®ã®ãã¹ãèš±ãããªããšããç¶æ³ã§ã¯éã«äœæ¥ããã¡ã³ããŒã®è² è·ãäžããããšã«ãªããŸã[1]ããŸãããããã€æ¹æ³ãæé æžãšããŠãŸãšãããšããŠããèªç¶èšèªã§æžãããæç€ºã¯æžãæãšèªã¿æã®äž¡æ¹ã§ããããçºçããã¡ã§ãæ£ç¢ºã«æé ãåçŸã§ããªãå Žåãå€ã ãããŸã[2]ã
å è¿°ãããšãããããªã·ãŒãé »ç¹ã«å€æŽããããã«ã¯ãããã€ã®è² è·ãäžããããšãéèŠã§ãããã³ãŒãåã«ãã£ãŠèªååã§ããã®ã§ããã°ãã²åãçµãã¹ããšèããŸãã
éçšã®èª²é¡
Policy as Code ã¯æ§ã ãªã¡ãªããããããããŸããããã¹ãŠã®ç°å¢ã«ç¡æ¡ä»¶ã§å°å ¥ã§ãããšããããã§ã¯ãªããšèããããŸããå°å ¥ã«éããŠéå£ãšãªããããªãã€ã³ããããã€ã玹ä»ããããšæããŸãã
ããªã·ãŒã®èªã¿æžãããã¹ãã®ããã®ç¥èã»çµéšãå¿ èŠ
ããªã·ãŒãã³ãŒããšããŠè¡šçŸããéçšã§ã¯åäœã倿ã®èšèªåã»æ§é åãå¿ èŠã«ãªããŸãããããšããšãã®æ¥åãããŠããã¡ã³ããŒãããããããã°ã©ãã³ã°ã«é¢ããçŽ é€ãåæç¥èããããšã¯éããŸãã[3]ããã®ãããªå ŽåãåŸæ¥ã®ã¡ã³ããŒãããªã·ãŒã®èªã¿æžãã«ã€ããŠåŠç¿ãããããããã¯ä»ã«ããªã·ãŒã®èªã¿æžããåŸæãªã¡ã³ããŒãåå ¥ããŠã¡ã³ããã³ã¹ããŠãããããªã©ã®çéãèããå¿ èŠããããŸãã
å©çšããããããã¯ãã®å¯Ÿå¿ãå¿ èŠ
ãã®èšäºãå·çããŠããæç¹ã§ Policy as Code ã®èãæ¹ã¯ãŸã äž»æµã§ãããšã¯èšãé£ãã察å¿ããŠãããããã¯ãã¯ããçšåºŠéãããŠããŸããOPA/Regoã䜿ãããšã§ãããã¯ããšããªã·ãŒãšã³ãžã³ã®åé¢ã¯ã§ããŸãããããã§ããããã¯ãåŽã«ãããããããªã·ãŒãå€éšåç §ããããšããæ©èœããªããã°å©çšããã®ã¯å°é£ã§ãã
ã³ãŒãåããä»çµã¿ã®ã¡ã³ããã³ã¹ãå¿ èŠ
ããªã·ãŒãã³ãŒãåããéçšã§ãªãããã®ãµãŒãã¹ããããã¯ãã远å ããå Žåããããã¡ã³ããã³ã¹ããã³ã¹ãã¯çºçããŸããäŸãã°OPAããµãŒããšããŠèšçœ®ããŠäœ¿ãå Žåã¯ãã®ã€ã³ã¹ã¿ã³ã¹ãªãã³ã³ãããµãŒãã¹ãªãã®é¢åãã¿ãå¿ èŠããããŸããèªåãããã€ã®ä»çµã¿ãäœã£ãå ŽåãåšèŸºãµãŒãã¹ã®ã¢ããããŒããªã©ã«ãã£ãŠä»çµã¿ãåããªããªã£ããä¿®æ£ããå¿ èŠããããŸãã
ãããã®äœæ¥ã¯å°å±ã®è©³ããã¡ã³ããŒãããã°çæéã§ã§ããå ŽåããããŸãããæ°ããªã³ã¹ããçºçããããšèªäœã¯èªèããŠããå¿ èŠããããŸãã
ãŸãšã
éçšäžã®èª²é¡ãã¯ãªã¢ããå¿ èŠã¯ãããã®ã®ãããªã·ãŒãã³ãŒãåããŠåŸãããã¡ãªããã¯æ±ºããŠå°ãããªããšèããããŸããããã§ããããªã·ãŒã¯æ©æ¢°çã«åŠçã§ããã°è¯ãã®ã§ã³ãŒãåã«ã€ããŠã¯ä»ã®ããã°ã©ãã³ã°èšèªã§èšè¿°ããããšããã¡ããå¯èœã§ããããã®ã¢ããã³ãã«ã¬ã³ããŒã§ã¯OPAãRegoãå®éã«ã©ã®ããã«äœ¿ã£ãŠããã®ãã«ã€ããŠãåŒãç¶ã玹ä»ããŠãããããšæããŸãã
-
äžåºŠãã¹ãçºçãããšäžç·ã«äœæ¥ããã¡ã³ããŒãå¢ãããŠããã«ãã§ãã¯ãããšãããããªå¯Ÿçã«ãªããã¡ã§ãè² æ ã倧ãããªããŸã â©ïž
-
çè ãéå»ã«æé æžã«ãããããã€ããããããåŸãªãæ¥åã«æºãã£ãããšããããèŸé žããªããããããçµéšããããŸã â©ïž
-
äŸãã°SOC (Security Operation Center) ã®ã¢ããªã¹ãã¯ãµã€ããŒæ»æã«é¢ããç¥èãæ»æã«é¢é£ããäœã¬ã€ã€ã®OSããããã¯ãŒã¯ã®ç¥èãã¢ããªã±ãŒã·ã§ã³ã®è匱æ§ã«é¢ããç¥èã«ã€ããŠã¯åè¶ããŠããŸãããçè ã®èŠ³æž¬ããç¯å²ã§ã¯ããã°ã©ãã³ã°ã®ç¥èéãçµéšå€ã«ã¯çžé¢ããªããåŸæãªäººãããã°ããã§ãªã人ãããŸã â©ïž