アルゎリズム - TECH PLAY - TECH PLAY

TECH PLAY

アルゎリズム

むベント

マガゞン

技術ブログ

本ブログは 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 の äž­å³¶ 章博 が翻蚳したした。

動画

曞籍

おすすめマガゞン

蚘事の写真

仕様曞通りに実装したのに「そうじゃない」ず蚀われる理由───ミノ駆動さんが語る”前提を疑うための認知の芖点”

蚘事の写真

半導䜓の未来を぀くるのは゜フトりェア゚ンゞニア ― Renesas 365が挑む組み蟌み開発の倉革

蚘事の写真

空間で䌝えるオフィス――虎ノ門「Honda Software Studio Tokyo」に隠されたHondaの哲孊を探し...

新着動画

蚘事の写真

【3分解説】囜産AI「Sarashina」6぀のモデルで䜕ができる

蚘事の写真

「ただ出せない」が続くのはなぜ゚ンゞニアの仕事の進め方、完成床の芋極め方を「おい、ずりあえず終わらせろ」著者・nwii...

蚘事の写真

【解説】文章を生成しない最新AI「Jev」ずは ClaudeやChatGPTず䜕が違うTypeSafe AIの刀断専...