このトピックでは、Alibaba Cloud Enclave 機能を使用して信頼できる隔離スペースを作成し、アプリケーションとデータを保護する方法について説明します。
背景情報
データは、保存データ、転送中データ、使用中データに分類されます。
保存データと転送中データのセキュリティは、暗号化によって確保できます。
使用中データのセキュリティを確保することは困難です。通常、このデータを保護するために機密コンピューティングが使用されます。
Enclave 機能は、Elastic Compute Service (ECS) インスタンス内に信頼できる隔離スペースとして Enclave を提供し、正規のソフトウェアのセキュアな操作を Enclave 内にカプセル化することで、コードとデータの機密性と完全性をマルウェア攻撃から保護します。金融、インターネット、ヘルスケアなどの業界のように、機密性の高いデータを強力に保護する必要があるビジネスに適しています。
Enclave の仕組み
ECS インスタンス (プライマリ VM) 内のコンピューティングリソース (vCPU とメモリを含む) を分割して、信頼できる実行環境として機能する Enclave VM (EVM) を作成します。以下の要因が EVM のセキュリティに貢献しています。
基盤となる仮想化技術がセキュリティのための隔離を提供します。EVM はプライマリ VM や他の ECS インスタンスから隔離されます。
EVM は、独立したカスタマイズ済みの信頼できるオペレーティングシステム (OS) を実行します。永続ストレージ、対話型接続、外部ネットワークチャネルを持たず、プライマリ VM とは vsock に基づくローカルセキュアチャネルを介してのみ通信することで、攻撃対象領域を最小限に抑えます。機密データを含むアプリケーションを EVM で実行し、プライマリ VM 内で実行されるアプリケーションと安全にやり取りできます。
次の図は、Enclave 機能の仕組みを示しています。
Enclave 機能は多層的なセキュリティを提供します。基盤レイヤーでは、第 3 世代 SHENLONG アーキテクチャが Trusted Platform Module (TPM) または Trust Cryptography Module (TCM) チップとともに、EVM に vTPM または vTCM デバイスを提供し、セキュリティと信頼機能を強化します。上位レイヤーでは、互換性の高い SDK が提供され、Enclave 環境を迅速に構築して使用できます。リモートアテステーション機能については、SDK を使用するなどして、機密実行環境で実行されているコードを検証できます。機密アプリケーションは、実行時にプラットフォームデータ、アプリケーション情報、署名などの証明マテリアルを生成し、Key Management Service (KMS) と連携する可能性のあるリモートアテステーションサーバーを使用してそれらを検証できます。プライマリ VM が EVM にリソースを割り当て、EVM が実行を開始すると、基盤レイヤーがリソースを隔離し、プライマリ VM が EVM の vCPU やメモリリソースにアクセスできないようにします。これにより、EVM の操作とプライバシーが保護されます。
次の図は、Enclave 機能のアーキテクチャを示しています。
制限事項
hfg9i、hfc9i、hfr9i、g8i、c8i、r8i インスタンスファミリーの 4 つ以上の vCPU を持つインスタンスタイプのみが Enclave 機能をサポートします。
各 ECS インスタンスに対して作成できる Enclave は 1 つだけです。
Enclave を使用する前に、プライマリ VM 用に少なくとも 1 つの物理プロセッサコアといくらかのメモリを予約する必要があります。残りは Enclave に柔軟に割り当てることができます。ハイパースレッディングが有効な場合、同じ物理プロセッサコアから 2 つのハイパースレッドが予約されます。したがって、Enclave 機能が有効になっている ECS インスタンスには、少なくとも 4 つの vCPU が必要です。
その他の制限事項については、「制限事項」をご参照ください。
Enclave が有効なインスタンスの作成
ECS コンソールで Enclave 機能が有効な ECS インスタンスを作成するプロシージャは、通常の ECS インスタンスを作成するプロシージャと似ています。ただし、特定のパラメーターに注意する必要があります。このセクションでは、インスタンス購入ページの Enclave が有効なインスタンスに関連するパラメーターに焦点を当てます。その他のパラメーターについては、「[カスタム起動] タブでのインスタンスの作成」をご参照ください。
ECS コンソール - インスタンスに移動します。
上部のナビゲーションバーで、管理するリソースのリージョンとリソースグループを選択します。

[インスタンスの作成] をクリックし、次の表のパラメーターを設定します。
パラメーター
説明
インスタンスタイプ
hfg9i、hfc9i、hfr9i、g8i、c8i、または r8i インスタンスファミリーの 4 つ以上の vCPU を持つインスタンスタイプを選択します。
イメージ
[Enclave] を選択し、次に [Alibaba Cloud Linux 2.1903 LTS 64 ビット (UEFI)] イメージを選択します。
説明[Enclave] を選択すると、信頼できるオペレーティングシステムが自動的にインストールされます。

インスタンス RAM ロール
Alibaba Cloud が提供するサービスリンクロールである AliyunECSInstanceForYundunSysTrustRole を選択します。
Enclave CLI のインストール
Enclave CLI の RPM Package Manager (RPM) パッケージをインストールします。
Enclave 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.rpmEnclave CLI をインストールします。
sudo rpm -ivh enclave-cli-1.0.8-1.x86_64.rpmEnclave CLI のバージョンを確認します。
enclave-cli --versionバージョンが返された場合、Enclave CLI はインストールされています。

現在のユーザーを
deおよびdockerグループに追加します。次のコマンドを実行して、現在のユーザーを
deグループに追加します。sudo usermod -aG de <username>説明<username>を実際のユーザー名に置き換えてください。例:test。現在のユーザーを
dockerグループに追加します。sudo usermod -aG docker <username>説明<username>を実際のユーザー名に置き換えてください。例:test。インスタンスに再接続して設定を有効にします。
Enclave に vCPU とメモリを事前に割り当てます。
allocator.yaml設定ファイルを開きます。sudo vim /etc/ali-enclaves/allocator.yamliキーを押して挿入モードに入ります。次のパラメーターを変更します。
memory_mib:Enclave に割り当てるメモリ量。単位:MiB。
cpu_count:Enclave に割り当てる vCPU の数。
次のサンプルコードスニペットは、Enclave に 1,024 MiB のメモリと 2 つの vCPU が割り当てられていることを示します。
# Enclave configuration file. # # How much memory to allocate for enclaves (in MiB). memory_mib: 1024 # # How many CPUs to reserve for enclaves. cpu_count: 2Escキーを押し、:wqと入力してからEnterキーを押してファイルを保存し、閉じます。
Enclave リソース割り当てサービスを開始し、インスタンス起動時に実行されるように設定します。
sudo systemctl start ali-enclaves-allocator.service && \ sudo systemctl enable ali-enclaves-allocator.serviceリソース割り当てサービスは、指定された vCPU の数に基づいて Enclave の vCPU プールを生成します。vCPU プールは Enclave のみが利用でき、Enclave が属する ECS インスタンスは利用できません。
説明Enclave に割り当てられたリソースを変更するには、
allocator.yaml設定ファイルを変更し、次のコマンドを実行して Enclave リソース割り当てサービスを再起動します。sudo systemctl restart ali-enclaves-allocator.serviceEnclave リソース割り当てサービスの状態を確認します。
systemctl status ali-enclaves-allocator.service次の出力は、サービスが開始されたことを示しています。

Docker を開始し、インスタンス起動時に実行されるように設定します。
sudo systemctl start docker && sudo systemctl enable docker説明Enclave 機能が不要になった場合は、
sudo yum remove enclave-cliコマンドを実行して Enclave CLI をアンインストールします。インスタンスの再起動をして変更を適用します。
関連ドキュメント
Enclave CLI の使用方法については、「Enclave CLI のクイックスタート」をご参照ください。