[レポート]AWS Nitro Enclaves で実現する分離されたコンピューティング環境 – AWS Security Roadshow Japan 2021 #awscloud #AWSSecurityRoadshow

AWS Security Roadshow Japan 2021で行われた「AWS Nitro Enclaves で実現する分離されたコンピューティング環境」のセッションレポートです
2021.11.12

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

こんにちは、臼田です。

本日はAWS Security Roadshow Japan 2021で行われた以下の講演のレポートです。

AWS Nitro Enclaves で実現する分離されたコンピューティング環境

AWS Nitro Enclaves は、高度な機密情報の保護や安全措置を向上する、分離されたコンピューティング環境 (enclaves) を、お客様が Amazon EC2 インスタンス上に作成することができる新しい EC2 の機能です。本セッションでは、 Nitro Enclaves およびそれを実現する基盤となる AWS Nitro System の概要をご紹介します。

アマゾン ウェブ サービス ジャパン合同会社 技術統括本部 シニアソリューションアーキテクト 松尾 康博

レポート

  • EC2とNitro Systemの概要
    • 2006年8g月、EC2発表
      • 1種類のインスタンス
      • 従量課金
      • 必要に応じてスケールインスケールアウト
    • 今ではインスタンスタイプは400種類以上
    • 様々なカテゴリー・機能・オプション
    • 20以上のリージョン、AZ
    • Hypervisorの上にEC2が建てられる
    • 2006年はZen(ソフトウェア)でHypervisorを実現していた
    • ハードウェアでHypervisorをオフロード
    • Nitro Systemは3つの要素
      • Cards
      • Security chip
      • Hypervisor
        • ログインしたり管理者アクセスができない
    • Nitro Systemの詳細
      • Hypervisorで仮想的なアクセスを実施
      • CloudWatchメトリクスなどもここで取得
      • 全てEC2のAPIで制御
      • 暗号化処理もしていて鍵もNitro Systemが管理
    • Nitro Systemのセキュリティ
      • Controller
        • カードを制御し信頼の起点
      • Security Chip
        • 不揮発ストレージへの書き込みをブロック
      • Hypervisor
        • 管理者からのアクセスをブロック
        • 改ざん等を低減
  • AWS上での機密データ処理
    • セキュリティはAWSとお客様の間で共有される
    • 責任共有モデル
      • 物理の管理はAWS
      • その上で作るものはお客様
      • 範囲を明確にすることで全体的なセキュリティの実現
      • EC2ではNitro Hypervisor以下がAWS責任
      • EC2内部はお客様
    • 多くのお客様がEC2上で機密性の高いデータを扱っている
      • 個人情報
      • 金融情報
      • などなど
      • インスタンスの上で分離が必要なケースがある
    • 機密データを取り扱う構成と課題
      • 外部からはTLS
      • EC2に入るところでSecurity Groupなどでネットワークは制御できている
      • ストレージ保管時は暗号化できている
      • 暗号化キーのアクセスコントロールもできている
      • AWS側からはアクセスできない
      • 殆どの機密データの扱い要件を満たしている
      • しかし処理中のデータ(Data in use)は社内のサーバ管理者や開発者などもデータ閲覧が可能
      • 準同型暗号や厳密なOSアクセス制御によるリスク軽減はできなくはない
    • 機密データ処理の分離環境を必要とする例
      • 社員やアプリケーションから保護したい
      • 相手組織に機密データを開示せずに機密データを組み合わせて処理したい
      • 他組織がデータを漏洩するリスクが有る
      • IP保護
        • 独自アルゴリズムを自社エンジニアから保護
        • 機械学習モデルファイルを保護
    • 自社ユーザーや他社に渡したくないケースがニーズ
    • 攻撃対象領域を削減するために暗号化されたデータの復号を分離して実施したい
  • Nitro Enclavesの概要
    • 処理環境を隔離する
    • CPUとメモリとカーネルを独立した仮想マシン
    • セキュアチャネルでのみ親インスタンスと通信できる
    • 管理者もアクセスできない
    • 元々Nitro Hypervisor上でインスタンスが分離されている
    • 別のインスタンスとはアクセスできない
    • 経路は親インスタンスとvsockという接続だけ
    • 親インスタンスのリソースから一部を分離してEnclavesを起動する
      • CPU/メモリ量は定義できる
      • 追加料金はない
    • 起動するまでの流れ
      • Enclaves SDK
      • Enclave image file(.eif)
      • Enclaves CLI
      • Dockerイメージを作ってそこからCLIで.eifファイルを作成する
      • 起動するEC2の親インスタンスにNitro CLIを用意してアクセスできるようにする
    • 暗号化証明と構成証明ドキュメント
      • Enclavesからのみ呼び出せる
      • 親インスタンスからはアクセスできない
      • 処理結果に構成証明ドキュメントを入れ正しい処理先だったか確認できる
    • KMSとの統合
      • KMSキーポリシーと一致するか確認する
      • 親インスタンスからはアクセスできない
    • KMSを使った機密データ処理の流れ
      • データキーを読み込み
      • 構成証明ドキュメントを取得
      • KMSはEnclave飲み元を確認して復号
      • 演算処理を行う
    • ACMとの連携も可能
      • TLS終端をEnclavesで実現できる
  • まとめ
    • EnclavesはNitro Systemで実現したセキュアな分離環境
    • CLIで幅広いインスタンスで柔軟に分離環境を作成
    • KMSと連携し暗号化処理を分離環境で実現可能

感想

分離環境の必要性と実現方法がよくわかりました。

ハードでここまで実現できることがすごいなーと思いますね。個人的にはACMをEC2で使えるところを活用してきたいですね!