IoTやブロックチェーンで何かと便利に使われるセキュリティ機能、Trusted Execution Environment(TEE) ですが、Azureが2019/12/31現在でPaaSとしてサポートしているそうなので試してみましょう。現状ではAzureとIBM、AlibabaなどがTEE(Intel SGX)をサポートしており、AWSとGCPのインスタンスはSGX利用可能になっていないようです。
基本的にIntelの第6世代以後のコアには入っている機能らしいですが、マザーボードの対応等の違いもあり、実行できる環境はまだ少ないです。
自分の実機で使えるかどうかは次のように調べられます。
$ git clone https://github.com/ayeks/SGX-hardware.git
$ cd SGX-hardware
$ gcc test-sgx.c -o test-sgx
$ ./test-sgx
出力で"sgx available"と"sgx supported"がどちらも”1”だと利用可能な状況です。
本編は「クラウドでのTEEというのはこういうものである」というのを体験するためのものであり、一切の概念・システムの説明は致しません。概念理解はこちらをどうぞ
https://qiita.com/Cliffford/items/2f155f40a1c3eec288cf
ではクラウドでTEEを実行できるConfidential Computingを使ってみましょう。
https://azure.microsoft.com/ja-jp/solutions/confidential-compute/
なにやら全く新しい世界が広がってるかのようですが、身構えることは一つもありません。単にSGXがサポートされてる仮想マシンが作れるだけです。
設定画面 https://portal.azure.com/
で
「Confidential Compute VM Deployment」を検索し、MarketPlaceの欄で見つけられるはずです。
デプロイが終わったら、仮想マシンの設定でネットワークを開いてください。
最初は下3つのルールしかないと思いますが、受信ポートの規制を追加するを押してください。
これは、初期設定でAzure内からVMへののアクセスのみOK、VMからインターネットへのアクセスは全部OKになっているので、sshのみIPを指定して入れるようにしてあげます。
ソースIPをVPNのものか限定されたあなたのIPアドレスにし、プロトコルをTCPに、優先度を65000より小さい数字にして下さい。これによって上記のポリシーを上書きできます。
では仮想マシン設定 → 概要 → 接続へ移動しsshのコードをCLIへコピペして実行して下さい。
繋がったら次の通りに実行します。
$ sudo cp -r /opt/openenclave/share/openenclave/samples/ .
$ sudo chown -R 'あなたのUserネーム':'あなたのUserネーム' samples/
$ source /opt/openenclave/share/openenclave/openenclaverc
$ cd samples/helloworld
$ make build
$ make run