エンクレーブを使用して Elastic Compute Service (ECS) インスタンス内に信頼できる分離空間を作成し、使用中のアプリケーションとデータを保護します。
背景情報
データは、保管中のデータ、転送中のデータ、使用中のデータに分類されます。
-
暗号化によって、保管中のデータと転送中のデータが保護されます。
-
使用中のデータを保護するには、コンフィデンシャルコンピューティングが必要です。
エンクレーブは、ECS インスタンス内に信頼できる分離空間を作成し、そのエンクレーブ内で正規のソフトウェアを実行することで、マルウェアからコードとデータの機密性および完全性を保護します。金融、インターネット、ヘルスケアなど、強力なデータ保護を必要とする業界に適しています。
エンクレーブの仕組み
ECS インスタンス (プライマリ VM) 内のコンピューティングリソース (vCPU とメモリ) を分割し、信頼できる実行環境としてエンクレーブ VM (EVM) を作成します。EVM は、以下によって保護されます:
-
仮想化ベースの分離:EVM は、プライマリ VM や他の ECS インスタンスから分離されます。
-
最小限の攻撃対象領域:EVM は、永続ストレージ、対話型接続、外部ネットワーキングを持たない、独立した信頼できる OS を実行します。vsock ベースのローカルセキュアチャネルを介してのみ、プライマリ VM と通信します。
次の図は、エンクレーブの仕組みを示しています。
エンクレーブは多層的なセキュリティを提供します。第 3 世代の SHENLONG アーキテクチャは、TPM または TCM チップを搭載しており、EVM に vTPM または vTCM デバイスを装備して信頼性を強化します。SDK を使用して、エンクレーブ環境を構築および管理できます。アテステーションのために、機密アプリケーションは実行時にプラットフォームデータ、アプリケーション情報、署名などのアテステーション資料を生成し、リモートアテステーションサーバーを介して検証が行われます。このサーバーは Key Management Service (KMS) と連携する場合があります。プライマリ VM が EVM にリソースを割り当てると、基盤となるレイヤーがそれらを分離するため、プライマリ VM は EVM の vCPU やメモリリソースにアクセスできなくなります。
次の図は、エンクレーブのアーキテクチャを示しています。
制限事項
-
hfg9i、hfc9i、hfr9i、g8i、c8i、r8i インスタンスファミリーで 4 つ以上の vCPU を持つインスタンスタイプのみがエンクレーブに対応しています。
-
各 ECS インスタンスは、1 つのエンクレーブのみをサポートします。
-
エンクレーブを使用する前に、プライマリ VM 用に少なくとも 1 つの物理プロセッサコアといくらかのメモリを予約してください。残りのリソースはエンクレーブに割り当てることができます。ハイパースレッディングが有効な場合、同じコアから 2 つのハイパースレッドが予約されるため、インスタンスには少なくとも 4 つの vCPU が必要です。
その他の制限については、「制限事項」をご参照ください。
エンクレーブが有効なインスタンスの作成
エンクレーブが有効なインスタンスの作成は、通常のインスタンスの作成と似ています。このセクションでは、エンクレーブ固有のパラメーターのみを説明します。その他のパラメーターについては、「カスタム起動によるインスタンスの作成」をご参照ください。
-
ECS コンソール - インスタンスに移動します。
上部メニューで、対象リソースのリージョンとリソースグループを選択します。
-
インスタンスの作成 をクリックし、次のパラメーターを設定します。
パラメーター
説明
インスタンスタイプ
hfg9i、hfc9i、hfr9i、g8i、c8i、または r8i インスタンスファミリーから、4 vCPU 以上のインスタンスタイプを選択します。
イメージ
[エンクレーブ] を選択し、次に [Alibaba Cloud Linux 2.1903 LTS 64-bit (UEFI)] イメージを選択します。
説明[エンクレーブ] を選択すると、信頼できる OS が自動的にインストールされます。

インスタンス RAM ロール
[AliyunECSInstanceForYundunSysTrustRole] を選択します。これは Alibaba Cloud が提供するサービスリンクロールです。
エンクレーブ CLI のインストール
-
エンクレーブ CLI の RPM パッケージをインストールします。
-
エンクレーブ CLI の RPM パッケージをダウンロードします。
wget https://enclave-cn-beijing.oss-cn-beijing.aliyuncs.com/download/linux/enclave-cli/x86_64/2.1903/enclave-cli-1.0.8-1.x86_64.rpm -
エンクレーブ CLI をインストールします。
sudo rpm -ivh enclave-cli-1.0.8-1.x86_64.rpm -
インストールを検証します。
enclave-cli --versionバージョン番号が返された場合、インストールは成功です。

-
-
現在のユーザーを
deグループとdockerグループに追加します。-
現在のユーザーを
deグループに追加します:sudo usermod -aG de <username>説明<username>を実際のユーザー名 (例:test) に置き換えます。 -
現在のユーザーを
dockerグループに追加します。sudo usermod -aG docker <username>説明<username>を実際のユーザー名 (例:test) に置き換えます。 -
変更を適用するために、インスタンスに再接続します。
-
-
エンクレーブ用の vCPU とメモリを事前に割り当てます。
-
allocator.yamlを開きます。sudo vim /etc/ali-enclaves/allocator.yaml -
iキーを押して挿入モードに入ります。 -
次のパラメーターを設定します:
-
memory_mib:エンクレーブに割り当てるメモリ。単位: MiB。
-
cpu_count:エンクレーブに割り当てる vCPU 数。
次の例では、1,024 MiB のメモリと 2 つの vCPU をエンクレーブに割り当てます。
# エンクレーブ設定ファイル。 # # エンクレーブに割り当てるメモリ容量 (MiB 単位)。 memory_mib: 1024 # # エンクレーブ用に予約する CPU 数。 cpu_count: 2 -
-
Escキーを押し、:wqと入力し、Enterキーを押してファイルを保存して閉じます。
-
-
リソース割り当てサービスを開始し、起動時に有効にします。
sudo systemctl start ali-enclaves-allocator.service && \ sudo systemctl enable ali-enclaves-allocator.serviceこのサービスは、エンクレーブ専用の vCPU プールを作成します。このプールはエンクレーブ専用であり、ホストインスタンスでは使用できません。
説明割り当てられたリソースを変更するには、
allocator.yamlを変更してサービスを再起動します:sudo systemctl restart ali-enclaves-allocator.service -
サービスの状態を確認します。
systemctl status ali-enclaves-allocator.service次の出力は、サービスが実行中であることを示します。

-
Docker を起動し、起動時に有効にします。
sudo systemctl start docker && sudo systemctl enable docker説明Enclave CLI をアンインストールするには、
sudo yum remove enclave-cliを実行します。 -
変更を適用するために、インスタンスを再起動します。
関連ドキュメント
エンクレーブ CLI の使用方法については、「クイックスタート」をご参照ください。