Azure Kubernetes Service (AKS) のトラステッド起動 (プレビュー)

トラステッド起動 (プレビュー) は、高度で永続的な攻撃手法からの保護により、第 2 世代仮想マシン (VM) のセキュリティを強化します。 これにより、管理者は、検証済みおよび署名済みのブートローダー、OS カーネル、ドライバーを使用して、基になる仮想マシンを含む AKS ノードを配置できます。 セキュリティで保護された測定済みブートを使用することで、管理者はブート チェーン全体の整合性に関する分析情報と信頼度を得ることができます。

この記事は、この新機能とその実装方法を理解するのに役立ちます。

概要

トラステッド起動は、個別に有効にできる、複数の連携するインフラストラクチャ テクノロジで構成されています。 テクノロジごとに、高度な脅威に対する防御の別のレイヤーが提供されます。

  • vTPM - トラステッド起動では、TPM 2.0 仕様に準拠したハードウェア トラステッド プラットフォーム モジュール (TPM) の仮想化バージョンが導入されています。 キーと測定のためのセキュリティで保護された専用のコンテナーとして機能します。 トラステッド起動から VM には、どの VM からも到達できないセキュリティ保護された環境で実行されている、独自の専用 TPM インスタンスが提供されます。 vTPM により、VM のブート チェーン全体 (UEFI、OS、システム、ドライバー) を測定することで、構成証明が有効になります。 トラステッド起動により、vTPM を使用して、クラウドによるリモート構成証明が実行されます。 これは、プラットフォームの正常性チェックと、信頼ベースの判断を行うために使用されます。 正常性チェックとして、トラステッド起動により、VM が正常に起動したことを暗号によって認定できます。 プロセスが失敗した場合、承認されていないコンポーネントが VM で実行されていることが原因の可能性があり、Microsoft Defender for Cloud によって整合性アラートが発行されます。 そのアラートには、整合性チェックに合格しなかったコンポーネントの詳細が含まれます。

  • セキュア ブート - トラステッド起動の中核を成すのは、VM のためのセキュア ブートです。 プラットフォームのファームウェアに実装されているこのモードにより、マルウェアベースのルートキットやブート キットがインストールされるのを防ぎます。 セキュア ブートの動作により、署名されたオペレーティング システムとドライバーだけでが起動できることが保証されます。 それにより、VM 上のソフトウェア スタックに対する "信頼のルート" が確立されます。 セキュア ブートが有効になっていると、すべての OS ブート コンポーネント (ブート ローダー、カーネル、カーネル ドライバー) は、信頼された発行元によって署名されている必要があります。 セキュア ブートは、Windows と一部の Linux ディストリビューションの両方でサポートされています。 セキュア ブートで、信頼された発行元によって署名されたイメージの認証が失敗した場合、VM の起動は許可されません。 詳細については、「セキュア ブート」を参照してください。

開始する前に

  • Azure CLI、バージョン 2.44.1 以降。 az --version を実行してバージョンを見つけ、az upgrade を実行してバージョンをアップグレードします。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

  • aks-preview Azure CLI 拡張機能バージョン 1.0.0b6 以降。

  • Azure サブスクリプションに TrustedLaunchPreview 機能を登録すること。

  • AKS では、バージョン 1.25.2 以降でトラステッド起動 (プレビュー) がサポートされています。

  • トラステッド起動では、Azure 第 2 世代 VM のみがサポートされます。

  • セキュア ブートには、署名されたブート ローダー、OS カーネル、ドライバーが必要です。

aksプレビューの Azure CLI 拡張機能をインストールする

重要

AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は、運用環境での使用を意図していません。 詳細については、次のサポート記事を参照してください。

aksプレビュー拡張機能をインストールして、次のコマンドを実行します:

az extension add --name aks-preview

次のコマンドを実行して、リリースされた最新バージョンの拡張機能に更新します:

az extension update --name aks-preview

TrustedLaunchPreview 機能フラグを登録する

TrustedLaunchPreview 機能フラグは、次の例のとおり、TrustedLaunchPreview コマンドを使用して登録します。

az feature register --namespace "Microsoft.ContainerService" --name "TrustedLaunchPreview"

状態が [登録済み] と表示されるまでに数分かかります。 登録の状態は、az feature show コマンドで確認します。

az feature show --namespace "Microsoft.ContainerService" --name "TrustedLaunchPreview"

状態が Registered として表示されたら、az provider register コマンドを使用して Microsoft.ContainerService リソース プロバイダーの登録を最新の情報に更新します。

az provider register --namespace "Microsoft.ContainerService"

制限事項

  • Windows Server オペレーティング システムを実行しているクラスター ノードはサポートされていません。
  • トラステッド起動 (プレビュー) では、FIPS が有効になっているノード プールまたは ARM64 に基づくノード プールはサポートされていません。
  • 可用性セットはサポートされず、仮想マシン スケール セットのみがサポートされます。
  • GPU ノード プールでセキュア ブートを有効にするには、GPU ドライバーのインストールをスキップする必要があります。 詳細については、「GPU ドライバーのインストールをスキップする」を参照してください。
  • エフェメラル OS ディスクは、トラステッド起動で作成でき、すべてのリージョンがサポートされています。 ただし、すべての仮想マシン のサイズがサポートされているわけではありません。 詳細については、「トラステッド起動のエフェメラル OS のサイズ」を参照してください。

新しいクラスターをデプロイする

次の手順を実行して、Azure CLI を使用して AKS Mariner クラスターを配置します。

  1. az aks create コマンドを使用して、AKS クラスターを作成します。 コマンドを実行する前に、次のパラメータを確認します。

    • --name: myAKSCluster など、AKS クラスターの一意の名前を入力します。
    • --resource-group: AKS クラスター リソースをホストする既存のリソース グループの名前を入力します。
    • --enable-secure-boot: セキュア ブートで、信頼された発行元によって署名されたイメージを認証できるようにします。
    • --enable-utcm: vTPM を有効にし、VM のブート チェーン全体を測定して構成証明を実行します。

    Note

    セキュア ブートには、署名されたブート ローダー、OS カーネル、ドライバーが必要です。 セキュア ブートを有効にした後でノードが起動しない場合は、Azure Linux 仮想マシン内でセキュア ブートエラーの原因となっているブート コンポーネントを確認できます。 「セキュア ブートエラーの確認を参照してください」。

    次の例では、myResourceGroup 内の 1 つのノードを持つ myAKSCluster という名前のクラスターを作成し、セキュア ブートと vTPM を有効にします。

    az aks create --name myAKSCluster --resource-group myResourceGroup --node-count 1 --enable-secure-boot --enable-vtpm --enable-managed-identity --generate-ssh-keys
    
  2. 次のコマンドを実行して、Kubernetes クラスターのアクセス資格情報を取得します。 az aks バージョン変更資格情報 コマンドを使用してクラスター名とリソース グループ名の既定値を置き換えます。

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

トラステッド起動が有効になっているノード プールを追加する

az aks nodepool add コマンドを使用して、トラステッド起動が有効になっているノード プールを配置します。 コマンドを実行する前に、次のパラメータを確認します。

  • --cluster-name: AKS クラスターの名前を入力します。
  • --resource-group: AKS クラスター リソースをホストする既存のリソース グループの名前を入力します。
  • --name: ノード プールの一意の名前を入力します。 ノード プールの名前は、小文字の英数字のみを含めることができ、小文字で始める必要があります。 Linux のノード プールの長さは、1 から 11 文字の範囲内である必要があります。
  • --node-count: Kubernetes エージェント プール内のノードの数。 既定値は 3 です。
  • --enable-secure-boot: セキュア ブートで、信頼された発行元によって署名されたイメージを認証できるようにします。
  • --enable-utcm: vTPM を有効にし、VM のブート チェーン全体を測定して構成証明を実行します。

Note

セキュア ブートには、署名されたブート ローダー、OS カーネル、ドライバーが必要です。 セキュア ブートを有効にした後でノードが起動しない場合は、Azure Linux 仮想マシン内でセキュア ブートエラーの原因となっているブート コンポーネントを確認できます。 「セキュア ブートエラーの確認を参照してください」。

次の例では、3 つのノードを持つ myAKSCluster という名前のクラスターで vTPM が有効になっているノード プールを配置します。

az aks nodepool add --resource-group myResourceGroup -–cluster-name myAKSCluster --name mynodepool --node-count 3 --enable-vtpm  

次の例では、3 つのノードを持つ myAKSCluster という名前のクラスターで、vTPM とセキュア ブートが有効になっているノード プールを配置します。

az aks nodepool add --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --node-count 3 --enable-vtpm --enable-secure-boot

クラスターを更新してトラステッド起動を有効にする

az aks nodepool update コマンドを使用して、トラステッド起動を有効にしてノード プールを更新します。 コマンドを実行する前に、次のパラメータを確認します。

  • --resource-group: 既存の AKS クラスターをホストしている既存のリソース グループの名前を入力します。
  • クラスター名: AKS クラスターの一意の名前 ("myAKSCluster" など) を入力します。
  • --name: mynodepoolなど、ノード プールの名前を入力します。
  • --enable-secure-boot: セキュア ブートで、イメージが信頼された発行元によって署名されていることを認証できるようにします。
  • --enable-utcm: vTPM を有効にし、VM のブート チェーン全体を測定して構成証明を実行します。

Note

既存のノード プールで有効にするには、既存のノード プールがトラステッド起動イメージを使用している必要があります。 そのため、TrustedLaunchPreview 機能を登録する前に作成されたノードプールについては、トラステッド起動を有効にして更新することはできません。

既定では、TL 互換の構成と機能フラグが登録されたノード プールを作成すると、トラステッド起動イメージが生成されます。 パラメータ --enable-vtpm または --enable-secure-boot を指定しない場合、それらは既定で無効になり、後で az aks nodepool update コマンドを使用して有効にすることができます。

Note

セキュア ブートには、署名されたブート ローダー、OS カーネル、ドライバーが必要です。 セキュア ブートを有効にした後でノードが起動しない場合は、Azure Linux 仮想マシン内でセキュア ブートエラーの原因となっているブート コンポーネントを確認できます。 「セキュア ブートエラーの確認を参照してください」。

次の例では、myResourceGroupmyAKSClustermynodepool ノード プールを更新し、セキュア ブートと vTPM を有効にします。

az aks nodepool update --cluster-name myCluster --resource-group myResourceGroup --name mynodepool --enable-secure-boot --enable-vtpm 

トラステッド起動が有効になっているノードにポッドを割り当てる

ポッドが特定のノードで実行するように制限したり、トラステッド起動が有効になっているノードを優先するように制限したりできます。 これは、ポッド マニフェストで次のノード プール セレクターを使用して制御できます。

vTPM を実行しているノード プールの場合は、次を適用します。

spec:
  nodeSelector:
        kubernetes.azure.com/trusted-launch: true

セキュア ブートを実行しているノード プールの場合は、次を適用します。

spec:
  nodeSelector:
        kubernetes.azure.com/secure-boot: true

セキュア ブートの無効化

AKS クラスターでセキュア ブートを無効にするには、次のコマンドを実行します。

az aks nodepool update --cluster-name myCluster --resource-group myResourceGroup --name mynodepool --disable-secure-boot 

Note

更新によってノードの再イメージ化が自動的に開始され、この操作はノードごとに数分かかる場合があります。

vTPM を無効にする

AKS クラスターで vTPM を無効にするには、次のコマンドを実行します。

az aks nodepool update --cluster-name myCluster --resource-group myResourceGroup --name mynodepool --disable-vtpm

次のステップ

この記事では、トラステッド起動を有効にする方法について説明しました。 さらなる詳細については「トラステッド起動」を参照してください。