ãã®èšäºã¯ã BastionZero ã® CTO ã§ãã Ethan Heilman æ°ã®å¯çš¿ã«ãããã®ã§ãã
OpenPubkey ã¯ãOpenID Connect (OIDC) ã䜿çšãã ID ãããã€ããŒãšã®æšæºçãªã·ã³ã°ã« ãµã€ã³ãªã³ (SSO) 察話ã«å ¬éããŒã远å ããããã® Web ã®æ°ãããã¯ãããžã§ãã OpenPubkeyã¯ãåºæ¬çã«IDãããã€ããŒãèªèšŒå±(CA)ã«å€ããããšã§æ©èœããèªèšŒå±(CA)ã¯ãIDãæå·åå ¬ééµã«æå·çã«ãã€ã³ãããèšŒææžãçºè¡ããä¿¡é Œã§ãããšã³ãã£ãã£ã§ãã OpenPubkeyã䜿çšãããšãOIDCã話ãIDãããã€ããŒã¯ãçŸåšå ¬ééµãIDã«ãã€ã³ãã§ããŸãã
OpenPubkeyã¯ã BastionZeroãDockerãLinux Foundationã®ã³ã©ãã¬ãŒã·ã§ã³ã«ãããæ°ãã«ãªãŒãã³ãœãŒã¹åãããŸããã ãã²ã詊ãããã ããè²¢ç®ããŠããã ããç¬èªã®ãŠãŒã¹ã±ãŒã¹ãæ§ç¯ããŠããã ããããšæããŸãã GitHub ã® OpenPubkey ãªããžããªã確èªã§ããŸãã
ãã®èšäºã§ã¯ãOpenPubkey ã䜿çšããŠå ¬éããŒãã¯ãŒã¯ããŒã ID ã«ãã€ã³ãããæ¹æ³ã玹ä»ããŸãã GitHub Actionsã®ã¯ãŒã¯ããŒãã¯ãOpenPubkeyãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§çŸåšãµããŒããããŠãããã®ã§ãããããããã§ã¯éäžçã«èª¬æããŸãã ãŸããDockerãGitHub Actionsã§OpenPubkeyã䜿çšããŠãDockerå ¬åŒã€ã¡ãŒãžã«ãµã€ã³ã€ã³ã㊠èªèšŒãè¡ãããµãã©ã€ãã§ãŒã³ã®ã»ãã¥ãªãã£ãåäžãããæ¹æ³ã«ã€ããŠãç°¡åã«èª¬æããŸããÂ

IDããŒã¯ã³ãšã¯?
å§ããåã«ãOpenID Connect ãããã³ã«ã確èªããŸãããã OIDC ã話ã ID ãããã€ããŒã¯ãéåžž OpenID ãããã€ããŒãšåŒã°ããŸããããã®èšäºã§ã¯åã« OP ãšåŒã³ãŸããÂ
OIDC ã«ã¯ãID ããŒã¯ã³ãšåŒã°ããéèŠãªææç©ããããŸãã ãŠãŒã¶ãŒã¯ãOP ãžã®ã·ã³ã°ã«ã»ãµã€ã³ãªã³ã®å®äºåŸã« ID ããŒã¯ã³ãååŸããŸãã ãã®åŸãID ããŒã¯ã³ããµãŒãã»ããŒãã£ãŒã»ãµãŒãã¹ã«æç€ºããŠãOP ã«ãã£ãŠé©åã«èªèšŒãããããšã蚌æã§ããŸãã Â
ID ããŒã¯ã³ã«ã¯ããŠãŒã¶ãŒã® ID (E ã¡ãŒã«ã»ã¢ãã¬ã¹ãªã©) ãå«ãŸããOP ã«ãã£ãŠæå·ã§çœ²åãããŸãã ãµãŒãã»ããŒãã£ãŒã»ãµãŒãã¹ã¯ãOPã®JSON Web Key Set (JWKS)ãšã³ããã€ã³ããåãåããOPã®å ¬ééµãååŸããŠãããOPã®å ¬ééµã䜿çšããŠIDããŒã¯ã³ã®çœ²åãæ€èšŒããããšã§ãIDããŒã¯ã³ãæ€èšŒã§ããŸãã OPã®å ¬ééµã¯ãOPã«ãã£ãŠãã¹ããããŠããJWKSãšã³ããã€ã³ããåãåããããšã«ãã£ãŠäœ¿çšã§ããŸããÂ
GitHub Actionsã¯ã©ã®ããã«ããŠIDããŒã¯ã³ãååŸããŸãã?Â
ãããŸã§ã¯ã人éã®ã¢ã€ãã³ãã£ãã£(ã¡ãŒã«ã¢ãã¬ã¹ãªã©)ãšãããããIDããŒã¯ã³ã§ã©ã®ããã«äœ¿çšããããã«ã€ããŠèª¬æããŠããŸããã ãã ãããã®èšäºã§ã¯ã¯ãŒã¯ããŒã ID ã«çŠç¹ãåœãŠãŠããŸãã Actionsã«ã¯ãGitHub Actionsã«IDããŒã¯ã³ãå²ãåœãŠãããã®åªããæ¹æ³ãããããšãããããŸããã  Â
ãã®ä»çµã¿ã¯ããã§ãã GitHub 㯠OpenID ãããã€ããŒãå®è¡ããŸãã æ°ããGitHub Actionãã¹ãã³ã¢ããããããšãGitHubã¯ãŸãæ°ããAPIããŒãšã·ãŒã¯ã¬ãããå²ãåœãŠãŸãã ãã®åŸãGitHub ã¢ã¯ã·ã§ã³ã¯ããã® API ããŒãšã·ãŒã¯ã¬ããã䜿çšããŠãGitHub ã® OP ã«å¯ŸããŠèªèšŒã§ããŸãã GitHub ã® OP ã¯ããã® API ããŒãšã·ãŒã¯ã¬ãããæ€èšŒã (æ°ãã GitHub Action ã«å²ãåœãŠãããããšãããã£ãŠãããã)ãGitHub Action ã« OIDC ID ããŒã¯ã³ãæäŸã§ããŸãã ãã®GitHub Actionã¯ããã®IDããŒã¯ã³ã䜿çšããŠããµãŒãããŒãã£ãµãŒãã¹ã«å¯ŸããŠèªèº«ãèå¥ã§ããããã«ãªããŸããã
GitHub ã® OP ãæäœãããšããDocker 㯠ID ããŒã¯ã³å
ã®èŠæ±ã job_workflow_ref ã¯ãŒã¯ãããŒã® "ID" ãšããŠäœ¿çšããŸãã ãã®ã¯ã¬ãŒã ã¯ãGitHub Actionããã«ãããããã¡ã€ã«ã®å Žæãèå¥ãããããæ€èšŒè
ã¯ã¯ãŒã¯ãããŒãçæãããã¡ã€ã«ãèå¥ããã¯ãŒã¯ãããŒèªäœã®æå¹æ§ãçè§£ããŠç¢ºèªããããšãã§ããŸãã èŠæ±ã®èšå®æ¹æ³ã®äŸã次ã«ç€ºããŸãã
job_workflow_ref = octo-org/octo-automation/.github/workflows/oidc.yml@refs/heads/main
GitHub ã® OP ã«ãã£ãŠçºè¡ããã ID ããŒã¯ã³å
ã®ä»ã®èŠæ±ã¯ãä»ã®ãŠãŒã¹ ã±ãŒã¹ã§åœ¹ç«ã€å ŽåããããŸãã ããšãã°ã ãŸã㯠ActorIDãšããActorãã£ãŒã«ããããããã㯠GitHub Action ãéå§ãã人㮠ID ã§ããããã¯ãã¯ãŒã¯ããŒããç¹å®ã®ãŠãŒã¶ãŒã«ãã£ãŠéå§ãããããšã確èªããã®ã«åœ¹ç«ã¡ãŸãã (ã¯ãŒã¯ããŒããèªååãããããã»ã¹ã«ãã£ãŠéå§ãããå Žåã¯ããŸã圹ã«ç«ã¡ãŸãã)ã
GitHub ã® OP ã¯ãID ããŒã¯ã³ã®ä»ã®å€ãã®äŸ¿å©ãªãã£ãŒã«ãããµããŒãããŠããŸãã 詳现ã«ã€ããŠã¯ã GitHub OIDC ã®ããã¥ã¡ã³ããåç §ããŠãã ããã
ã¯ãŒã¯ããŒãã® PK ããŒã¯ã³ã®äœæ
GitHub ã® OP ã䜿çšããŠã¯ãŒã¯ããŒããèå¥ããæ¹æ³ã確èªããã®ã§ãOpenPubkey ã䜿çšããŠãã®ã¯ãŒã¯ããŒã ID ãå ¬éããŒã«ãã€ã³ãããæ¹æ³ãèŠãŠãããŸãã OpenPubKeyã¯ãPKããŒã¯ã³ãšåŒã°ããæå·åãªããžã§ã¯ãã䜿çšããŠãããè¡ããŸããÂ
ãã®ããã»ã¹ãã©ã®ããã«æ©èœããããçè§£ããããã«ãGitHub ã® OP ã OIDC ãããã³ã«ãã©ã®ããã«å®è£
ããŠããããèŠãŠã¿ãŸãããã GitHub ã® OP ã«ãã£ãŠçæããã ID ããŒã¯ã³ã«ã¯ã ãšããaudienceãã£ãŒã«ãããããŸãã éèŠãªã®ã¯ãã¯ãŒã¯ããŒã ID ã®ãŠãŒã¶ãŒ ID ãšã¯ç°ãªãããã® audience ãã£ãŒã«ã㯠ID ããŒã¯ã³ãèŠæ±ãã OIDC ã¯ã©ã€ã¢ã³ãã«ãã£ãŠéžæãããããšã§ãã GitHub ã® OP ã ID ããŒã¯ã³ãäœæãããšããOP ã ID ããŒã¯ã³ãäœæãããšãã«çœ²åããä»ã®ãã£ãŒã«ã ( job_workflow_ref ã actorãªã©) ãšãšãã« ãå«ãŸããŸãaudienceã
ãã®ãããOpenPubkey ã§ã¯ãGitHub Action ã¯ãŒã¯ããŒãã¯ãæåã«æ°ããå
¬ééµãšç§å¯éµã®ãã¢ãçæãã OpenPubkey ã¯ã©ã€ã¢ã³ããå®è¡ããŸãã æ¬¡ã«ãã¯ãŒã¯ããŒãã OIDC ã䜿çšã㊠GitHub ã® OP ã«å¯ŸããŠèªèšŒãè¡ããšãã¯ãŒã¯ããŒãã®å
¬éããŒã®æå·åããã·ã¥ãšã©ã³ãã ãªãã€ãºãšçãããã£ãŒã«ããèšå® audience ãããŸããÂ
ããã§ãID ããŒã¯ã³ã«ã¯ãã¯ãŒã¯ããŒãã® ID ( job_workflow_ref ãã£ãŒã«ããšãã®ä»ã®é¢é£ãã£ãŒã«ã) ãšã¯ãŒã¯ããŒãã®å
¬éããŒã®ããã·ã¥ã«é¢ãã GitHub OP ã®çœ²åãå«ãŸããããã«ãªããŸããã ããã¯ãGitHubã®OPã«ã¯ãŒã¯ããŒãã®IDãšå
¬ééµããã€ã³ããããããã«å¿
èŠãªãã®ã®å€§éšåã§ãã
å®éãPK ããŒã¯ã³ã¯ JSON Web 眲å (JWS) ã§ããã倧ãŸãã«æ¬¡ã®èŠçŽ ã§æ§æãããŸãã
- ã¯ãŒã¯ããŒãã®å
¬éããŒã®ããã·ã¥ãå«ããã£ãŒã«ããå«ã
audienceID ããŒã¯ã³ã - ã¯ãŒã¯ããŒãã®å ¬éããŒã
- ã¯ãŒã¯ããŒãã®å ¬éããŒã®ããã·ã¥ãèšç®ããããã«äœ¿çšãããã©ã³ãã ãã€ãºã
- ã¯ãŒã¯ããŒãã®å ¬éããŒã®äžã«ãããPK ããŒã¯ã³å ã®ãã¹ãŠã®æ å ±ã®çœ²åã (ãã®çœ²åã¯ãPK ããŒã¯ã³ã§èšŒæããããŠãŒã¶ãŒææã®ç§å¯çœ²åããŒã«ãŠãŒã¶ãŒãã¢ã¯ã»ã¹ã§ãããšããæå·èšŒæãšããŠæ©èœããŸãã
ãã®åŸãPK ããŒã¯ã³ã¯ãOIDC ã䜿çšã㊠JWKS åŽãã GitHub OP ã®å
¬éããŒãååŸããä»»æã® OpenPubkey æ€èšŒè
ã«æç€ºã§ããŸãã æ¬¡ã«ãæ€èšŒè
㯠GitHub OP å
¬éããŒã䜿çšã㊠ID ããŒã¯ã³ãæ€èšŒããã¯ãŒã¯ããŒãã®å
¬éããŒã䜿çšã㊠PK ããŒã¯ã³å
ã®ä»ã®ãã£ãŒã«ããæ€èšŒããŸãã ããã§ãæ€èšŒè
ã¯ã¯ãŒã¯ããŒãã®å
¬éã㌠(ID ããŒã¯ã³å
ã®ãã£ãŒã«ããŸãã¯ä»ã®ãã£ãŒã«ã job_workflow_ref ã«ãã£ãŠèå¥ããã) ãèªèãããã®å
¬éããŒãä»»æã®æå·åã«äœ¿çšã§ããŸãã
OpenPubkeyã§ãšãã§ã¡ã©ã«ããŒã䜿çšã§ããŸãã?
ã¯ãïŒ ãšãã§ã¡ã©ã«ããŒã¯ãçæéã ã䜿çšãããããŒã§ãã ãšãã§ã¡ã©ã«ããŒã¯ãç§å¯ããŒãé·æé管çããå¿ èŠããªããã䟿å©ã§ããäžèŠã«ãªã£ããåé€ã§ãããããã»ãã¥ãªãã£ãåäžããéçšäžã®ãªãŒããŒããããåæžãããŸãã
OpenPubkeyã§ãããè¡ãæ¹æ³ã¯æ¬¡ã®ãšããã§ãã å ¬ééµãšç§å¯éµã®ãã¢ãéžæããOP ã«å¯ŸããŠèªèšŒããŠå ¬ééµã® PK ããŒã¯ã³ãååŸããç§å¯éµã䜿çšããŠãªããžã§ã¯ãã«çœ²åããæåŸã«ç§å¯éµãç Žæ£ããŸãã  Â
1 åéãã® PK ããŒã¯ã³Â
ãããããã«äžæ©é²ããŠãPK ããŒã¯ã³ã 1 ã€ã®çœ²åä»ããªããžã§ã¯ãã«ã®ã¿é¢é£ä»ããããããã«ããããšãã§ããŸãã ãã®ä»çµã¿ã¯ããã§ãã ãŸãã眲åãããªããžã§ã¯ãã®ããã·ã¥ãååŸããŸãã æ¬¡ã«ãã¯ãŒã¯ããŒãã GitHub ã® OP ã«å¯ŸããŠèªèšŒããããšãã«ãèŠæ±ã audience 次ã®é
ç®ã®æå·åããã·ã¥ãšçãããªãããã«èšå®ããŸãã
- å ¬ééµÂ
- 眲åãããªããžã§ã¯ãã®ããã·ã¥
- ã©ã³ãã ãªãã€ãº
æåŸã«ãOpenPubkey æ€èšŒããŒã«ã¯ã眲åããããªããžã§ã¯ããšãã® 1 åéãã® PK ããŒã¯ã³ãååŸãã眲åããããªããžã§ã¯ãã®ããã·ã¥ãèŠæ±ã«å«ãŸããŠããããšãããã«ç¢ºèªã㊠PK ããŒã¯ã³ãæ€èšŒããŸã audience ã ããã§ã1 åéãã® PK ããŒã¯ã³ãã§ããŸããã OpenPubkey ã®ãã®æ©èœã®è©³çްã«ã€ããŠã¯ããªããžããªãåç
§ããŠãã ããã
Dockerã¯OpenPubkeyã䜿çšããŠDockerå ¬åŒã€ã¡ãŒãžã«çœ²åããæ¹æ³ãæããŠãã ããã
Dockerã¯ãGitHub Actionsã¯ãŒã¯ããŒãã§OpenPubkeyã䜿çšããŠãDockerå ¬åŒã€ã¡ãŒãžã®èªèšŒã«ãµã€ã³ã€ã³ ããŸã ã Dockerå ¬åŒã€ã¡ãŒãžã¯ãGitHub Actionã¯ãŒã¯ããŒãã䜿çšããŠäœæãããŸãã ã¯ãŒã¯ããŒãã¯ãæ°ãããšãã§ã¡ã©ã«ã®å ¬éããŒãšç§å¯ããŒã®ãã¢ãäœæããOpenPubkey ãä»ããŠå ¬éããŒã® PK ããŒã¯ã³ãååŸããæåŸã«ç§å¯ããŒã䜿çšããŠã€ã¡ãŒãžã®æ§æèšŒæã«çœ²åããŸãã Â
ãã®åŸãç§å¯ããŒãåé€ãããã€ã¡ãŒãžããã®çœ²åãããã³ PK ããŒã¯ã³ã Docker Hub ã³ã³ãã㌠ã¬ãžã¹ããªã§äœ¿çšã§ããããã«ãªããŸãã ãã®ã¢ãããŒãã¯ã眲åè ãç§å¯éµãç¶æãŸãã¯ä¿åããå¿ èŠããªããããåªããŠããŸãã
Dockerã®ã³ã³ãã眲åã®ãŠãŒã¹ã±ãŒã¹ã¯ãå¥ã®Linux Foundationã®ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§ãã The Update Framework(TUF)ã«ã倧ããäŸåããŠããŸãã ãã®ä»çµã¿ã®è©³çްã«ã€ããŠã¯ããOpenPubkeyã䜿çšããŠDockerå ¬åŒã€ã¡ãŒãžã«çœ²åãããããèªã¿ãã ããã
OpenPubkeyãšGitHub Actionsã®ã¯ãŒã¯ããŒãã§ä»ã«äœãã§ããŸãã?
OpenPubkeyãšGitHub ActionsãããŸã掻çšããæ¹æ³ã«ã€ããŠã次ã®ã¢ã€ãã¢ã確èªããŠãã ããã
ã¯ã³ã¿ã€ã ããŒã䜿çšãããã©ã€ããŒãææç©ãžã®çœ²åÂ
ãã©ã€ããŒããªããžããªã«ä¿åãããææç©ã«çœ²åããããšãæ€èšããŠãã ããã OpenPubkeyã¯ãGitHub Actionã«1åéãã®ããŒã䜿ã£ãŠã¢ãŒãã£ãã¡ã¯ãã«æå·çœ²åããããå Žåã«äœ¿ããŸãã ãã®ã¢ãããŒãã®è¯ããšããã¯ããããªãã¯ãªããžããªãéææ§ãã°ã§æ å ±ãå ¬éããå¿ èŠããªãããšã§ãã 代ããã«ãã¢ãŒãã£ãã¡ã¯ãããã®çœ²åãããã³ãã® PK ããŒã¯ã³ããã©ã€ããŒã ãªããžããªã«æçš¿ããå¿ èŠããããŸãã ãã®æ©èœã¯ããã©ã€ããŒã ã³ãŒã ãªããžããªãå éšãã«ã ã·ã¹ãã ã§ãäœãã誰ã«ãã£ãŠããã€ãã©ã®ãããã®é »åºŠã§ãã«ããããŠããããäžçã«å ¬éããããªãå Žåã«åœ¹ç«ã¡ãŸããÂ
é¢é£ããå Žåã¯ãand actor-ID èŠæ±ã䜿çšããŠactorãç¹å®ã®ææç©ãæ§ç¯ãã人éã眲åãããææç©èªäœã«ãã€ã³ãããããšãæ€èšã§ããŸããÂ
ã¯ãŒã¯ããŒãéã®éä¿¡ã®èªèšŒ
ããã¯ãŒã¯ããŒã (Bob ãšåŒã¶) ã§ãå¥ã®ã¯ãŒã¯ããŒã (Alice ãšåŒã¶) ã«ãã£ãŠäœæãããã¢ãŒãã£ãã¡ã¯ããåŠçãããšããŸãã Alice ã¯ãŒã¯ããŒãã GitHub Action ã®å ŽåãAlice ã¯ãŒã¯ããŒããäœæããã¢ãŒãã£ãã¡ã¯ã㯠OpenPubkey ã䜿çšããŠçœ²åãããBob ã¯ãŒã¯ããŒãã«æž¡ãããBob ã¯ãŒã¯ããŒã㯠OpenPubkey ããªãã¡ã€ã¢ã䜿çšã㊠GitHub OP ã®å ¬éã㌠(GitHub OP ã® JWKS URL ããååŸ) ã䜿çšããŠæ€èšŒããŸãã ãã®ã¢ãããŒãã¯ãè€æ°ã¹ããŒãžã® CI/CD ããã»ã¹ã§åœ¹ç«ã€å ŽåããããŸãã
ãããŠãä»ã®ãã®ã!Â
ãããã¯åãªãã¹ãããŒãã³ã®ã¢ã€ãã¢ã§ãã ãã®èšäºã®èŠç¹ã¯ãOpenPubkeyã詊ããè²¢ç®ããç¬èªã®ãŠãŒã¹ã±ãŒã¹ãæ§ç¯ããããšã§ãã
ãã®ä»ãæè¡çãªèª²é¡ãèæ ®ããå¿ èŠããããŸã
ãŸãšããåã«ãããã€ãã®æè¡çãªè³ªåã«ã€ããŠè©±ãåãå¿ èŠããããŸãã
IDããŒã¯ã³ã¯éå ¬éã®ãŸãŸã§ããã¹ãã§ã¯ãããŸããã?
OpenPubkeyã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãIDããŒã¯ã³ãPKããŒã¯ã³å ã§åºãå ¬éãããŠããã®ã§å¿é ãããããŸããã ããšãã°ãDocker å ¬åŒã€ã¡ãŒãžçœ²åã®ãŠãŒã¹ã±ãŒã¹ã§ã¯ãPK ããŒã¯ã³ã¯ Docker Hub ã³ã³ãã㌠ã¬ãžã¹ããªã§äžè¬ã«å ¬éãããŸãã IDããŒã¯ã³ãåºãå ¬éããããšãIDããŒã¯ã³ãåçãããä»ã®ãµãŒãã¹ãžã®äžæ£ã¢ã¯ã»ã¹ã«äœ¿çšããããªã¹ã¯ããããŸãã Â
ãã®ãããPK ããŒã¯ã³ãäžè¬ã«åºãå ¬éãããŠããã¢ããªã±ãŒã·ã§ã³çšã«ããããã«ç°ãªã PK ããŒã¯ã³ããããŸããÂ
ãããã®ã¢ããªã±ãŒã·ã§ã³ã®å ŽåãOpenPubkey 㯠PK ããŒã¯ã³ãã€ã³ã¯ã«ãŒãããåã« ID ããŒã¯ã³ãã OP ã®çœ²åãåãé€ããŸãã OPã®çœ²åã¯ãRSA眲å(ãGQ眲åããšãåŒã°ãã)ã®Guillou-Quisquater(GQ)é察話åç¥è蚌æã«çœ®ãæããããŸãã çŸåšãOPã®çœ²åãåé€ãããŠãããããIDããŒã¯ã³ãä»ã®ãµãŒãã¹ã«å¯ŸããŠåçããããšã¯ã§ããŸããããOPã®RSA眲åã®ã»ãã¥ãªãã£ã¯GQ眲åã«ãã£ãŠç¶æãããŸãã  Â
ãã®ãããPK ããŒã¯ã³ãåºãäžè¬ã«å ¬éããå¿ èŠãããã¢ããªã±ãŒã·ã§ã³ã§ã¯ãPK ããŒã¯ã³ã¯ JSON Web 眲åã§ãããæ¬¡ã®èŠçŽ ã§æ§æãããŸãã
- OPã®çœ²å ãé€ãã IDããŒã¯ã³
- ID ããŒã¯ã³ã® GQ 眲å
- ãŠãŒã¶ãŒã®å ¬ééµ
- ãŠãŒã¶ãŒã®å ¬ééµã®ããã·ã¥ãèšç®ããããã«äœ¿çšãããã©ã³ãã ãã€ãº
- ãŠãŒã¶ãŒã®å ¬ééµã®äžã§ãPK ããŒã¯ã³å ã®ãã¹ãŠã®æ å ±ã®çœ²åÂ
GQ眲åã«ãããã¯ã©ã€ã¢ã³ãã¯ãOPã®çœ²åãæããã«ããããšãªããIDããŒã¯ã³ãOPã«ãã£ãŠæå¹ã«çœ²åãããããšã蚌æã§ããŸãã OpenPubkeyã¯ã©ã€ã¢ã³ãã¯ãã¯ã©ã€ã¢ã³ããIDããŒã¯ã³äžã®OPã®çœ²åãç¥ã£ãŠããããšãæå·çã«èšŒæããããã«GQ眲åãçæããŸãããOPã®çœ²åã¯ç§å¯ã«ä¿ã¡ãŸãã GQ 眲å㯠RSA ã§ã®ã¿æ©èœããŸããã ãã¹ãŠã® OpenID Connect ãããã€ããŒã RSA ããµããŒãããå¿ èŠããããããããã¯åé¡ãããŸããã
GQ 眲åã¯éåžžã®çœ²åããã倧ãããäœéã§ãããããPK ããŒã¯ã³ãåºãäžè¬ã«å ¬éããå¿ èŠããããŠãŒã¹ã±ãŒã¹ã§ã®ã¿äœ¿çšããããšããå§ãããŸãã BastionZeroã® ã€ã³ãã©ã¹ãã©ã¯ãã£ã¢ã¯ã»ã¹ã®ãŠãŒã¹ã±ãŒã¹ ã§ã¯ãPKããŒã¯ã³ãå ¬éããå¿ èŠããªããããGQ眲åã䜿çšããŸããã 代ããã«ããŠãŒã¶ãŒã¯ã¢ã¯ã»ã¹ããã¿ãŒã²ãã (ãµãŒããŒãã³ã³ãããŒãã¯ã©ã¹ã¿ãŒãããŒã¿ããŒã¹ãªã©) ã«ã®ã¿ PK ããŒã¯ã³ãå ¬éããŸããããã¯ãID ããŒã¯ã³ãéåžž OpenID Connect ã§å ¬éãããã®ãšåãæ¹æ³ã§ãã  Â
GQ 眲åã¯ãã¯ãŒã¯ããŒãéã®éä¿¡ãèªèšŒãããšãã«ã¯å¿ èŠãªãå ŽåããããŸããAlice ã¯ãŒã¯ããŒãã眲åä»ãã¢ãŒãã£ãã¡ã¯ããšãã® PK ããŒã¯ã³ã Bob ã¯ãŒã¯ããŒãã®ã¿ã«æž¡ãå ŽåãPK ããŒã¯ã³ã¯äžè¬ã«åºãå ¬éãããŠãããããåé¡ã¯ããŸããããŸããã
OPãOpenID ConnectããŒãããŒããŒã·ã§ã³ãããšã©ããªããŸãã?Â
OP ã«ã¯ãæéã®çµéãšãšãã« (ããšãã°ã2 é±éããšã«) 倿Žããã OpenID Connect 眲åããŒããããŸãã OP ã PK ããŒã¯ã³ã«çœ²åãã OpenID Connect ããŒãããŒããŒã·ã§ã³ããåŸãPK ããŒã¯ã³ã䜿çšããå¿ èŠãããå Žåã¯ã©ããªããŸãã?Â
äžéšã®ãŠãŒã¹ã±ãŒã¹ã§ã¯ãéåžžãPKããŒã¯ã³ã®æå¹æéãçããªããŸãã ããšãã°ã BastionZeroã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã¢ã¯ã»ã¹ã®ãŠãŒã¹ã±ãŒã¹ã§ã¯ãPKããŒã¯ã³ã¯24æé以äžäœ¿çšãããŸããã ãã®ãŠãŒã¹ã±ãŒã¹ã§ã¯ã(1)ãŠãŒã¶ãŒãIdPã«å¯ŸããŠåèªèšŒãè¡ããIdPãããŒãããŒããŒã·ã§ã³ãããã³ã«æ°ããPKããŒã¯ã³ãäœæãã(2)IDããŒã¯ã³ã®æå¹æéãåãããã³ã«ãã¯ã©ã€ã¢ã³ããPKããŒã¯ã³ãšãšãã«æå¹ãªOIDCæŽæ°ããŒã¯ã³ãæã£ãŠããããšãOpenPubkeyæ€èšŒããŒã«ããã§ãã¯ããããšã§ããããã®ã¿ã€ãã³ã°ã®åé¡ã解決ãããŸãã
äžéšã®ãŠãŒã¹ã±ãŒã¹ã§ã¯ãPKããŒã¯ã³ã®å¯¿åœãé·ããããOPãOpenID ConnectããŒãããŒããŒã·ã§ã³ããããšãå¿é ããå¿ èŠããããŸãã Dockerã®æ§æèšŒæçœ²åã®ãŠãŒã¹ã±ãŒã¹ã§ã¯ããã®åé¡ã¯ãTUFã«OPã®çœ²åããŒã®å±¥æŽãã°ã远å ã§ä¿åããããšã§è§£æ±ºãããŸããOPå ¬ééµã®ãã¹ããªã«ã«ã»ãã°ã¯ãæå¹æéãåããåŸã«äœ¿çšããããã«ã誰ã§ãä¿æã§ããŸãã å®éãOPããã®å±¥æŽãã°ãèªåã§ä¿æããæªæ¥ãæãæããŠããŸããÂ
ä»åã¯ãããŸã§ã§ãã GitHub ã® OpenPubkey ãªããžããªã確èªã§ããŸãããã²ãããžã§ã¯ãã«åå ããŠãè²¢ç®ããOpenPubkeyã圹ç«ã€å¯èœæ§ã®ããä»ã®ãŠãŒã¹ã±ãŒã¹ãç¹å®ããŠãã ããã
ããã«è©³ãã
- ãOpenPubkey ã䜿çšã㊠Docker å ¬åŒã€ã¡ãŒãžã«çœ²åããããèªãã§ãã ããã
- Docker ãã¹ã¯ãããã®ææ°ãªãªãŒã¹ãå ¥æããŸãã
- 次ã®ãã®ã«æç¥šããŠãã ãã! å ¬éããŒãããããã芧ãã ããã
- 質åããããŸãã? Docker ã³ãã¥ããã£ããæäŒãããŸãã
- ããã«ãŒã¯åããŠã§ãã? å§ããŸãããã