보안 GKE 노드 사용

이 페이지에서는 보안 GKE 노드 기능을 사용하는 방법을 보여줍니다. 보안 GKE 노드는 강력하고 검증 가능한 노드 ID와 무결성을 제공하여 Google Kubernetes Engine(GKE) 노드의 보안을 강화합니다.

보안 GKE 노드 정보

보안 GKE 노드는 Compute Engine 보안 VM을 기반으로 구축됩니다. 보안 GKE 노드가 없으면 공격자가 포드의 취약점을 악용하여 부트스트랩 사용자 인증 정보를 유출하고 클러스터에 있는 노드로 가장하여 클러스터 보안 비밀에 액세스할 수 있습니다. 보안 GKE 노드가 사용 설정되면 GKE 제어 영역은 암호화된 방식으로 다음을 확인합니다.

  • 클러스터의 모든 노드는 Google의 데이터 센터에서 실행되는 가상 머신입니다.
  • 모든 노드는 클러스터에 프로비저닝된 관리형 인스턴스 그룹(MIG)의 일부입니다.
  • kubelet이 실행 중인 노드에 대한 인증서를 kubelet에 프로비저닝하는 중입니다.

이렇게 하면 공격자가 노드의 부트스트랩 사용자 인증 정보를 유출할 수 있더라도 클러스터의 노드로 가장하는 능력이 제한됩니다.

선택적으로 노드 풀에서 노드 무결성 검사를 구성하여 노드에 향상된 루트키트 및 부트키트 보호를 제공할 수 있습니다. 이러한 노드 풀 설정은 보안 GKE 노드와 별개이며 보안 GKE 노드가 클러스터에서 사용 중지된 경우에도 작동합니다.

자세한 내용은 보안 VM 문서를 참조하세요.

보안 GKE 노드를 실행하는 데 추가 비용이 들지 않습니다. 하지만 보안 GKE 노드는 표준 노드보다 시작 시 로그가 약 0.5KB 더 많이 생성됩니다. 자세한 내용은 Cloud Logging 가격 책정 페이지를 참조하세요.

가용성

  • 보안 GKE 노드는 GKE 버전 1.13.6-gke.0 이상에서 사용할 수 있습니다.
  • 보안 GKE 노드는 모든 영역 및 리전에서 사용할 수 있습니다.
  • 보안 GKE 노드는 모든 노드 이미지에 사용될 수 있습니다.
  • 보안 GKE 노드는 GPU에서 사용할 수 있습니다.

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

다음 방법 중 하나를 사용하여 기본 gcloud 설정을 진행합니다.

  • gcloud init를 사용하여 기본값 설정 과정을 진행합니다.
  • gcloud config를 사용하여 프로젝트 ID, 영역, 리전을 개별적으로 설정합니다.

gcloud init 사용

One of [--zone, --region] must be supplied: Please specify location 오류가 표시되면 이 섹션을 완료합니다.

  1. gcloud init를 실행하고 다음 안내를 따르세요.

    gcloud init

    원격 서버에서 SSH를 사용하는 경우 --console-only 플래그를 사용하여 다음 명령어로 브라우저를 실행하지 못하게 할 수 있습니다.

    gcloud init --console-only
  2. 안내를 따라 gcloud에서 Google Cloud 계정을 사용하도록 승인합니다.
  3. 새 구성을 만들거나 기존 구성을 선택합니다.
  4. Google Cloud 프로젝트를 선택합니다.
  5. 영역 클러스터의 기본 Compute Engine 영역이나 리전 또는 Autopilot 클러스터의 리전을 선택합니다.

gcloud config 사용

  • 기본 프로젝트 ID를 설정합니다.
    gcloud config set project PROJECT_ID
  • 영역 클러스터를 사용하는 경우 기본 컴퓨팅 영역을 설정합니다.
    gcloud config set compute/zone COMPUTE_ZONE
  • Autopilot 또는 리전 클러스터를 사용하는 경우 기본 컴퓨팅 리전을 설정합니다.
    gcloud config set compute/region COMPUTE_REGION
  • gcloud를 최신 버전으로 업데이트합니다.
    gcloud components update

새 클러스터에서 보안 GKE 노드 사용 설정

gcloud 도구 또는 Google Cloud Console을 사용하여 사용 설정된 보안 GKE 노드로 새 클러스터를 만들 수 있습니다.

gcloud

새 클러스터를 만들 때 --enable-shielded-nodes 옵션을 지정합니다.

gcloud container clusters create CLUSTER_NAME \
    --enable-shielded-nodes

Console

  1. Cloud Console에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 만들기를 클릭합니다.

  3. 탐색창의 클러스터에서 보안을 클릭합니다.

  4. 보안 GKE 노드 사용 설정 체크박스를 선택합니다.

  5. 원하는 대로 클러스터를 구성합니다.

  6. 만들기를 클릭합니다.

클러스터 만들기에 대한 자세한 내용은 클러스터 만들기를 참조하세요.

기존 클러스터에서 보안 GKE 노드 사용 설정

gcloud 명령줄 도구 또는 Google Cloud Console을 사용하여 기존 클러스터에서 보안 GKE 노드를 사용 설정할 수 있습니다.

보안 GKE 노드를 사용 설정하면 제어 영역과 노드가 보안 VM으로 다시 생성됩니다. 제어 영역은 다시 생성되는 동안 사용할 수 없습니다. 클러스터 노드는 다운타임을 최소화하기 위해 순환 방식으로 다시 생성됩니다.

gcloud

클러스터를 업데이트할 때 --enable-shielded-nodes 옵션을 지정하세요.

gcloud container clusters update CLUSTER_NAME \
    --enable-shielded-nodes

Console

  1. Cloud Console에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 수정할 클러스터의 이름을 클릭합니다.

  3. 보안보안 GKE 노드 필드에서 보안 GKE 노드 수정을 클릭합니다.

  4. 보안 GKE 노드 사용 설정 체크박스를 선택합니다.

  5. 변경사항 저장을 클릭합니다.

보안 GKE 노드가 사용 설정되어 있는지 확인

클러스터가 gcloud 명령줄 도구 또는 Google Cloud Console을 사용하여 보안 GKE 노드를 사용하고 있는지 확인합니다.

gcloud

클러스터를 설명합니다.

gcloud container clusters describe CLUSTER_NAME

보안 GKE 노드가 사용 설정되면 명령어의 결과에 다음과 같은 줄이 포함됩니다.

shieldedNodes:
  enabled: true

Console

클러스터가 보안 GKE 노드를 사용하는지 확인하려면 다음 안내를 따르세요.

  1. Cloud Console에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 검사할 클러스터의 이름을 클릭합니다.

  3. 보안보안 GKE 노드 필드에서 보안 GKE 노드가 사용 설정되었는지 확인합니다.

노드의 기본 보안 VM의 무결성을 모니터링할 수도 있습니다. 모니터링 절차는 보안 VM 인스턴스의 무결성 모니터링을 참조하세요.

보안 GKE 노드 사용 중지

gcloud 명령줄 도구 또는 Google Cloud Console을 사용하여 보안 GKE 노드를 사용 중지할 수 있습니다.

gcloud

클러스터를 업데이트할 때 --no-enable-shielded-nodes 옵션을 지정하세요.

gcloud container clusters update CLUSTER_NAME \
    --no-enable-shielded-nodes

Console

  1. Cloud Console에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 수정할 클러스터의 이름을 클릭합니다.

  3. 보안보안 GKE 노드 필드에서 보안 GKE 노드 수정을 클릭합니다.

  4. 보안 GKE 노드 사용 설정 체크박스를 선택합니다.

  5. 변경사항 저장을 클릭합니다.

보안 GKE 노드를 사용 중지하면 제어 영역과 노드가 일반 비보안 VM으로 다시 생성됩니다. 제어 영역은 다시 생성되는 동안 사용할 수 없습니다. 클러스터 노드는 다운타임을 최소화하기 위해 순환 방식으로 다시 생성됩니다.

노드 무결성

보안 부팅 및 무결성 모니터링은 보안 GKE 노드와 함께 사용할 수 있는 노드 풀 설정입니다. 보안 GKE 노드, 보안 부팅, 무결성 모니터링은 각각 개별적으로 사용 설정 또는 중지될 수 있는 독립 기능입니다.

보안 부팅

보안 부팅이 사용 설정되면 타사의 서명되지 않은 커널 모듈을 로드할 수 없으므로 GKE에서는 보안 부팅이 기본적으로 사용 중지됩니다.

서명되지 않은 타사 커널 모듈을 사용하지 않는 경우 gcloud 명령줄 도구 또는 Google Cloud Console을 사용하여 보안 부팅을 사용 설정할 수 있습니다.

gcloud

클러스터를 만들 때 보안 부팅을 사용 설정하려면 다음 안내를 따르세요.

gcloud container clusters create CLUSTER_NAME \
    --shielded-secure-boot

노드 풀을 만들 때 보안 부팅을 사용 설정하려면 다음 안내를 따르세요.

gcloud container node-pools create POOL_NAME \
    --shielded-secure-boot

보안 부팅은 기본적으로 사용 중지됩니다. 클러스터 또는 노드 풀을 만들 때 --no-shielded-secure-boot 옵션을 사용하여 이를 명시적으로 사용 중지할 수 있습니다.

Console

노드 풀을 만들 때 보안 부팅을 사용 설정하려면 다음 안내를 따르세요.

  1. Cloud Console에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 수정할 클러스터의 이름을 클릭합니다.

  3. 노드 풀 추가를 클릭합니다.

  4. 탐색 메뉴에서 보안을 클릭합니다.

  5. 보안 옵션에서 보안 부팅 사용 설정 체크박스를 선택합니다.

  6. 만들기를 클릭합니다.

무결성 모니터링

무결성 모니터링은 GKE에서 기본적으로 사용 설정되는 노드 풀 설정입니다. gcloud 명령줄 도구 또는 Google Cloud Console을 사용하여 무결성 모니터링을 사용 중지할 수 있습니다.

gcloud

클러스터를 만들 때 시스템 구성요소의 무결성 모니터링을 사용 중지하려면 다음 명령어를 사용하세요.

gcloud container clusters create CLUSTER_NAME \
    --no-shielded-integrity-monitoring

노드 풀을 만들 때 시스템 구성요소의 무결성 모니터링을 사용 중지하려면 다음 명령어를 사용하세요.

gcloud container node-pools create POOL_NAME \
    --no-shielded-integrity-monitoring

무결성 모니터링은 기본적으로 사용 설정됩니다. 클러스터 또는 노드 풀을 만들 때 --shielded-integrity-monitoring 옵션을 사용하여 이를 명시적으로 사용 중지할 수 있습니다.

Console

노드 풀을 만들 때 무결성 모니터링을 사용 중지하려면 다음 안내를 따르세요.

  1. Cloud Console에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 수정할 클러스터의 이름을 클릭합니다.

  3. 노드 풀 추가를 클릭합니다.

  4. 탐색 창에서 보안을 클릭합니다.

  5. 보안 옵션에서 무결성 모니터링 사용 설정 체크박스를 선택 취소합니다.

다음 단계