

 **このページの改善にご協力ください** 

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「**GitHub でこのページを編集する**」リンクを選択してください。

# ハイブリッドノード用のセキュリティ更新プログラムにパッチを適用する
<a name="hybrid-nodes-security"></a>

このトピックでは、ハイブリッドノードで実行されている特定のパッケージと依存関係を対象としたセキュリティ更新プログラムにインプレースでパッチを適用する手順について説明します。ベストプラクティスとして、ハイブリッドノードを定期的に更新して CVE とセキュリティパッチを受け取ることをお勧めします。

Kubernetes バージョンをアップグレードする手順については、「[クラスターのハイブリッドノードをアップグレードする](hybrid-nodes-upgrade.md)」を参照してください。

セキュリティパッチの適用が必要になるソフトウェアの一例が `containerd` です。

## `Containerd`
<a name="_containerd"></a>

 `containerd` は、標準の Kubernetes コンテナランタイムであり、EKS ハイブリッドノードとはコアな依存関係にあります。その用途は、イメージのプルやコンテナ実行の管理などコンテナのライフサイクルを管理することです。ハイブリッドノードでは、[nodeadm CLI](https://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-nodeadm.html) を利用するか手動で `containerd` をインストールできます。ノードのオペレーティングシステムに応じて、`nodeadm` は OS 配布のパッケージまたは Docker パッケージから `containerd` をインストールします。

`containerd` の CVE が公開されたら、以下のオプションを利用して、ハイブリッドノードで `containerd` をパッチ適用済みのバージョンにアップグレードできます。

## ステップ 1: パッチがパッケージマネージャーに公開されているかどうかを確認する
<a name="_step_1_check_if_the_patch_published_to_package_managers"></a>

`containerd` CVE パッチがそれぞれの OS パッケージマネージャーに公開されているかどうか、対応するセキュリティ速報を参照することで確認できます。
+  [Amazon Linux 2023](https://alas.aws.amazon.com/alas2023.html) 
+  [RHEL](https://access.redhat.com/security/security-updates/security-advisories) 
+  [Ubuntu 20.04](https://ubuntu.com/security/notices?order=newest&release=focal) 
+  [Ubuntu 22.04](https://ubuntu.com/security/notices?order=newest&release=jammy) 
+  [Ubuntu 24.04](https://ubuntu.com/security/notices?order=newest&release=noble) 

Docker リポジトリを `containerd` のソースとして使用している場合は、[Docker セキュリティのお知らせ](https://docs.docker.com/security/security-announcements/)をチェックして、Docker リポジトリからパッチ適用済みのバージョンを入手できるかどうかを確認できます。

## ステップ 2: パッチのインストール方法を選択する
<a name="_step_2_choose_the_method_to_install_the_patch"></a>

ノードにインプレースでパッチを適用し、セキュリティアップグレードをインストールする方法が 3 つあります。どの方法を使用できるかは、パッチをパッケージマネージャーでオペレーティングシステムから入手できるかどうかによって異なります。

1. `nodeadm upgrade` を使用してパッケージマネージャーに公開されているパッチをインストールします。「[ステップ 2 a](#hybrid-nodes-security-nodeadm)」を参照してください。

1. パッケージマネージャーで直接パッチをインストールします。「[ステップ 2 b](#hybrid-nodes-security-package)」を参照してください。

1. パッケージマネージャーに公開されていないカスタムパッチをインストールします。`containerd` に対するカスタムパッチについては特別な考慮事項があるので注意してください。「[ステップ 2 c](#hybrid-nodes-security-manual)」を参照してください。

## ステップ 2 a: `nodeadm upgrade` でパッチを適用する
<a name="hybrid-nodes-security-nodeadm"></a>

`containerd` CVE パッチが OS や Docker リポジトリ (Apt または RPM) に公開されたことを確認したら、`nodeadm upgrade` コマンドを使用して `containerd` を最新バージョンにアップグレードできます。これは Kubernetes バージョンのアップグレードではないため、現在の Kubernetes バージョンを `nodeadm` アップグレードコマンドに渡す必要があります。

```
nodeadm upgrade K8S_VERSION --config-source file:///root/nodeConfig.yaml
```

## ステップ 2 b: オペレーティングシステムのパッケージマネージャーでパッチを適用する
<a name="hybrid-nodes-security-package"></a>

あるいは、それぞれのパッケージマネージャーから更新することも可能であり、それを使用して以下のように `containerd` パッケージをアップグレードできます。

 **Amazon Linux 2023** 

```
sudo yum update -y
sudo yum install -y containerd
```

 **RHEL** 

```
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo yum update -y
sudo yum install -y containerd
```

 **Ubuntu** 

```
sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update -y
sudo apt install -y --only-upgrade containerd.io
```

## ステップ 2 c: `Containerd` CVE パッチがパッケージマネージャーに公開されていない場合の対応
<a name="hybrid-nodes-security-manual"></a>

パッチ適用済みの `containerd` バージョンがパッケージマネージャー以外の手段でのみ使用できる場合、例えば GitHub リリースのみであれば GitHub の公式サイトから `containerd` をインストールできます。

1. マシンがハイブリッドノードとしてクラスターに既に参加している場合は、`nodeadm uninstall` コマンドを実行する必要があります。

1. `containerd` の公式のバイナリをインストールします。GitHub の[公式のインストール手順](https://github.com/containerd/containerd/blob/main/docs/getting-started.md#option-1-from-the-official-binaries)を使用できます。

1. `--containerd-source` 引数を `none` に設定して `nodeadm install` コマンドを実行します。`nodeadm` から `containerd` をインストールする操作がスキップされます。ノードでどのオペレーティングシステムが実行されていても、`containerd` ソースで `none` の値を使用できます。

   ```
   nodeadm install K8S_VERSION --credential-provider CREDS_PROVIDER --containerd-source none
   ```