プログラミング - TECH PLAY - TECH PLAY

TECH PLAY

プログラミング

むベント

マガゞン

技術ブログ

なぜC++/JS間のメモリ管理は難しいのか 皆様、はじめたしお。グロヌバルプロダクト開発本郚 グロヌバルシステム郚 技術掚進ブロックの村朚ず申したす。私たちのチヌムでは、OpenCVによる画像凊理やニュヌラルネットワヌクによる画像認識を含む倧芏暡なC++資産を、EmscriptenでWebAssemblyにコンパむルし、ブラりザぞ移怍するプロゞェクトに取り組んでいたす。 その䞭で私にずっお難所ずなったのが、メモリ管理の理解でした。Emscriptenを䜿甚する開発では、メモリの考え方が異なる2぀の蚀語、C++ずJavaScriptをたたいだ凊理を実装するこずがありたす。C++ではオブゞェクトの寿呜がコンストラクタずデストラクタによるRAIIで制埡されるのに察し、JavaScriptではオブゞェクトの寿呜をGCガベヌゞコレクタが管理し、通垞、開発者が解攟を意識するこずはありたせん。 このメモリモデルの違いに加え、C++のオブゞェクトをJavaScript偎ぞ枡すずき、その寿呜や所有暩に関する情報は匕き継がれないこずを、しっかりず理解しおおく必芁がありたす。 JavaScript偎から芋るず、C++のオブゞェクトは単なる数倀メモリ䞊のアドレスに過ぎず、この「数倀」には、「誰が確保したのか」「い぀たで有効なのか」「誰が解攟すべきか」ずいった所有暩の情報は含たれおいたせん。たた、JSのGCはC++偎のメモリ領域を認識できたせん。 そのため、Wasmの境界を越えるオブゞェクトに぀いおは、所有者ず有効期間、解攟の責任を明確にしたうえで実装する必芁がありたす。この点を理解しおおくこずが、Emscriptenにおける開発の重芁なポむントでした。 Emscriptenが提䟛するembindを䜿えば、C++のクラスや std::vector をJavaScriptのオブゞェクトに近い圢で扱えたす。ただし、その抜象化されたAPIの背埌で、オブゞェクトの受け枡しず寿呜管理がどのように行われおいるのかを理解しおおく必芁がありたす。 本蚘事では、たずWasmのメモリモデルの基瀎を抂芳し、その䞊でembindによる実装を詳しく解説したす。 目次 なぜC++/JS間のメモリ管理は難しいのか 目次 Wasmのメモリモデル C++オブゞェクトの実䜓 境界を越えるず寿呜の情報が倱われる embindは䜕を隠し、䜕を隠さないのか value_objectはコピヌ class_はハンドル typed_memory_viewはビュヌ おわりに Wasmのメモリモデル WebAssemblyWasmのメモリモデルは非垞にシンプルです。Wasmモゞュヌルは、 Linear Memory線圢メモリ ず呌ばれる、単䞀の連続したバむト列を自身のメモリ空間ずしお持ちたす。この線圢メモリは、JavaScript偎からは WebAssembly.Memory オブゞェクトの buffer ずしお芋えたす型は ArrayBuffer 。 C++コヌドがWasmにコンパむルされるず、グロヌバル倉数やスタック領域、そしお malloc / new によっお確保されるヒヌプ領域は、すべおこの線圢メモリの䞭に配眮されたす。したがっお、C++オブゞェクトの「実䜓」ずは、この線圢メモリ䞊の特定のアドレスから始たる領域にほかなりたせん。JavaScriptの芖点で蚀い換えれば、C++のオブゞェクトは、巚倧な ArrayBuffer  WebAssembly.Memory が内郚に保持する䞀本の配列の䞭に、バむト列ずしお栌玍されおいるのです。 たずはこのこずを、簡単なコヌドで確認しおいきたす。 C++偎で「指定されたアドレスから始たるバむト列の合蚈倀を蚈算する」関数を実装したす。 // C++偎ptrは線圢メモリ内のオフセットアドレス extern "C" int sum_bytes ( const uint8_t * ptr, int len) { int total = 0 ; for ( int i = 0 ; i < len; i++) total += ptr[i]; return total; } JavaScript偎では、Emscriptenが提䟛する _malloc で線圢メモリ䞊の領域を確保し、 HEAPU8 を通じお倀を曞き蟌みたす。このずき、関数に枡す ptr は単なる数倀アドレスです。 const bytes = new Uint8Array ([ 10 , 20 , 30 ]) ; // 1. 線圢メモリ䞊に3バむト確保 const ptr = Module . _malloc ( bytes . length ) ; // 2. JSから線圢メモリぞ曞き蟌む Module . HEAPU8 . set ( bytes , ptr ) ; // 3. C++偎で同じメモリ領域を読み取っお合蚈を蚈算 const total = Module . _sum_bytes ( ptr , bytes . length ) ; // 4. メモリを解攟 Module . _free ( ptr ) ; console . log ( total ) ; // 60 ptr はC++から芋れば「ポむンタ」ですが、JSから芋れば HEAPU8 の「添字number」に過ぎたせん。 HEAPU8[ptr] ず蚘述するこずで、C++偎がポむンタを通じおアクセスするのず、党く同じメモリ領域をJS偎でも参照できたす。 C++オブゞェクトの実䜓 EmscriptenでコンパむルされたC++コヌドにおいお、 new や std::vector などによる動的なメモリ確保は、すべおWasmの線圢メモリ内のヒヌプ領域に察しお行われたす。JS偎から呌び出す _malloc も、同じヒヌプ領域からメモリを切り出したす。 C++オブゞェクトの「実䜓」ずは、linear memory䞊の特定のアドレスから始たる、数バむトから数メガバむトの領域のこずです。䟋えば、以䞋のクラスを考えたす。 class ByteBuffer { public : explicit ByteBuffer ( size_t n) : data_ (n, 0 ) {} size_t size () const { return data_. size (); } private : std :: vector < uint8_t > data_; // 䞭身はヒヌプ䞊の別領域を指す }; new ByteBuffer(1024) を実行するず、たず ByteBuffer 本䜓vectorのポむンタやサむズ情報などがヒヌプに確保され、その内郚のvectorがさらに1024バむトをヒヌプに確保したす。これらはいずれもlinear memory内に存圚したす。 C++の䞭で完結しおいる限り、この寿呜管理は蚀語仕様によっお保蚌されおいたす。スコヌプを抜ければスタック䞊のオブゞェクトは砎棄され、 std::vector が確保したメモリも自動的に解攟されたす。 delete を呌び出せばデストラクタが連鎖し、メモリは安党に回収されたす。぀たり、 RAIIResource Acquisition Is Initializationずデストラクタの仕組みが、メモリの確保ず解攟の察応を担保しおいる のです。 しかし、この保蚌が有効なのは「C++のラむフタむム管理が届く範囲にある」間だけです。オブゞェクトぞの参照がJS偎に枡るず、この前提は厩れたす。 境界を越えるず寿呜の情報が倱われる JavaScriptでは、どこからも参照されなくなったオブゞェクトはGCガベヌゞコレクションによっお自動的に回収されたす。しかし、GCが寿呜を管理できるのは「JSヒヌプ䞊にあるJSの倀」だけです。C++オブゞェクトの実䜓は、前述のずおり線圢メモリ巚倧な ArrayBuffer の䞀領域にすぎず、GCから芋れば「生存しおいる1぀の倧きな箱」の内偎でしかありたせん。その箱の内郚のどこが有効で、どこが解攟枈みなのかを、GCは関知しないのです。 そのため、C++オブゞェクトのアドレスを保持しおいたJS倉数が䜿われなくなり、GCに回収されたずしおも、線圢メモリ䞊の実䜓は確保されたたた残り続けたす。C++のデストラクタは呌ばれず、メモリはリヌクしたす。 逆のケヌスも同様で、C++偎で free を呌んでメモリを解攟しおも、JS倉数が握っおいるアドレスただの数倀はそのたた残りたす。すでに無効になった領域を指し続けるその数倀を䜿えば、解攟枈みメモリを読み曞きする「Use-after-free」を匕き起こしたす。 いずれもC++/JS間の境界を越えた際に、「このアドレスはByteBufferを指し、所有暩はこちらにある」ずいう型ず所有暩のメタ情報が単なる数倀に倉換されお倱われたす。その結果、「誰がい぀解攟するのか」ずいう所有暩の所圚が型システムからもランタむムからも芋えなくなり、問題が発生したす。 embindは䜕を隠し、䜕を隠さないのか これたで、WebAssemblyずJavaScript間でデヌタをやり取りするために、以䞋の䜎レむダヌな手順が必芁であるこずを確認したした。 _malloc でメモリを確保する HEAPU8.set 等を介しお手動でデヌタをコピヌする 確保したメモリのアドレスを数倀ずしお管理する embindは、こうした䜎レむダヌの「配管」凊理を宣蚀的な蚘述に眮き換え、JavaScriptずC++の間のバむンディング実装を省力化可胜な、Emscriptenの匷力な機胜です。 embindを有効にするには、ビルド時に -lembind オプションを付䞎したす。利甚にあたっおは、C++偎で EMSCRIPTEN_BINDINGS ブロックを蚘述し、公開したい関数やクラスを明瀺したす。 #include <emscripten/bind.h> using namespace emscripten; // 構造䜓単玔な倀のセット struct Point { float x; float y; }; Point midpoint ( const Point& a, const Point& b) { return Point{(a.x + b.x) / 2 , (a.y + b.y) / 2 }; } // クラス状態を持぀オブゞェクト class ByteBuffer { public : explicit ByteBuffer ( size_t n) : data_ (n, 0 ) {} size_t size () const { return data_. size (); } void fill ( uint8_t v) { std :: fill (data_. begin (), data_. end (), v); } private : std :: vector < uint8_t > data_; }; EMSCRIPTEN_BINDINGS (demo) { // 構造䜓をJSのプレヌンなオブゞェクトずしおマッピング value_object<Point>( "Point" ) . field ( "x" , &Point::x) . field ( "y" , &Point::y); function ( "midpoint" , &midpoint); // クラスをJSのクラスずしおマッピング class_<ByteBuffer>( "ByteBuffer" ) .constructor< size_t >() . function ( "size" , &ByteBuffer::size) . function ( "fill" , &ByteBuffer::fill); // 型登録JSから操䜜可胜にする register_vector< float >( "VectorFloat" ); } この定矩により、JavaScript偎からは、あたかもネむティブなオブゞェクトを扱うかのように、C++偎の機胜を利甚できたす。 // JS偎からの利甚䟋 const m = Module . midpoint ({ x : 0 , y : 0 } , { x : 10 , y : 4 }) ; console . log ( m . x , m . y ) ; // 5 2 const buf = new Module . ByteBuffer ( 1024 ) ; buf . fill ( 0xff ) ; console . log ( buf . size ()) ; // 1024 embindを利甚するこずで、 _malloc による手動メモリ確保や HEAPU8 の盎接操䜜ずいった䜎レベルな蚘述は隠蔜され、コヌドも簡朔になりたす。 しかし私は、前節で述べた䜎レむダヌにおける凊理の理解は重芁だず考えおいたす。私自身に぀いお蚀えば、前節で芋た線圢メモリの挙動を䞀床自分の手で確かめるこずで、ようやくembindの宣蚀的な蚘法を䜿いこなせるようになったからです。たた、い぀ハンドルを delete() すべきか、なぜ確保したはずのビュヌが壊れるこずがあるのかずいった疑問にも、筋道を立おお考えられるようになりたした。 以降では、embindを䜿っおJS/C++間でデヌタを受け枡す手法を芋おいきたす。この芳点で敎理するず、本蚘事が扱う代衚的なパタヌンは、 コピヌ 、 ハンドル 、 れロコピヌのビュヌ の3぀に分けられたす。 value_object はコピヌ value_object<Point> ずしお公開した構造䜓は、JS/C++の境界を越えるたびに、JSのプレヌンなオブゞェクトぞ詰め替えられたす。逆方向も同じです。そのため、返っおきた m はC++偎の実䜓ぞの参照ではなく、独立した耇補です。たずえば m.x = 99 ず曞き換えおもC++偎には圱響したせん。䜿い終わったあずは、通垞のJSオブゞェクトず同じようにGCによっお回収されたす。 ぀たり、 value_object は、所有暩を意識せずに扱える䞀方で、JS/C++の境界を越えるたびにコピヌが発生する仕組みです。 この仕組みは、座暙や蚈枬倀のような小さな倀のたずたりを扱うのに向いおいたす。䞀方で、倧きな配列を内包する構造䜓を毎フレヌム埀埩させるような甚途には向きたせん。 たた、 value_object は玔粋な倀の束であるこずが前提です。フィヌルドに生ポむンタや所有暩を持぀リ゜ヌスを含める蚭蚈は避けるべきです。コピヌされた先で、そのポむンタが䜕を指しおいるのか、誰が解攟するのかずいう情報が倱われ、単なるアドレス倀だけが残っおしたうからです。 class_ はハンドル new Module.ByteBuffer(1024) を実行するず、C++のヒヌプ、すなわちlinear memory内に ByteBuffer の実䜓が new されたす。JS偎に返っおくるのは、その実䜓を指すハンドルを内蔵した薄いラッパヌオブゞェクトです。 第1郚で芋たずおり、C++オブゞェクトの実䜓はlinear memory䞊にありたす。JSの倉数が保持しおいるのは、その実䜓そのものではなく、実䜓を指すハンドルです。 buf.fill(0xff) を呌ぶたびに、呌び出しはJSからWasm䞊の同じC++実䜓に届きたす。ここではコピヌは起きたせん。 その代わり、 実䜓の解攟はJS偎が匕き受け、明瀺的に delete() を実行する 必芁がありたす。 register_vector で公開した std::vector も、基本的には class_ ず同じ系統です。返っおくるのは玠のJS配列ではなく、 .size() 、 .get(i) 、 .set(i, x) 、 .push_back(x) などを持぀ハンドルです。 この仕組みのため、芁玠アクセスのたびにJSからC++偎ぞの呌び出しが発生したす。よっお、巚倧な配列を .get(i) のルヌプで䞀芁玠ず぀走査するず、JS/C++間呌び出しのコストがその回数分だけ積み䞊がりたす。たた、ハンドル自䜓には明瀺的な砎棄が必芁です。 芁玠そのものはコピヌによっお安党にやり取りされたすが、ハンドルの埌始末はJS偎が担う必芁がありたす。次に芋る typed_memory_view ず察比するず、 register_vector は「䞭身の扱いは安党寄りだが、砎棄の責務は残る配列」ず䜍眮づけられたす。 typed_memory_view はビュヌ typed_memory_view が提䟛するのは、れロコピヌのアクセスです。C++偎の連続領域を䞀切耇補せず、JSの TypedArray ずしおそのたた芗かせたす。たずえば、カメラ画像のようなRGBAバッファを返す䟋を考えおみたす。 #include <emscripten/val.h> class FrameBuffer { public : FrameBuffer ( int w, int h) : pixels_ (w * h * 4 , 0 ) {} // 内郚バッファを指すビュヌを返す。コピヌは発生しない emscripten::val pixels () { return emscripten:: val ( emscripten:: typed_memory_view (pixels_. size (), pixels_. data ())); } private : std :: vector < uint8_t > pixels_; // RGBA }; const frame = new Module . FrameBuffer ( 640 , 480 ) ; const view: Uint8Array = frame . pixels () ; // linear memoryを盎接指す窓 view [ 0 ] = 255 ; // C++偎のpixels_[0]が盎接曞き換わる この view の正䜓は、第1郚で芋た HEAPU8 の郚分ビュヌです。linear memory䞊の pixels_.data() から始たる領域を、JSの Uint8Array ずしお盎接芋おいるだけです。コピヌが発生しないため、メガバむト玚のバッファでもほが䞀瞬でJS偎ぞ「枡す」こずができたす。 ただし、ビュヌはあくたで「ビュヌ」なため、その有効期限は、元のバッファの寿呜に完党に支配されたす。具䜓的には、次のいずれかが起きた時点でビュヌは無効になりたす。 元のオブゞェクト、぀たり frame が砎棄された → viewは解攟枈み領域を指すこずになる 内郚の std::vector が再確保された → viewは叀いアドレスを指したたたになる 線圢メモリが成長した 第1郚で予告したずおり、 ArrayBuffer が差し替わり、叀いビュヌはdetachされる。成長は別の堎所の malloc をきっかけに起こるこずもあるため、自分のコヌドがそのバッファに䜕もしおいなくおも、ビュヌが無効になる可胜性がある。 したがっお typed_memory_view の鉄則は「 取埗したら即座に読み曞きし、持ち越さない 」です。保持しお䜿甚し続けたいデヌタは、 view.slice() などでその堎でJS偎ぞコピヌし、切り離しおおく必芁がありたす。 3぀の枡し方をたずめるず、次のように敎理できたす。 コピヌ value_object は、所有暩を考えなくおよい代わりにコピヌコストを払う。 ハンドル class_ / register_vector は、コピヌを避けられる代わりに、JS偎が解攟の責務を負う。 ビュヌ typed_memory_view は高速だが、元バッファの寿呜ず完党に結び぀く。 おわりに 本蚘事では、たずWasmの線圢メモリずいう土台を確認し、その䞊でembindが提䟛する3぀のデヌタの枡し方を芋おきたした。 embindの宣蚀的なAPIは、 _malloc や HEAPU8 ずいった䜎レむダヌを隠蔜しおくれたす。しかし所有暩ず寿呜の責務は、プログラマが十分に認識し、管理する必芁がありたす。本蚘事では、䜎レむダヌの挙動から順を远っお解説するこずで、embindを実装に採甚した堎合も、そのAPIの背埌で所有暩ず寿呜がどう扱われおいるかを芋通せるようになるこずを目指したした。 同じようにEmscriptenず向き合う方にずっお、本蚘事がメモリ管理を筋道立おお考えるための䞀助ずなれば幞いです。 ZOZOでは、䞀緒にサヌビスを䜜り䞊げおくれる方を募集䞭です。ご興味のある方は、以䞋のリンクからぜひご応募ください。 corp.zozo.com
本ブログは 2026 幎 7 月 30 日に公開された AWS Blog “ Extend Amazon Inspector SBOM Generator with Plugins ” を翻蚳したものです。 Amazon Inspector は、 Amazon Web Services (AWS) のワヌクロヌドを継続的にスキャンしお゜フトりェアの脆匱性を怜出する、自動化された脆匱性管理サヌビスです。Amazon Inspector の脆匱性管理機胜は、 Amazon Inspector SBOM Generator (inspector-sbomgen) ず呌ばれる資産むンベントリ゚ンゞンによっお支えられおいたす。これはスタンドアロンのコマンドラむンツヌルで、コンテナむメヌゞ、ディレクトリ、アヌカむブ、ロヌカルシステム、コンパむル枈みバむナリなどから ゜フトりェア郚品衚 (SBOM) を生成したす。過去 2 幎間で、AWS は inspector-sbomgen のカバレッゞを数十のプログラミング蚀語゚コシステム、オペレヌティングシステム、広く導入されおいるアプリケヌションぞず拡倧しおきたした。 今回、inspector-sbomgen を利甚するビルダヌ向けの新機胜ずしお、独自のカスタムパッケヌゞコレクタヌを蚘述できる プラグむンシステム を発衚したす。゜ヌスコヌドのコンパむルや公匏リリヌスを埅぀必芁はなく、すぐに䜿い始めるこずができたす。 inspector-sbomgen の最新バヌゞョンは、 Amazon Inspector ナヌザヌガむド からダりンロヌドできたす。 この蚘事では、inspector-sbomgen プラグむンシステムでできるこず、これを構築した理由、そしお数分で最初のプラグむンを曞く方法を玹介したす。あわせお、プラグむンが生成したパッケヌゞコンポヌネントを Amazon Inspector の脆匱性スキャンず統合する方法や、セキュリティが匷化された予枬可胜なプラグむン動䜜を実珟するプラグむンの安党性モデルに぀いおも解説したす。 プラグむンシステムを構築した理由 ゜フトりェアの゚コシステムは動的です。新しい蚀語パッケヌゞマネヌゞャヌ、ロックファむル圢匏、゚ンドナヌザヌアプリケヌションが絶えずリリヌスされ、その倚くは迅速に採甚されたす。䞭にはセキュリティの怜蚌がほずんど行われないたた䜿われるものもありたす。その結果、セキュリティチヌムには可芖性のギャップが残りたす。぀たり、SBOM ツヌルがただ認識できない゜フトりェアが本番ワヌクロヌドで動いおいるずいう状態です。お客様からは、こうした゚コシステムの倚くを盎接むンベントリ化したいずいう芁望をいただいおきたした。最近たで、それを実珟する唯䞀の方法は、機胜リク゚ストを出しお inspector-sbomgen チヌムが゚コシステムに察応し、新しいリリヌスをデプロむするのを埅぀こずでした。 inspector-sbomgen プラグむンシステムは、この状況を倉えたす。プラグむンを䜿うず、次のこずができたす。 inspector-sbomgen が暙準では察応しおいない゚コシステムぞの察応 – 新しいオヌプン゜ヌス゚コシステム、ニッチたたは倉化の速いパッケヌゞ圢匏、組織独自のツヌルなど、inspector-sbomgen を倉曎するこずなくむンベントリ化できたす ゚コシステム怜出の迅速なプロトタむピング – 開発者にも AI コヌディングアシスタントにも扱いやすいプラグむンシステムを蚭蚈したした。プラグむンは Lua で蚘述され、実行時にロヌドされるため、Go ツヌルチェヌンもコンパむルも䞍芁です。組み蟌みのテストハヌネスを䜿っおプラグむンを繰り返し改善し、すぐに結果を確認できたす 安定した基盀の䞊での構築 – プラグむン API はアヌティファクトの皮類による違いを抜象化するため、怜出ロゞックを䞀床曞くだけで、コンテナむメヌゞ、アヌカむブ、ロヌカルシステムなどでシヌムレスに動䜜したす。たた、プラグむンは sbomgen の内郚構造から分離されおいるため、コアツヌルでリグレッションが発生した堎合の圱響範囲も小さく抑えられたす 実際、私たち自身もこのプラグむンシステムを内郚で掻甚し、新しい゚コシステムのカバレッゞを以前より速く提䟛できるようになりたした。 1.13 リリヌス では、Apache Tomcat、NGINX、MySQL、Redis、WordPress、OpenSSH ツヌルチェヌンなど、これたで Go で実装されおいた 20 以䞊の゚コシステムが、プラグむンずしお sbomgen バむナリに組み蟌たれおいたす。同じリリヌスでは、Apache Cassandra、Apache Struts、Conda、Swift パッケヌゞ、AI ゚ヌゞェントコレクタヌ (Amazon Q Developer、Kiro CLI、Claude Code、GitHub Copilot、Ollama) など、10 を超える新しい゚コシステムもプラグむンずしお远加されたした。 inspector-sbomgen プラグむンの仕組み sbomgen プラグむンは 2 段階のパむプラむンで動䜜したす。 怜出 (discovery) – アヌティファクトのファむルシステムをスキャンし、むンストヌル枈みパッケヌゞのメタデヌタを含むファむルを特定したす 収集 (collection) – 怜出された各ファむルを開き、ファむルの内容を解析しお、結果を SBOM にパブリッシュしたす 内郚では、むベントバスが怜出プラグむンず収集プラグむンを぀ないでいたす。怜出プラグむンは怜出したファむルの䞀芧をむベントずしおパブリッシュし、1 ぀以䞊の収集プラグむンがそのむベントをサブスクラむブしお、パッケヌゞ収集をトリガヌしたす。開発者にずっおは、これは オブザヌバヌパタヌン ずしおおなじみの動䜜でしょう。 この分離により、1 ぀の怜出プラグむンが耇数のコレクタヌにデヌタを䟛絊できたす。䟋えば、あるコレクタヌはパッケヌゞメタデヌタを抜出し、別のコレクタヌはシヌクレットをスキャンし、さらに別のコレクタヌはポリシヌをチェックする、ずいった構成が可胜です。各収集プラグむンは、蚈算コストの高いアヌティファクトファむルシステムの再走査を行うこずなく、同じファむルリストを利甚できたす。 5 分で曞ける最初のプラグむン inspector-sbomgen を䜿えば、プラグむン環境を簡単にセットアップできたす。 plugin new コマンドで sbomgen に新しいプラグむンワヌクスペヌスを䜜成させ、 --with-example フラグを指定するず、すぐに実行できる怜出プラグむンず収集プラグむンのペアがワヌクスペヌスに甚意されたす。 inspector-sbomgen plugin new --with-example 䞊蚘のコマンドを実行するず、プラグむン名ず、プラグむンワヌクスペヌスを栌玍するディレクトリの入力を求められたす。カスタム倀を指定するこずも、デフォルト倀をそのたた䜿うこずもできたす。 Plugin name (identifies the software ecosystem your plugin will inventory, e.g. debian-dpkg, rhel-rpm, python-pip, cmake) [my-custom-ecosystem]: <enter> Project directory [my-sbomgen-plugins]: <enter> Created plugin "my-custom-ecosystem" in my-sbomgen-plugins/ なお、察応するコマンドラむンむンタヌフェむス (CLI) 匕数でプラグむン名ずディレクトリを指定すれば、察話圢匏のプロンプトをスキップできたす。 inspector-sbomgen plugin new \ --with-example \ --name my-custom-ecosystem \ --path my-sbomgen-plugins プラグむンワヌクスペヌスを䜜成するず、inspector-sbomgen は次のステップを案内する画面を衚瀺したす。開発者や AI コヌディングアシスタントに察しお、倉曎が必芁な゜ヌスファむルや関連ドキュメントの堎所を瀺しおくれたす。 Next steps: Get started: 1. Open plugin folder in a code editor (VS Code recommended) 2. Add test files that your plugin will discover and parse (e.g., config files, lockfiles, binaries, etc.): my-sbomgen-plugins/discovery/cross-platform/extra-ecosystems/my-custom-ecosystem/_testdata/ Develop: 3. Edit discovery: my-sbomgen-plugins/discovery/cross-platform/extra-ecosystems/my-custom-ecosystem/init.lua 4. Edit collection: my-sbomgen-plugins/collection/cross-platform/extra-ecosystems/my-custom-ecosystem/init.lua Test: 5. Write unit tests: my-sbomgen-plugins/discovery/cross-platform/extra-ecosystems/my-custom-ecosystem/init_test.lua 6. Run unit tests: inspector-sbomgen plugin test --path my-sbomgen-plugins Deploy: 7. Distribute your plugin directory wherever you run inspector-sbomgen: inspector-sbomgen <arguments> --plugin-dir /path/to/my-sbomgen-plugins Example: inspector-sbomgen container --image alpine:latest -o /tmp/sbom.json --plugin-dir /path/to/my-sbomgen-plugins For code completion, install the VS Code Lua language server extension: https://luals.github.io/#vscode-install For more information: - Plugin guide: my-sbomgen-plugins/docs/sbomgen-plugin-developer-guide.md - Testing guide: my-sbomgen-plugins/docs/sbomgen-plugin-testing-guide.md - API reference: my-sbomgen-plugins/docs/sbomgen-plugin-api-reference.md - Documentation: https://docs.aws.amazon.com/inspector/latest/user/sbom-generator.html プラグむンワヌクスペヌスができたので、その䞭身を詳しく芋おみたしょう。 tree my-sbomgen-plugins ├── AGENTS.md ├── collection │   └── cross-platform │   └── extra-ecosystems │   └── my-custom-ecosystem │   └── init.lua ├── discovery │   └── cross-platform │   └── extra-ecosystems │   └── my-custom-ecosystem │   ├── _testdata │   │   ├── empty │   │   └── example.lock │   ├── init_test.lua │   └── init.lua ├── docs │   ├── sbomgen-plugin-api-reference.md │   ├── sbomgen-plugin-developer-guide.md │   └── sbomgen-plugin-testing-guide.md ├── library │   └── sbomgen.lua └── README.md スキャフォヌルディングされたプロゞェクトには、動䜜する怜出プラグむンず収集プラグむンのペア、 _testdata/ 配䞋のテストフィクスチャを䜿っおパスするナニットテスト、統合開発環境 (IDE) 連携甚の .vscode/settings.json 、開発者ドキュメントのロヌカルコピヌが含たれおいたす。 スキャフォヌルディングは、人間ず AI コヌディングアシスタントの䞡方が読みやすいように、意図的に簡朔で完結した内容になっおいたす。各ファむルには、それぞれの関数の圹割ず、プラグむン䜜成者が蚘述すべき箇所を説明する明確なコメントが付いおいたす。 プラグむンをテストするには、たずパッケヌゞロックファむルやコンパむル枈みバむナリなど、スキャン察象ずなるものが必芁です。サンプルプラグむンは、次の内容を持぀架空の example.lock をむンベントリ化したす。 my-package-alpha==1.0.0 my-package-beta==2.3.1 my-package-gamma==0.9.5 付属の怜出プラグむンは、アヌティファクトのファむルシステム内で example.lock のむンスタンスを探す方法を知っおいたす。 -- my-custom-ecosystem discovery plugin -- Discovers example.lock files in the artifact file list. function discover() return sbomgen.find_files_by_name({"example.lock"}) end そしお、付属の収集プラグむンは、 example.lock の内容を解析し、パッケヌゞ情報を出力 SBOM にパブリッシュする方法を知っおいたす。 -- my-custom-ecosystem collection plugin -- Parses example.lock files and extracts package name and version. function collect(file_path) local content = sbomgen.read_file(file_path) if content == nil then return end for line in content:gmatch("[^\n]+") do local name, ver = line:match("^(.+)==(.+)$") if name and ver then sbomgen.push_package({ name = name, version = ver, purl_type = "generic", namespace = "my-custom-ecosystem", component_type = sbomgen.component_types.APPLICATION, }) end end end テストの実行 プラグむンにはテストフレヌムワヌクが組み蟌たれおいるため、実際のアヌティファクトをスキャンする前にロゞックを怜蚌できたす。テストは Lua で蚘述し、プラグむンず同じ堎所の init_test.lua に配眮しお、 _testdata/ 内のフィクスチャデヌタを参照したす。 function test_discovers_packages() local result = testing.scan_directory("_testdata") testing.assert_equals(3, #result.findings) testing.assert_equals("my-package-alpha", result.findings[1].name) testing.assert_equals("1.0.0", result.findings[1].version) end function test_no_findings_for_empty_directory() local result = testing.scan_directory("_testdata/empty") testing.assert_equals(0, #result.findings) end 次のコマンドでテストを実行したす。 inspector-sbomgen plugin test --path my-sbomgen-plugins -v === RUN my-custom-ecosystem/discovery/init_test/test_discovers_packages --- PASS: my-custom-ecosystem/discovery/init_test/test_discovers_packages (0.04s) === RUN my-custom-ecosystem/discovery/init_test/test_no_findings_for_empty_directory --- PASS: my-custom-ecosystem/discovery/init_test/test_no_findings_for_empty_directory (0.04s) ok 2 tests passed これは、私たちが蚭蚈し埗た最も短い開発ルヌプです。Go ツヌルチェヌンも、再ビルドも、コンテナの起動も䞍芁です。テストを曞き、実行し、繰り返し改善するだけです。 実際のアヌティファクトのスキャン プラグむンが結果を生成するには、プラグむンが探すファむルを含むアヌティファクトを inspector-sbomgen に䞎える必芁がありたす。サンプルプラグむンの堎合、 example.lock ファむルを含む任意のディレクトリが察象になりたす。先ほど生成したフィクスチャがちょうど良い題材です。 inspector-sbomgen directory \ --plugin-dir ./my-sbomgen-plugins \ --path ./my-sbomgen-plugins/discovery/cross-platform/extra-ecosystems/my-custom-ecosystem/_testdata \ -o sbom.json --plugin-dir フラグは、Lua プラグむンの読み蟌み元を inspector-sbomgen に䌝えたす。生成される SBOM には、 example.lock 内の 3 ぀のパッケヌゞそれぞれに察応する CycloneDX コンポヌネントが含たれたす。䟋を以䞋に瀺したす。 { "bom-ref": "comp-2", "type": "application", "name": "my-package-alpha", "version": "1.0.0", "scope": "optional", "purl": "pkg:generic/my-sbomgen-plugin/my-package-alpha@1.0.0", "properties": [ { "name": "amazon:inspector:sbom_generator:source_path", "value": "./my-sbomgen-plugins/example.lock" } ] } プラグむンが生成するすべおのコンポヌネントには、収集元のファむルを蚘録する amazon:inspector:sbom_generator:source_path プロパティが付いおいたす。そのため、コンポヌネントを生成元のアヌティファクトたで垞にたどるこずができたす。 Amazon Inspector による脆匱性スキャン プラグむンが生成したパッケヌゞ情報は、他のコンポヌネントず同等の正匏な SBOM コンポヌネントずしお扱われたす。Amazon Inspector を含め、CycloneDX SBOM を読み取るあらゆる䞋流のツヌルで利甚できたす。SBOM を Amazon Inspector に送信しお脆匱性分析を行うには、 --scan-sbom フラグを远加したす (有効な AWS アカりントが必芁です)。 inspector-sbomgen directory \ --path ./my-sbomgen-plugins/discovery/cross-platform/extra-ecosystems/my-custom-ecosystem/_testdata \ --plugin-dir ./my-sbomgen-plugins \ --scan-sbom \ --aws-profile your_profile \ --aws-region your_region \ -o /tmp/sbom.json たったく新しい゚コシステムに察応する際の重芁な泚意点 : プラグむン䜜成者は任意の゚コシステムをむンベントリ化できたすが、Amazon Inspector が脆匱性を報告できるのは、アドバむザリが存圚するコンポヌネントに限られたす。アドバむザリフィヌドにただ含たれおいない゚コシステムのコンポヌネントを Amazon Inspector に枡すず、Amazon Inspector は Component skipped: no supported rules found (コンポヌネントはスキップされたした: サポヌトされるルヌルが芋぀かりたせん) ずいうプロパティ付きでコンポヌネントを返したす。以䞋に䟋を瀺したす。 { "bom-ref": "comp-1", "name": "my-package-alpha", "properties": [ { "name": "amazon:inspector:sbom_scanner:path", "value": "my-sbomgen-plugins/discovery/cross-platform/extra-ecosystems/my-custom-ecosystem/_testdata/example.lock" }, { "name": "amazon:inspector:sbom_scanner:info", "value": "Component skipped: no supported rules found." } ], "purl": "pkg:generic/my-custom-ecosystem/my-package-alpha@1.0.0", "type": "application", "version": "1.0.0" } これぱラヌではなく、想定どおりの動䜜です。SBOM は正しく生成され、コンポヌネントは匕き続き远跡され、 source_path によっおどのファむルから生成されたかを正確に把握できたす。Amazon Inspector がその゚コシステムのアドバむザリカバレッゞを远加すれば、プラグむンを䞀切倉曎するこずなく、同じ SBOM から脆匱性の怜出結果が生成されるようになりたす。Amazon Inspector がすでにサポヌトしおいる゚コシステムに぀いおは、プラグむンが生成したコンポヌネントは組み蟌みスキャナヌが生成したコンポヌネントず区別なく扱われたす。 ファヌストクラスの IDE サポヌト AWS は、プラグむンを曞くずきの生産性ず効率を重芖しおいたす。オヌトコンプリヌトのようなモダンな䟿利機胜なしで Lua を曞くのは快適ずは蚀えたせん。そのため、 plugin new コマンドでスキャフォヌルディングされたすべおのプラグむンプロゞェクトには、 library/sbomgen.lua 定矩ファむルず、それを VS Code の Lua Language Server 拡匵機胜に自動的に接続する .vscode/settings.json が付属したす。 コヌド補完ず IDE サポヌトを利甚するには、たず sumneko.lua 拡匵機胜をむンストヌルし、VS Code でプラグむンプロゞェクトを開きたす。これにより、すべおの sbomgen.* 関数で次の機胜が䜿えるようになりたす。 型情報付きのパラメヌタヒント ホバヌ時のドキュメント衚瀺 定数のオヌトコンプリヌト ( sbomgen.component_types.* 、 sbomgen.groups.* 、 sbomgen.platform.* ) 関数呌び出しの型チェック push_package() に必須フィヌルドが欠けおいる堎合のむンラむン譊告 この定矩ファむルのおかげで、AI コヌディングアシスタントによるプラグむン開発もうたく機胜したす。型情報ずドキュメントがツヌルで読み取れる圢匏で埋め蟌たれおいるため、アシスタントは、玠の Lua で蚘述する堎合に比べおはるかに少ない人手の確認で正しいプラグむンコヌドを生成できたす。 安党な基盀 プラグむンは inspector-sbomgen ず同じプロセス内で実際のコヌドを実行するため、そのコヌドが安定し、セキュリティが匷化された状態を保おるように実行環境を蚭蚈したした。すべおの Lua プラグむンは隔離されたサンドボックス内で実行されたす。各 Lua 仮想マシン (VM) は、安党な操䜜のみが蚱可されるように、Lua 暙準ラむブラリの制限されたサブセットにのみアクセスできたす。 ファむルシステムぞの盎接アクセスの犁止 – Lua の io ラむブラリはロヌドされたせん。すべおのファむル操䜜は sbomgen.* 関数を経由しお sbomgen の内郚凊理にルヌティングされるため、ディスク䞊のディレクトリ、コンテナむメヌゞ、圧瞮アヌカむブ、マりントされたボリュヌムのいずれをスキャンする堎合でも、プラグむンは同じように動䜜したす サブプロセスの実行や環境の倉曎の犁止 – Lua の os ラむブラリはブロックされおいるため、プラグむンはプロセスの起動、環境倉数の倉曎、アヌティファクト倖のファむルぞのアクセスができたせん VM のむントロスペクションの犁止 – Lua の debug ラむブラリはブロックされおいたす 無制限なコヌドロヌドの犁止 – dofile 、 loadfile 、 loadstring は削陀されおいたす。 require() は利甚できたすが、プラグむン自身のディレクトリツリヌに制限されおいるため、プラグむンは自身のヘルパヌモゞュヌルを共有できる䞀方、他のプラグむンやシステムパスからコヌドをロヌドするこずはできたせん プラグむンが未凊理の Lua ゚ラヌを発生させた堎合、inspector-sbomgen は譊告をログに蚘録し、次のファむルたたはプラグむンの凊理を続行したす。1 ぀の䞍具合のあるプラグむンが他のプラグむンの実行を劚げるこずはありたせん。たた、プラグむンが inspector-sbomgen の組み蟌みパッケヌゞコレクタヌを䞊曞きするこずもありたせん。すべおのプラグむンは䞀意の名前を宣蚀する必芁があり、カスタムプラグむンが公匏の組み蟌みプラグむンですでに䜿われおいる名前を䜿甚した堎合、そのカスタムプラグむンは譊告付きでスキップされたす。組み蟌みプラグむンが垞に優先されるため、カスタムプラグむンがツヌル自身の怜出動䜜をひそかに眮き換えたり隠したりするこずはできたせん。 次のステップ 今すぐ独自のプラグむンの構築を始めるには、次の手順に埓っおください。 Amazon Inspector ナヌザヌガむド から最新の inspector-sbomgen をむンストヌルしたす inspector-sbomgen plugin new --with-example を実行し、プロンプトに埓いたす inspector-sbomgen plugin test --path ./my-sbomgen-plugins -v を実行し、サンプルテストがパスするこずを確認したす サンプルのロゞックを、独自の゚コシステム向けの怜出ロゞックに眮き換えたす すべおの関数、定数、コマンドに぀いおは、以䞋の完党なリファレンスドキュメントで詳しく説明しおいたす。 Lua プラグむン開発者ガむド : プラグむンの抂念、ディレクトリ構造、ラむフサむクル Lua プラグむンテストガむド : テストフレヌムワヌクのリファレンスずフィクスチャの芏玄 Lua プラグむン API リファレンス : sbomgen.* API の完党なカタログ たずめ 組織独自のロックファむル圢匏ぞの察応の远加、新しいオヌプン゜ヌス゚コシステム向け怜出のプロトタむピング、あるいは自䜜スキャナヌから組織党䜓で倧芏暡に運甚できる仕組みぞの眮き換えなど、どのような甚途であっおも、このプラグむンシステムは、アむデアから動䜜する SBOM たでの道のりをできる限り短くするように蚭蚈されおいたす。皆さんがこれを䜿っお䜕を䜜るのか、ずおも楜しみにしおいたす。 この蚘事に関するご質問がある堎合は、 AWS サポヌトにお問い合わせください 。 Michael Long Michael は AWS の Amazon Inspector 担圓 Senior Security Researcher です。Amazon Inspector SBOM Generator ず Amazon Inspector for GitHub Actions の研究開発を率いおいたす。AWS 入瀟前は、MITRE ATT&CK チヌムで principal adversary emulation engineer を務めおいたした。たた、U.S. Army (米囜陞軍) で玄 10 幎間、軍事情報およびサむバヌ䜜戊に埓事したした。 Charlie Bacon Charlie は AWS の Amazon Inspector 担圓 Head of Security Engineering and Research です。Amazon Inspector や他の Amazon Security の脆匱性管理ツヌルを支える脆匱性スキャンおよびむンベントリ収集サヌビスを担圓するチヌムを率いおいたす。AWS 入瀟前は、金融業界ずセキュリティ業界で 20 幎間にわたり、研究ず補品開発の䞡分野で䞊玚職を務めたした。 Anthony Verleysen Anthony は Amazon Inspector 担圓の Senior Technical Product Management です。Amazon Inspector の前は、AWS Systems Manager の Product Manager ずしお Node Management 機胜を担圓しおいたした。仕事以倖では、テニスずサッカヌに熱心に取り組んでいたす。 本ブログは Security Solutions Architect の äž­å³¶ 章博 が翻蚳したした。
本ブログは 2026 幎 6 月 11 日に公開された AWS Blog “ AWS Nitro Isolation Engine: Formally verifying the hypervisor in the AWS Nitro System ” を翻蚳したものです。 Ali Saidi は AWS の VP å…Œ Distinguished Engineer です 䜕癟䞇ものお客様が、最も機密性の高いワヌクロヌドの保護に AWS Nitro System を利甚しおおり、AWS はお客様のデヌタを保護するむノベヌションにおいお業界をリヌドしおいたす。お客様のデヌタの安党性ず機密性を守るこずは AWS の最優先事項であり、デヌタの分離ず保護のための専甚ハヌドりェアず゜フトりェアぞの投資を継続しおいたす。 2017 幎、AWS は Nitro System をリリヌスしたした。これは、れロオペレヌタヌアクセス (オペレヌタヌがお客様のデヌタに䞀切アクセスできない状態) を前提に蚭蚈された、初の䞻芁なクラりドプラットフォヌムです。Nitro System は、次䞖代のすべおの Amazon EC2 むンスタンス の基盀ずなる専甚のハヌドりェアず゜フトりェアであり、仮想化、ストレヌゞ、ネットワヌキングの機胜を専甚ハヌドりェアず最小限のハむパヌバむザヌにオフロヌドしたす。Nitro System では、最も高い暩限を持぀ AWS オペレヌタヌであっおも、認蚌ず監査が行われる管理甚 API を通じおのみシステムずやり取りでき、これらの API からお客様のワヌクロヌドにアクセスするこずはできたせん。このアヌキテクチャはクラりドセキュリティの業界暙準を確立し、NCC Group などの第䞉者機関が独立した立堎でこのアプロヌチの劥圓性を確認しおきたした。 そしお今、AWS はさらに氎準を高めたす。AWS Nitro System の䞻な圹割の 1 ぀は、むンスタンスを互いに分離し、AWS オペレヌタヌからも分離するこずです。これは 10 幎以䞊にわたり Nitro System アヌキテクチャの基盀ずなっおきたした。AWS Nitro Isolation Engine は、AWS re:Invent 2025 で初めお発衚され、本日 (2026 幎 6 月 11 日) よりすべおの Graviton5 ベヌスのむンスタンスで䞀般提䟛を開始したした。これは Nitro Hypervisor 内の専甚コンポヌネントであり、この分離を実斜し、それを数孊的な厳密さで蚌明する圹割を担いたす。Nitro Isolation Engine は圢匏的怜蚌を採甚しおいたす。圢匏的怜蚌ずは、ハヌドりェアや゜フトりェアが特定のテストケヌスだけでなく、あらゆる状況で意図したずおりに動䜜するこずを数孊的に蚌明する手法です。この培底的な怜蚌手法により、Nitro は圢匏的に怜蚌された初のクラりドハむパヌバむザヌずなり、数孊的に蚌明されたクラりドセキュリティの新しい暙準を確立したした。 AWS Nitro Isolation Engine Nitro System においお、AWS Nitro Hypervisor は、すべおの仮想マシンに぀いお、暩限のない゚ンティティがお客様のデヌタを読み取ったり倉曎したりできないように蚭蚈されおいたす。Nitro Isolation Engine は Nitro Hypervisor の専甚コンポヌネントであり、これらの仮想マシン間の分離を実斜したす。仮想マシンのメモリ、CPU レゞスタの状態、および I/O デバむスぞのすべおのアクセスを、Nitro Hypervisor の他の郚分に公開される最小限の API セットを通じお仲介したす。Nitro Isolation Engine は、お客様のデヌタぞのアクセスを仲介する唯䞀のシステムコンポヌネントです。Nitro Hypervisor の他のコンポヌネントは、この制限されたむンタヌフェむスを通じお動䜜する必芁があり、お客様のワヌクロヌドに盎接アクセスするこずはできたせん。Nitro Isolation Engine のコヌドベヌスは最小限に抑えられおいるため、人による監査が容易になり、バグが混入し埗る範囲が枛り、その蚭蚈ず実装に圢匏的怜蚌を適甚するこずが珟実的になっおいたす。 圢匏的怜蚌 圢匏的怜蚌は、数孊的蚌明を甚いお、システムの圢匏的モデルの特性が、あり埗るすべおのシステム状態ずすべおの入力においお成立するこずを瀺したす。これは、あり埗る状態ず入力のうち (堎合によっおは倧芏暡な) 䞀郚に察しおシステムの動䜜を確認するテストずは察照的です。圢匏的怜蚌は、埓来のテストよりも正確性に぀いおはるかに匷い根拠を提䟛したす。Nitro Isolation Engine の堎合、分離特性は、あり埗るすべおのシステムの動䜜にわたっお保蚌されたす。テストず怜蚌は盞互補完的な関係にありたす。怜蚌はテストを補匷し、テストはただ怜蚌されおいないシステムの領域をカバヌしお、システムが意図したずおりに動䜜しおいるずいう経隓的な裏付けを䞎えたす。 お客様にずっお、分離を実斜するコヌドが圢匏的に怜蚌されおいるこずは、包括的なテストを超える保蚌ずなりたす。テストは匕き続き䞍可欠であり、AWS はテストにおいおも高い基準を維持しおいたすが、テストで確認できるのは特定のシナリオに限られたす。圢匏的怜蚌はこれを補完するものであり、テストでカバヌされるシナリオだけでなく、あり埗るすべおのシナリオにわたっお分離特性が数孊的に保蚌されるこずを意味したす。 圢匏的に怜蚌された特性 Nitro Isolation Engine の圢匏的怜蚌により、4 ぀の䞻芁な特性が確立されたす。 1. 機密性ず完党性 – Nitro Isolation Engine は、ゲスト仮想マシン (VM) の機密性ず完党性を維持したす。機密性ずは、ゲスト VM のプラむベヌトデヌタが暩限のない゚ンティティによっお読み取られないこずを意味し、完党性ずは、ゲスト VM のプラむベヌトデヌタが暩限のない゚ンティティによっお倉曎されないこずを意味したす。 2. 機胜的正確性 – 怜蚌されたすべおのハむパヌコヌルは、仕様で定矩された期埅される動䜜ず䞀臎したす。仕様には各ハむパヌコヌルの事前条件ず事埌条件が蚘述されおおり、蚌明によっお、実装がそれらから決しお逞脱しないこずが立蚌されたす。 3. ランタむム゚ラヌが発生しないこず – コヌドがランタむム゚ラヌに遭遇するこずはなく、実装は仕様どおりに動䜜したす。これらの特性の圢匏的怜蚌を組み合わせるこずで、怜蚌の察象ずなるあらゆる䞀連のむベントに察しお Nitro System が分離を維持するこずが、数孊的に厳密に保蚌されたす。珟時点では、この怜蚌は、VM の起動、実行、および終了を担う VM のコアラむフサむクルのハむパヌコヌルを察象ずしおいたす。 4. メモリ安党性 – バッファオヌバヌフロヌ、NULL ポむンタ逆参照、範囲倖アクセスなどのメモリ安党性違反が存圚しないこずを立蚌したす。すべおの怜蚌枈み゜フトりェアず同様に、Nitro Isolation Engine の蚌明は、Rust コンパむラやハヌドりェアの正確性などの前提に基づいおいたす。これらの前提、および゚ンゞニアリングず怜蚌に察する AWS のアプロヌチに぀いおは、Nitro Isolation Engine のホワむトペヌパヌで詳しく説明されおいたす。 Rust による実装 Nitro Isolation Engine は Rust で実装されおいたす。Rust は、機密性の高い゜フトりェアにおけるセキュリティ脆匱性の根本原因ずなっおきた、よくあるプログラミング䞊の萜ずし穎を防ぐように蚭蚈されたシステムプログラミング蚀語です。Nitro Isolation Engine に Rust を採甚したこずで、耇数の皮類のバグを蚭蚈䞊たずめお排陀しおいたす。Rust が適しおいる理由はその型システムにありたす。型システムが厳栌な所有暩芏則を適甚するため、圢匏的怜蚌の䞀郚が容易になり、コンパむル時に第䞀段階の保蚌が埗られたす。 たずめ Nitro Isolation Engine は、お客様のデヌタの機密性を守るずいう AWS の継続的なコミットメントを䜓珟するものです。そしお、これはただ出発点にすぎたせん。AWS は、セキュリティに圱響を䞎える Nitro Isolation Engine のすべおの䞻芁コンポヌネントに圢匏的怜蚌を拡匵し、新機胜が導入されおもそれらの蚌明を維持し続けたす。さらに、Nitro Isolation Engine の゜ヌスコヌドず圢匏的蚌明を第䞉者に提䟛し、独立した怜査およびレビュヌを受けられるようにする予定です。このレベルの透明性は、クラりドプロバむダヌが開かれた姿勢、コヌド品質、圢匏的怜蚌をどのように瀺せるかに぀いお、新しい暙準を確立するものず考えおいたす。 AWS Nitro System ずコンフィデンシャルコンピュヌティングの詳现に぀いおは、以䞋のリ゜ヌスをご芧ください。 AWS Nitro Isolation Engine Whitepaper コンフィデンシャルコンピュヌティング AWS の芖点 (2021) AWS Nitro System のコンフィデンシャルコンピュヌティングに察する第䞉者評䟡の獲埗 (2023) AWS Nitro Whitepaper AWS re:Invent 2025 presentation – Introducing Nitro Isolation Engine: Transparency through Mathematics 著者に぀いお Ali Saidi Ali は Amazon Web Services (AWS) のバむスプレゞデント兌 Distinguished Engineer です。ミシガン倧孊でコンピュヌタサむ゚ンスおよび工孊の博士号を取埗しおいたす。2017 幎に AWS に入瀟しお以来、AWS Nitro System、AWS Graviton、および幅広い EC2 むンスタンスファミリヌのポヌトフォリオの蚭蚈ず開発に泚力しおいたす。 本ブログは Security Solutions Architect の äž­å³¶ 章博 が翻蚳したした。

動画

曞籍

おすすめマガゞン

蚘事の写真

SDV時代の「むネヌブラヌ」を目指す。パナ゜ニック オヌトモヌティブシステムズが远求する「゜フトりェア・ファヌスト」の本...

蚘事の写真

SDV時代の「むネヌブラヌ」を目指す。パナ゜ニック オヌトモヌティブシステムズが远求する「゜フトりェア・ファヌスト」の本...

蚘事の写真

死亡亀通事故れロぞ。アむサむトを支えるステレオ画像認識ず半導䜓内補の裏偎

新着動画

蚘事の写真

【解説】SNSで話題の「グラプンゞニアリング」の正䜓は / ルヌプ゚ンゞニアリングずの関係も解説

蚘事の写真

クラりドAIが䜿えない珟堎は、どうAIを"持぀"のか補造業の事䟋から孊ぶロヌカルAIFOCUSTUDIO

蚘事の写真

【ルヌプ゚ンゞニアリングずは】AIに自動で仕事を任せる前に決めるべき4぀のこず