
- TOP
- ã¿ã°äžèЧ
- ã¢ã«ãŽãªãºã
ã¢ã«ãŽãªãºã
ã€ãã³ã
ãã¬ãžã³
æè¡ããã°
æ¬ããã°ã¯ 2026 幎 9 æ 15 æ¥ã«å
¬éããã AWS Blog â AWS STS simplifies session token size limits and adds session token size monitoring â ã翻蚳ãããã®ã§ãã AWS Security Token Service (AWS STS) ã§ã»ãã·ã§ã³ããŒã¯ã³ã®ãµã€ãºå¶éãç°¡çŽ åãããã»ãã·ã§ã³ããªã·ãŒãšã»ãã·ã§ã³ã¿ã°ã«äœ¿çšã§ãã容éãæ¡å€§ããŸãããSTS ã¯ãããã¯ãããããªã·ãŒ (packed policy) ã®ãµã€ãºå¶éãšã»ãã·ã§ã³ããŒã¯ã³å
šäœã®ãµã€ãºå¶éã廿¢ãã4,096 ãã€ããšããåäžã®ããŒã¯ã³ãµã€ãºã®å¶éã«çœ®ãæããŸããããŸããã»ãã·ã§ã³ããŒã¯ã³ã®ãµã€ãºã API ã¬ã¹ãã³ã¹ã Amazon CloudWatch ã¡ããªã¯ã¹ã AWS CloudTrail ã€ãã³ãã§å ±åãããããã«ãªããŸãããããã«ãSTS ã§ããŸããŸãªãµã€ãºã®ã»ãã·ã§ã³ããŒã¯ã³ãçæã§ãããããã€ã³ãã©ã¹ãã©ã¯ãã£ããµããŒãã§ããããŒã¯ã³ã®æå€§ãµã€ãºã確èªã§ããŸãã 4,096 ãã€ããšããå¶éã¯çŸæç¹ã§ã®äžéã§ãããæä¹
çãªãã®ã§ã¯ãããŸãããã»ãã·ã§ã³ããŒã¯ã³ã«ããå€ãã®æ
å ±ãå«ããå¿
èŠãããæ°æ©èœã远å ãããã®ã«äŒŽããAWS ããã®å¶éãåŒãäžããå¯èœæ§ããããŸãã ãã®èšäºã§ã¯ã倿Žç¹ããã®å€æŽã«ãã圱é¿ã次ã«è¡ãã¹ãããšã«ã€ããŠèª¬æããŸãã 倿Žç¹ AWS STS ã®ã»ãã·ã§ã³çºè¡ API (session-vending API) ã§ãã AssumeRole ã AssumeRoleWithSAML ã AssumeRoleWithWebIdentity ã GetSessionToken ã GetFederationToken ãªã©ã¯ãäžæçãªã»ãã¥ãªãã£èªèšŒæ
å ± (ã¢ã¯ã»ã¹ã㌠IDãã·ãŒã¯ã¬ããã¢ã¯ã»ã¹ããŒãã»ãã·ã§ã³ããŒã¯ã³) ãè¿ããŸããä»åã®å€æŽã®å¯Ÿè±¡ã¯ã»ãã·ã§ã³ããŒã¯ã³ã§ããã»ãã·ã§ã³ããŒã¯ã³ãšã¯ãæž¡ãããã»ãã·ã§ã³ããªã·ãŒãšã¿ã°ãããã³ AWS ã远å ããã³ã³ããã¹ããåºã« STS ãäœæããäžéæãªæååã§ãã 倿Žç¹ã¯æ¬¡ã® 3 ã€ã§ãã åäžã®å¶é: 以åã® STS ã¯ãã»ãã·ã§ã³ããŒã¯ã³ã« 2 ã€ã®ãµã€ãºå¶éãé©çšããŠããŸãããSTS ã¯ã»ãã·ã§ã³ããªã·ãŒãšã¿ã°ãã·ãªã¢ã«åããã³å§çž®ããŠãããã¯ãããããªã·ãŒãšåŒã°ãã圢åŒã«å€æããŠãããããã«ç¬èªã®å¶éããããŸãããããã«ãããã¯ãããããªã·ãŒãå«ãçµã¿ç«ãŠåŸã®ããŒã¯ã³ã«ã¯ãå
šäœã«å¯Ÿããå¥ã®å¶éããããŸããããªã¯ãšã¹ãã¯ã©ã¡ãã®å¶éã§ã倱æããå¯èœæ§ãããããããã®å Žåãåã PackedPolicyTooLargeException ãè¿ããããããã©ã¡ãã®å¶éãè¶
ããã®ãã倿ã§ããŸããã§ãããçŸåšã¯åäžã®å¶éã®ã¿ãé©çšãããçµã¿ç«ãŠåŸã®ã»ãã·ã§ã³ããŒã¯ã³ã 4,096 ãã€ã以å
ã«åããå¿
èŠããããŸããããã¯ãããããªã·ãŒã«å¯Ÿããåå¥ã®å¶éã¯ã倱æã®äºæž¬ãé£ããããŠããŸãããã廿¢ãããŸãããçµã¿ç«ãŠåŸã®ã»ãã·ã§ã³ããŒã¯ã³ãå¶éãè¶
ãããšãSTS 㯠PackedPolicyTooLargeException ãè¿ããŸããSTS ã¯åŒãç¶ãåãäŸå€ã䜿çšãããããæ¢åã®ãšã©ãŒåŠçã³ãŒã㯠SDK ãæŽæ°ããªããŠããã®ãŸãŸåäœããŸãã ã»ãã·ã§ã³ããŒã¯ã³ãµã€ãºã®å ±å: STS ã®ã»ãã·ã§ã³çºè¡ API ããè¿ããããã¹ãŠã®æåã¬ã¹ãã³ã¹ã«ã SessionTokenSize (ã»ãã·ã§ã³ããŒã¯ã³ã®ãµã€ãºããã€ãåäœã§å ±å) ãš SessionTokenUtilization (4,096 ãã€ãã®å¶éã«å¯Ÿãã䜿çšçãå ±å) ãå«ãŸããããã«ãªããŸããããŸããSTS ã¯äžäœäºææ§ã®ããã«ããã¹ãŠã®æåã¬ã¹ãã³ã¹ã§ PackedPolicySize ãè¿ããŸãã PackedPolicySize ã¯çŸåš SessionTokenUtilization ãšåãå€ãå ±åãããããå€ãããŒãžã§ã³ã® AWS SDK ã䜿çšããã¢ããªã±ãŒã·ã§ã³ã§ãããã®ãã£ãŒã«ãã§äœ¿çšçãã¢ãã¿ãªã³ã°ã§ããŸãããããã®ã¬ã¹ãã³ã¹ãã£ãŒã«ã㯠CloudTrail ã€ãã³ãã«ãèšé²ãããŸããCloudWatch ã§ã¯ã SessionTokenSize ãš SessionTokenMaxSize (é©çšãããå¶é) ã AWS/STS åå空éã«çºè¡ãããŸãã ãã¹ãã®ç°¡çŽ å: MinimumSessionTokenSize ã¯ãSTS ã®ã»ãã·ã§ã³çºè¡ API ã«æ°ãã远å ããããªãã·ã§ã³ã®ãã©ã¡ãŒã¿ã§ãããã®ãã©ã¡ãŒã¿ã䜿çšãããšãã»ãã·ã§ã³ããŒã¯ã³ãæå®ãããµã€ãºä»¥äž (æå€§ 4,096 ãã€ã) ã«å¢ããããšãã§ããŸããã€ã³ãã©ã¹ãã©ã¯ãã£ãåŠçã§ããããŒã¯ã³ã®æå€§ãµã€ãºã確èªããéã«äœ¿çšããŠãã ããã åäœ ä»¥å çŸåš é©çšãããå¶é 2 ã€: ããã¯ãããããªã·ãŒã®ãµã€ãºãšçµã¿ç«ãŠåŸã®ããŒã¯ã³ã®ãµã€ãº 1 ã€: çµã¿ç«ãŠåŸã®ã»ãã·ã§ã³ããŒã¯ã³ã®ãµã€ãº (4,096 ãã€ã) 倱ææã®ãšã©ãŒ PackedPolicyTooLargeException : ãšã©ãŒã¡ãã»ãŒãžã«ã¯ã2 ã€ã®å¶éã®ãã¡ã©ã¡ããè¶
ããã®ãã瀺ãããŸããã§ããã PackedPolicyTooLargeException : æŽæ°ãããã¡ãã»ãŒãžã«ã¯ãã»ãã·ã§ã³ããŒã¯ã³ã®ãµã€ãºãšèš±å®¹ãããæå€§ãµã€ãºããã€ãåäœã§ç€ºãããŸãã ã»ãã·ã§ã³ããŒã¯ã³ãµã€ãºã®å¯èŠæ§ å ±åãªã API ã¬ã¹ãã³ã¹ãš AWS CloudTrail SessionTokenSize ã SessionTokenUtilization ã PackedPolicySize ã PackedPolicySize ã¯ãäžäœäºææ§ã®ããã« SessionTokenUtilization ãšåãå²åãå ±åããŸãã Amazon CloudWatch SessionTokenSize ãš SessionTokenMaxSize ã€ã³ãã©ã¹ãã©ã¯ãã£ã®ãã¹ã ä»çµã¿ãªã MinimumSessionTokenSize : ã»ãã·ã§ã³çºè¡ API ã®ãã©ã¡ãŒã¿ ãã®å€æŽã«ããåœ±é¿ åœ±é¿ã¯ã客æ§ã®ç¶æ³ã«ãã£ãŠç°ãªããŸãã代衚çãªã±ãŒã¹ã¯æ¬¡ã®ãšããã§ãã ããŒã¯ã³ãµã€ãºã®ãšã©ãŒãçºçããããšããªãå Žå: å€åã«æ°ä»ãããšã¯ã»ãšãã©ãªãã§ããããããŒã¯ã³ã®ãµã€ãºã¯çŸåšã®ãŸãŸã§ãå¶éãŸã§ã®äœè£ãåºãããŸãããã ããæéã®çµéãšãšãã«ãããŒã¯ã³ããããŸã§ã·ã¹ãã ã§åŠçããŠãããµã€ãºããã倧ãããªãå¯èœæ§ããããŸãã MinimumSessionTokenSize ã䜿çšããŠãã·ã¹ãã ã§åŠçã§ããããŒã¯ã³ã®æå€§ãµã€ãºã確èªããããšããå§ãããŸãã詳现ã«ã€ããŠã¯ã ãæ¬¡ã«è¡ãã¹ãããšã ã»ã¯ã·ã§ã³ãåç
§ããŠãã ããã 以åã« PackedPolicyTooLargeException ãçºçããããšãããå Žå: å¶éãäžæ¬åãããããšã§ã以åã¯å€±æããŠããäžéšã®ãªã¯ãšã¹ããæåããããã«ãªããŸããããŒã¯ã³ãµã€ãºã®ãšã©ãŒãé¿ããç®çã§å°å
¥ããåé¿çãèŠçŽããåŒãç¶ãå¿
èŠãã©ããã倿ããŠãã ãããäžè¬çãªãã¹ããã©ã¯ãã£ã¹ã¯åŒãç¶ãæå¹ã§ããã¿ã°ã®å€§æåãšå°æåãçµ±äžããã¿ã°å€ãåå©çšãããšå§çž®å¹çãé«ãŸããŸãããŸããã»ãã·ã§ã³ããªã·ãŒãç°¡æœã«ãããšãçµã¿ç«ãŠåŸã®ããŒã¯ã³ãå°ããæããããŸãããšã©ãŒåŠçã®ããã®ã³ãŒã倿Žã¯äžèŠã§ããçµã¿ç«ãŠåŸã®ã»ãã·ã§ã³ããŒã¯ã³ãå¶éãè¶
ããå ŽåãAWS STS ã¯åŒãç¶ã PackedPolicyTooLargeException ãè¿ããŸããããã¯ãä»åã®å€æŽåã« STS ãè¿ããŠãããã®ãšåãäŸå€ã§ãã ç¬èªã«èªèšŒæ
å ±ã®ãµã€ãºå¶éãé©çšããŠããã·ã¹ãã ãããå Žå: ã¢ããªã±ãŒã·ã§ã³ã AWS SDK ã䜿çšããŠäžæçãªèªèšŒæ
å ±ãååŸããAWS ã® API ã³ãŒã«ãè¡ãå Žåã¯ãSDK ãã»ãã·ã§ã³ããŒã¯ã³ãå
éšã§åŠçãããããããŒã¯ã³ãµã€ãºãã³ãŒãã«åœ±é¿ããããšã¯ãããŸãããæ³šæãå¿
èŠãªã®ã¯ãããŒããã©ã³ãµãŒããããã·ããã£ãã·ã¥ãããŒã¿ããŒã¹ãªã©ãã»ãã·ã§ã³ããŒã¯ã³ãä¿åãŸãã¯è»¢éããã·ã¹ãã ã§ãããããã®ã·ã¹ãã ã«ã¯ããããŸã§ã®å°ããªããŒã¯ã³ã§ã¯æµè§Šããªãã£ããµã€ãºå¶éãèšããããŠããå¯èœæ§ããããŸããäŸãã°ã varchar(2048) ãšããŠå®çŸ©ãããããŒã¿ããŒã¹åã«ã¯ã4,096 ãã€ãã®ããŒã¯ã³ãæ ŒçŽã§ããŸãããã»ãã·ã§ã³ããŒã¯ã³ãæ°žç¶åãŸãã¯åãæž¡ãããŠããç®æã確èªããåã·ã¹ãã ããµããŒãããããŒã¯ã³ã®æå€§ãµã€ãºãç¹å®ããŠãã ããããã¹ãæ¹æ³ã«ã€ããŠã¯æ¬¡ã®ã»ã¯ã·ã§ã³ã§èª¬æããŸãã æ¬¡ã«è¡ãã¹ãããš ãã®å€æŽã«åããŠã·ã¹ãã ãæºåããããã«ã次㮠3 ã€ã®ã¹ãããã宿œããããšããå§ãããŸãã ã·ã¹ãã ã§åŠçã§ããããŒã¯ã³ã®æå€§ãµã€ãºãæ€èšŒãã ã MinimumSessionTokenSize ã䜿çšããŠãã€ã³ãã©ã¹ãã©ã¯ãã£å
ã®åã·ã¹ãã ã§åŠçã§ããã»ãã·ã§ã³ããŒã¯ã³ã®æå€§ãµã€ãºã確èªããŸãããããã®å¶éãææ¡ããŠãããšã倧ããªããŒã¯ã³ãæåŠãããåãæšãŠããããå¯èœæ§ã®ããã·ã¹ãã ãç¹å®ã§ããŸãã4,096 ãã€ããšããå¶éã¯çŸåšã®ããŒãºãåæ ãããã®ã§ãããæä¹
çãªäžéã§ã¯ãããŸãããæ°ãããµãŒãã¹åãã®è¿œå ã®ã³ã³ããã¹ãããŒãããå
å®ããç£æ»ã¡ã¿ããŒã¿ãæ¥çã®ãã¹ãéåã¢ã«ãŽãªãºã ãžã®ç§»è¡ã«äŒŽããã倧ããªæå·çœ²åãªã©ãAWS ãæ°æ©èœãå°å
¥ããã«ã€ããŠããã®å¶éãåŒãäžããããå¯èœæ§ããããŸããçŸåšã®æå€§å€ãã·ã¹ãã ã«ããŒãã³ãŒãã£ã³ã°ããããšã¯é¿ããå¶éã倿Žãããå Žåã¯ãåºå®ãµã€ãºãåæãšããŠããç®æãèŠçŽããŠãã ããã ãã³ã: AWS STS ã¯ããŒã¯ã³ãçµã¿ç«ãŠãéã«ãã»ãã·ã§ã³ããªã·ãŒãšã¿ã°ãã·ãªã¢ã«åããã³å§çž®ããŸããå§çž®çµæã¯ãé·ãã ãã§ãªãå®éã®å
容ã«ãã£ãŠå€ãããŸããæåæ°ãåã 2 ã€ã®ã¿ã°ã»ããã§ããçæãããããŒã¯ã³ã®ãµã€ãºãç°ãªãå ŽåããããŸãããã®ãããå
¥åã®é·ãããæšå®ãããããã MinimumSessionTokenSize ã䜿çšããæ¹ãã€ã³ãã©ã¹ãã©ã¯ãã£ã確å®ã«ãã¹ãã§ããŸãã aws sts assume-role \ --role-arn arn:aws:iam::123456789012:role/MyRole \ --role-session-name validation-test \ --minimum-session-token-size 4096 ãŸãã¯ãæå€§ãµã€ãºã®ããŒã¯ã³ã§ãã¹ãã§ããããã« 4,096 ãã€ããæå®ããŸããã·ã¹ãã ãããŒã¯ã³ãåãæšãŠããæåŠãããããå Žåã¯ãå€ãäžããŠã€ã³ãã©ã¹ãã©ã¯ãã£ããµããŒããããµã€ãºãç¹å®ããå¯èœã§ããã°ãã®ã·ã¹ãã ã®å¶éãåŒãäžããŸãã MinimumSessionTokenSize ã¯ãAWS SDKã AWS ã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ (AWS CLI) ãTools for PowerShell ã®ææ°ããŒãžã§ã³ã§å©çšã§ããŸãã詳现ã«ã€ããŠã¯ãã STS API ãªãã¡ã¬ã³ã¹ ããåç
§ããŠãã ããã䜿çšäžã® AWS SDK ãŸã㯠AWS CLI ããã®ãã©ã¡ãŒã¿ã«å¯Ÿå¿ããŠããªãå Žåã¯ãæŽæ°ããŠãããã®æ©èœã䜿çšããŠãã ããã ã»ãã·ã§ã³ããŒã¯ã³ã®ãµã€ãºãã¢ãã¿ãªã³ã°ãã (æšå¥š) ãã€ã³ãã©ã¹ãã©ã¯ãã£ã«ãµã€ãºã®å¶çŽãããå Žåã¯ãã¢ãã¿ãªã³ã°ã«ãã£ãŠãã®å¶éã«è¿ã¥ããŠããããŒã¯ã³ãææ¡ãããªã¯ãšã¹ãã倱æããåã«å¯ŸåŠã§ããŸããAWS STS 㯠3 ã€ã®ãã£ãã«ã§ãµã€ãºãå ±åããŠãããããããç°ãªãçšéã«é©ããŠããŸãã API ã¬ã¹ãã³ã¹: ã¬ã¹ãã³ã¹ãã SessionTokenUtilization ãš SessionTokenSize ãèªã¿åãã«ã¯ãææ°ããŒãžã§ã³ã® AWS SDK ãå¿
èŠã§ãããªããCloudWatch ãš CloudTrail ã䜿çšããã°ãSDK ãæŽæ°ããªããŠãããŒã¯ã³ãµã€ãºãã¢ãã¿ãªã³ã°ã§ããŸãã { "Credentials": { "AccessKeyId": "REDACTED", "SecretAccessKey": "REDACTED", "SessionToken": "REDACTED", "Expiration": "2026-06-30T12:00:00Z" }, "AssumedRoleUser": { "...": "..." }, "PackedPolicySize": 61, "SessionTokenSize": 2532, "SessionTokenUtilization": 61 } CloudWatch: STS ã¯ã SessionTokenSize ãš SessionTokenMaxSize ã AWS/STS åå空éã«çºè¡ããŸãããããã®ã¡ããªã¯ã¹ã䜿çšããŠãããã·ã¥ããŒããäœæããããã¢ã©ãŒã ãèšå®ãããã§ããŸããã¢ã©ãŒã ã®ãããå€ã¯ã4,096 ãã€ãã®æå€§å€ã§ã¯ãªãããã¹ãã§ç¹å®ãããµã€ãºå¶éã«åºã¥ããŠèšå®ããŠãã ãããæå€§å€ã¯ãã¹ãŠã®ã¢ã«ãŠã³ãã§å
±éã®ãããéèŠãªã®ã¯ã客æ§ã®ã€ã³ãã©ã¹ãã©ã¯ãã£åºæã®å¶éã§ãã æ¬¡ã®å³ã¯ãCloudWatch ã³ã³ãœãŒã«ã§ SessionTokenMaxSize ãš SessionTokenSize ã®ã¡ããªã¯ã¹ãã°ã©ã衚瀺ããäŸã§ãã å³ 1: CloudWatch ã³ã³ãœãŒã«ã® SessionTokenMaxSize ããã³ SessionTokenSize ã¡ããªã¯ã¹ CloudTrail: STS ã®åã»ãã·ã§ã³çºè¡ã€ãã³ãã«ã¯ãæåããã³ãŒã«ã«ã€ã㊠SessionTokenUtilization ãš SessionTokenSize ãèšé²ãããŸãã { "eventName": "AssumeRole", "responseElements": { "credentials": { "...": "..." }, "assumedRoleUser": { "...": "..." }, "packedPolicySize": 61, "sessionTokenUtilization": 61, "sessionTokenSize": 2532 } } ã»ãã·ã§ã³ããŒã¯ã³ã®äœ¿çšçã®ã¢ãã¿ãªã³ã°ã«é©åãªãã£ãŒã«ãã䜿çšãã ãAWS STS ã¯äžäœäºææ§ã®ããã«ãã»ãã·ã§ã³çºè¡ API ã®ã¬ã¹ãã³ã¹ãš CloudTrail ã®ã¬ã³ãŒãã§åŒãç¶ã PackedPolicySize ãè¿ããŸãããã®ãã£ãŒã«ãã¯çŸåšã SessionTokenUtilization ãšåãå€ (4,096 ãã€ãã®ã»ãã·ã§ã³ããŒã¯ã³ãµã€ãºã®å¶éã«å¯ŸããŠããŒã¯ã³ãå ããå²å) ãå ±åããŸãããã®ãããããŒã¯ã³ã®å
容ãå€ãã£ãŠããªããŠãã PackedPolicySize ã®å€ã以åããäœã衚瀺ãããå ŽåããããŸãã SDK ã§ SessionTokenUtilization ãå
¬éãããŠããå Žåã¯ããã£ãŒã«ãåãå€ã®çŸåšã®æå³ãšäžèŽããŠããããããã¡ãã䜿çšããŠãã ãããå€ã SDK ã§ SessionTokenUtilization ãå
¬éãããŠããªãå Žåã¯ã PackedPolicySize ã䜿çšããã°ãSDK ãæŽæ°ããã«åã䜿çšçãã¢ãã¿ãªã³ã°ã§ããŸãããã€ãåäœã®ããŒã¯ã³ãµã€ãºã«ã€ããŠã¯ã SessionTokenSize ãã¢ãã¿ãªã³ã°ããããšããå§ãããŸãã ãŸãšã AWS ã®ã»ãã·ã§ã³ã§ãã»ãã·ã§ã³ã¿ã°ãã¿ã°å€ãã»ãã·ã§ã³ããªã·ãŒã«äœ¿çšã§ãã容éãæ¡å€§ããŸãããAWS STS 㯠4,096 ãã€ããšããåäžã®ã»ãã·ã§ã³ããŒã¯ã³ã®å¶éãé©çšããããŒã¯ã³ãå¶éãè¶
ããå Žåã«ã¯ãããããããããšã©ãŒã¡ãã»ãŒãžãè¿ããŸãããŸããããŒã¯ã³ãµã€ãºãå ±åãããããããµã€ãºã®å¢å ãæ©ãæ®µéã§ææ¡ã§ããŸãã MinimumSessionTokenSize ã§ããŒã¯ã³ãåŠçããã·ã¹ãã ãæ€èšŒãã SessionTokenUtilization ãš SessionTokenSize ãã¢ãã¿ãªã³ã°ããŠãç¶ç¶çã«ç¶æ³ãææ¡ããŠãã ããã åèè³æ AWS STS API ãªãã¡ã¬ã³ã¹ äžæçãªã»ãã¥ãªãã£èªèšŒæ
å ±ããªã¯ãšã¹ããã ã»ãã·ã§ã³ããªã·ãŒ AWS STS ã§ã»ãã·ã§ã³ã¿ã°ãæž¡ã Rishi Tripathy Rishi ã¯ãAWS Identity and Access Management (IAM) ããŒã ã® Principal Product Manager ã§ããäŒæ¥ã AWS ç°å¢ãå€§èŠæš¡ã«ä¿è·ããããã®ã¢ã¯ã»ã¹å¶åŸ¡ã®ä»çµã¿ã«æ³šåããŠããŸããå°å
¥ãããããèšå®ãã¹ãèµ·ããã«ããã»ãã¥ãªãã£ããªããã£ãã®æ§ç¯ã«æ
ç±ã泚ãã§ããŸãã Tanmay Baid Tanmay ã¯ãAWS Identity and Access Management (IAM) ããŒã ã® Senior Software Development Engineer ã§ããã客æ§ãå€§èŠæš¡ã« AWS ãžã¢ã¯ã»ã¹ããéã«å©çšããèªèšŒæ
å ±ãšããŒã¯ã³ãæ¯ããäžæ žçãªã¢ã€ãã³ãã£ãã£ã·ã¹ãã ã®éçºã«æºãã£ãŠããŸãã忣ã·ã¹ãã ãã¢ã€ãã³ãã£ãã£ãã»ãã¥ãªãã£ã亀差ããé åã®é£ãã課é¡ã«åãçµãããšã楜ããã§ããŸãã æ¬ããã°ã¯ Security Solutions Architect ã® äžå³¶ ç« å ã翻蚳ããŸããã
æ¬ããã°ã¯ 2026 幎 9 æ 14 æ¥ã«å
¬éããã AWS Blog â Zero operator access for self-managed databases using EC2 instance attestation â ã翻蚳ãããã®ã§ãã ã»ã«ããããŒãžãåããŒã¿ããŒã¹ã«ã¯ããã©ã€ããŒãããŒãèªèšŒæ
å ±ãããå人ãç¹å®ã§ããæ
å ± (PII)ãéèååŒã«è³ããŸã§ãçµç¹ã«ãšã£ãŠæãæ©å¯æ§ã®é«ãããŒã¿ãä¿åãããŠããããšããããããŸããã³ã³ãã©ã€ã¢ã³ã¹ãèŠå¶ã®èŠä»¶ã課ãããã»ãã¥ãªãã£éèŠã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã¹ããžã®ã¢ã¯ã»ã¹æš©ãæã€è
ãããããããŒã¿ã«ã¢ã¯ã»ã¹ãããªã¹ã¯ã蚱容ã§ããŸããããã®ããããã¹ãäžã§ãŒããªãã¬ãŒã¿ãŒã¢ã¯ã»ã¹ (ZOA) ã®å®çŸãç®æããŸãã ãã®èšäºã§ã¯ãå®å
šã«åçŸå¯èœãª ZOA ç°å¢ã§ãã¹ããŒããã«ãªããŒã¿ããŒã¹ãèšèšããå®è£
ããæ¹æ³ã説æããŸãããã®ç°å¢ã¯ã Amazon Elastic Compute Cloud (Amazon EC2)ãEC2 ã€ã³ã¹ã¿ã³ã¹æ§æèšŒæ ã Nitro Trusted Platform Module (NitroTPM)ãããã³ Attestable AMI ã«ãã£ãŠå®çŸããŸãããããã®æ©èœãå©çšãããšã Linux Unified Key Setup ( LUKS ) ã§æå·åããã Amazon Elastic Block Store (Amazon EBS) ããªã¥ãŒã ã®å¯Ÿç§°ããŒããç¹å®ã® Amazon Machine Image (AMI) ã®æå·åŠçãªæž¬å®å€ã«çŽä»ããããšãã§ããŸãããã®çµæãEC2 ã€ã³ã¹ã¿ã³ã¹ã¯ãæ£ãã Attestable AMI ã§èµ·åãããå Žåã«ã®ã¿ã¹ãã¬ãŒãžã埩å·ã§ããããã«ãªããŸãããã® Attestable AMI ã§æ³å®ãããããŒã枬å®å€ã¯ãAMI ã®ãã«ãæã«ãããããç®åºãããŠããŸãã ããã§ã¯ PostgreSQL ãã¯ãŒã¯ããŒãã®äŸãšããŠãã®ææ³ã玹ä»ããŸãããåããã¿ãŒã³ã¯ãAI ã¢ãã«ã®éã¿ãç¬èªã®ã¢ã«ãŽãªãºã ãªã©ãæå·åãããããŒã¿ã«ã¢ã¯ã»ã¹ã§ããã¯ãŒã¯ããŒãã峿 Œã«å¶éããã¬ãŒãã¬ãŒã«ãå¿
èŠãªãããããŠãŒã¹ã±ãŒã¹ã«é©çšã§ããŸãã åææ¡ä»¶ãšããã〠å§ããåã«ã以äžã®å
容ãçè§£ããŠãããŠãã ããã Nix Flakes : Nix Flakes ã¯ãå®å
šã«èªå·±å®çµåã®ãã«ããã¬ãŒã ã¯ãŒã¯ã§ãã flake.nix ãã¡ã€ã«ã§ã·ã¹ãã å
šäœ (ã«ãŒãã«ãããã±ãŒãžããµãŒãã¹ãæ§æ) ã宣èšçã«å®çŸ©ãã flake.lock ãã¡ã€ã«ã§ãã¹ãŠã®å
¥åãç¹å®ã® git ã³ãããããã·ã¥ã«åºå®ããŸããããã«ãããå
容ããœãŒã¹ã³ãŒãã«ãã£ãŠå®å
šã«æ±ºãŸãããããåäœã§åçŸå¯èœãª AMI ã€ã¡ãŒãžãçæã§ããŸãã Linux ã®ããŒãããã»ã¹ : Unified Kernel Image (UKI) ã dm-verity (èªã¿åãå°çšãã¡ã€ã«ã·ã¹ãã ã®æŽåæ§ç¢ºä¿çš)ãããã³ LUKS (æå·åããªã¥ãŒã çš)ã TPM/PCR ã®æŠå¿µ : Platform Configuration Register (PCR) ãããŒã枬å®å€ãèç©ããä»çµã¿ãšãPCR ãåœé ã§ããªãçç±ã AWS ã®ãµãŒãã¹ : EC2 ã AWS KMS ã EBS ãããã³ IMDS ãKMS ããŒãEC2 ã€ã³ã¹ã¿ã³ã¹ãEBS ããªã¥ãŒã ã AWS Identity and Access Management (IAM) ããŒã« ãäœæããæš©éãæã€ AWS ã¢ã«ãŠã³ã ãå¿
èŠã§ãã ããããžã§ãã³ã°ã¹ã¯ãªããã NixOS ããŒã¹ã®ã€ã¡ãŒãžãã«ããå«ãå®å
šãªãªãã¡ã¬ã³ã¹å®è£
ã¯ã https://github.com/aws/nitrotpm-attestation-samples ãªããžããªã§å
¬éãããŠããŸãã é©å㪠AWS ã³ã³ãã£ãã³ã·ã£ã«ã³ã³ãã¥ãŒãã£ã³ã°ãœãªã¥ãŒã·ã§ã³ã®éžæ AWS Nitro Enclaves ã¯ãã¹ããŒãã¬ã¹ãªã¯ãŒã¯ããŒãåããšããŠåºãå©çšãããŠããã³ã³ãã£ãã³ã·ã£ã«ã³ã³ãã¥ãŒãã£ã³ã°æ©èœã§ãããã ããNitro Enclaves ã¯å³æ Œã«åé¢ãããç°å¢ã§åäœããæ°žç¶ã¹ãã¬ãŒãžãæããããããã¯ãŒã¯æ©èœã vsock ãã£ãã«çµç±ã«éãããŸããEBS ããªã¥ãŒã ãžã®çŽæ¥ã¢ã¯ã»ã¹ãé«ãã¹ã«ãŒããããæ°žç¶çãªç¶æ
ãå¿
èŠãšããããŒã¿ããŒã¹ã¯ãŒã¯ããŒãããšã³ã¯ã¬ãŒãäžã«æ§ç¯ããããšãããšããããã®å¶çŽãåé¿ããããã«å€å€§ãªãšã³ãžãã¢ãªã³ã°äœæ¥ãå¿
èŠã«ãªããŸãã EC2 ã€ã³ã¹ã¿ã³ã¹æ§æèšŒæã¯ãããŒããŠã§ã¢ãšãããã¯ãŒã¯ãžã®å®å
šãªã¢ã¯ã»ã¹ãç¶æãããŸãŸãä¿¡é Œã§ãããœãããŠã§ã¢ãšããŒãããã»ã¹ã®ã¿ãã€ã³ã¹ã¿ã³ã¹äžã§å®è¡ãããŠããããšãæå·åŠçã«èšŒæããŸããNix Flakes ã®ãããªåçŸå¯èœãªãã«ãã·ã¹ãã ãšçµã¿åãããããšã§ãããŒã¿ããŒã¹ã«æ±ããããã¹ãã¬ãŒãžã®ç¹æ§ãããã©ãŒãã³ã¹ãç ç²ã«ããããšãªãããŒããªãã¬ãŒã¿ãŒã¢ã¯ã»ã¹ãå®çŸã§ããŸãã ZOA ããŒã¿ããŒã¹ã®ãŠãŒã¹ã±ãŒã¹ã«ã¯ãEC2 ã€ã³ã¹ã¿ã³ã¹æ§æèšŒæãé©ããŠããŸããå¿
èŠãªæ©å¯æ§ã確ä¿ããªãããæå·åããã EBS ããªã¥ãŒã ã®ããŠã³ããé«ãã¹ã«ãŒãããã§ã®ã¯ãšãªåŠçãæšæºçãªãããã¯ãŒã¯ã§ã®éçšããããŸã§ã©ããè¡ãããšãã§ããŸãã åçŸå¯èœãª Attestable AMI ã®æ§ç¯ ãã®ã»ã¯ã·ã§ã³ã§ã¯ãNix Flakes ã䜿çšããŠãå®å
šã«åçŸå¯èœã§æ§æèšŒæå¯èœãª AMI ãæ§ç¯ããæ¹æ³ã詳ãã説æããŸããå³ 1 ã¯ãåçŸå¯èœã§æ§æèšŒæå¯èœãª AMI ãæ§ç¯ããããã«å¿
èŠãª 5 ã€ã®å€§ãŸããªã¹ãããã瀺ããŠããŸãã å³ 1: Amazon EC2 ã€ã³ã¹ã¿ã³ã¹æ§æèšŒæ (ãã«ãæã®ã¿)ãåçŸå¯èœãª AMI ãäœæãããã®åç
§æž¬å®å€ãçæããŸãã 1. Nix ãã«ã : ããã¯ããã flake ã®å
¥åããæ±ºå®è«çã«ãã«ããè¡ããAMI ã® raw ã€ã¡ãŒãžãçæããŸãããã®ã€ã¡ãŒãžã¯ãESP (UKI)ã dm-verity ããã·ã¥ããªãŒã nix store (erofsãèªã¿åãå°çš) ã§æ§æãããŸããå
¥åãåãã§ããã°ãããåäœã§åäžã® AMI ãçæãããããã PCR4 枬å®å€ãåãã«ãªããŸãã 2. dm-verity ã«ããã¹ãã¢ã®çŽä»ã : UKI ã® cmdline ã«ã¯ã nix store ã«å¯ŸããããŒã¯ã«ããªãŒ (Merkle Tree) ã®ã«ãŒãããã·ã¥ãå«ãŸããŸãããã«ãåŸã«ã¹ãã¢ã倿Žãããšã«ãŒãããã·ã¥ãå€ããããã®çµæ PCR4 ãå€ãããŸãããªãã·ã§ã³ãšããŠããã«ãåŸã« UKI ã«çœ²åããŠã»ãã¥ã¢ããŒã眲åã远å ããããšãã§ããŸãããã³ãã¬ãŒãã§ã¯ --secure-boot ãã©ã°ã䜿çšããŠãã®åŠçãè¡ã£ãŠããŸãã 3. nitro-tpm-pcr-compute : ãã®ãã«ãæãŠãŒãã£ãªãã£ã¯ãUKI ã® .efi ãã¡ã€ã«ã®ã¿ãèªã¿åããæž¬å®ã¢ã«ãŽãªãºã ããªãã©ã€ã³ã§åçŸã㊠PCR å€ãç®åºããŸããPCR å€ã¯ 96 æåã® SHA-384 ãã€ãžã§ã¹ãã§è¡šãããŸãã 4. åç
§æž¬å®å€ : ãã®ããŒã«ã¯ tpm_pcr.json ãåºåããŸãã PCR4 (Boot Manager Code): UEFI ç°å¢ãå®è¡ããããŒããã€ããªã®ããã·ã¥ã§ããAttestable AMI ã§ã¯ããã®ããã·ã¥ã æ§æèšŒæããã¥ã¡ã³ã ã«è¿œå ãããAWS KMS ããŒããªã·ãŒã«èšå®ããã PCR4 å€ãšäžèŽãããã©ããã AWS KMS ãè©äŸ¡ããŸããããã«ãããKMS ããŒãå©çšã§ããã³ãŒãã PCR4 ã§å³å¯ã«åºå®ã§ããŸãã PCR7 (Secure Boot Policyãã»ãã¥ã¢ããŒããæå¹ãªå Žåã®ã¿): UEFI ã»ãã¥ã¢ããŒãããªã·ãŒã®ããã·ã¥ã§ãããã®å€ã¯ AMI ãæŽæ°ããŠãå€ãããªããããç¹å®ã® AMI ã®æž¬å®å€ã§ã¯ãªããã»ãã¥ã¢ããŒãèšŒææžãæ€èšŒãã AWS KMS ããªã·ãŒã 1 ã€èšè¿°ããã ãã§æžã¿ãŸãã PCR12 : ã«ãŒãã«ã³ãã³ãã©ã€ã³ã«å ããããå€æŽ (ã¢ããªã³ãã¡ã€ã«ã«ãã倿Žãªã©) ã®ããã·ã¥ã§ãã PCR4 ãšçµã¿åãããŠãã³ãã³ãã©ã€ã³ãæ¹ãããããŠããªãããšã確èªããããã«äœ¿çšããŸãã 5. AWS Key Management Service (AWS KMS) ããŒããªã·ãŒãžã®çµã¿èŸŒã¿ : åç
§æž¬å®å€ã RecipientAttestation æ¡ä»¶ãšããŠèšå®ããŸããããã«ãã AWS KMS ã¯ã å®é㮠枬å®å€ãäžèŽããã€ã³ã¹ã¿ã³ã¹ã«å¯ŸããŠã®ã¿ããŒãæäŸããããã«ãªããŸãã ããã§ã¯ãå³ 1 ã«ç€ºããåã¹ãããã®å®è£
ã®è©³çްãèŠãŠãããŸããããã¹ããã 1 ãš 2 ã«å¯Ÿå¿ããåŠçãšããŠããŸã Linux ã«ãŒãã«ãã«ãŒãã«ã³ãã³ãã©ã€ã³ãinitramfsãäžéšã®ã¡ã¿ããŒã¿ãå«ãã匷åããã Unified Kernel Image (UKI) ããã«ãããŸãã ãã«ãã«ã¯ Nix ã䜿çšããããšããå§ãããŸããNix ã䜿çšãããšããã«ãã宣èšçãã€åçŸå¯èœã«ã§ããŸããããã¯ãããåããœãŒã¹ããã¯åžžã«ãã€ãåäœã§åäžã® UKI ãçæããããããPCR4 枬å®å€ãåžžã«åãã«ãªããŸããå³ 1 ã®ã¹ããã 3 ãš 4 ã®ãšããããã«ãã§ã¯ raw ã€ã¡ãŒãžãšãšãã« tpm_pcr.json ãã¡ã€ã«ãåºåãããŸãã { "Measurements": { "PCR4": "f3a1e2...", "PCR7": "a32b31...", "PCR12": "000000..." } } 管çäžã«ãã Attestable AMI ã® PCR 枬å®å€ãæã€ EC2 ã€ã³ã¹ã¿ã³ã¹ã«ã®ã¿ AWS Key Management Service (AWS KMS) ããŒã§ã®åŸ©å·ãèš±å¯ãããããåç
§æž¬å®å€ã䜿çšã㊠AWS KMS ããŒããªã·ãŒ ãèšå®ããŸãã { "Sid": "Allow decryption for the Instance role", "Effect": "Allow", "Principal": { "AWS": "${INSTANCE_ROLE}" }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEqualsIgnoreCase": { ${PCR_VALUES} } } } AWS KMS ããŒããªã·ãŒã® JSON ãªããžã§ã¯ãå
ã«ãã ${PCR_VALUES} ã«ã¯ããã«ãäžã«çæããã tpm_pcr.json ã®æž¬å®å€ãå
¥ããŸãã ããã§éèŠãªã®ã¯ãã€ã³ã¹ã¿ã³ã¹æ§æèšŒæã«ãã£ãŠæå·åŠçã«æ€èšŒããã AMI ã«ã®ã¿åŸ©å·ãªãã¬ãŒã·ã§ã³ãèš±å¯ããå¯äžã®å¶åŸ¡ç¹ããAWS KMS ããŒããªã·ãŒã§ãããšããç¹ã§ãããã®ãããPCR å€ã¯ CI/CD ãã€ãã©ã€ã³ã§èªåæŽæ°ããã®ã§ã¯ãªããæ
éãªæåããã»ã¹ã§åºå®ããã¬ãã¥ãŒããå¿
èŠããããŸããèªåæŽæ°ãè¡ããšã倿Žãããã€ã¡ãŒãžãæªæ¿èªã®ã€ã¡ãŒãžãæ°ä»ããªããã¡ã«èš±å¯ãããæ§æèšŒæã«ããä¿èšŒããã¹ãŠç¡å¹ã«ãªããããããããŸãã ãã®äŸã§ã¯ãPostgreSQL ããŒã¿ããŒã¹çšã® AMI ãäœæããŠããã® PCR 枬å®å€ãååŸããŸãããããŠããã®æž¬å®å€ã䜿çšã㊠AWS KMS ãèšå®ããæ£ããæž¬å®å€ã§æ§æèšŒæã«æåããå Žåã«ã®ã¿ãããŒã¿ããŒã¹ã® EBS ããªã¥ãŒã ã®ããŒã埩å·ã§ããããã«ããŸããããã§ã¯ãNix ã䜿çšããŠèšè¿°çãã€åçŸå¯èœãªåœ¢ã§å®çŸã§ãããå
·äœçãªãã€ã³ããããã€ãèŠãŠãããŸãããã ãŒããªãã¬ãŒã¿ãŒã¢ã¯ã»ã¹ ãŒããªãã¬ãŒã¿ãŒã¢ã¯ã»ã¹ã匷å¶ããŠäžæ£ã¢ã¯ã»ã¹ã®æ»æå¯Ÿè±¡é åãéå®ããããã«ãSSH ãã·ãªã¢ã«æ¥ç¶ã«ããã¢ã¯ã»ã¹ãå«ãããã·ã³ãžã®ãããã圢åŒã®ãã°ã€ã³ãç¡å¹ã«ããŸãã services.sshd.enable = lib.mkForce false; ãŸããæ¬¡ã®èšå®ãè¡ããŸãã systemd.services."autovt@" = lib.mkForce {}; systemd.services."getty@" = lib.mkForce {}; systemd.services.getty-static = lib.mkForce {}; systemd.services."serial-getty@" = lib.mkForce {}; ãã¡ã€ã¢ãŠã©ãŒã«ãšã€ã³ã¹ã¿ã³ã¹ã¡ã¿ããŒã¿ãµãŒãã¹ (IMDS) ã®å¶åŸ¡ ããã«ãã€ã³ããŠã³ãéä¿¡ã PostgreSQL ã«å¿
èŠãªããŒã 5432 ã®ã¿ã«å¶éãã ã€ã³ã¹ã¿ã³ã¹ã¡ã¿ããŒã¿ãµãŒãã¹ (IMDS) ãžã®ã¢ãŠãããŠã³ãã¢ã¯ã»ã¹ã kms-init ãµãŒãã¹ã«ã®ã¿èš±å¯ã§ããŸããEC2 ã€ã³ã¹ã¿ã³ã¹ã§å®è¡ããããµãŒãã¹ãæ°ããäžæç㪠AWS èªèšŒæ
å ±ãååŸããã«ã¯ãIMDS ãžã®ã¢ã¯ã»ã¹ãå¿
èŠã§ãã networking.firewall = { # Allow inbound PostgreSQL connections over mTLS allowedTCPPorts = [ 5432 ]; # IMDS access control - only kms-init user can reach IMDS extraCommands = " # Allow kms-init service to access IMDS for KMS operations ${pkgs.iptables}/bin/iptables -A OUTPUT -d 169.254.169.254 -m owner --uid-owner kms-init -j ACCEPT [...]"; }; èªã¿åãå°çšãã¡ã€ã«ã·ã¹ãã ã®æž¬å® ãšãã§ã¡ã©ã«ãªã«ãŒããã¡ã€ã«ã·ã¹ãã ( tmpfs ããã£ã¹ã¯ãæ°žç¶ã¹ãã¬ãŒãžã䜿çšããªã) ã / ã«é
眮ããŸãã "/" = { fsType = "tmpfs"; options = ["mode=0755"]; }; äžæ¹ãå®éã®ã¢ããªã±ãŒã·ã§ã³ããŒã¿ (äŸãã° postgres ãã€ããª) 㯠/dev/mapper/usr ã«æ ŒçŽããã /usr ã«èªã¿åãå°çšã§ããŠã³ããããŸãã "/usr" = { device = "/dev/mapper/usr"; # explicitly mount it read-only otherwise systemd-remount-fs will fail options = ["ro"]; fsType = config.image.repart.partitions.${partitionIds.store}.repartConfig.Format; }; ããã§æ³šæãå¿
èŠãªã®ã¯ã /dev/mapper/usr 㯠UKI ã«å«ãŸããªããšããç¹ã§ãããã®ãããNitroTPM ã®æž¬å®å€ (UKI ã®ãã«ãæã«ç®åºãã PCR å€) ã¯ã/dev/mapper/usr ã«ä¿åããããŒã¿ãšçŽæ¥çŽä»ããŠããŸããã ãã®ç¶æ
ã¯æãŸãããããŸãããæš©éã®ãªããŠãŒã¶ãŒããã®é åã«ã¢ã¯ã»ã¹ã§ããå ŽåãäŸãã° postgres ãã€ããªãæ¹ããããããã«ãã«çœ®ãæããããšã§ãããŒã¿ããŒã¹ã®æŽåæ§ãšæ©å¯æ§ãæãªãå¯èœæ§ãããããã§ãã ããŠã³ãããã /dev/mapper/usr ( /usr ã«ããŠã³ãããã nix store ãå«ã) ã®å
å®¹ãæ³å®ã©ããã§å€æŽãããŠããªãããšãæ€èšŒããããã Linux dm-verity ã䜿çšããŠãã®é åã PCR 枬å®å€ã«çŽä»ããŸã (å³ 1 ã®ã¹ããã 2 ãåç
§)ãAttestable AMI ã®ãã«ãæã«ã /dev/mapper/usr å
šäœã® ããŒã¯ã«ããªãŒ ãèšç®ãããã®ã«ãŒãããã·ã¥ãã«ãŒãã«ããŒããã©ã¡ãŒã¿ãšããŠæž¡ããŸãã ã«ãŒãã«ã³ãã³ãã©ã€ã³ã¯ãã«ãæã« UKI ã«åã蟌ãŸãããã€ããªå
šäœã察象ãšãã PCR4 ã®æž¬å®ç¯å²ã«å«ãŸããŸããã«ãŒãã«ã³ãã³ãã©ã€ã³ã«ã¯ systemd.verity_root_options=panic-on-corruption ãå«ãŸããŠããããã dm-verity ã /usr ããŒãã£ã·ã§ã³ã§ç Žæãæ€åºãããšãæ¹ãããããã³ãŒããå®è¡ãã代ããã«ã«ãŒãã«ãããã¯ãçºçããã€ã³ã¹ã¿ã³ã¹ãåèµ·åããŸãã ã»ãã¥ã¢ããŒãã®ããªãšãŒã·ã§ã³ ãŠãŒã¹ã±ãŒã¹ã«ãã£ãŠã¯ãAttestable AMI ã宿çã«åãã«ãããããç°ãªãã¢ããªã±ãŒã·ã§ã³ã® Attestable AMI ã«åãããªã·ãŒãé©çšãããããå¿
èŠããããŸããAMI ãžã®å€æŽã¯ PCR4 枬å®å€ã«åæ ããããããAWS KMS ããŒããªã·ãŒã PCR4 å€ã§å¶åŸ¡ãããšãAMI ã倿Žãããã³ã«ããŒããªã·ãŒãæŽæ°ããªããã°ãªããŸããããããéçšäžæãŸãããªãå Žåã¯ã代ããã«ã»ãã¥ã¢ããŒããæå¹ã«ãããã®çµæåŸããã PCR7 枬å®å€ã«ããªã·ãŒãçŽä»ããããšãã§ããŸãã PCR7 ã¯ã»ãã¥ã¢ããŒãã®ç¶æ
ãè¡šãæž¬å®å€ã§ãUKI ã®çœ²åè
ã®ã¢ã€ãã³ãã£ãã£ãå«ãŸããŸããã€ãŸããAttestable AMI ã®ãã«ãæã«ã»ãã¥ã¢ããŒããæå¹ã«ããäºåã«å®çŸ©ããããŒã§çœ²åããã°ãAWS KMS ãžã®ã¢ã¯ã»ã¹ã PCR7 枬å®å€ã®ã¿ã§å¶åŸ¡ã§ããŸã (ããªã·ãŒãã PCR4 ãš PCR12 ãé€å€)ãããã«ãããAttestable AMI ãšããããå®è¡ãã EC2 ã€ã³ã¹ã¿ã³ã¹ã®ããªãŒãå
šäœã 1 ã€ã®ããªã·ãŒã§ã«ããŒã§ããŸãã ããŒãæã®ä¿¡é Œãã§ãŒã³ 次ã«ãããŒãæã«ä¿¡é Œãã§ãŒã³ãã©ã®ããã«è©äŸ¡ãããããèŠãŠãããŸããããå³ 2 ã¯ãEC2 ã®ããŒãäžã« NitroTPMãAttestable AMIãAWS KMS ã®éã§ä¿¡é Œãã§ãŒã³ã確ç«ããããŸã§ã® 8 ã€ã®ã¹ãããã瀺ããŠããŸãã å³ 2: Amazon EC2 ã€ã³ã¹ã¿ã³ã¹æ§æèšŒæã®ããŒãæã®ä¿¡é Œãã§ãŒã³ãAttestable AMI å
ã® systemd ãµãŒãã¹ããããŒãæã«æå·åãããããŒã®ååŸã埩å·ãEBS ããªã¥ãŒã ã®ããã¯è§£é€ãããŠã³ããããŒã¿ããŒã¹ã®èµ·åã飿ºããŠå®è¡ããŸãã 0. UEFI ã«ãã UKI ã®æž¬å® : ããŒãæã« AWS Nitro ãã¡ãŒã ãŠã§ã¢ã ESP ãã UKI ãããŒãããNitroTPM ã® PCR ãæ¡åŒµããŸããå®è¡ããã UKI 㯠PCR4 ã«ãcmdline (ãã¹ãŠãŒã) 㯠PCR12 ã«ãã»ãã¥ã¢ããŒãã㌠(ãªãã·ã§ã³) 㯠PCR7 ã«åæ ãããŸãã 1. æ§æèšŒæã®ãªã¯ãšã¹ã : network-online ã«ãªããšãNitroTPM ãçºè¡ããæ§æèšŒæããã¥ã¡ã³ã (å®éã® PCR å€ãå«ã) ã kms-init ã«æž¡ãããŸãã 2. ãŠãŒã¶ãŒããŒã¿ã®ååŸ : kms-init ã ã€ã³ã¹ã¿ã³ã¹ã¡ã¿ããŒã¿ãµãŒãã¹ (IMDS) ã®ãŠãŒã¶ãŒããŒã¿ããæå·åãããããŒãèªã¿åããŸãã 3. AWS KMS ã§ã®åŸ©å· : kms-init ãã眲åãããæ§æèšŒæããã¥ã¡ã³ããšæå·æã AWS KMS ã«éä¿¡ããŸããAWS KMS ã¯å®éã®æž¬å®å€ãšåç
§æž¬å®å€ãæ¯èŒããäžèŽããå Žåã¯å¯Ÿç§°ã㌠( tmpfs ã«ã®ã¿ä¿æ) ãè¿ããŸãã 4. luks-unlock : 察称ããŒã䜿çšããŠãLinux ã® cryptsetup ã§ LUKS EBS ããªã¥ãŒã ã®ããã¯ãè§£é€ããæå·åãããããªã¥ãŒã ãèªã¿æžãã§ããããã«ããŸãã 5. cert-init (䞊å) : åãããŒã䜿çšããŠãPostgreSQL ã® Transport Layer Security (TLS) çšã®ãµãŒããŒèšŒææžãã³ãã«ã埩å·ããŸãã 6. data.mount : ã¹ããã 4 ã§ããã¯ãè§£é€ãã ext4 ããªã¥ãŒã ã /data ã«ããŠã³ãããŸããããã¯ã tmpfs (ãšãã§ã¡ã©ã«) 以å€ã§å¯äžã®æžã蟌ã¿å¯èœãªããªã¥ãŒã ã§ãã 7. postgresql : cert-init ãçšæãã TLS èšŒææžã䜿çšããŠèµ·åããŸãã dm-verity ã§ä¿è·ããã nix store ããå®è¡ããã /data/postgresql ã«å¯ŸããŠèªã¿æžããè¡ããŸãã ããŒãæã«åãããŒã TLS ãµãŒããŒã¢ã€ãã³ãã£ãã£ã«ãæŽ»çš æ¬¡ã«ãAWS KMS ã§ä¿è·ããã察称ããŒã䜿çšããŠãããŒãæã«æ©å¯æ
å ±ã管çããæ¹æ³ãèŠãŠãããŸãããã ããŒããã§ãŒã³ã§æäŸããã察称ããŒã¯æ±çšçãªãã®ã§ããããããžã§ãã³ã°æã«ãã®ããŒã§æå·åããã¢ãŒãã£ãã¡ã¯ãã§ããã°ãåãæ§æèšŒææžã¿ã®ããŒãã§åŸ©å·ã§ããŸãããªãã¡ã¬ã³ã¹å®è£
ã§ã¯ããã®ç¹æ§ãå©çšããŠãAMI ã®æž¬å®å€ã«çŽä»ãããã PostgreSQL çšã® TLS ãµãŒããŒã¢ã€ãã³ãã£ãã£ãããããžã§ãã³ã°ããŠããŸããèªèšŒå± (CA)ããµãŒããŒèšŒææžããµãŒããŒã®ãã©ã€ããŒãããŒã tarball ã«ãŸãšããåã察称ããŒã§æå·åããããã§ãããŒã¿ããŒã¹ã®æå·æãšãšãã« EC2 ãŠãŒã¶ãŒããŒã¿ã«åã蟌ã¿ãŸãã cert-init.service ã¯ãAttestable AMI å
ã§ãã®ãã³ãã«ã tmpfs ãã£ã¬ã¯ããªã«åŸ©å·ããŸããPostgreSQL 㯠clientcert=verify-full ã匷å¶ããç¶æ
ã§ããŒã 5432 ã§æ¥ç¶ãåãä»ããåã CA ã«ãã£ãŠçœ²åãããèšŒææžãæã€ã¯ã©ã€ã¢ã³ããšã®éã§çžäº TLS ã確ç«ããŸãã ãªãã¡ã¬ã³ã¹å®è£
ã®ãã«ããšããã〠ãªãã¡ã¬ã³ã¹å®è£
ã¯ããã®ãŸãŸãšã³ãããŒãšã³ãã§å®è¡ã§ããŸãã --secure-boot ã --debug ãªã©ãå©çšå¯èœãªãããã€ãªãã·ã§ã³ã®è©³çްã«ã€ããŠã¯ Readme ãåç
§ããŠãã ããã ãªããžããªãã¯ããŒã³ãããã®ãã£ã¬ã¯ããªã«ç§»åããŸãã git clone https://github.com/aws/nitrotpm-attestation-samples && cd nitrotpm-attestation-samples åå㪠IAM æš©éãããããšã確èªããŸããå¿
èŠãªæš©éã¯ã Readme ã®ã Minimal IAM Privileges ãã»ã¯ã·ã§ã³ã«èšèŒãããŠããŸãã ãªããžããªå
ã§æ¬¡ã®ã³ãã³ããå®è¡ããŸããAWS ãªãœãŒã¹ãããããžã§ãã³ã°ãããã»ãã¥ã¢ããŒããš secrets-manager ã䜿çšããŠãæ§æèšŒææžã¿ã® LUKS æå·åããªã¥ãŒã äžã§ PostgreSQL ãå®è¡ãã EC2 ã€ã³ã¹ã¿ã³ã¹ãèµ·åããŸãã cd nix/examples/postgres-kms ./scripts/e2e-test.sh --secure-boot --secrets-manager --authorize-my-ip --create-roles --no-cleanup ã¯ãªãŒã³ã¢ãã ãã®äŸã§äœæãããã¹ãŠã® AWS ãªãœãŒã¹ãåé€ããã«ã¯ã次ã®ã³ãã³ããå®è¡ããŸãã ./scripts/clean.sh ãŸãšã ãã®èšäºã§ã¯ãAmazon EC2 ã€ã³ã¹ã¿ã³ã¹æ§æèšŒæã䜿çšããŠããŒããªãã¬ãŒã¿ãŒã¢ã¯ã»ã¹ãå®çŸãã PostgreSQL çšã® Attestable AMI ãåçŸå¯èœãªåœ¢ã§ãã«ãããããã»ã¹ã«ã€ããŠèª¬æããŸããããŸããNitroTPM ããŒã¹ã®ããŒãæ€èšŒããã»ã¹ãšãããŒãã«æåããåŸã«æå·åããã EBS ããªã¥ãŒã ãããŠã³ãããæ¹æ³ã«ã€ããŠã詳ãã解説ããŸãããããã«ãPCR 枬å®å€ã䜿çšã㊠AMI ãžã®å€æŽãæ€åºããEC2 ã€ã³ã¹ã¿ã³ã¹ã®ããŒãã黿¢ãããšãšãã«ãæ¹ãããããã³ãŒãã AWS KMS ã§ã®åŸ©å·ã«å¿
èŠãªæš©éãååŸã§ããªãããã«ããæ¹æ³ã玹ä»ããŸããã ãã£ãã nitrotpm-attestation-samples ãªããžããªãã¯ããŒã³ããããŒãºã«åãããŠãã³ãã¬ãŒããã«ã¹ã¿ãã€ãºããŠãAttestable AMI ã«ããããŒã¿ä¿è·ãå§ããŸããã! èè
ã«ã€ã㊠David-Paul Dornseifer David-Paul 㯠AWS ã® Confidential Compute and Systems Architect ã§ããããžã¿ã«è³ç£ã®ã«ã¹ããã£ãã³ã³ãã£ãã³ã·ã£ã«æšè«ãäœã¬ã€ãã³ã·ãŒã®ååŒã€ã³ãã©ã¹ãã©ã¯ãã£ãå°éãšããŠããŸãã Ben Liderman Ben æ°ã¯ Fireblocks ã®ã·ã¹ãã ã¢ãŒããã¯ãã§ããã³ã³ãã£ãã³ã·ã£ã«ã³ã³ãã¥ãŒãã£ã³ã°ã掻çšããŠé«äŸ¡å€ãªããžã¿ã«è³ç£ã®éçšãä¿è·ãããã»ãã¥ã¢ãªéèã€ã³ãã©ã¹ãã©ã¯ãã£ã®èšèšã«æºãã£ãŠããŸãã æ¬ããã°ã¯ Security Solutions Architect ã® äžå³¶ ç« å ã翻蚳ããŸããã
æ¬ããã°ã¯ 2026 幎 10 æ 12 æ¥ã«å
¬éããã AWS Blog â Quantum-resistant signing on AWS, Part 2: Enforce your ML-DSA algorithm policy with SCPs and IAM â ã翻蚳ãããã®ã§ãã ãã®èšäºã§ã¯ãæå·ã¢ã«ãŽãªãºã ããªã·ãŒãèšå®ãã Amazon Web Services (AWS) ç°å¢ã§ããªã·ãŒã«æºæ ããªãéžæãé²ãæ¹æ³ã玹ä»ããŸãããã¹ãéåæå·ãå°å
¥ããéã«æåã«çŽé¢ããå€æã® 1 ã€ã¯ãã©ã®ã¢ã«ãŽãªãºã ãšãã©ã¡ãŒã¿ã»ãããããžãã¹ããŒãºã«åãããšããéžæã§ãããã®éžæã§ã¯ãã»ãã¥ãªãã£ãšã眲åãµã€ãºãããŒãµã€ãºãããã©ãŒãã³ã¹ãšã®ãã©ã³ã¹ãåãå¿
èŠããããŸããã¯ã©ãŠãç°å¢ã®åœ¹å²ã¯ããã®å€æãããªã·ãŒãšããŠè¡šçŸããäžè²«ããŠé©çšã§ããããã«ããããšã§ããããã«ãããæ¿èªãããéžæè¢ã¯åŒãç¶ãåé¡ãªã䜿çšã§ããé€å€ãããéžæè¢ã¯å°å
¥ã§ããªããªããŸãããã®èšäºã§ã¯ãAWS ã§ã®å
·äœçãªäŸã 1 ã€åãäžããçµç¹ã®æå·ã¢ã«ãŽãªãºã ããªã·ãŒãäºé²çã³ã³ãããŒã«ãšçºèŠçã³ã³ãããŒã«ã«å€æããæ¹æ³ã説æããŸããçŸåšã®æ¿èªæžã¿ã»ãããã©ã®ãããªãã®ã§ãããŸãæšæºã®é²åã«äŒŽã£ãŠãããã©ãå€ãã£ãŠããåããã¿ãŒã³ãé©çšã§ããŸãã ãã®èšäºã¯ãAWS ã«ãããèéå眲åã«é¢ãã 2 éšæ§æã®ã·ãªãŒãºã®ããŒã 2 ã§ããããŒã 1 ã®ã ML-DSA ã«ãããœãããŠã§ã¢ãµãã©ã€ãã§ãŒã³ã®æ§ç¯ ãã¯ãã«ããŒåãã®èšäºã§ããã€ããªãã³ã³ããã€ã¡ãŒãžããœãããŠã§ã¢éšå衚ã察象ãšãããšã³ãããŒãšã³ãã® ML-DSA 眲åãã€ãã©ã€ã³ãæ§ç¯ããŸããããŒã 2 ãšãªããã®èšäºã¯ããã®ãã€ãã©ã€ã³ãã¯ããçµç¹å
ã®ãããããã®ã䜿çšããŠããã¢ã«ãŽãªãºã ãæ±ºå®ãããã®æ±ºå®ã確å®ã«é©çšããå¿
èŠãããã»ãã¥ãªãã£ãã¬ããã³ã¹ãã³ã³ãã©ã€ã¢ã³ã¹ã®åããŒã ã察象ãšããŠããŸãã AWS Key Management Service (AWS KMS) ã¯ãML-DSA-44ãML-DSA-65ãML-DSA-87 ã® 3 ã€ã®ãã©ã¡ãŒã¿ã»ããã§ ML-DSA ããžã¿ã«çœ²åæ¹åŒ (FIPS 204) ããµããŒãããŠããããããã NIST ã»ãã¥ãªãã£ã«ããŽãª 2ã3ã5 ã察象ãšããŠããŸãã3 ã€ãšã匷åã§æšæºåãããéžæè¢ã§ããããããã眲åãµã€ãºãããŒãµã€ãºãé床ãšãã»ãã¥ãªãã£ããŒãžã³ãšã®éã«ãã¬ãŒããªãããããŸããã»ãã¥ãªãã£ããŒãžã³ãšã¯ãç®æšãšããã»ãã¥ãªãã£ã«ããŽãªã«å¯ŸããŠããã©ã¡ãŒã¿ã»ãããäœåãšããŠåããŠããæå·åŒ·åºŠã®ããšã§ããML-DSA-44 ã¯æãã³ã³ãã¯ãã§é«éã§ããML-DSA-65 ãš ML-DSA-87 ã¯ãã倧ããªã»ãã¥ãªãã£ããŒãžã³ãåããŠãããããé·æéã«ããã£ãŠä¿¡é Œæ§ãä¿ã€å¿
èŠããã眲åã«é©ããŠããŸãã ãã®èšäºã§ã¯ãå
šäœãéããŠåãããªã·ãŒäŸã䜿çšããŸããML-DSA-65 ãš ML-DSA-87 ãæšæºãšããŠæ¡çšããML-DSA-44 ãæ¿èªæžã¿ã»ããããé€å€ãããçµç¹ã®äŸã§ããããã¯æšæºåã«é¢ãã倿ã§ãããML-DSA-44 ãå®å
šã§ãªããšãã倿ã§ã¯ãããŸãã (æ¬¡ã®æ³šãåç
§)ã以éã®ã³ã³ãããŒã«ã§ ML-DSA-44 ãç»å Žããç®æã¯ãèªçµç¹ã®ããªã·ãŒã«å«ãŸããªãããªã¢ã³ããšèªã¿æ¿ããŠãã ãããã©ã®ãããªèš±å¯/æåŠã®åºåãéžæããŠããä»çµã¿ã¯åãã§ããããã§ã®æ¿èªæžã¿ã»ããã¯ã ããŒã 1 ã®ã¢ãŒããã¯ãã£ã§ãããã€ãããã®ãšåãã§ãã«ãŒãèªèšŒå± (CA) ã«ã¯ ML-DSA-87ãäžäœ CA ãšã³ãŒã眲åããŒã«ã¯ ML-DSA-65 ã䜿çšããŸããããŒã 1 ã§éžæãè¡ãããã®èšäºã§ãã®éžæã確å®ã«å®ãããä»çµã¿ãäœããŸãã æ³š : ML-DSA-44 ã¯æå¹ãªéžæè¢ã§ããML-DSA-44 㯠NIST ã«ãã£ãŠå®å
šã«æšæºåããããã©ã¡ãŒã¿ã»ãã (FIPS 204) ã§ãNIST ã»ãã¥ãªãã£ã«ããŽãª 2 ã«è©²åœãããããã 128 ãããã¯ã©ã¹ã®å€å
žçã»ãã¥ãªãã£ãç®æšãšããŠããŸã (ã«ããŽãª 2 㯠SHA-256 ã®è¡çªèæ§ãåºæºãšããŠããŸã)ã3 ã€ã®ããªã¢ã³ãã®äžã§çœ²åãšãããªãã¯ããŒãæãå°ãã (ãããªãã¯ããŒã¯ 1,312 ãã€ãã眲å㯠2,420 ãã€ã)ã眲åãšæ€èšŒãæãé«éã§ãããã®ããããªãœãŒã¹ãéãããããã€ã¹ã倧éã®çœ²ååŠçã垯åå¹
ãã¹ãã¬ãŒãžã®å¶çŽãå³ããã¯ãŒã¯ããŒãã«é©ããŠããŸããML-DSA-65 ã ML-DSA-87 ãéžæããã®ã¯ãé·æéã«ããã£ãŠä¿¡é Œæ§ãä¿ã€å¿
èŠããã眲åã®ããã«ã»ãã¥ãªãã£ããŒãžã³ãäžä¹ããããå Žåãã瀟å
æšæºã«åããããå Žåã§ãããML-DSA-44 ãè匱ã ããã§ã¯ãããŸããã ç®æãç¶æ
æ¿èªæžã¿ã®ããªã¢ã³ã (ãã®äŸã§ã¯ ML-DSA-65 ãš ML-DSA-87) ã¯ãåžžã«åé¡ãªã䜿çšã§ããç¶æ
ãä¿ã¡ãŸããæé€ãããã®ã¯ãããªã·ãŒå€ã®ããªã¢ã³ã (ããã§ã¯ ML-DSA-44) ã®å°å
¥ã§ããå
·äœçã«ã¯ã察象ç¯å²å
ã® AWS ãµãŒãã¹ã«ãããŠãããªã³ã·ãã«ãæ¬¡ã®æäœãå®è¡ã§ããªãããã«ããŸãã ML-DSA-44 ã®ããŒãããªã¢ã«ãäœæãã æ¢åã® ML-DSA-44 ããŒã眲åãŸãã¯æ€èšŒã«äœ¿çšãã ML-DSA-44 ãæã¡èŸŒãããšã«ãªããã©ã€ããŒãèªèšŒå± (CA) ãç«ã¡äžãã ãŸãããããã®èšå®ããã®ããªããã¯ãã¹ãŠæ€åºã§ããããã«ããŸãã 察象ç¯å²ãšå¶éäºé
ãããã®ã³ã³ãããŒã«ã¯ AWS ãµãŒãã¹ã® API ã«å¯ŸããŠæ©èœããäž»ãªå¯Ÿè±¡ã¯ AWS KMSã AWS Private Certificate Authorit y (AWS Private CA) ã AWS Certificate Manager (ACM) ã§ããã客æ§ã管çããã³ã³ãã¥ãŒãã£ã³ã°ãªãœãŒã¹äžã§å®è¡ãããæå·åŠçã¯å¯Ÿè±¡å€ã§ãããçµ±å¶ããããšãã§ããŸãããäŸãã°ã Amazon Elastic Compute Cloud (Amazon EC2) ã€ã³ã¹ã¿ã³ã¹ãã³ã³ããã AWS Lambda 颿°äžã§ãOpenSSL ãã¢ããªã±ãŒã·ã§ã³ã ML-DSA-44 眲åãå®è¡ããå Žåã該åœããŸãããŸããOpenSSH ã®ãã€ããªãã ssh-mldsa44-ed25519 å
¬ééµèªèšŒãªã©ã®ãããã³ã«ã¬ãã«ã§ã®äœ¿çšãã ãµãŒãã¹ã³ã³ãããŒã«ããªã·ãŒ (SCP) ã AWS Identity and Access Management (IAM) ã§ã¯å¶åŸ¡ã§ããªãããããã®èšäºã§ã¯åãäžããŸããã acm:ImportCertificate ã iam:UploadServerCertificate ã§åã蟌ãŸããèšŒææžãããªã¢ã«ããã¢ã«ãŽãªãºã ãèæ
®ããå¶åŸ¡ãã§ããŸãã (Private CA ã®ã»ã¯ã·ã§ã³ãåç
§)ããã®ä»ã® TLS çµç«¯ãµãŒãã¹ã眲åãµãŒãã¹ (äŸãã° Amazon CloudFront ã Amazon API Gateway ) ãš AWS IAM Roles Anywhere ã¯ãã®èšäºã®å¯Ÿè±¡å€ã®ãããå¥éè©äŸ¡ããŠãã ãã (ãã®ã·ãªãŒãºã® ããŒã 1 ã§ã¯ ML-DSA èšŒææžãšå
±ã« IAM Roles Anywhere ã䜿çšããŠããŸããããã®ãµãŒãã¹ã®ã³ã³ãããŒã«ã¯ããã§ã¯æ±ããŸãã)ã ãããã®ã³ã³ãããŒã«ã¯ã å€å±€é²åŸ¡ ãšããŠé©çšããããšãæ³å®ããŠããŸããã©ã®çšåºŠå³æ Œã«çµ±å¶ããããã«å¿ããŠããã¹ãŠãé©çšããããšããäžéšã ããé©çšããããšãã§ããŸãã çµç¹ã«ãŒãã«å
æ¬ç㪠SCP ãé©çšãããšãã¡ã³ããŒã¢ã«ãŠã³ãã§ ML-DSA-44 ããŒãäœæãŸãã¯äœ¿çšã§ããªããªããŸã (SCP ã¯ç®¡çã¢ã«ãŠã³ãã«ã¯é©çšãããªãããã管çã¢ã«ãŠã³ãã®ã¯ãŒã¯ããŒãã¯å¶éãããŸãã)ã æ¬çªçšã®çµç¹åäœ (OU) ã« SCP ãé©çšãããšãæ¬çªã¢ã«ãŠã³ãã§ã®ã¿ããŒãå¶éãããŸãã ã¢ã«ãŠã³ãå
ã§æè»æ§ãå¿
èŠãªå Žåã¯ãSCP ã§ã¢ã«ãŠã³ãå
šäœã«èšå®ã匷å¶ããã®ã§ã¯ãªããIAM ã®ã¢ã¯ã»ã¹èš±å¯ã®å¢çã䜿çšããŸãã éçšã¢ãã«ã«åã£ãçµã¿åãããéžæããŠãã ãããããã§ç€ºãããªã·ãŒäŸã¯ããã¹ãŠã® AWS ãªãŒãžã§ã³ã«é©çšãããããã«èšè¿°ããŠããŸããç¹å®ã®ãªãŒãžã§ã³ã ãã察象ã«ããå¿
èŠãããå Žåã¯ã aws:RequestedRegion æ¡ä»¶ã远å ããŠãã ããã ãã®èšäºã§ç޹ä»ããããªã·ãŒã¯ãåºçºç¹ãšããŠç€ºãäŸã§ããã客æ§ã®ç°å¢ã«åããã SCPãIAM ããªã·ãŒãã¢ã¯ã»ã¹èš±å¯ã®å¢çã®äœæãæ€èšŒãä¿å®ã¯ãã客æ§ã®è²¬ä»»ã§è¡ã£ãŠãã ããããããã€åã«éæ¬çªç°å¢ã§ãã¹ãŠã®ããªã·ãŒããã¹ãããçµç¹ã®æ¿èªæžã¿æšæºã«åãããŠäŸã®å€ (ããªã·ãŒåãããŒã® Amazon ãªãœãŒã¹ããŒã (ARN) ãªã©) ã調æŽããŠãã ããã æå·ã¢ãžãªãã£ã«é¢ããæ³šæç¹ ã¢ã«ãŽãªãºã ããªã·ãŒã¯æ°žä¹
ã«åºå®ããããã®ã§ã¯ãªãããããã®ã³ã³ãããŒã«ãåæ§ã§ããããªã·ãŒã AWS ã®ã³ã³ãããŒã«ãšããŠè¡šçŸããæçŸ©ã¯ãããŒãºãé¢é£ããæšæºã®å€åã«å¿ããŠãã¢ãŒããã¯ãã£ãåèšèšããããšãªãããªã·ãŒãä¿®æ£ã§ããç¹ã«ãããŸããæ¿èªæžã¿ã»ããã峿 Œåããããšããç·©åããããšããå
¥ãæ¿ããããšãã§ããŸããããã§ç€ºãäŸã¯ãçŸåšã®ããªã·ãŒã«åãããŠèª¿æŽãããã³ãã¬ãŒããšããŠæ±ã£ãŠãã ããã ç¹å®ã®ã¢ã«ãŽãªãºã ãæå®ããŠæåŠããã³ã³ãããŒã«ã¯ãäºå®äžãæå®ããŠããªããã®ããã¹ãŠèš±å¯ããèš±å¯ãªã¹ããšããŠæ©èœããŸããããã§åé¡ãšãªãã®ãããã©ã«ãèš±å¯ã§ããæç€ºçã«æåŠããŠããªããã©ã¡ãŒã¿ã»ããã¯ãã¹ãŠèš±å¯ãããããããŸã è©äŸ¡ããŠããªããã®ãå«ããæ°ãã«å°å
¥ãããããªã¢ã³ãã¯ãæ°ä»ããŠæåŠãªã¹ãã«è¿œå ãããŸã§äœ¿çšã§ããŠããŸããŸããäžæ¹ãæ¿èªæžã¿ã®ããªã¢ã³ããéæšå¥šã«ããå Žåã¯ããã®ããªã¢ã³ããæåŠãªã¹ãã«è¿œå ããã ããªã®ã§ããã®ã¢ãã«ã§ç°¡åã«å¯Ÿå¿ã§ããŸãããã®ã¢ãã«ã ãã§ã¯ãšãããããªãã®ã¯ãæ°ããããªã¢ã³ãã®ç»å Žã§ãããããã®ã³ã³ãããŒã«ã宿çã«èŠçŽããæåŠãªã¹ããšæ€åºãçµã¿åãããããšã§ãããªã·ãŒå€ã®ããªã¢ã³ããå¶ç¶èŠã€ãããŸã§æŸçœ®ãããããã«ææ¡ã§ããããã«ããŠãã ããã ãã 1 ã€ã®æ¹æ³ã¯ãé€å€å¯Ÿè±¡ã§ã¯ãªãæ¿èªæžã¿ã»ãããåºæºã«æ¡ä»¶ãèšè¿°ããããšã§ãã Deny ã¹ããŒãã¡ã³ãã§ StringNotEquals ãšæ¿èªæžã¿ããŒä»æ§ã®ãªã¹ãã䜿çšãããšããªã¯ãšã¹ãã®ããŒä»æ§ããã®ãããã«ãäžèŽããªãå Žåã«æåŠãçºåããŸãããã®ãããæ°ããããªã¢ã³ãããŸã è©äŸ¡ããŠããªãããªã¢ã³ãã¯ããªã¹ãã«è¿œå ãããŸã§ããã©ã«ãã§ãããã¯ãããŸãããã®æ¹æ³ã§ã¯ããã©ã«ãèš±å¯ã®åé¡ã¯è§£æ¶ãããŸãããæ°ãã«æ¿èªããããªã¢ã³ãã䜿ããããã«ããã«ã¯ãå
ã«ããªã·ãŒãæŽæ°ããå¿
èŠããããŸãããã®ã·ãªãŒãºã® ããŒã 1 ã§ç޹ä»ãããã¡ããªãŒã¬ãã«ã® SCP ã¯ãã®åœ¢åŒã§ãããŒä»æ§ã ML_DSA_* ã§ã¯ãªã眲åããŒã®äœæããã¹ãŠæåŠããŸãããã®èšäºã®äŸã¯ããäžæ¹ã®åœ¢åŒãæ¡çšããé€å€ããããªã¢ã³ããæå®ããŠãããããæ¿èªæžã¿ããªã¢ã³ãã¯ããªã·ãŒã倿ŽããªããŠãåŒãç¶ã䜿çšã§ããŸããã©ã¡ããæå¹ãªæ¹æ³ã§ããæ°ãããã®ããŸããããã¯ããŠåŸããæ¿èªãããã®ãããŸãæ€ç¥ããŠãããã®æç¹ã§å€æãããã®ãã«å¿ããŠéžæããŠãã ããã { "Sid": "OnlyApprovedMlDsaVariants", "Effect": "Deny", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringLike": { "kms:KeySpec": "ML_DSA_*" }, "StringNotEquals": { "kms:KeySpec": ["ML_DSA_65", "ML_DSA_87"] } } } StringLike å¥ã¯ãã¹ããŒãã¡ã³ãã®å¯Ÿè±¡ã ML-DSA ã®ããŒä»æ§ã«éå®ããä»ã®ããŒã¿ã€ãã«åœ±é¿ããªãããã«ããŸãã StringNotEquals å¥ã¯ãæ¿èªæžã¿ãªã¹ãã«ãªã ML-DSA ããªã¢ã³ãããã¹ãŠæåŠããŸãã ã¢ã«ãŽãªãºã ãããŒãµã€ãºãæéãšãšãã«è¿œå ãããããæ¿èªæžã¿ããæªæ¿èªã«å€ãã£ããããã®ãšåæ§ã«ãAWS ãµãŒãã¹ã®ãªãã¬ãŒã·ã§ã³ãå€åããŸããçŸåš ML-DSA-44 ããŒã䜿çšã§ãããªãã¬ãŒã·ã§ã³ (AWS KMS ã® Sign ã Verify ã GetPublicKey ) ã¯çŸæç¹ã®ãµãŒãã¹æ©èœã«åºã¥ããã®ã§ãããAWS ãæ°æ©èœããªãªãŒã¹ããã«ã€ããŠå¢ããå¯èœæ§ããããŸããäœæã ãã§ãªã䜿çšããããã¯ããæ¹éã®å Žåã¯ããµãŒãã¹ã®é²åã«åãããŠãå¶é察象ã®ãªãã¬ãŒã·ã§ã³ã®ãªã¹ãã宿çã«èŠçŽããŠãã ããã èæ¯: ããŒä»æ§ãšçœ²åã¢ã«ãŽãªãºã ã®æ¯èŒ AWS KMS ã® ML-DSA ãµããŒãã§ã¯ã3 ã€ã®ããŒä»æ§ ( ML_DSA_44 ã ML_DSA_65 ã ML_DSA_87 ) ãå°å
¥ãããŠããŸãããããããåããã¹ãéå眲åã¢ã«ãŽãªãºã ML_DSA_SHAKE_256 ã䜿çšããŸãããã®éãã«ãã£ãŠãã©ã®ã³ã³ãããŒã«ãæå¹ããæ±ºãŸããŸãã kms:KeySpec : ããŒã® KeySpec ããããã£ãåæ ããŸãããã®æ¡ä»¶ããŒã¯ã CreateKey (ãªã¯ãšã¹ããããããŒä»æ§) ãšãç¹å®ã®ããŒã«å¯ŸããŠå®è¡ããã AWS KMS ããŒãªãœãŒã¹ãªãã¬ãŒã·ã§ã³ ( Sign ã Verify ã GetPublicKey ãªã©) ã®äž¡æ¹ã§è©äŸ¡ãããŸãããã®ããã kms:KeySpec 㯠ML_DSA_44 ã ML_DSA_65 ã ML_DSA_87 ãšåºå¥ã§ããML-DSA-44 ããŒã®äœæã®é²æ¢ãšæ¢åããŒã®äœ¿çšã®å¶éã®äž¡æ¹ã§ä¿¡é Œã§ããææ®µãšãªããŸãã kms:SigningAlgorithm : Sign ãš Verify ã§æå®ããã眲åã¢ã«ãŽãªãºã ãåæ ããŸãããã®å€ã¯ 3 ã€ã®ããªã¢ã³ããã¹ãŠã§ ML_DSA_SHAKE_256 ã§ãããã®ãããML-DSA-44 ãæ¿èªæžã¿ããªã¢ã³ããšåºå¥ã§ããããã®ç®çã«ã¯äœ¿çšã§ããŸããã å®åäžã®çµè«ãšããŠãAWS KMS ã§ä¿æããããŒã«ã€ããŠã¯ãML-DSA-44 ããŒãããªã¢ã«ã®äœæã鲿¢ããããšããåç¬ã®ã³ã³ãããŒã«ãšããŠæãå
ç¢ã§ããML-DSA-44 ã® KMS ããŒãååšããªããã°ãAWS KMS ãéãã眲åã«äœ¿ãããããšããèšŒææžã®ãµããžã§ã¯ãããŒã«ãªãããšããããŸããããªããCA ã®ããŒãš TLS ãµãŒããŒããŒã¯å¥ã®ãããªã¢ã«ã§ããAWS Private CA 㯠CA ã®ããŒãã¢ãç¬èªã® HSM ã§çæããŠä¿æããACM ãçºè¡ãã TLS èšŒææžããã€ã³ããŒããŸãã¯ã¢ããããŒãããã TLS èšŒææžã¯ãããããç¬èªã®ããŒãæã¡ãŸãããã®ããããããã¯åŸè¿°ãã AWS Private CA ãšèšŒææžã®ã³ã³ãããŒã«ã§ç®¡çããŸããML-DSA-44 ã® KMS ããŒãæ¢ã«ååšããå Žåã¯ã kms:KeySpec ã䜿çšããŠãã®äœ¿çšãããã«å¶éã§ããŸãã SCP ã䜿çšããçµç¹ã¬ãã«ããã³ã¢ã«ãŠã³ãã¬ãã«ã®ããã㯠ML-DSA-44 ãå¶éããããã«ãSCP ãçµç¹ã«ãŒããŸãã¯ç¹å®ã® OU ã«é©çšã§ããŸããé©çšç¯å²ã¯ SCP ãã©ãã«é
眮ãããã§æ±ºãŸããŸããã«ãŒãã«ã¢ã¿ãããããšçµç¹å
šäœã«ãOU ã«ã¢ã¿ãããããšãã® OU å
ã®ã¢ã«ãŠã³ãã«é©çšãããŸããSCP ã¯ãå©çšã§ããäºé²çã³ã³ãããŒã«ã®äžã§æãé©çšç¯å²ã®åºããã®ã§ãã ãªããSCP ã¯ã¡ã³ããŒã¢ã«ãŠã³ããš OU ã«ã¯é©çšãããŸãããçµç¹ã®ç®¡çã¢ã«ãŠã³ãã«ã¯ é©çšãããŸãã ãSCP ã«ããå¶éãåã°ãªããããML-DSA-44 ã䜿çšã§ããã¯ãŒã¯ããŒãã管çã¢ã«ãŠã³ãã§å®è¡ããªãããã«ããŠãã ããã æ¬¡ã® SCP ã®äŸã§ã¯ãML-DSA-44 ããŒã®äœæ ( kms:CreateKey ) ãšäœ¿çš ( kms:Sign ã kms:Verify ã kms:GetPublicKey ) ã®äž¡æ¹ãã ML_DSA_44 ããŒä»æ§ãšã®äžèŽãæ¡ä»¶ã«æåŠããŸããäœæã®æåŠã¯æ°ããããŒã®äœæãé²ããŸãã䜿çšã®æåŠã¯æ¢åã®ããŒã察象ãšããSCP ã®ã¢ã¿ããåã«äœæãããããŒããåŸãã OU ã«åå ããã¢ã«ãŠã³ãã«ååšããããŒã«ãé©çšãããŸããããã¯ã kms:KeySpec ããããã®äœ¿çšãªãã¬ãŒã·ã§ã³ã§ããªã¯ãšã¹ãæã«è©äŸ¡ãããããã§ããSCP ã¯ã¬ãŒãã¬ãŒã«ã§ããSCP å
ã® Deny ã¯ãã¡ã³ããŒã¢ã«ãŠã³ãå
ã®ã©ã® IAM ããªã·ãŒã§ãäžæžãã§ããŸããã æ¬¡ã® SCP ãçµç¹ã«ãŒã (ãŸãã¯è©²åœãã OU) ã«ã¢ã¿ããããŸãã { "Version": "2012-10-17", "Statement": [ { "Sid": "DenyMLDSA44KeyCreation", "Effect": "Deny", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeySpec": "ML_DSA_44" } } }, { "Sid": "DenyMLDSA44KeyUsage", "Effect": "Deny", "Action": [ "kms:Sign", "kms:Verify", "kms:GetPublicKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:KeySpec": "ML_DSA_44" } } } ] } 䜿çšã®æåŠã¯ãããŒä»æ§ãè©äŸ¡ãã 3 ã€ã®ã¢ã¯ã·ã§ã³ã«éå®ããŸãã 䜿çšãæåŠãã Deny ã®å¯Ÿè±¡ã¯ã kms:Sign ã kms:Verify ã kms:GetPublicKey ã«éå®ããŠãã ãã (ãã¹ãã«ããã kms:KeySpec ã 3 ã€ãã¹ãŠã§è©äŸ¡ãããããšã確èªããŠããŸã)ãå
æ¬ç㪠kms:* ã¯é¿ããŠãã ããããã®ã¯ã€ã«ãã«ãŒãã¯ã DescribeKey ã DisableKey ã ScheduleKeyDeletion ãªã©ã®ç®¡çãªãã¬ãŒã·ã§ã³ãŸã§å¯Ÿè±¡ã«ããŠããŸããŸãããããã¯å¯Ÿè±¡ã®ããŒã調æ»ãããã¯ãªãŒã³ã¢ãããããããããã«å¿
èŠãªãªãã¬ãŒã·ã§ã³ã§ãããæåŠãããšãåé€ããããšããŠããããŒã管çã§ããªããªã£ãŠããŸããŸãããã«ããªãŒãžã§ã³ããŒã䜿çšããå Žåã¯ãäœæã®æåŠã« kms:ReplicateKey ã远å ããŠãã ãããML-DSA-44 ã®ãã©ã€ããªããŒãã¬ããªã±ãŒããããšå¥ã®ãªãŒãžã§ã³ã«æ°ãã ML-DSA-44 ããŒãäœæããã kms:KeySpec 㯠ReplicateKey ã§ãè©äŸ¡ãããããã§ãã ãã¡ããªãŒã¬ãã«ã®ã¬ãŒãã¬ãŒã«ãšã®çµã¿åããããã® SCP ã¯ã©ã® ML-DSA ãã©ã¡ãŒã¿ã»ãããèš±å¯ããããå¶åŸ¡ãããã®ã§ãRSA ã ECDSA ã«ã€ããŠã¯äœãèŠå®ããŸããããã®ã·ãªãŒãºã® ããŒã 1 ã§ã¯ãããŒä»æ§ã ML-DSA ã§ã¯ãªã眲åããŒã®äœæããã¹ãŠæåŠããè£å®ç㪠SCP ã玹ä»ããŠããŸããäž¡æ¹ã䜵ããŠã¢ã¿ãããããšãæ°ãã眲åããŒã¯ãã¹ãŠ ML-DSA ã§ããããã€æ¿èªæžã¿ããªã¢ã³ãã§ãªããã°ãªããªããªããŸãã éçšäžã®èæ
®äºé
ã çµç¹ã«ãŒãã§ã®å
æ¬ç㪠Deny ã¯æã匷åãªã³ã³ãããŒã«ã§ããããã¬ãŒããªãããããŸãã察象ç¯å²å
ã®ã©ãã§ã ML-DSA-44 ããŒãäœæã§ããªããªããäŸå€ãèšããææ®µããªããããæ£åœãªãã¹ãããããã¯ãããããML-DSA-44 ããŒã®äœæã詊ã¿ã Infrastructure as Code (IaC) ããã€ãã©ã€ã³ã®å®è¡ã倱æãããããå¯èœæ§ããããŸããæè»æ§ãæ®ãããå Žåã¯ã Deny ã®å¯Ÿè±¡ãæ¬çª OU ã«éå®ãããã«ãã¢ã«ãŠã³ãã鿬çªã¢ã«ãŠã³ãã§ã¯ IAM ã®ã¢ã¯ã»ã¹èš±å¯ã®å¢ç (次ã®ã»ã¯ã·ã§ã³ãåç
§) ã䜿çšããããšãæ€èšããŠãã ããã åŒã³åºãå
ã«è¡šç€ºãããå
容ã SCP ã«ãã£ãŠãªã¯ãšã¹ããæåŠããããšãåŒã³åºãå
ã¯ãµãŒãã¹ã³ã³ãããŒã«ããªã·ãŒã«ããæç€ºçãªæåŠã瀺ã AccessDenied ãšã©ãŒãåãåããŸããåãã¢ã«ãŠã³ãå
ãåãçµç¹å
ããã®ãªã¯ãšã¹ãã§ããã°ããšã©ãŒã«ã¯æåŠããããªã·ãŒã®ã¿ã€ããå«ãŸããŸãããŸããæ¡åŒµãšã©ãŒã¡ãã»ãŒãžãåãµãŒãã¹ã«é 次å±éãããã«ã€ããŠããã®ããªã·ãŒã® ARN ãå«ãŸããããã«ãªããŸãããšã©ãŒã«ã¯ SCP ã®ããªã·ãŒå
容ã¯è¡šç€ºãããããããã¯ããããŠãŒã¶ãŒã¯èªåã®ç°å¢ã«é©çšãããŠãã SCP ã確èªã§ããªãããšããããããŸãããµããŒãããŒã ã AccessDenied ã®åå ããã°ããç¹å®ã§ããããã«ãSCP ã® ARN ãšãã®ç®çã瀟å
ã§ææžåããŠãããŠãã ããã AWS KMS ã§ã® ML-DSA-44 ããŒäœæã®é²æ¢ (ããªã³ã·ãã«ã¬ãã«) 次㮠IAM ããªã·ãŒã¯ãããªã³ã·ãã«ã¬ãã«ã§ ML-DSA-44 ããããã¯ããŸããåè¿°ã® SCP ã«çžåœããã¢ã€ãã³ãã£ãã£ããŒã¹ã®ããªã·ãŒã§ãããçµç¹å
šäœã®ã¬ãŒãã¬ãŒã«ã§ã¯ãªããã¢ã«ãŠã³ãåäœãããŒã«åäœã§å¶åŸ¡ãããå Žåã«åœ¹ç«ã¡ãŸããå¶éããã IAM ããŒã«ãŸã㯠IAM ãŠãŒã¶ãŒã«ã¢ã¿ããããŠãã ããã { "Version": "2012-10-17", "Statement": [ { "Sid": "DenyMLDSA44KeyCreation", "Effect": "Deny", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeySpec": "ML_DSA_44" } } } ] } éèŠãªãã€ã³ã æ¡ä»¶ã®å€ã¯ ML_DSA_44 ã§ã (ãã€ãã³ã§ã¯ãªãã¢ã³ããŒã¹ã³ã¢)ã ãã®ããªã·ãŒããããã¯ããã®ã¯ CreateKey ã ãã§ããããªã³ã·ãã«ã¬ãã«ã§æ¢åã® ML-DSA-44 ããŒã®äœ¿çšããããã¯ããã«ã¯ã Sign ã Verify ã GetPublicKey ã®æåŠã远å ããŠãã ããããã®æåŠã¯ ãæ¢åã® ML-DSA-44 ããŒã®äœ¿çšã®å¶éã ã»ã¯ã·ã§ã³ã§ç޹ä»ããŠããŸãã äžæžãã§ããªãå
æ¬çãªä¿è·ãå®çŸããã«ã¯ãããªã³ã·ãã«ã¬ãã«ã®ããªã·ãŒã ãã«é ŒãããSCP ãšããŠãããã€ããŠãã ããã IAM ã®ã¢ã¯ã»ã¹èš±å¯ã®å¢ç IAM ã®ã¢ã¯ã»ã¹èš±å¯ã®å¢çã¯ãã¢ã€ãã³ãã£ãã£ããŒã¹ã®ããªã·ãŒã IAM ããŒã«ã IAM ãŠãŒã¶ãŒã«ä»äžã§ããã¢ã¯ã»ã¹èš±å¯ã®äžéãèšå®ãããã®ã§ãSCP ã®ä»£ãããšããŠããSCP ãè£å®ãããã®ãšããŠã䜿çšã§ããŸããå®éã«æå¹ãªã¢ã¯ã»ã¹èš±å¯ã¯ãã¢ã€ãã³ãã£ãã£ããŒã¹ã®ããªã·ãŒãšå¢çãéãªãéšåã«ãªããå¢çå
ã® Deny ã¯ã¢ã¿ãããããããªã·ãŒã§äžæžãã§ããŸãããå¢çã¯ãè€æ°ã¢ã«ãŠã³ãã«ãŸãããå
æ¬çãªæåŠã§ã¯ãªããã¢ã«ãŠã³ãåäœãããŒã«åäœã§æè»ã«å¶åŸ¡ãããå Žå (äŸãã°ããã«ãã¢ã«ãŠã³ãã鿬çªã¢ã«ãŠã³ã) ã«åœ¹ç«ã¡ãŸãã éçšäžã®èæ
®äºé
ã ã¢ã¯ã»ã¹èš±å¯ã®å¢çã¯ããããã¢ã¿ãããããããªã³ã·ãã«ã«ãã广ããããŸãããå¢çãã³ã³ãããŒã«ãšããŠæ©èœãããã«ã¯ããã¹ãŠã® IAM ããªã³ã·ãã«ã«å¢çãããã°ã©ã ã§åŒ·å¶ããä»çµã¿ãå¿
èŠã§ãããã®äžäŸãšããŠã次ã®ãã㪠SCP ãèããããŸãã iam:CreateRole ã iam:CreateUser ã iam:PutRolePermissionsBoundary ã iam:PutUserPermissionsBoundary ã¯ãæ¿èªæžã¿ã®å¢çãèšå®ãããŠããªãéãæåŠããŸã ( iam:PermissionsBoundary æ¡ä»¶ããŒã䜿çš)ãããã«ã iam:DeleteRolePermissionsBoundary ãš iam:DeleteUserPermissionsBoundary ã¯ç¡æ¡ä»¶ã«æåŠããåŸããå¢çãåé€ã§ããªãããã«ããŸãããŸããæºæ ããŠããªãããªã³ã·ãã«ã宿çã«èª¿ã¹ã PermissionsBoundary ãèªåçã«ã¢ã¿ãããããªã©ã®å¯Ÿå¿ãè¡ãããšããå§ãããŸããIAM ãŠãŒã¶ãŒã¯äœ¿çšãã¹ãã§ã¯ãããŸãããã匷å¶ã®ä»çµã¿ã§ã¯ IAM ãŠãŒã¶ãŒãååšããå¯èœæ§ãèæ
®ããŠããå¿
èŠããããŸãã å¢çã¯äžéãèšå®ããã ãã§ãããèªäœãã¢ã¯ã»ã¹èš±å¯ãä»äžããããã§ã¯ãããŸããããã®ããããŸããã¹ãŠã®ã¢ã¯ã·ã§ã³ã« Allow ãæå®ããããã§ãML-DSA-44 ããŒã®äœæãæç€ºçã«æåŠããŸããæ¬¡ã®ã¢ã¯ã»ã¹èš±å¯ã®å¢çã¯ãML-DSA-44 ããŒã®äœæãæåŠããŸãã { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAll", "Effect": "Allow", "Action": "*", "Resource": "*" }, { "Sid": "DenyMLDSA44KeyCreation", "Effect": "Deny", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeySpec": "ML_DSA_44" } } } ] } ãã®å¢çãèšå®ãããããªã³ã·ãã«ã«ã€ããŠãæ¢åã® ML-DSA-44 ããŒã®äœ¿çšããããã¯ããã«ã¯ã次ã®ã»ã¯ã·ã§ã³ã§ç޹ä»ãã Sign ã Verify ã GetPublicKey ã®æåŠã¹ããŒãã¡ã³ãã远å ããŸãããã®ã¹ããŒãã¡ã³ãã§ãåãæ¡ä»¶ã㌠( kms:KeySpec) ã䜿çšããŸãã æ¢åã® ML-DSA-44 ããŒã®äœ¿çšã®å¶é ãèæ¯ãã»ã¯ã·ã§ã³ã§èª¬æããããã«ã kms:KeySpec 㯠Sign ã Verify ã GetPublicKey ã§ãè©äŸ¡ããã䜿çšãããããŒã® KeySpec ãåæ ããŸãããã®ããã kms:KeySpec ã ML_DSA_44 ã®å Žåã«ãããã®ãªãã¬ãŒã·ã§ã³ãæåŠãã€ã€ã ML_DSA_65 ãš ML_DSA_87 ã¯åŒãç¶ãèš±å¯ã§ããŸããæ¬¡ã® IAM ããªã·ãŒã IAM ããªã³ã·ãã«ã«ã¢ã¿ãããããšããã®å¶åŸ¡ãå®çŸã§ããŸãã { "Version": "2012-10-17", "Statement": [ { "Sid": "DenyMLDSA44KeyUsage", "Effect": "Deny", "Action": [ "kms:Sign", "kms:Verify", "kms:GetPublicKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:KeySpec": "ML_DSA_44" } } } ] } ãã®æåŠã¯ AWS KMS ã®ããŒããªã·ãŒã«èšè¿°ããããšãã§ããŸããåã kms:KeySpec ã«ããæåŠããAWS KMS ããŒã®ããŒããªã·ãŒã«çŽæ¥èšè¿°ã§ããŸããããŒããªã·ãŒã¯ãªãœãŒã¹ããªã·ãŒã§ãããããã¹ããŒãã¡ã³ãã«ã¯ Principal èŠçŽ ãå¿
èŠã§ããäžæ¹ãã¢ã€ãã³ãã£ãã£ããŒã¹ã®ããªã·ãŒãš SCP ã§ã¯ãé©çšå¯Ÿè±¡ã®ããªã³ã·ãã«ãæå®ããŸãããããŒããªã·ãŒå
ã®æåŠã¯ç¹å®ã®ããŒãä¿è·ãããªãœãŒã¹åŽã®æåŸã®é²è¡ç·ãšãªããSCP ã¯äžæžãã§ããªãçµç¹å
šäœã®ä¿è·ãæäŸããŸããåã®äŸã AWS KMS ããŒããªã·ãŒã«å€æããã«ã¯ãã¹ããŒãã¡ã³ãã« Principal èŠçŽ (äŸãã° "Principal": {"AWS": "*"} ããŸãã¯ããå
·äœçãªããªã³ã·ãã«) ã远å ãããã以å€ã¯ãã®ãŸãŸã«ããŸãã ãã®ä»ã®ã¢ãããŒã ç®çã«ãã£ãŠã¯ã䜿çšãæåŠããã ãã§ãªããããŒãããªã¢ã«èªäœãåé€ãããå Žåãããã§ãããããã ããäœããã®æ¹æ³ã§è¿œè·¡ããŠããªãéããç¹å®ã®ããŒã§ã©ã®ããŒã¿ã眲åãããããææ¡ããã®ã¯å°é£ã§ããäœ¿çšæžã¿ã®ããŒãåé€ãããšã眲åãæ€èšŒã§ããªããªããŸããããŒãåé€ããåã«ããã®ããŒã䜿çšãããŠããªãããšãæ
éã«ç¢ºèªããŠãã ããã ããŒãç¡å¹åããããåé€ãã¹ã±ãžã¥ãŒã«ããŸãã ç¡å¹åãããšããŒã®äœ¿çšãçŽã¡ã«åæ¢ããåŸããå
ã«æ»ãããšãã§ããŸããããŒã®åé€ã¯ãåŸ
æ©æéã®çµéåŸã«ç¢ºå®ããå
ã«æ»ããªããªããããåé€ãã¹ã±ãžã¥ãŒã«ããåã«ååã«ç¢ºèªããŠãã ããã ç¹å®ã®ã㌠ARN ãæå®ã㊠Sign ã Verify ã GetPublicKey ãæåŠããŸãã ããŒä»æ§å
šäœã§ã¯ãªããç¹å®ã®ããŒã ãã察象ã«ã§ããŸãããã®ããã«ã¯ãIAM ããªã·ãŒã® Resource èŠçŽ ã«å¯Ÿè±¡ã®ã㌠ARN ãåæããŸã (æ¡ä»¶ããŒã¯äžèŠã§ã)ããã®æ¹æ³ã¯ç¹å®ã®ããŒã ãã察象ã«ããå Žåã«ã¯å¹æçã§ãããã㌠ARN ã®ãªã¹ããç¶æããã®ã¯æéãããããŸãããã®æ¹æ³ã¯å¿
èŠãªå Žåã«éã£ãŠäœ¿çšããŠãã ããããªããã㌠ARN ãæå®ãã IAM ããªã·ãŒãæ€èšããŠããå Žåã¯ã察象ããŒã®ããŒããªã·ãŒã« Deny ãèšè¿°ããŠãåãç®çãéæã§ãããã®æåŠã¯ããŒèªäœã«ã¢ã¿ãããããããšãèŠããŠãããŠãã ããã æ¢åã®ããŒã®æ€çŽ¢ (ç¡å¹åãŸãã¯åé€ããå Žåã«ã®ã¿å¿
èŠ)ã IAM ããªã·ãŒã SCP ã§ Deny ã kms:KeySpec ã«åºã¥ããŠæå®ããå Žåã¯ããªã¯ãšã¹ãæã«ããŒä»æ§ã«åºã¥ããŠé©çšããããããã©ã®ããŒãååšããããææ¡ããŠããå¿
èŠã¯ãããŸãããäžæ¹ãæ¢åã® ML-DSA-44 ããŒãç¡å¹åãŸãã¯åé€ãããå Žåã¯ããããã®ããŒãèŠã€ããå¿
èŠããããŸããAWS KMS ã«ã¯ããŒä»æ§ã§çµã蟌ããµãŒããŒåŽã®ãã£ã«ã¿ãŒããªãããã ListKeys ã§ããŒãåæãã DescribeKey ãåŒã³åºããŠåããŒã® KeySpec ã確èªããŸãããã®ããã«ã¯ã©ã€ã¢ã³ãåŽã§ãã£ã«ã¿ãªã³ã°ãããã¿ãŒã³ã¯ AWS API ã§åºã䜿ãããŠãããAWS SDK ã®ããŒãžããŒã·ã§ã³æ©èœã§å®¹æã«å®è£
ã§ããŸãããŸãã AWS Config ã䜿çšã㊠KMS ããŒãªãœãŒã¹ãèšé²ããã¯ãšãªããããšãã§ããŸãã åè: Choosing a KMS key spec â kms:KeySpec condition key æ¿èªæžã¿ ML-DSA ããªã¢ã³ããš AWS Private CA ã®å¶åŸ¡ AWS Private CA ã§ã¯ãCA ã®äœææã« CertificateAuthorityConfiguration ãã©ã¡ãŒã¿ã CreateCertificateAuthority ã«æå®ããŠãCA ã®çœ²åã¢ã«ãŽãªãºã ãèšå®ããŸã (æå¹ãªå€ã«ã¯ ML_DSA_44 ã ML_DSA_65 ã ML_DSA_87 ãªã©ããããŸã)ãçŸåšãã¢ã«ãŽãªãºã ã«å¯Ÿå¿ããæ¡ä»¶ããŒã¯ãªããããSCP ã§çœ²åã¢ã«ãŽãªãºã ã匷å¶ããããšã¯ã§ããŸããããã®ã»ã¯ã·ã§ã³ã§ç޹ä»ããã¢ãããŒãã§ã¯ãCA ãäœæã§ããããªã³ã·ãã«ãå¶åŸ¡ãããã®ä¿¡é Œããããã¹ã§ã¢ã«ãŽãªãºã ãåºå®ããããã§ã AWS CloudTrail ãå©çšããæ€åºã§è£å®ããŸãã æšå¥šãããã¢ãããŒã CA ãäœæã§ããããªã³ã·ãã«ãå¶éããŸãã SCP ã§ acm-pca:CreateCertificateAuthority ãåºãæåŠããå°æ°ã®ä¿¡é ŒãããããŒã«ãæ¿èªæžã¿ã®ããããžã§ãã³ã°ãã€ãã©ã€ã³ã«ã®ã¿èš±å¯ããŸããããã«ãããä»»æã®ããªã³ã·ãã«ãæªæ¿èªã®ã¢ã«ãŽãªãºã ã§ CA ãç«ã¡äžããããšãã§ããªããªããŸãã ä¿¡é Œããããã¹ã§ã¢ã«ãŽãªãºã ãåºå®ããŸãã æ¿èªæžã¿ã®ãã€ãã©ã€ã³ã IaC ãã³ãã¬ãŒãã§ã SigningAlgorithm ã ML_DSA_65 ãŸã㯠ML_DSA_87 ãšã㊠CertificateAuthorityConfiguration å
ã«ããŒãã³ãŒãããŸããAWS Private CA ã«ã¯ã¢ã«ãŽãªãºã ã®æ¡ä»¶ããŒããªãããããã®ããããžã§ãã³ã°ãã¹ãã¢ã«ãŽãªãºã ã匷å¶ããç®æã«ãªããŸãããªããCA ã®ã¢ã«ãŽãªãºã ã§åºå®ãããã®ã¯ããã® CA ãçºè¡ããèšŒææžã®çœ²åã§ããåèšŒææžã®ãµããžã§ã¯ãããŒã¯ CSR ããååŸãããAWS Private CA ã¯ãã®ã¢ã«ãŽãªãºã ãæ€èšŒããã«ãã®ãŸãŸã³ããŒããŸãããã®ãããåãçºè¡ãã€ãã©ã€ã³ã§ CSR ã®ããŒã¢ã«ãŽãªãºã ãåºå®ããŠãã ããã ä¿¡é Œãã§ãŒã³ãå¶åŸ¡ããŸãã PKI åŽã§ã¯ãæ¿èªæžã¿ã® CA ã®ã¿ããã©ã¹ãã¹ãã¢ãšçºè¡éå±€ã«è¿œå ããML-DSA-44 ã®èšŒææžãçºè¡ããå¯èœæ§ããã CA ãä¿¡é Œããããäžäœ CA ãšããŠé
眮ãããããªãã§ãã ãããããã«ãããæªæ¿èªã® CA ãä¿¡é Œããããã¹ã«å
¥ã蟌ãã®ã鲿¢ã§ããŸãã ããªãããæ€åºããŸãã CloudTrail ã§ CreateCertificateAuthority ã®åŒã³åºããèšé²ããAWS Config ã§èšå®ã« ML_DSA_44 ã䜿çšããŠãã CA ã«ãã©ã°ãç«ãŠãŸããããã«ãããæªæ¿èªã® CA ããã°ããæ€åºã§ããŸãã ãã®ã·ãªãŒãºã® ããŒã 1 ã§ã¯ããã®ä»çµã¿ãå®éã«æ§ç¯ããŠããŸããå
·äœçã«ã¯ã CreateCertificateAuthority ã䜿çšã㊠ML-DSA-87 ã®ã«ãŒã CA ãš ML-DSA-65 ã®äžäœ CA ãäœæããããããã¢ã¯ãã£ãåããŠãçæãããèšŒææžãã§ãŒã³ãæ€èšŒè
ã«é
åžããŸããããã§èª¬æããã¢ãã«ã§ã¯ããããã®åŒã³åºããå®è¡ã§ããã®ã¯æ¿èªæžã¿ã®ããããžã§ãã³ã°ãã€ãã©ã€ã³ã ãã§ãã ML-DSA ã®å€ã CertificateAuthorityConfiguration ã«èšå®ããæ¹æ³ã KeyAlgorithm ãã£ãŒã«ããš SigningAlgorithm ãã£ãŒã«ãã®äž¡æ¹ã«åãããªã¢ã³ããæå®ããŸã (äŸãã°ã KeyAlgorithm=ML_DSA_65 ãš SigningAlgorithm=ML_DSA_65 )ãAWS KMS ãš AWS Private CA ã§ã¯çœ²åã¢ã«ãŽãªãºã ã®æå®æ¹æ³ãç°ãªãç¹ã«æ³šæããŠãã ãããAWS Private CA ã® SigningAlgorithm ã«ã¯ããªã¢ã³ãã®å€ ( ML_DSA_44 ã ML_DSA_65 ã ML_DSA_87 ) ãçŽæ¥æå®ãã ML_DSA_SHAKE_256 ã¯åãä»ããŸãããäžæ¹ãAWS KMS ã§ã¯çœ²åã¢ã«ãŽãªãºã ãšã㊠ML_DSA_SHAKE_256 ã䜿çšããŸãããŸããäžéšã®å€ã AWS ã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ (AWS CLI) ãã«ãã§ã¯ãçµã¿èŸŒã¿ã® CLI ãã«ãã« ML-DSA ããªã¢ã³ãã®èª¬æãå«ãŸããŠããŸããã§ãããæå¹ãªå€ã確èªããéã¯ãAWS CLI ã®ãã«ãã«é Œããªãã§ãã ããã詳现ã«ã€ããŠã¯ãã CertificateAuthorityConfiguration API Reference ããåç
§ããŠãã ããã æ¢ç¥ã®å¶éäºé
ã äžéšã®å¯Ÿè±¡ã«ã¯ã¢ã«ãŽãªãºã ã®æ¡ä»¶ããŒããªããããããªã·ãŒã§ã¯ãªãããããžã§ãã³ã°ãšæ€åºã«ãã£ãŠåŒ·å¶ããŸãã acm-pca:CreateCertificateAuthority ã«ã¯ã¢ã«ãŽãªãºã ã®æ¡ä»¶ããŒããªãã acm:ImportCertificate ãš iam:UploadServerCertificate ã¯ã¢ã«ãŽãªãºã ãèªèããŸããããã®ãããäœæãã€ã³ããŒããã¢ããããŒããããèšŒææžã®çœ²åèšå®ãèš±å¯ãããŠããªããã®ã§ãã£ãŠããIAM ããªã·ãŒã SCP ã®æ¡ä»¶ã§ãããã¯ããããšã¯ã§ããŸããããããã¯ããããžã§ãã³ã°ããã»ã¹ã§ç®¡çããåŒã³åºããããªã³ã·ãã«ãå¶éããããã§ãäžèŠãªå Žåã¯ã€ã³ããŒããšã¢ããããŒãã®ã¢ã¯ã·ã§ã³ãå®å
šã«æåŠããŠãã ãããçŸæç¹ã§å©çšã§ããç·©åçã¯ãäžèšã®ã³ã³ãããŒã«ã§ãã ç¹ã« iam:UploadServerCertificate ã«ã¯ãç¹å®ã®ã¢ã«ãŽãªãºã ã®äœ¿çšã鲿¢ããææ®µããŸã£ãããããŸããããŸããAWS ã¯ãã® API ã䜿çšããèšŒææžã®çæãšã¢ããããŒããæšå¥šããŠããŸããããã® API 㯠ACM ããåããååšãããã®ã§ã䞻㫠ACM ããŸã å©çšã§ããªã AWS ãªãŒãžã§ã³ãããŒãã£ã·ã§ã³ã«å¯Ÿå¿ããããã«çšæãããŠããŸããæ°ãããªãŒãžã§ã³ãããŒãã£ã·ã§ã³ã®æ§ç¯äžã¯ãACM ã®ãµããŒããæäŸãããåã§ãã¯ãŒã¯ããŒãã« TLS ãµãŒããŒèšŒææžãå¿
èŠã«ãªãå ŽåããããŸãããã®éãIAM ã«èšŒææžãã¢ããããŒãããã°ãèšŒææžãä¿åããŠåç
§ã§ããŸãããã®ãªãŒãžã§ã³ã§ ACM ãå©çšå¯èœã«ãªã£ãããACM ã«åãæ¿ããŠãã ããããã®ãããªéãããã±ãŒã¹ãé€ããæ¬åœã«å¿
èŠãªå Žå以å€ã¯ iam:UploadServerCertificate ãæåŠããŠãã ããã ACM ãçºè¡ãããªãŒãèšŒææžã CA èªäœã®ããŒãšçœ²åã¢ã«ãŽãªãºã ã¯ãACM ããã® CA ããçºè¡ãããªãŒãèšŒææžãšã¯å¥ç©ã§ããACM ã§ãªãŒãèšŒææžããªã¯ãšã¹ãããå Žåã¯ã acm:KeyAlgorithm æ¡ä»¶ããŒã acm:RequestCertificate ã§äœ¿çšããŠããªãŒãèšŒææžã®ããŒã¢ã«ãŽãªãºã ãå¶éã§ããŸããããã«ãããåè¿°ã® AWS KMS ã®äŸãšåæ§ã«ãSCP ã IAM ããªã·ãŒã§ãªãŒãèšŒææžã®æ¿èªæžã¿ã¢ã«ãŽãªãºã ãèš±å¯ãªã¹ããšããŠæå®ã§ããŸãããªãããã®èšäºã®å·çæç¹ã§ã¯ãACM 㯠ML-DSA ã®ãªãŒãèšŒææžãæäŸããŠããŸããããã®ããããã®ããªã·ãŒã¯å·®ãè¿«ã£ã ML-DSA-44 ã®ãªã¹ã¯ãžã®å¯Ÿçã§ã¯ãªããå°æ¥ãèŠæ®ããå€å±€é²åŸ¡ã®ã³ã³ãããŒã«ã§ããæ¬¡ã® IAM ããªã·ãŒã¯èª¬æçšã®äŸã§ã (æ¿èªæžã¿ã¢ã«ãŽãªãºã ã®äŸã䜿çšããŠããŸã)ããµãŒãã¹ã®äžã§ãå€åãç¶ããŠããé åã®ãããå®éã«å©çšããåã«å¿
ãã䜿ãã®ç°å¢ã§æ€èšŒããŠãã ããã { "Version": "2012-10-17", "Statement": [ { "Sid": "RestrictACMLeafKeyAlgorithm", "Effect": "Deny", "Action": "acm:RequestCertificate", "Resource": "*", "Condition": { "StringNotEqualsIfExists": { "acm:KeyAlgorithm": [ "EC_secp384r1", "RSA_2048" ] } } } ] } ãã®äŸã§ã¯ã Deny ãš StringNotEqualsIfExists ãçµã¿åãããŠãããããèš±å¯ãããŠããªãã¢ã«ãŽãªãºã ãæå®ãããªã¯ãšã¹ãã«å ããŠããªã¯ãšã¹ãã³ã³ããã¹ãã« acm:KeyAlgorithm ãå«ãŸããªããªã¯ãšã¹ããæåŠãããŸãã ...IfExists æŒç®åã¯ãæ¡ä»¶ããŒãååšããªãå Žåã«æ¡ä»¶ã true ãšè©äŸ¡ããããã§ããéåžžã® StringNotEquals ã䜿çšããå ŽåããããŒãååšããªããã°æ¡ä»¶ã¯ true ãšãªããåããæåŠãããŸããæ¡ä»¶ããŒãååšããå Žåã«éã£ãŠæªæ¿èªã®ã¢ã«ãŽãªãºã ãæåŠãããå Žåã¯ã StringNotEquals ã«ããæ¯èŒãšã "Null": {"acm:KeyAlgorithm": "false"} ã«ããååšãã§ãã¯ãåã Condition å
ã«èšè¿°ããŠãã ããã NLB ãš ALB ã® TLS ã§ã® ML-DSA-44 ã®äœ¿çšã®é²æ¢ Elastic Load Balancing ã¯ã Network Load Balancer (NLB) ãš Application Load Balancer (ALB) ã®ã©ã¡ãã§ããã¢ããªã±ãŒã·ã§ã³ã«ä»£ãã£ãŠ TLS ãçµç«¯ããŸãããããã®ãªã¹ããŒã䜿çšããèšŒææžã¯ãACM ã§ãªã¯ãšã¹ãããããã®ãACM ã«ã€ã³ããŒãããããã®ããŸã㯠IAM ã«ã¢ããããŒãããããã®ã®ããããã§ããããŽã·ãšãŒã·ã§ã³æã«æç€ºãããå
容ã¯ããªã¹ããŒã«èšå®ãããã»ãã¥ãªãã£ããªã·ãŒãšèšŒææžã«ãã£ãŠæ±ºãŸããŸãããã®èšäºã®å·çæç¹ã§ã¯ãACM ã®ãªã¯ãšã¹ããšã€ã³ããŒã㯠RSA ããŒãš ECDSA ããŒã®ã¿ã«å¯Ÿå¿ããŠãããNLB ãš ALB ã®ãªã¹ããŒã RSA èšŒææžãš ECDSA èšŒææžã®ã¿ã«å¯Ÿå¿ããŠããŸãããã®ãããçŸæç¹ã§ã¯ ML-DSA èšŒææžããªã¹ããŒã«ãã€ã³ãããããšã¯ã§ããŸãããåè¿°ã® ACM ãªãŒãèšŒææžã®ããªã·ãŒãšåæ§ã«ããã®ã»ã¯ã·ã§ã³ã®ã³ã³ãããŒã«ã¯ãå·®ãè¿«ã£ã ML-DSA-44 ã®ãªã¹ã¯ãžã®ç·©åçã§ã¯ãªããå°æ¥ãèŠæ®ããå€å±€é²åŸ¡ã§ãã èšŒææžã®ã³ã³ãããŒã« (ML-DSA-44 ã«æå¹ãªä»çµã¿) ãªã¹ããŒã® API ã³ãŒã«ã§ã¯èšŒææžã ARN ã§ããåç
§ããªãããã CreateListener ã ModifyListener ã AddListenerCertificates ã«å¯ŸããŠãèšŒææžã®ã¢ã«ãŽãªãºã ãæ€æ»ãã SCP ãèšè¿°ããããšã¯ã§ããŸãããIAM ã®æ¡ä»¶ã§ã¯ãå¥éåç
§ããããªãœãŒã¹ã®å±æ§ãåç
§ã§ããªãããã§ãããããã£ãŠãTLS ãã ML-DSA-44 ãæé€ããã«ã¯ãé¢é£ä»ãå¯èœãª ML-DSA-44 ã®èšŒææžãããªã¢ã«ãããããååšãããªãããšãåæãšãªããŸãã ãã©ã€ããŒã CA ã ML_DSA_65 ãŸã㯠ML_DSA_87 ã®èšŒææžã®ã¿ãçºè¡ããããã«èšå®ããCA ãäœæã§ããããªã³ã·ãã«ãå¶åŸ¡ããŸãã AWS KMS ã§ ML-DSA-44 ããŒã®äœæã鲿¢ããAWS KMS ã§ä¿æããŠãã ML-DSA-44 ããŒãèšŒææžã®ãµããžã§ã¯ãããŒã«ãªããªãããã«ããŸãããªããACM ãçºè¡ããèšŒææžããã€ã³ããŒããŸãã¯ã¢ããããŒããããèšŒææžã® TLS ãµãŒããŒããŒã¯ KMS ããŒã§ã¯ãªããããé
ç® 1 ãš 3 ã§ç®¡çããŸãã AWS Private CA ã®ã»ã¯ã·ã§ã³ã§èª¬æããããã«ãã€ã³ããŒãããã³ã¢ããããŒããããèšŒææžãããããžã§ãã³ã°ããã»ã¹ã§ç®¡çããããäžèŠãªå Žåã¯ã€ã³ããŒããšã¢ããããŒãã®ã¢ã¯ã·ã§ã³ãæåŠããŸãã çºèŠçã³ã³ãããŒã« CloudTrail ã¯ããã®ã»ã¯ã·ã§ã³ã§æ±ãèšŒææžãšãªã¹ããŒã® API ã³ãŒã«ãèšé²ããŸãã察象ã¯ãèšŒææžã®äœæãšã€ã³ããŒã ( acm-pca:CreateCertificateAuthority ã acm:ImportCertificate ã iam:UploadServerCertificate ) ãšããªã¹ããŒã®èšå® ( CreateListener ã ModifyListener ã AddListenerCertificates ) ã§ããã€ãã³ãã«ã¢ã«ãŽãªãºã ãèšé²ããããã©ããã¯ãåŒã³åºãèªäœã«ã¢ã«ãŽãªãºã ã®æ
å ±ãå«ãŸããŠãããã©ããã§æ±ºãŸããŸããã¢ã«ãŽãªãºã ãå
¥åãšããŠåãåãäœæç³»ã®åŒã³åºãã§ã¯ãã¢ã«ãŽãªãºã ãèšé²ãããŸãã kms:CreateKey ã§ã¯ KeySpec ãã acm-pca:CreateCertificateAuthority ã§ã¯çœ²åã¢ã«ãŽãªãºã ãèšé²ãããŸãããã®ãããCloudTrail 㯠ML-DSA-44 ã®ããŒãããªã¢ã«ã CA ã®äœæãæ€åºããã®ã«å¹æçã§ããäžæ¹ããªã¹ããŒãžã®ãã€ã³ãã§ã¯èšŒææžã ARN ã§ããåç
§ããªãããããã®ã€ãã³ãã«ã¯èšŒææžã®ã¢ã«ãŽãªãºã ãèšé²ãããŸããããã€ã³ããããèšŒææžãã€ã³ããŒããããèšŒææžã®ã¢ã«ãŽãªãºã ãè©äŸ¡ããã«ã¯ãçºèŠçã³ã³ãããŒã«ã®æåŸã®é²è¡ç·ãšã㊠AWS Config ã®ãªãœãŒã¹è©äŸ¡ã䜿çšããŠãã ããã TLS ã®ãŸãšã äž»ãªäºé²çã³ã³ãããŒã«ã¯ãèšŒææžãããªã¢ã«ãã®ãã®ã®ç®¡çã§ããML-DSA-44 ã® CA ã ML-DSA-44 ã® KMS ããŒãååšãããèšŒææžã®ã€ã³ããŒããšã¢ããããŒããå¶åŸ¡ãããŠããã°ãML-DSA-44 èšŒææžãçºè¡ããããšããã€ã³ãããããšãã§ããŸãããèš±å¯ãã TLS ã»ãã¥ãªãã£ããªã·ãŒãèš±å¯ãªã¹ããšããŠéçšããŠããå Žåã¯ã elasticloadbalancing:SecurityPolicy æ¡ä»¶ã㌠( CreateListener ãš ModifyListener ã§äœ¿çš) ã§ããªã¹ããŒã䜿çšã§ãã TLS ããªã·ãŒãããã«å¶éããããšãã§ããŸãã ã³ã³ãããŒã«ã®ãŸãšã 次ã®è¡šã¯ãããªã·ãŒäŸ (ML-DSA-65 ãŸã㯠ML-DSA-87 ãèš±å¯ããML-DSA-44 ãé€å€ãã) ã«å¯Ÿå¿ããå©çšå¯èœãªã³ã³ãããŒã«ããŸãšãããã®ã§ããèªçµç¹ã®ããªã·ãŒã§å®ããæ¿èªæžã¿ã¢ã«ãŽãªãºã ã®ã»ããã«åãããŠãã³ã³ãããŒã«ã調æŽããŠãã ããã é å ã³ã³ãããŒã« ã¹ããŒã¿ã¹ ML-DSA-44 ããŒã®äœæããããã¯ãã (çµç¹å
šäœããŸãã¯çµç¹ã® OU å
ã®ãã¹ãŠã®ã¢ã«ãŠã³ã) SCP ã§ kms:CreateKey ãå¶éãæ¡ä»¶ããŒ: kms:KeySpec æ¡ä»¶ããŒã§å®å
šã«ãµããŒã ML-DSA-44 ããŒã®äœæããããã¯ãã (ã¢ã«ãŠã³ãåäœãŸãã¯ããŒã«åäœ) IAM ããªã·ãŒãŸãã¯ã¢ã¯ã»ã¹èš±å¯ã®å¢çãæ¡ä»¶ããŒ: kms:KeySpec ãµããŒã (å¢çãããã°ã©ã ã§åŒ·å¶ããå¿
èŠãã) æ¢åã® ML-DSA-44 ããŒã®äœ¿çšããããã¯ãã æåŠå¯Ÿè±¡: Sign ã Verify ã GetPublicKey ãæ¡ä»¶ããŒ: kms:KeySpec (ããŒããªã·ãŒãIAMããŸã㯠SCP)ãå¿
èŠã«å¿ããŠããŒã®ç¡å¹åãšåé€ã宿œ ãµããŒããæ¡ä»¶ããŒ: kms:KeySpec ( kms:SigningAlgorithm ã¯äžå¯) Private CA ã§æ¿èªæžã¿ããªã¢ã³ãã®ã¿ãèš±å¯ãã CA ãäœæã§ããããªã³ã·ãã«ãå¶éãããããžã§ãã³ã°ãã¹ã§ ML_DSA_65 ãŸã㯠ML_DSA_87 ãåºå® ã¢ã«ãŽãªãºã ã®æ¡ä»¶ããŒãªããããã»ã¹ãšæ€åºã§åŒ·å¶ ã€ã³ããŒããŸãã¯ã¢ããããŒãããã TLS èšŒææžã®ããªã¢ã³ããå¶éãã ããã»ã¹ã«ããå¶åŸ¡ããŸãã¯ã€ã³ããŒããã¢ããããŒãã® API ãæåŠ ( iam:UploadServerCertificate ã§ã¯ãªã ACM ãæšå¥š) API ã¯ã¢ã«ãŽãªãºã ãèªèããªã Network Load Balancer (NLB) ãš Application Load Balancer (ALB) ã® TLS ã§ ML-DSA-44 ã®äœ¿çšããããã¯ãã TLS ããªã·ãŒãå¶éãæ¡ä»¶ããŒ: elasticloadbalancing:SecurityPolicy ãèšŒææžãããªã¢ã«ãå¶åŸ¡ TLS ããªã·ãŒã®å¶éã¯ãµããŒããèšŒææžããšã®ã¢ã«ãŽãªãºã æ¡ä»¶ã¯ãªã æªæ¿èªã®ããªã¢ã³ãã®äœ¿çšãæ€åºãã CloudTrail (API ã¬ãã«) ãš AWS Config ã®ã«ã¹ã¿ã ã«ãŒã« AWS Config ã®ã«ã¹ã¿ã ã«ãŒã«ã§ãµããŒã (ãããŒãžãã«ãŒã«ã¯é察å¿) ãŸãšã ãã®èšäºã§ã¯ãML-DSA ãäŸã«ãæå·ã¢ã«ãŽãªãºã ããªã·ãŒãå®éã«åŒ·å¶ã§ãã AWS ã®ã³ã³ãããŒã«ã«å€æããæ¹æ³ã説æããŸãããäžå¿ãšãªãã®ã¯ kms:KeySpec æ¡ä»¶ããŒã§ãããã®æ¡ä»¶ããŒã䜿ããšãæ¿èªæžã¿ã®ãã©ã¡ãŒã¿ã»ãã (ML-DSA-65 ãš ML-DSA-87) ãåé¡ãªã䜿çšã§ããç¶æ
ã«ä¿ã¡ãªãããé€å€ãããã©ã¡ãŒã¿ã»ãã (ML-DSA-44) ã®äœæãšäœ¿çšã鲿¢ã§ããŸãã察象ãšãªãã®ã¯ CreateKey ã«å ããŠã Sign ã Verify ã GetPublicKey ã®åãªãã¬ãŒã·ã§ã³ã§ãããããã®ãªãã¬ãŒã·ã§ã³ã§ã¯ã kms:SigningAlgorithm ã䜿ã£ãŠãããªã¢ã³ããåºå¥ã§ããŸããããããã®ã³ã³ãããŒã«ã SCPãIAM ããªã·ãŒãã¢ã¯ã»ã¹èš±å¯ã®å¢çãKMS ããŒããªã·ãŒã«ããå€å±€é²åŸ¡ãšããŠé©çšããã¢ã«ãŽãªãºã ã®æ¡ä»¶ããŒããªã察象 (AWS Private CAãèšŒææžã®ã€ã³ããŒããElastic Load Balancing ã® TLS) ã«ã¯ããããžã§ãã³ã°å¶åŸ¡ãš AWS CloudTrail ããã³ AWS Config ã«ããããªããæ€åºã§å¯Ÿå¿ããããšã§ãæªæ¿èªã®ããªã¢ã³ããã¢ã«ãŠã³ãããäžè²«ããŠæé€ã§ããŸãã ãã®ãã¿ãŒã³ã¯ ML-DSA-44 ã«éã£ããã®ã§ã¯ãããŸãããã¢ã«ãŽãªãºã ããªã·ãŒã¯æšæºãèªçµç¹ã®èŠä»¶ã®å€åã«äŒŽã£ãŠå€ãã£ãŠããããããããã®ã³ã³ãããŒã«ãåå©çšå¯èœãªãã³ãã¬ãŒããšããŠæ±ããåãæ¡ä»¶ããŒãšã¬ãŒãã¬ãŒã«ãããã®æç¹ã®æ¿èªæžã¿ã»ããã«åãããŠé©çšãçŽããŠãã ããã匷å¶ã®ä»çµã¿ãäœãçŽãããšãªãèš±å¯ããå
容ã倿Žã§ããããã®é©å¿æ§ãããæå·ã¢ãžãªãã£ã®å®è·µçãªæå³ã§ãã ãŸãã¯ã ML-DSA keys in AWS KMS ããšã Choosing a KMS key spec ãã確èªãããããã€ããåã«éæ¬çªç°å¢ã§ããªã·ãŒäŸããã¹ãããŠãã ããã ãããã®ã³ã³ãããŒã«ã§ç®¡çããã¯ãŒã¯ããŒãã«ã€ããŠã¯ããã®ã·ãªãŒãºã® ããŒã 1 ããèªã¿ãã ãããããŒã 1 ã§ã¯ãããã§åŒ·å¶ããæ¿èªæžã¿ã»ããã䜿çšããŠãããŒã®äœæãš PKI ã®æ§ç¯ããã¢ãŒãã£ãã¡ã¯ãã®çœ²åãšæ€èšŒãŸã§ãML-DSA 眲åãã€ãã©ã€ã³å
šäœãæ§ç¯ããŸãã ãªãœãŒã¹ AWS ã«ãããèéå眲åãããŒã 1: ML-DSA ã«ãããœãããŠã§ã¢ãµãã©ã€ãã§ãŒã³ã®æ§ç¯ AWS KMS adds support for post-quantum ML-DSA digital signatures ML-DSA keys in AWS KMS AWS KMS condition keys (kms:KeySpec evaluated on CreateKey and key resource operations) Choosing a KMS key spec (kms:KeySpec) Use condition keys with ACM (acm:KeyAlgorithm) Actions, resources, and condition keys for AWS Private Certificate Authority Private CA CertificateAuthorityConfiguration API Actions, resources, and condition keys for Elastic Load Balancing v2 (elasticloadbalancing:SecurityPolicy) Enhanced access denied error messages with policy ARNs Harshvardhan Chunawala Harshvardhan 㯠AWS ã®ãœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ãå
Œã»ãã¥ãªã㣠SME ã§ãAmazon LeoãAmazon SecurityãAWS Agentic AI ãšé£æºããããŒã 暪æçãªåãçµã¿ãäž»å°ããŠããŸããã¯ã©ãŠãã»ãã¥ãªãã£åéã§ 10 幎以äžã®çµéšãæã€ Golden Jacket åè³è
ã§ãããã«ãŒãã®ãŒã¡ãã³å€§åŠã§ã¯ã¢ããã€ã¶ãªãŒããŒãã¡ã³ããŒã客塿å¡ãç ç©¶è
ãåããŠããŸããäžçäžã®çµå¶å¹¹éšããšã³ã¿ãŒãã©ã€ãºã®ãªãŒããŒãã¹ã¿ãŒãã¢ããã®åµæ¥è
ã«å¯ŸããŠãå®å
šã§ã¹ã±ãŒã©ãã«ãªã¯ã©ãŠããã©ãããã©ãŒã ã®æ§ç¯ã«ã€ããŠå©èšããŠããŸãã Blake Roberts Blake Roberts 㯠AWS ã®ã·ãã¢ãœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ãã§ãAWS Security Technical Field Community ã®ã¡ã³ããŒã§ããè±åœã®å
Œ
±éšéã®ã客æ§ãçŽé¢ããã»ãã¥ãªãã£ã®èª²é¡ãçåã®è§£æ±ºãæ¯æŽããŠããããã¹ãéåæå·ãè
åšã®æ€åºãšã€ã³ã·ãã³ã察å¿ãæŠç¥ã¬ãã«ã§ã®ã¬ããã³ã¹ãªã©ãå¹
åºãåéãã«ããŒããŠããŸããAWS ã«å
¥ç€Ÿããåã¯ãè±åœéžè»ã« 9 幎éå€åããŠããŸããã倧ã®èªæžå®¶ã§ãããç±å¿ãªã©ã³ããŒã§ããããŸãã æ¬ããã°ã¯ Security Solutions Architect ã® äžå³¶ ç« å ã翻蚳ããŸããã

















