å¿ èŠãªæäœéã®ã¢ã¯ã»ã¹èš±å¯ãéžæãã
GitHub App ãç»é²ãããšãã¯ãGitHub App ã«å¿ èŠãªæå°éã®ã¢ã¯ã»ã¹èš±å¯ãéžæããŸãã ã¢ããªã®ããŒãŸãã¯ããŒã¯ã³ã䟵害ãããå Žåãããããããšã§çºçããå¯èœæ§ã®ããæå®³ã®éãå¶éã§ããŸãã ã¢ã¯ã»ã¹èš±å¯ã®éžææ¹æ³ã®è©³çްã«ã€ããŠã¯ããGitHub ã¢ããªã®ã¢ã¯ã»ã¹èš±å¯ãéžæããããåç §ããŠãã ããã
GitHub App ã§ã€ã³ã¹ããŒã« ã¢ã¯ã»ã¹ ããŒã¯ã³ããŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ãäœæããéã«ãã¢ããªãã¢ã¯ã»ã¹ã§ãããªããžããªãšããŒã¯ã³ã«äžããã¢ã¯ã»ã¹èš±å¯ãããã«å¶éã§ããŸãã 詳现ã«ã€ããŠã¯ããGitHub ã¢ããªã®ã€ã³ã¹ããŒã« ã¢ã¯ã»ã¹ ããŒã¯ã³ã®çæãããã³ãGitHub ã¢ããªã®ãŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ã®çæããåç §ããŠãã ããã
ã¬ãŒãå¶éãè¶ ããªãããã«ãã
API ã§ããŒã¿ãããŒãªã³ã°ãã代ããã«ãWebhook ã€ãã³ãããµãã¹ã¯ã©ã€ãããŸãã ããããããšã§ãGitHub App ã API ã¬ãŒãå¶éãè¶ ããªãããã«ã§ããŸãã 詳现ã«ã€ããŠã¯ããGitHub Apps ã§ã® Webhook ã®äœ¿çšãããã³ãWebhook ã€ãã³ãã«å¿çãã GitHub App ã®æ§ç¯ããåç §ããŠãã ããã
ã¬ãŒãå¶éãè¶ ããªãããã«ããã®ã«åœ¹ç«ã€æ¡ä»¶ä»ãèŠæ±ã䜿çšããããšãæ€èšããŠãã ããã æ¡ä»¶ä»ãã®èŠæ±ã®è©³çްã«ã€ããŠã¯ããREST API ã䜿çšããããã®ãã¹ã ãã©ã¯ãã£ã¹ããåç §ããŠãã ããã
å¯èœã§ããã°ãREST API èŠæ±ã§ã¯ãªãçµ±å GraphQL ã¯ãšãªã䜿çšããŠãã¬ãŒãå¶éãè¶ ããªãããã«ããããšãæ€èšããŠãã ããã 詳现ã«ã€ããŠã¯ããGitHub ã® REST API ãš GraphQL API ã®æ¯èŒãããã³ãGitHub GraphQL API ã«é¢ããããã¥ã¡ã³ãããåç §ããŠãã ããã
ã¬ãŒãå¶éã«éããAPI èŠæ±ãå詊è¡ããå¿
èŠãããå Žåã¯ãx-ratelimit-reset
ãŸã㯠Retry-After
ã®å¿çããããŒã䜿çšããŸãã ãããã®ããããŒãå©çšã§ããªãå Žåã¯ãå詊è¡ã®éã®æéãææ°é¢æ°çã«å¢ããã®ãåŸ
æ©ããå詊è¡ãç¹å®ã®åæ°å®æœåŸã«ãšã©ãŒãã¹ããŒããŸãã 詳ããã¯ããREST API ã䜿çšããããã®ãã¹ã ãã©ã¯ãã£ã¹ããã芧ãã ããã
ã¢ããªã®è³æ Œæ å ±ãã»ãã¥ãªãã£ã§ä¿è·ãã
GitHub App ã®ç§å¯ããŒãšã¯ã©ã€ã¢ã³ã ã·ãŒã¯ã¬ãããçæã§ããŸãã ç§å¯ããŒã¯ã€ã³ã¹ããŒã« ã¢ã¯ã»ã¹ ããŒã¯ã³ãçæããããã«äœ¿çšãããã¯ã©ã€ã¢ã³ã ã·ãŒã¯ã¬ããã¯ãŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ãšæŽæ°ããŒã¯ã³ãååŸããããã«äœ¿çšãããŸãã ãããã®ããŒã¯ã³ã䜿çšãããšãã¢ããªã®ã€ã³ã¹ããŒã«ãŸãã¯ãŠãŒã¶ãŒã«ä»£ãã£ãŠ API èŠæ±ã宿œã§ããŸãã
ç§å¯ããŒãããŒã¯ã³ãã¯ã©ã€ã¢ã³ã ã·ãŒã¯ã¬ãããå®å šã«æ ŒçŽããå¿ èŠããããŸãã ãã ããã¹ãã¬ãŒãž ã¡ã«ããºã ãšãã®çžå¯Ÿçãªã»ãã¥ãªãã£ã¯ãçµ±åã¢ãŒããã¯ãã£ãšçšŒåãããã©ãããã©ãŒã ã«ãã£ãŠç°ãªããŸãã äžè¬ã«ã䜿çšäžã®ãã©ãããã©ãŒã ã«æ©å¯ããŒã¿ãä¿åããããšãç®çãšããä¿åæ¹æ³ã䜿çšããå¿ èŠããããŸãã
ç§å¯ããŒ
GitHub App ã®ç§å¯ããŒã¯ãã¢ããªãã€ã³ã¹ããŒã«ããããã¹ãŠã®ã¢ã«ãŠã³ããžã®ã¢ã¯ã»ã¹ãèš±å¯ããŸãã å®å šã«æ ŒçŽããåºãå ±æãããªãããã«ããå¿ èŠããããŸãã****ã
GitHub App ã®ç§å¯ããŒã Azure Key Vault ãªã©ã®ã㌠ã³ã³ãããŒã«ä¿åãã眲åå°çšã«ããããšãæ€èšããŠãã ããã
ãŸãã¯ãããŒãç°å¢å€æ°ãšããŠæ ŒçŽããããšãã§ããŸãã ãã ããããã¯ã㌠ã³ã³ãããŒã«ããŒãä¿åããã»ã©åŒ·åã§ã¯ãããŸããã æ»æè ãç°å¢ãžã®ã¢ã¯ã»ã¹æš©ãç²åŸããå Žåãç§å¯ããŒãèªã¿åã GitHub App ãšããŠæ°žç¶çãªèªèšŒãåããããšãã§ããŸãã
ã³ãŒãããã©ã€ããŒã ãªããžããªã«ä¿åãããŠããå Žåã§ããã¢ããªã«ç§å¯ããŒãããŒãã³ãŒãã£ã³ã°ããªãã§ãã ããã ã¢ããªããã€ãã£ã ã¯ã©ã€ã¢ã³ããã¯ã©ã€ã¢ã³ãåŽã¢ããªããŸãã¯ãŠãŒã¶ãŒ ããã€ã¹äžã§å®è¡ããã (ãµãŒããŒäžã§ã®å®è¡ã§ã¯ãªã) å Žåãã¢ããªã«ç§å¯ããŒã忢±ããªãã§ãã ããã
å¿ èŠä»¥äžã«å€ãã®ç§å¯ããŒãçæããªãã§ãã ããã 䜿çšãããªããªã£ãç§å¯ããŒã¯åé€ããå¿ èŠããããŸãã 詳ããã¯ããGitHub Apps ã®ç§å¯ããŒã®ç®¡çããã芧ãã ããã
ã¯ã©ã€ã¢ã³ã ã·ãŒã¯ã¬ãã
ã¢ããªãããã€ã¹ ãããŒã䜿ããªãéããã¢ããªã®ãŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ãçæããã«ã¯ã¯ã©ã€ã¢ã³ã ã·ãŒã¯ã¬ãããå¿ èŠã§ãã 詳ããã¯ããGitHub ã¢ããªã®ãŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ã®çæããã芧ãã ããã
ã¢ããªãæ©å¯ã¯ã©ã€ã¢ã³ãã§ããå Žåãã€ãŸãã¯ã©ã€ã¢ã³ã ã·ãŒã¯ã¬ãããå®å šã«ã»ãã¥ãªãã£ã§ä¿è·ãããç¶æ ã§ä¿æã§ããå Žåã¯ãã¯ã©ã€ã¢ã³ã ã·ãŒã¯ã¬ããã Azure Key Vault ãªã©ã®ã㌠ã³ã³ãããŒã«ä¿åããããæå·åãããç°å¢å€æ°ãŸãã¯ãµãŒããŒäžã®ã·ãŒã¯ã¬ãããšããŠæ ŒçŽããããšãæ€èšããŠãã ããã
ã¢ããªããããªã㯠ã¯ã©ã€ã¢ã³ã (ãŠãŒã¶ãŒã®ããã€ã¹ã§å®è¡ããããã€ãã£ã ã¢ããªãCLI ãŠãŒãã£ãªãã£ããŸãã¯åäžããŒãž Web ã¢ããªã±ãŒã·ã§ã³) ã§ããå Žåãã¯ã©ã€ã¢ã³ã ã·ãŒã¯ã¬ãããã»ãã¥ãªãã£ã§ä¿è·ããããšã¯ã§ããŸããã ã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒãã«ã¯ã©ã€ã¢ã³ã ã·ãŒã¯ã¬ãããçµã¿èŸŒãå¿ èŠããããèªèšŒãããŒãããå®å šã«ããããã« PKCE ã䜿ãå¿ èŠããããŸãã ãããªã㯠ã¯ã©ã€ã¢ã³ãã¯ç°¡åã«ãªãããŸããã§ãããã€ãŸãã誰ã§ãã¢ããªã®ã¯ã©ã€ã¢ã³ã ID ãåå©çšããŠãµã€ã³ã€ã³ã§ãããããã¢ããªã§çæãããããŒã¯ã³ã«åºã¥ããŠç¬èªã®ãµãŒãã¹ãžã®ã¢ã¯ã»ã¹ãã²ãŒãããäºå®ã®å Žåã¯æ³šæãå¿ èŠã§ãã
çç±ãªãã«ããã€ã¹ ãããŒãæå¹ã«ããªã
ãããªã㯠ã¯ã©ã€ã¢ã³ãã§ã®ã¯ã©ã€ã¢ã³ã ã·ãŒã¯ã¬ããã®äœ¿çšãæžå¿µãããå Žåã¯ãããã€ã¹ ãããŒããã PKCE ã䜿ã£ãèªèšŒã³ãŒãã䜿ãããšããå§ãããŸãã ããã€ã¹ ãããŒã§ã¯ãªãã€ã¬ã¯ã URI ã¯ãŸã£ããå¿ èŠãããŸãããã€ãŸããæ»æè ã¯ããã€ã¹ ãããŒã䜿ã£ãŠããã£ãã·ã³ã°æ»æã®äžç°ãšããŠãªã¢ãŒãããã¢ããªãåœè£ ããããšãã§ããŸãã ãã®ãããå¶çŽã®ããç°å¢ (CLIãIoT ããã€ã¹ããããã¬ã¹ ã·ã¹ãã ) ã§ã¢ããªã䜿ã£ãŠããå Žåãé€ããã¢ããªã±ãŒã·ã§ã³ã§ããã€ã¹ ãããŒãæå¹ã«ããªãã§ãã ããã
ã€ã³ã¹ããŒã« ã¢ã¯ã»ã¹ ããŒã¯ã³ããŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ãããã³æŽæ°ããŒã¯ã³
ã€ã³ã¹ããŒã« ã¢ã¯ã»ã¹ ããŒã¯ã³ã䜿çšãããšãã¢ããªã®ã€ã³ã¹ããŒã«ã«ä»£ãã£ãŠ API èŠæ±ã宿œã§ããŸãã ãŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ã䜿çšãããšããŠãŒã¶ãŒã«ä»£ãã£ãŠ API èŠæ±ã宿œã§ããŸãã æŽæ°ããŒã¯ã³ã䜿çšãããšããŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ãåçæã§ããŸãã ã¢ããªã¯ç§å¯ããŒã䜿çšããããšã§ãã€ã³ã¹ããŒã« ã¢ã¯ã»ã¹ ããŒã¯ã³ãçæã§ããŸãã ã¢ããªã¯ã¯ã©ã€ã¢ã³ã ã·ãŒã¯ã¬ããã䜿çšããããšã§ããŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ãšæŽæ°ããŒã¯ã³ãçæã§ããŸãã
ã¢ããªã Web ãµã€ãã Web ã¢ããªã®å Žåã¯ãããã¯ãšã³ãã§ããŒã¯ã³ãæå·åããããŒã¯ã³ã«ã¢ã¯ã»ã¹ã§ããã·ã¹ãã ã®ã»ãã¥ãªãã£ã確ä¿ããå¿ èŠããããŸãã ã¢ã¯ãã£ããªã¢ã¯ã»ã¹ ããŒã¯ã³ãšã¯å¥ã®å Žæã«æŽæ°ããŒã¯ã³ãä¿åããããšãæ€èšããŠãã ããã
ã¢ããªããã€ãã£ã ã¯ã©ã€ã¢ã³ããã¯ã©ã€ã¢ã³ãåŽã¢ããªã®å ŽåããŸãã¯ãŠãŒã¶ãŒ ããã€ã¹ã§çšŒåããŠãã (ãµãŒããŒäžã§çšŒåããŠããã®ã§ã¯ãªã) å Žåã¯ãããŒã¯ã³ãšãµãŒããŒäžã§çšŒåããã¢ããªãã»ãã¥ãªãã£ä¿è·ã§ããªãããšããããŸãã ãããè¡ãã«ã¯ç§å¯ããŒãå¿ èŠãªãããã€ã³ã¹ããŒã« ã¢ã¯ã»ã¹ ããŒã¯ã³ãçæããªãã§ãã ããã ãã®ä»£ããã«ããŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ãçæããå¿ èŠããããŸãã ã¢ããªã®ãã©ãããã©ãŒã ã«æšå¥šãããæ¹æ³ã䜿çšããŠããŒã¯ã³ãä¿åããå¿ èŠããããä¿åæ¹æ³ãå®å šã«å®å šã§ã¯ãªãããšãããããšã«æ³šæããŠãã ããã
é©åãªããŒã¯ã³ã®çš®é¡ã䜿çšãã
GitHub Apps ã¯ãèªèšŒããã API èŠæ±ãè¡ããããã€ã³ã¹ããŒã« ã¢ã¯ã»ã¹ ããŒã¯ã³ãŸãã¯ãŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ãçæã§ããŸãã
ã€ã³ã¹ããŒã« ã¢ã¯ã»ã¹ ããŒã¯ã³ã¯ã¢ã¯ãã£ããã£ãã¢ããªã«é¢é£ä»ããŸãã ãããã¯ããŠãŒã¶ãŒã«é¢ä¿ãªãåäœããèªååæ©èœã«åœ¹ç«ã¡ãŸãã
ãŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ã¯ã¢ã¯ãã£ããã£ããŠãŒã¶ãŒãšã¢ããªã«é¢é£ä»ããŸãã ãããã¯ããŠãŒã¶ãŒã«ããå ¥åã«åºã¥ãã¢ã¯ã·ã§ã³ããŠãŒã¶ãŒã®ä»£çã®ã¢ã¯ã·ã§ã³ãå®è¡ããå Žåã«åœ¹ç«ã¡ãŸãã
ã€ã³ã¹ããŒã« ã¢ã¯ã»ã¹ ããŒã¯ã³ã¯ãGitHub App ã®ã¢ã¯ã»ã¹èš±å¯ãšã¢ã¯ã»ã¹ã«åºã¥ããŠå¶éãããŸãã ãŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ã¯ãGitHub App ã®ã¢ã¯ã»ã¹èš±å¯ãšã¢ã¯ã»ã¹ããã³ãŠãŒã¶ãŒã®ã¢ã¯ã»ã¹èš±å¯ãšã¢ã¯ã»ã¹ã®äž¡æ¹ã«åºã¥ããŠå¶éãããŸãã ãããã£ãŠãGitHub App ããŠãŒã¶ãŒã®ä»£çã®ã¢ã¯ã·ã§ã³ãå®è¡ããå Žåã¯ãã€ã³ã¹ããŒã« ã¢ã¯ã»ã¹ ããŒã¯ã³ã§ã¯ãªãåžžã«ãŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ã䜿çšããå¿ èŠããããŸãã ããã§ãªãå Žåãã¢ããªãéããŠãŠãŒã¶ãŒã衚瀺ã»å®è¡ã§ããªãæäœã衚瀺ã»å®è¡ã§ããå ŽåããããŸãã
ã¢ããªã§ã¯ãèªèšŒã« personal access token ãŸã㯠GitHub ãã¹ã¯ãŒãã䜿çšããªãã§ãã ããã
èªå¯ã培åºçã«ãæ°žç¶çã«ãé »ç¹ã«ãã§ãã¯ãã
ãŠãŒã¶ãŒã«ãµã€ã³ã€ã³ããåŸãã¢ããªéçºè ã¯è¿œå ã®æé ãå®è¡ããŠããŠãŒã¶ãŒãã·ã¹ãã å ã®ããŒã¿ã«ã¢ã¯ã»ã¹ã§ããããã«ããå¿ èŠããããŸãã ã¡ã³ããŒã·ãããã¢ã¯ã»ã¹ãçŸåšã® SSO ç¶æ ã®ãã¹ãŠããã¢ããªã±ãŒã·ã§ã³ãšãã®ä¿è·å¯Ÿè±¡ã§ãããªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãèš±å¯ããŠããããšã宿çã«ãã§ãã¯ããå¿ èŠããããŸãã
æ°žç¶çã§äžæã® id
ã䜿çšããŠãŠãŒã¶ãŒãæ ŒçŽãã
ãŠãŒã¶ãŒããµã€ã³ã€ã³ããŠã¢ããªã±ãŒã·ã§ã³ã§ã¢ã¯ã·ã§ã³ãå®è¡ãããšãã¯ã次åãµã€ã³ã€ã³ãããšãã«åããªãœãŒã¹ãžã®ã¢ã¯ã»ã¹æš©ãä»äžããããã«ãã©ã®ãŠãŒã¶ãŒããã®ã¢ã¯ã·ã§ã³ãå®è¡ããããèŠããŠããå¿ èŠããããŸãã
ãŠãŒã¶ãŒãããŒã¿ããŒã¹ã«æ£ããæ ŒçŽããã«ã¯ãåžžã«ãŠãŒã¶ãŒã® id
ã䜿çšããŸãã ãã®å€ã¯ããŠãŒã¶ãŒã«å¯ŸããŠå€æŽãããããšããå¥ã®ãŠãŒã¶ãŒãæã瀺ãããã«äœ¿çšãããããšããªããããæå³ãããŠãŒã¶ãŒãžã®ã¢ã¯ã»ã¹ã確å®ã«æäŸã§ããŸãã ãŠãŒã¶ãŒã® id
ã GET /user
REST API ãšã³ããã€ã³ãã§ç¢ºèªã§ããŸãã ããŠãŒã¶ãŒã® REST API ãšã³ããã€ã³ãããåç
§ããŠãã ããã
ãªããžããªãçµç¹ãããã³äŒæ¥ãžã®ãªãã¡ã¬ã³ã¹ãæ ŒçŽããå Žåã¯ããããã® id
ã䜿çšããŠããªã³ã¯ãæ£ç¢ºã§ããããšã確èªããŸãã
ãŠãŒã¶ãŒ ãã³ãã«ãçµç¹ã®çœ®æãã£ãŒã«ããã¡ãŒã« ã¢ãã¬ã¹ãªã©ãæéã®çµéã«äŒŽãå€åããå¯èœæ§ã®ããèå¥åã 絶察㫠䜿çšããªãã§ãã ããã
æ°ããèªèšŒããšã«çµç¹ãžã®ã¢ã¯ã»ã¹ãæ€èšŒãã
ãŠãŒã¶ãŒããµã€ã³ã€ã³ããããšãã¯ããŠãŒã¶ãŒã®ããŒã¯ã³ãã©ã® organization ã«å¯ŸããŠèªå¯ãããŠãããã远跡ããå¿
èŠããããŸãã ããã¯ããµã€ã³ã€ã³åŸã®æéãçµéããŠãŠãŒã¶ãŒã organization ããåé€ããããšãã«å€åããå¯èœæ§ããããŸãã çµç¹ã SAML SSO ã䜿çšããŠããŠããŠãŒã¶ãŒã SAML SSO ãå®è¡ããŠããªãå ŽåããŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ã¯ãã®çµç¹ã«ã¢ã¯ã»ã¹ã§ããŸããã GET /user/installations
REST API ãšã³ããã€ã³ãã宿çã«äœ¿ã£ãŠããŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ãã¢ã¯ã»ã¹ã§ãã organization ã確èªããããšããå§ãããŸãã ãŠãŒã¶ãŒã organization ãžã®ã¢ã¯ã»ã¹ãèš±å¯ãããŠããªãå Žåã¯ããã®ãŠãŒã¶ãŒã SAML SSO ãå®è¡ããããorganization ã«ååå ãããŸã§ãèªèº«ã®ã¢ããªã±ãŒã·ã§ã³å
ã§ organization ãææããããŒã¿ãžã®ã¢ã¯ã»ã¹ãçŠæ¢ããå¿
èŠããããŸãã 詳ããã¯ããGitHub Appã€ã³ã¹ããŒã«çš REST API ãšã³ããã€ã³ãããã芧ãã ããã
organization ã³ã³ããã¹ããš Enterprise ã³ã³ããã¹ãã䜿çšããŠãŠãŒã¶ãŒ ããŒã¿ãæ ŒçŽãã
id
ãã£ãŒã«ãã䜿çšããŠãŠãŒã¶ãŒ ID ã远跡ããã ãã§ãªããåãŠãŒã¶ãŒãæäœããŠããçµç¹ãŸãã¯äŒæ¥ã®ããŒã¿ãä¿æããå¿
èŠããããŸãã ããã«ããããŠãŒã¶ãŒãããŒã«ãåãæ¿ããå Žåã«ãæ©å¯æ
å ±ãæŒããããªãããã«ããããšãã§ããŸãã
次ã«äŸã瀺ããŸãã
- ãŠãŒã¶ãŒã¯ãSAML SSO ãå¿
èŠãšãã
Mona
çµç¹ã«ããŠãSSO ã®å®è¡åŸã«ã¢ããªã«ãµã€ã³ã€ã³ããŸãã ããã§ãã¢ããªã¯ãŠãŒã¶ãŒãMona
å ã§è¡ããããããã®ã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸããã - ãŠãŒã¶ãŒã¯ã
Mona
å ã®ãªããžããªãã倿°ã®ã³ãŒããæãåããåæããããã«ã¢ããªã«ä¿åããŸãã - ãã®åŸããŠãŒã¶ãŒã¯ãžã§ããåãæ¿ãã
Mona
çµç¹ããåé€ãããŸãã
ãŠãŒã¶ãŒãã¢ããªã«ã¢ã¯ã»ã¹ããŠãããŠãŒã¶ãŒ ã¢ã«ãŠã³ãã« Mona
çµç¹ã®ã³ãŒããšåæããŸã 衚瀺ã§ããŸãã?
ãã®ãããã¢ããªãä¿åããŠããããŒã¿ã®ãœãŒã¹ã远跡ããããšãéèŠã§ãã ãã以å€ã®å Žåãã¢ããªã¯çµç¹ã®ããŒã¿ä¿è·ã«ãšã£ãŠè åšã§ãããã¢ããªãããŒã¿ãæ£ããä¿è·ããŠãããä¿¡é Œã§ããªãå Žåã¯ããã®ã¢ããªãçŠæ¢ããå¯èœæ§ããããŸãã
ããŒã¯ã³ãæéåãã«ãã
GitHub ã§ã¯ãæå¹æéããããŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ã䜿çšããããšã匷ããå§ãããŸãã 以åã«æå¹æéããããŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ã®äœ¿çšããªããã¢ãŠããããã®ã®ããã®æ©èœãåã³æå¹åãããå Žåã¯ããGitHub ã¢ããªã®ãªãã·ã§ã³æ©èœã®ã¢ã¯ãã£ãåããåç §ããŠãã ããã
ã€ã³ã¹ããŒã« ã¢ã¯ã»ã¹ ããŒã¯ã³ã¯ 1 æéåŸã«æéåãã«ãªããæå¹æéããããŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ã¯ 8 æéåŸã«æéåãã«ãªããæŽæ°ããŒã¯ã³ã¯ 6 ãæåŸã«æéåãã«ãªããŸãã ãã ããäžèŠã«ãªã£ãããŒã¯ã³ã¯ããã«åãæ¶ãããšãã§ããŸãã 詳现ã«ã€ããŠã¯ãã€ã³ã¹ããŒã«ã®ã¢ã¯ã»ã¹ ããŒã¯ã³ãåãæ¶ãå Žåã¯ãDELETE /installation/token
ãããŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ãåãæ¶ãå Žåã¯ãDELETE /applications/{client_id}/token
ããåç
§ããŠãã ããã
ããŒã¯ã³ããã£ãã·ã¥ãã
ãŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ãšã€ã³ã¹ããŒã« ã¢ã¯ã»ã¹ ããŒã¯ã³ã¯æéåããŸã§äœ¿çšãããŸãã äœæããããŒã¯ã³ã¯ãã£ãã·ã¥ããŠãã ããã æ°ããããŒã¯ã³ãäœæããåã«ãæå¹ãªããŒã¯ã³ãæ®ã£ãŠããªããããã£ãã·ã¥ã確èªããŠãã ããã ããŒã¯ã³ãåå©çšããã°ãããŒã¯ã³çæèŠæ±ã®æ°ãæžããããã¢ããªãããã ãéããªããŸãã
ã»ãã¥ãªãã£äŸµå®³ãåŠçããããã®èšç»ãç«ãŠã
ã»ãã¥ãªãã£äŸµå®³ãã¿ã€ã ãªãŒã«åŠçã§ããããã«ãèšç»ãç«ãŠãå¿ èŠããããŸãã
ã¢ããªã®ç§å¯ããŒãã·ãŒã¯ã¬ããã䟵害ãããå Žåã¯ãæ°ããããŒãã·ãŒã¯ã¬ãããçæããæ°ããããŒãŸãã¯ã·ãŒã¯ã¬ããã䜿çšããããã«ã¢ããªãæŽæ°ããå€ãããŒãã·ãŒã¯ã¬ãããåé€ããå¿ èŠããããŸãã
ã€ã³ã¹ããŒã« ã¢ã¯ã»ã¹ ããŒã¯ã³ããŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ããŸãã¯æŽæ°ããŒã¯ã³ã䟵害ãããå Žåã¯ãçŽã¡ã«ãããã®ããŒã¯ã³ãåãæ¶ãå¿
èŠããããŸãã 詳现ã«ã€ããŠã¯ãã€ã³ã¹ããŒã«ã®ã¢ã¯ã»ã¹ ããŒã¯ã³ãåãæ¶ãå Žåã¯ãDELETE /installation/token
ãããŠãŒã¶ãŒ ã¢ã¯ã»ã¹ ããŒã¯ã³ãåãæ¶ãå Žåã¯ãDELETE /applications/{client_id}/token
ããåç
§ããŠãã ããã
宿çãªè匱æ§ã¹ãã£ã³ã宿œãã
ã¢ããªã§å®æçãªè匱æ§ã¹ãã£ã³ãå®è¡ããå¿ èŠããããŸãã ããšãã°ãã¢ããªã®ã³ãŒãããã¹ããããªããžããªã«å¯ŸããŠãã³ãŒã ã¹ãã£ã³ãšã·ãŒã¯ã¬ãã ã¹ãã£ã³ãèšå®ã§ããŸãã 詳现ã«ã€ããŠã¯ããã³ãŒã ã¹ãã£ã³ã«ã€ããŠãããã³ãã·ãŒã¯ã¬ãã ã¹ãã£ã³ã«ã€ããŠããåç §ããŠãã ããã
é©åãªç°å¢ãéžæãã
ã¢ããªããµãŒããŒäžã§çšŒåããŠããå Žåã¯ããµãŒããŒç°å¢ãã»ãã¥ãªãã£ä¿è·ãããã¢ããªã§äºæ³ãããéã®ãã©ãã£ãã¯ãåŠçã§ããããšã確èªããŸãã
æäœéã® Webhook ããµãã¹ã¯ã©ã€ããã
ã¢ããªã«å¿ èŠãª Webhook ã€ãã³ãã®ã¿ããµãã¹ã¯ã©ã€ãããŸãã ããã«ãããã¢ããªãå¿ èŠãšããªããã€ããŒããåä¿¡ããªããããåŸ æ©æéãççž®ã§ããŸãã
Webhook ã·ãŒã¯ã¬ããã䜿çšãã
GitHub App ã® Webhook ã·ãŒã¯ã¬ãããèšå®ããåä¿¡ Webhook ã€ãã³ãã®çœ²åãã·ãŒã¯ã¬ãããšäžèŽããããšã確èªããå¿ èŠããããŸãã ããã«ãããåä¿¡ Webhook ã€ãã³ããæå¹ãª GitHub ã€ãã³ãã§ããããšã確èªã§ããŸãã
詳ããã¯ããGitHub Apps ã§ã® Webhook ã®äœ¿çšããã芧ãã ããã äŸã«ã€ããŠã¯ããWebhook ã€ãã³ãã«å¿çãã GitHub App ã®æ§ç¯ããåç §ããŠãã ããã
ãŠãŒã¶ãŒãæ°ããã¢ã¯ã»ã¹èš±å¯ãåãå ¥ããæéãäžãã
GitHub App ã«ãªããžããªãçµç¹ãžã®ã¢ã¯ã»ã¹èš±å¯ã远å ãããšãå人çšã¢ã«ãŠã³ããŸãã¯çµç¹ã«ã¢ããªãã€ã³ã¹ããŒã«ãããŠãããŠãŒã¶ãŒã«æ°ããã¢ã¯ã»ã¹èš±å¯ã®ç¢ºèªãæ±ããé»åã¡ãŒã«ãå±ããŸãã ãŠãŒã¶ãŒãæ°ããã¢ã¯ã»ã¹èš±å¯ãæ¿èªãããŸã§ãã¢ããªã®ã€ã³ã¹ããŒã«ã¯å€ãã¢ã¯ã»ã¹èš±å¯ããåãä»ããŸããã
ã¢ã¯ã»ã¹èš±å¯ãæŽæ°ããéã«ã¯ãã¢ããªã«äžäœäºææ§ãæãããããšã§ããŠãŒã¶ãŒã«æ°ããã¢ã¯ã»ã¹èš±å¯ãåãå
¥ããæéãäžããããšãæ€èšããå¿
èŠããããŸãã ã€ã³ã¹ããŒã« Webhook ãš new_permissions_accepted
ã¢ã¯ã·ã§ã³ ããããã£ã䜿çšãããšããŠãŒã¶ãŒãã¢ããªã®æ°ããã¢ã¯ã»ã¹èš±å¯ãåãå
¥ããã¿ã€ãã³ã°ã確èªã§ããŸãã
å®å šãªæ¹æ³ã§ãµãŒãã¹ã䜿çšãã
ã¢ããªã§ãµãŒãããŒãã£ã®ãµãŒãã¹ãå©çšããå Žåã¯ãã»ãã¥ãªãã£ã§ä¿è·ãããæ¹æ³ã§å©çšããå¿ èŠããããŸãã
- ã¢ããªã§å©çšãããã¹ãŠã®ãµãŒãã¹ã§ã¯ãåºæã®ãã°ã€ã³æ å ±ãšãã¹ã¯ãŒããæå®ããå¿ èŠããããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã¯ãSaaSãµãŒãã¹ã管çããããã®ã¡ãŒã«ãããŒã¿ããŒã¹ãµãŒãã¹ã®ãããªãµãŒãã¹ã¢ã«ãŠã³ããå ±æããã¹ãã§ã¯ãããŸããã
- ç®¡çæ¥åãè¡ãåŸæ¥å¡ã®ã¿ããã¢ããªããã¹ãããã€ã³ãã©ã¹ãã©ã¯ãã£ãžã®ç®¡çè ã¢ã¯ã»ã¹æš©ãæã€å¿ èŠããããŸãã
ãã°ãšç£èŠã远å ãã
ã¢ããªã«ãã°èšé²ãšç£èŠæ©èœã远å ããããšãæ€èšããŠãã ããã ã»ãã¥ãªã㣠ãã°ã«ã¯ã以äžãå«ãŸããŠããå ŽåããããŸãã
- èªèšŒåã³èªå¯ã€ãã³ã
- ãµãŒãã¹èšå®ã®å€æŽ
- ãªããžã§ã¯ãã®èªã¿æžã
- ãŠãŒã¶ãŒãšã°ã«ãŒãã®ã¢ã¯ã»ã¹èš±å¯ã®å€æŽ
- ããŒã«ã®ç®¡çè ãžã®ææ Œ
ãã°ã§ã¯ãåã€ãã³ãã§äžè²«ããã¿ã€ã ã¹ã¿ã³ãã䜿ãå¿ èŠããããŸãããŸãããã°ã«èšé²ããããã¹ãŠã®ã€ãã³ãã®ãŠãŒã¶ãŒãIP ã¢ãã¬ã¹ããã¹ãåãèšé²ããå¿ èŠããããŸãã
ããŒã¿ã®åé€ãæå¹ã«ãã
ä»ã®ãŠãŒã¶ãŒãçµç¹ã GitHub App ã䜿çšã§ããå Žåã¯ããŠãŒã¶ãŒãšçµç¹ã®ææè ãèªåã®ããŒã¿ãåé€ã§ããæ¹æ³ãæäŸããå¿ èŠããããŸãã ãŠãŒã¶ãŒã¯ãèªåã®ããŒã¿ãåé€ããããã«ãµããŒãæ åœè ã«ã¡ãŒã«ããããé»è©±ãããããå¿ èŠããªãããã«ãã¹ãã§ãã