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

インスタンス RAM ロール
[AliyunECSInstanceForYundunSysTrustRole] を選択します。これは、Alibaba Cloud によって提供されるサービスロールです。
Enclave CLI をインストールする
詳細については、「Enclave 対応インスタンスに Docker をインストールする」をご参照ください。
詳細については、「Workbench を使用して SSH 経由で Enclave 対応インスタンスに接続する」をご参照ください。
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.rpm次のコマンドを実行して、Enclave CLI をインストールします。
sudo rpm -ivh enclave-cli-1.0.8-1.x86_64.rpm次のコマンドを実行して、Enclave CLI のバージョンを確認します。
enclave-cli --versionバージョンが返された場合、Enclave CLI はインストールされています。

現在のユーザーを
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.yamliキーを押して、挿入モードに入ります。次のパラメーターを変更します。
memory_mib: エンクレーブに割り当てるメモリの量。単位: MiB。
cpu_count: エンクレーブに割り当てる vCPU の数。
次のサンプルコードスニペットは、エンクレーブに 1,024 MiB のメモリと 2 つの vCPU が割り当てられていることを示しています。
# Enclave 構成ファイル。 # # エンクレーブに割り当てるメモリの量 (MiB 単位)。 memory_mib: 1024 # # エンクレーブに予約する CPU の数。 cpu_count: 2Escキーを押し、:wqと入力し、Enterキーを押してファイルを保存して閉じます。
次のコマンドを実行して、エンクレーブリソース割り当てサービスを開始し、インスタンスの起動時にサービスが実行されるように構成します。
sudo systemctl start ali-enclaves-allocator.service && \ sudo systemctl enable ali-enclaves-allocator.serviceリソース割り当てサービスは、指定された vCPU 数に基づいて、エンクレーブ用の vCPU プールを生成します。 vCPU プールは、エンクレーブにのみ使用でき、エンクレーブが属する ECS インスタンスには使用できません。
説明エンクレーブに割り当てられたリソースを変更するには、
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 機能が不要になった場合は、
sudo yum remove enclave-cliコマンドを実行して Enclave CLI をアンインストールします。
関連情報
Enclave CLI の使用方法については、「Enclave CLI をすばやく使用する」をご参照ください。