【レポート】AWS Nitro Enclavesディープダイブ #SEC318 #reinvent

re:Invent 2020にて行われたSEC318「Deep dive on AWS Nitro Enclaves for applications running on Amazon EC2」のセッションレポートです。詳細は是非セッションを直接ご確認下さい。
2021.01.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、臼田です。

みなさん、re:Invent 2020に参加してますか?(挨拶

今回はre:Invent 2020で行われた以下セッションのレポートです。

概要

Deep dive on AWS Nitro Enclaves for applications running on Amazon EC2

The AWS Nitro System is the underlying platform for the next generation of Amazon EC2 instances that enables AWS to innovate faster, further reduce cost for AWS customers, and deliver added benefits like increased security and new instance types. This session dives deep on the security aspects of the Nitro System, including AWS Nitro Enclaves. You also learn how you can leverage the Nitro System to build secure applications using EC2 instances.

[翻訳]AWS Nitro Systemは、次世代のAmazon EC2インスタンスの基盤となるプラットフォームであり、AWSがより迅速にイノベーションを起こし、AWSのお客様のコストをさらに削減し、セキュリティの強化や新しいインスタンスタイプなどの追加のメリットを提供できるようにします。 このセッションでは、AWS Nitro Enclavesを含むNitroシステムのセキュリティ面について詳しく説明します。 また、Nitroシステムを活用してEC2インスタンスを使用して安全なアプリケーションを構築する方法についても学びます。

セッションのアーカイブはこちらにありますのでレポートを確認して興味が出たらぜひご確認下さい。

レポート

背景

2000年代のAmazon.comについてみてみる。この頃からAmazonでは利用者のクレジットカード情報を扱うためセキュリティは重要な課題であった。

Amazonの環境は本番環境で様々なワークロードが稼働していましたが、決済の仕組みは分離されていました。ネットワークは分離されすべての決済機能がトークンを利用して本番環境からアクセスされていました。

この分離は非常に強力で、機能やサイズ、アタックサーフェイス(攻撃可能域)を限定します。インターネットアクセスやインタラクティブなアクセスはありません。

今日では我々はこれと同じようなことをEC2でもVPCを利用して仮想的に、今すぐに実現できます。そして実際に多くの利用者がこのような構成を取りクレジットカードデータや個人情報などを分離しています。

Nitro Enclavesとは

Nitro Enclavesもこれと同じ発想で、EC2の中に信頼できる実行領域を作成するという考え方です。万が一EC2が侵害されても、enclaveは安全です。インスタンスはenclave内のメモリは読み取れず、中で何が起きているか確認することはできません。

Nitro Enclavesは信頼できる環境でデータを処理でき、暗号化処理を行ったりACMやKMSと連携できます。

そして追加料金無しで利用できます。(ここ重要)

Niro Systemsの詳細

AWS Nitro SystemができるまではXenを利用していて、インスタンスはハイパーバイザーによりCPUやメモリなどが管理され共有されていました。

Nitro SystemはAWSがハードウェアからデザインした仮想化プラットフォームで、利用者のインスタンス間でCPUやメモリなどのハードウェアは共有されません。

Nitro Systemには誰もログインすることはできません。EC2のエンジニアであってもです。マイクロサービスと同じように安全なAPIのみでアクセスできます。

Nitro Enclavesがどのように動作するか

Nitro EnclavesはNitroベースEC2と一緒に、専用のイメージと専用のコア/メモリで、毎回新しく仮想マシンを作成してアタッチします。

EC2インスタンスとは分離していて、他のEC2からアクセスできません。

分離され、機能が制限されています。シンプルにすべて分離されています。

EC2をNitro EnclavesはvsockというTCPライクのローカルストリーミングのコミュニケーションで通信でき、盗聴やなりすましはできません。

Enclavesは安全にNitroのエントロピーサービスとアテステーションサービスにアクセスでき、RDRANDなどに利用できます。KMSと連携してAWS Nitro Attestation PKIを利用できます。

EC2上ではHelper agentを介してEnclavesで暗号化処理を実施できます。

Nitro Enclavesはハードウェアレベルの分離によるセキュリティでRCEやサイドチャネル攻撃などから保護します。

更には利用者同士がattestationを利用したアクセスを相手に許可することが可能です。

これは知的財産の保護にも利用でき、enclaveイメージにマシンラーニングのモデルを入れることでこれを検証して実行できます。

これらの例はオープンソースとしてGitHubで提供しています。

感想

Nitro Enclavesは非常に画期的で面白い仕組みですね!いろんな例が示されましたが様々な活用方法が検討できますのでもっと調べたくなりました。

ぜひ詳細をセッションを確認してみて下さい!

Deep dive on AWS Nitro Enclaves for applications running on Amazon EC2