

 **이 페이지 개선에 도움 주기** 

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 **GitHub에서 이 페이지 편집** 링크를 선택합니다.

# 하이브리드 노드의 패치 보안 업데이트
<a name="hybrid-nodes-security"></a>

이 주제에서는 하이브리드 노드에서 실행되는 특정 패키지 및 종속성에 대한 보안 업데이트의 실행 중 패치 적용을 수행하는 절차를 설명합니다. 가장 좋은 방법은 하이브리드 노드를 정기적으로 업데이트하여 CVE 및 보안 패치를 받는 것입니다.

Kubernetes 버전을 업그레이드하는 단계는 [클러스터의 하이브리드 노드 업그레이드](hybrid-nodes-upgrade.md) 섹션을 참조하세요.

보안 패치가 필요할 수 있는 소프트웨어의 예로는 `containerd`가 있습니다.

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

 `containerd`는 EKS Hybrid Nodes의 표준 Kubernetes 컨테이너 런타임 및 핵심 종속성으로, 이미지 가져오기 및 컨테이너 실행 관리를 포함하여 컨테이너 수명 주기를 관리하는 데 사용됩니다. 하이브리드 노드에서는 [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 22.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>

노드에 보안 업그레이드를 패치하고 설치하는 세 가지 방법이 있습니다. 사용할 수 있는 방법은 패키지 관리자의 운영 체제에서 패치가 제공되는지 여부에 따라 다릅니다.

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>

GitHub 릴리스와 같이 패키지 관리자가 아닌 다른 방법으로만 패치 적용된 `containerd` 버전이 제공된 경우 공식 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
   ```