Enclave を使用して ECS インスタンス内に信頼性の高い分離空間を作成し、使用中のアプリケーションとデータを保護します。
背景情報
データは、保管中のデータ、転送中のデータ、使用中のデータに分類されます。
-
暗号化によって、保管中のデータと転送中のデータが保護されます。
-
使用中のデータを保護するには、コンフィデンシャルコンピューティングが必要です。
エンクレーブは、ECS インスタンス内に信頼性の高い分離空間を作成し、そのエンクレーブ内で正当なソフトウェアを実行することで、マルウェアからコードとデータの機密性および完全性を保護します。 これは、金融、インターネット、ヘルスケアなど、強力なデータ保護を必要とする業界に適しています。
Enclave の仕組み
ECS インスタンス (プライマリ VM) 内のコンピューティングリソース (vCPU とメモリ) を分割して、高信頼実行環境として Enclave VM (EVM) を作成します。 EVM は、以下によって保護されます:
-
仮想化ベースの分離: EVM は、プライマリ VM や他の ECS インスタンスから分離されます。
-
最小限の攻撃対象領域: EVM は、永続ストレージ、対話型接続、または外部ネットワーキングを持たず、独立した信頼済み OS を実行します。 vsock ベースのローカルセキュアチャネルを介してのみプライマリ VM と通信します。
以下の図は、Enclave の仕組みを示しています。
Enclave は多層的なセキュリティを提供します。 第 3 世代の SHENLONG アーキテクチャは、TPM または TCM チップを搭載し、EVM に vTPM または vTCM デバイスを装備して信頼性を強化します。 SDK を使用して、Enclave 環境を構築および管理できます。 アテステーションでは、機密アプリケーションが実行時にプラットフォームデータ、アプリケーション情報、署名などのアテステーション資料を生成し、Key Management Service (KMS) と連携可能なリモートアテステーションサーバーを介してそれらを検証します。 プライマリ VM が EVM にリソースを割り当てると、基盤となるレイヤーがそれらを分離するため、プライマリ VM は EVM の vCPU またはメモリリソースにアクセスできません。
以下の図は、Enclave のアーキテクチャを示しています。
制限事項
-
hfg9i、hfc9i、hfr9i、g8i、c8i、r8i インスタンスファミリーの 4 つ以上の vCPU を持つインスタンスタイプのみが Enclave をサポートします。
-
各 ECS インスタンスは 1 つのエンクレーブのみをサポートします。
-
エンクレーブを使用する前に、プライマリ VM 用に少なくとも 1 つの物理プロセッサコアといくらかのメモリを予約してください。 残りのリソースはエンクレーブに割り当てることができます。 ハイパースレッディングが有効になっている場合、同じコアから 2 つのハイパースレッドが予約されるため、インスタンスには少なくとも 4 つの vCPU が必要です。
その他の制限については、「制限」をご参照ください。
Enclave が有効なインスタンスの作成
Enclave が有効なインスタンスの作成は、通常のインスタンスの作成と似ています。 このセクションでは、Enclave 固有のパラメーターのみを説明します。 その他のパラメーターについては、「カスタム起動によるインスタンスの作成」をご参照ください。
-
ECS コンソール - インスタンス に移動します。
上部メニューで、対象リソースのリージョンとリソースグループを選択します。
-
インスタンスの作成 をクリックし、次のパラメーターを設定します:
パラメーター
説明
インスタンスタイプ
hfg9i、hfc9i、hfr9i、g8i、c8i、または r8i インスタンスファミリーから、4 つ以上の vCPU を持つインスタンスタイプを選択します。
イメージ
[Enclave] を選択し、イメージとして [Alibaba Cloud Linux 2.1903 LTS 64-bit (UEFI)] を選択します。
説明[Enclave] を選択すると、信頼済み OS が自動的にインストールされます。
インスタンス RAM ロール
[AliyunECSInstanceForYundunSysTrustRole] (Alibaba Cloud が提供するサービスリンクロール) を選択します。
Enclave CLI のインストール
-
Enclave CLI 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 --versionバージョン番号が表示された場合、インストールは成功です。
[test@iz2zebt88ixxx ~]$ enclave-cli --version Enclave CLI 1.0.8
-
-
現在のユーザーを
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次の出力は、サービスが実行中であることを示しています。
[test@iZ2zebt88 ~]$ systemctl status ali-enclaves-allocator.service ● ali-enclaves-allocator.service - Nitro Enclaves Resource Allocator Loaded: loaded (/usr/lib/systemd/system/ali-enclaves-allocator.service; enabled; vendor preset: disabled) Active: active (exited) since Tue 2023-06-20 10:39:57 CST; 46min ago Main PID: 1960 (code=exited, status=0/SUCCESS) -
Docker を起動し、自動起動を有効にします。
sudo systemctl start docker && sudo systemctl enable docker説明Enclave CLI をアンインストールするには、
sudo yum remove enclave-cliを実行します。 -
インスタンスを再起動して、変更を適用します。
関連ドキュメント
Enclave CLI の使用方法については、「クイックスタート」をご参照ください。