vSphere IaaS control plane を使用すると、スーパーバイザー 上で機密性の確保された vSphere ポッド を実行できます。機密性の確保された vSphere ポッド では、ゲスト OS のメモリを常に暗号化してハイパーバイザーからのアクセスから保護するハードウェア テクノロジーが使用されます。

機密性の高い vSphere ポッド を作成するには、追加のセキュリティ拡張機能として Secure Encrypted Virtualization-Encrypted State (SEV-ES) を追加します。SEV-ES により、CPU レジスタ内の情報がレジスタからハイパーバイザーなどのコンポーネントに漏洩することを防止できます。SEV-ES は、CPU レジスタの状態に対する悪意のある変更を検出することもできます。vSphere 環境での SEV-ES テクノロジーの使用の詳細については、『 vSphere のセキュリティ』ドキュメントの AMD の Secure Encrypted Virtualization -Encrypted State による仮想マシンの保護を参照してください。

前提条件

ESXi ホストで SEV-ES を有効にするには、vSphere 管理者が次のガイドラインに従う必要があります。
  • SEV-ES 機能をサポートするホストを使用します。
  • ESXi バージョン 7.0 Update 2 以降を使用します。
  • ESXi システムの BIOS 構成で SEV-ES を有効にします。BIOS 構成へのアクセスの詳細については、システムのドキュメントを参照してください。
  • BIOS で SEV-ES を有効にするときに、ホスト上の SEV-ES 仮想マシンと機密性の確保された vSphere ポッド の数に 1 を加えた値を [Minimum SEV non-ES ASID] の設定に入力します。たとえば、100 台の SEV-ES 仮想マシンと 128 個の vSphere ポッド を実行する計画がある場合は、229 以上の値を入力します。入力できる設定の最大値は 500 です。

手順

  1. 次のパラメータを含む YAML ファイルを作成します。
    1. 注釈で、機密性の確保された vSphere ポッド 機能を有効にします。
      ...
      annotations:
              vmware/confidential-pod: enabled
      ...
    2. コンテナのメモリ リソースを指定します。
      この例のように、メモリ要求とメモリ制限を同じ値に設定してください。
      resources:
            requests:
              memory: "512Mi"
            limits:
              memory: "512Mi"
      例として、次の YAML ファイルを使用します。
      apiVersion: v1
      kind: Pod
      metadata:
        name: photon-pod
        namespace: my-podvm-ns
        annotations:
          vmware/confidential-pod: enabled
      spec:  # specification of the pod's contents
        restartPolicy: Never
        containers:
        - name: photon
          image: wcp-docker-ci.artifactory.eng.vmware.com/vmware/photon:1.0
          command: ["/bin/sh"]
          args:    ["-c", "while true; do echo hello, world!; sleep 1; done"]
          resources:
            requests:
              memory: "512Mi"
            limits:
              memory: "512Mi"
  2. スーパーバイザー にログインします。
    kubectl vsphere login --server=https://<server_adress> --vsphere-username <your user account name>
  3. アプリケーションをデプロイする名前空間に切り替えます。
    kubectl config use-context <namespace>
  4. YAML ファイルから、機密性の確保された vSphere ポッド をデプロイします。
    kubectl apply -f <yaml file name>.yaml
    注: vSphere ポッド がデプロイされている場合、DRS は SEV-ES をサポートする ESXi ノードに配置されます。このようなノードを使用できない場合、 vSphere ポッド は失敗とマークされます。

    機密性の確保された vSphere ポッド を起動すると、このポッドで実行されているすべてのワークロードに対して、ハードウェア メモリ暗号化がサポートされます。

  5. 次のコマンドを実行して、機密性が確保された vSphere ポッド が作成されていることを確認します。
    kubectl describe pod/<yaml name>

次のタスク

vSphere 管理者には、機密性の確保された vSphere ポッド が表示されます。 vSphere Client では、この仮想マシンに [暗号化モード: 機密性の高いコンピューティング] というタグが付加されて表示されます。

暗号化モード:vSphere ポッドに機密性の高いコンピューティングが表示されます