Amazon Web Services ブログ
コンフィデンシャルコンピューティング: AWS の視点
政府機関や規制の厳しい業界から、中小企業、ベンチャー企業まで、世界中のお客様が Amazon Web Services (AWS) に最も重要なデータやアプリケーションを託しています。お客様のワークロードを安全かつ機密に保ち、お客様がプライバシーやデータ主権の要件を満たすことが AWS の最優先事項です。AWS では、セキュリティ技術への投資と厳格な運用方法により、最も要求の厳しいお客様の機密データの処理とプライバシーの基準を満たし、また、それを上回るサービスを提供しています。長年にわたり、お客様のセキュリティと機密性の水準を高め続けるために、専用のテクノロジーとシステムに多くの投資を行ってきました。
この 1 年で、お客様との会話の中で「コンフィデンシャルコンピューティング」という言葉への関心が高まってきました。この言葉は、様々な問題を解決する技術に対して使われており、実際に何を意味するのか混乱を招いているようです。お客様のイノベーションに貢献することを使命とする私たちは、コンフィデンシャルコンピューティングに関する私たちの視点をお伝えしたいと思います。
AWS では、コンフィデンシャルコンピューティングを「特別なハードウェアとファームウェアを使用することで、処理中のお客様のデータやコードを外部アクセスから保護すること」と定義しています。コンフィデンシャルコンピューティングには、セキュリティとプライバシーの 2 つの側面があります。1 つ目は、お客様のコードとデータを、基盤となるクラウドインフラストラクチャのオペレータから保護すること。そして 2 つ目は、お客様が自らのワークロードを、より信頼できるコンポーネントとそうでないコンポーネントに分けることです。つまり、お互いに信頼していない、あるいは信頼できない当事者が、各当事者のコードとデータの機密性を維持しながら、協力して動作できるシステムを設計できることです。
この記事では AWS Nitro System が、Nitro ベースの Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを使用するお客様に、コードやワークロードの変更することなくこれらの保護が提供されており、1 つ目の要件を満たしていることを説明します。また、2 つ目の要件を満たすために、お客様が使い慣れたツールセットやプログラミングモデルを利用できることについても説明します。まず、この説明のために Nitro システムについて解説していきましょう。
Nitro System とは?
最新の Amazon EC2 インスタンス基盤である Nitro System は、お客様のアプリケーションにさらなる機密性とプライバシーを提供するために、AWS がどのような発明と革新を行ってきたかを示す良い事例です。 10年間、私たちはより多くの仮想化機能を専用のハードウェアとファームウェアに移行することで、EC2 仮想化スタックを再発明してきました。Nitro System は、この継続的かつ持続的なイノベーションの成果です。Nitro System は、主に Nitro Card、Nitro Security Chip、Nitro Hypervisor の 3 つで構成されています。Nitro Card は、Amazon Virtual Private Cloud(Amazon VPC)、Amazon Elastic Block Store(Amazon EBS)、Amazon EC2 インスタンスストレージなど、I/O 機能を果たす計算機能を持つ専用ハードウェアコンポーネントです。
Nitro Card は、当社のシリコン開発子会社である Annapurna Labs が設計、製造、テストを行っており、EC2 インスタンスを実行している EC2 サーバー(基盤となるホストインフラストラクチャ)から主要な仮想化機能を移行しています。Nitro System では、Nitro Security Chip を用いてハードウェアベースの信頼性を確保しており、システムを暗号化して測定、検証しています。これにより、従来のハードウェアや仮想化システムよりも大幅に高いレベルの信頼性を実現しています。Nitro Hypervisor は、メモリや CPU の割り当てを管理する軽量なハイパーバイザーで、ベアメタルと見分けがつかないほどのパフォーマンスを実現しています(先日のブログ記事 – AWS Nitro Systemにおけるベアメタルインスタンスの性能 で、当社のベアメタルインスタンスとパフォーマンスを比較しました)。
コンフィデンシャルコンピューティングのための Nitro のアプローチ
Nitro System は主に 3 つの保護機能を提供しています。最初の 2 つは、コンフィデンシャルコンピューティングの側面である、クラウドオペレータおよびクラウドシステムソフトウェアからの保護を支援します。また 3 つ目は、お客様のワークロードをより信頼できる要素とそうでない要素に分離することを支援しています。
- クラウドオペレータからの保護: AWS では、お客様同士や、お客様とAWSの間でワークロードの機密性を確保するようにシステムが設計されています。Nitro System は、オペレータによってアクセスできないように設計されています。どんな人やシステムでも EC2 サーバー(基盤となるホストインフラ)にログインしたり、EC2 インスタンスのメモリを読み出したり、インスタンスのストレージや暗号化された EBS ボリュームに保存されているデータにアクセスできない仕組みになっています。AWS のオペレータが EC2 サーバーのメンテナンス作業のために特権が必要な場合でも、厳密に限定された認証・認可・監査済みの管理 API を使用することでのみ実施され、これらの API は EC2 サーバー上のお客様のデータにアクセスする機能を持っていません。これらの制限は Nitro System 自体に技術的に組み込まれているため、どんな AWS のオペレーターもこれらの制限を回避することはできません。さらに、メモリインターフェースレベルでの物理的な攻撃に対する保護を徹底するために、メモリ暗号化の機能も様々な EC2 インスタンスで提供しています。現在、メモリ暗号化は、Total Memory Encryption(TME)が搭載されている Graviton2 ベースのインスタンス (T4g, M6g, C6g, C6gn, R6g, X2g)と、Intel ベースの M6i インスタンスでデフォルトで有効になっています。また、AMD Milan プロセッサーを搭載した次期 EC2 プラットフォームには、Secure Memory Encryption(SME)が採用されます。
- AWS システムソフトウェアからの保護: Nitro System のユニークなデザインは、低レベルのハードウェアベースのメモリ分離機能を利用して、お客様のメモリへの直接アクセスを排除するとともに、ベアメタル・インスタンス上でのハイパーバイザーの必要性も排除しています。
- 仮想化された EC2 インスタンス(図1)では、Nitro Hypervisor が基盤となるハードウェア仮想化システムと連携して、互いに分離され、ハイパーバイザー自体からも分離された仮想マシンを作成しています。ネットワーク、ストレージ、GPU、アクセラレータへのアクセスには、SR-IOV を使用しています。SR-IOV は、ハイパーバイザーによって安全に作成されたパススルー接続を使用して、インスタンスがハードウェアデバイスと直接対話できるようにする技術です。インスタンスのスナップショットやハイバネーションといった EC2 の機能は、AWS のオペレータがアクセスできないエンド・ツー・エンドのメモリ暗号化を採用した専用エージェントによって実現されています。
- ベアメタル EC2 インスタンス(図2)では、EC2 サーバー上でハイパーバイザーが稼働しておらず、お客様は基盤となるメインシステムボードに専用かつ排他的にアクセスすることができます。 ベアメタルインスタンスは、パフォーマンスカウンターや Intel® VT など、仮想化環境では利用できない低レベルのハードウェア機能が必要なアプリケーションや、ハードウェア上で直接実行されるアプリケーション、非仮想化環境で使用するためのライセンスやサポートを必要とするアプリケーションのために、物理リソースへのアクセスを必要とするお客様向けに設計されています。ベアメタルインスタンスには、ストレージ、ネットワークなど、仮想化インスタンスと同じの EC2 機能が搭載されています。これは、通常は仮想化レイヤーが提供するシステム機能を、Nitro System が専用のハードウェアとシステムファームウェアを使って分離、独立した形で実装しているためです。 また、 Amazon EC2 Mac instances は同じ技術を使って作成されています。Nitro System は独立したバス上で動作するため、他の物理的な変更を加えることなく、Apple 社の Mac mini ハードウェアに Nitro card を直接取り付けることで実現しています。
- お客様のオペレータやソフトウェアから機密性の高いデータや処理を保護: Nitro Enclaves は、コンフィデンシャルコンピューティングの 2 つ目の側面も提供しています。Nitro Enclaves は、お客様の EC2 インスタンスから起動し、その EC2 インスタンスに接続された、高度に分離されたコンピュート環境です。デフォルトでは、いかなるユーザー(たとえ root や admin ユーザーであっても)や、EC2 インスタンス上で実行されているソフトウェアが、分離領域にインタラクティブにアクセスすることはできません。Nitro Enclaves には暗号認証機能があり、分離領域にデプロイされたすべてのソフトウェアが検証されており、改ざんされていないことをお客様は確認することができます。Nitro Enclave は、Nitro ベースの EC2 インスタンスと同レベルのクラウドオペレータ からの保護機能に加えて、お客様がシステムを信頼度の異なるコンポーネントに分割する機能を追加しています。これにより、お客様の特に機密性の高いデータやコードを、AWS のオペレータだけでなく、お客様自身の運用者や他のソフトウェアから保護することができます。Nitro Enclaves の主な目的は、EC2 インスタンス上のお客様のユーザーやソフトウェアから保護することです。 つまり、Nitro Enclaves は EC2 インスタンスを信頼できる境界の外にあるものとしてみなしています。Nitro Enclaves は EC2 インスタンスとメモリや CPU コアを共有しませんし、攻撃対象領域を大幅に縮小するために、Nitro Enclaves は IP ネットワークを持たず、永続的なストレージも提供していません。 また、Nitro Enclaves は開発者がアクセスしやすいプラットフォームとして設計されており、高度な暗号技術の知識や CPU のマイクロアーキテクチャの専門知識を必要としません。開発者は機密データ処理のアプリケーションを迅速かつ容易に構築することができ、他の Linux 環境のコードを書くのと同じように簡単に開発できるよう、親しみやすい開発方法を提供することにも注力されています。
まとめ
Nitro System のユニークな仮想化と分離のアプローチにより、お客様は機密性の高いデータの処理を AWS のオペレータやソフトウェアから安全に分離することができます。これは、コンフィデンシャルコンピューティングの重要な側面である、システムソフトウェアやクラウドオペレータからの本質的で標準の保護セットとして提供されています。また、Nitro Enclaves を利用することで、お客様ご自身のソフトウェアや運用者からも追加の保護を行うことができるようになっています。
今後の予定
これまで述べたように、Nitro System は、クラウド上のワークロードのセキュリティと機密性の水準を引き上げるという、10 年近くにわたる取り組みを象徴するものです。これにより既存の技術やハードウェアでできる以上のことを、お客様に提供できるようになりました。しかしこれで終わりではありません。今後もコンフィデンシャルコンピューティングの機能をさらに追加していく予定です。
直近の関連イベント
2021年11月11日(木)~12日(金)にかけて AWS Security Roadshow Japan 2021 がオンラインで開催されます。クラウド環境における重要データ保護やコンフィデンシャル・コンピューティングに関する基調講演、10 の AWS お客様事例セッション、AWS Zero Trust ワークショップ、AWS Security JAM や AWS Security GameDay など、楽しみながら学習できる機会が目白押しです。以下の登録サイトから是非お申し込みください。
https://aws.amazon.com/jp/about-aws/events/2021/securityroadshow/
AWS セキュリティに関するニュース、コンテンツ、新機能のご案内は Twitter でも配信しています。