보안적인 이유로 로컬 컴퓨터에서만 SSH 접속 되도록 설정하기
이전에 생성한 bastion-host acg에 규칙 추가
1-1) SSH 접속을 위한 설정
1. 로컬 컴퓨터에서 중간 서버로 SSH 접속하기 위한 작업

2. 중간 서버에서 쿠버네티스 클러스터 노드 서버로 접속하기 위한 설정
: 목적지에 K8s 클러스터를 구성한 Private Subnet IP 대역 입력

3. 쿠버네티스 클러스터 생성으로 인해서 자동으로 생성된 쿠버네티스 ACG에 22번 포트 추가
: 중간 서버 IP만 SSH 허용해주기
① 중간 서버 비공인 IP 확인

② 중간 서버 인바운드 비공인 IP 22번 포트 허용 및 아웃바운드( 0.0.0.0/0 대역의 1-65535 포트 허용 )
: 아웃바운드에 모든 대역을 허용함으로써 이후 curl 작업이 가능해진다.



1-2) SSH 접속 연결
1. PUTTY 를 사용하여 SSH 접속 연결





2. 편의성을 위해 root 비밀번호 변경

1-3) kubectl 및 IAM 도구 설치
※ 네이버클라우드플랫폼에서 제공하는 설치가이드를 참고하여 kubectl 및 IAM 도구 설치
쿠버네티스(Kubernetes) 클러스터의 API 서버는 시스템의 심장부와 같다. 보안을 위해 이 API 서버를 Private 환경에 구축했다면, 관리자는 Bastion Host에 관리 도구(kubectl, IAM)를 설치하여 안전한 관리 환경을 구축하는 것이 정석이다.
① kubectl: 클러스터 조종석의 단일화
kubectl 은 클러스터에 명령을 내리는 전용 핸들이다. 이를 관리자 개인 PC 가 아닌 Bastion Host 에 설치하는 이유는 다음과 같다.
· 엔드포인트 보호: 쿠버네티스 API 서버를 퍼블릭에 노출하지 않고, 오직 Bastion Host의 IP만 허용하도록 설정할 수 있다.
· 일관된 환경: 여러 관리자가 동일한 버전의 kubectl과 설정 파일(kubeconfig)을 공유하며 작업할 수 있어 휴먼 에러를 줄인다.
· 간접 통신: 관리자는 내 PC -> Bastion -> API Server 순서로 접속하게 되므로, 직접적인 공격 노출을 원천 차단한다.
② IAM 도구: 세밀한 출입 통제 (RBAC과의 연동)
클라우드 환경에서 쿠버네티스를 운영한다면, 누가 클러스터에 접근할 수 있는지 결정하는 **권한 관리(IAM)**가 핵심이다.
· 권한의 중앙 집중화: Bastion Host 자체에 특정 IAM Role을 부여하거나, IAM 인증 도구(예: aws-iam-authenticator)를 설치하여 "인증된 관리자"만 클러스터 명령어를 실행하게 다.
· 최소 권한 원칙: 관리자 개개인에게 과도한 권한을 주기보다, Bastion Host라는 통제된 환경 안에서만 특정 작업을 수행하도록 제한할 수 있다.
· Audit 강화: 누가 어떤 IAM 권한을 사용하여 클러스터에 변경을 가했는지 Bastion의 로그와 클라우드 감사 로그(CloudTrail 등)를 통해 교차 검증이 가능하다.
[설정 가이드]

1. kubectl 설치 ( 터미널에서 작업 )
# 1. 최신 릴리스 다운로드 (Linux x86-64 기준)
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# 바이너리 유효성 검사 (선택 사항)
# 실패 시 파일 손상 및 악의적인 변경이 있을 수 있다.
# 체크섬 파일 다운로드
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
# 다운로드한 kubectl 과 체크섬 대조
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
# 2. kubectl 설치 및 실행 권한 부여
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# 3. 설치 확인
kubectl version --client

2. IAM 설치 ( 터미널에서 작업 )
네이버 클라우드 플랫폼의 관리형 쿠버네티스(NKS)를 외부에서 안전하게 관리하려면, NCP의 IAM 계정 정보를 기반으로 클러스터 인증을 도와주는 ncp-iam-authenticator가 필요하다.
# 1. 홈 디렉토리로 이동 후 바이너리 다운로드
cd ~
curl -o ncp-iam-authenticator -L https://github.com/NaverCloudPlatform/ncp-iam-authenticator/releases/latest/download/ncp-iam-authenticator_linux_amd64
# 2. 실행 권한 부여 및 경로 설정
# 2-1. 파일에 실행 권한 추가
chmod +x ./ncp-iam-authenticator
# 2-2. 사용자 개별 바이너리 저장용 bin 디렉토리 생성 및 복사
mkdir -p $HOME/bin
cp ./ncp-iam-authenticator $HOME/bin/ncp-iam-authenticator
# 2-3. 현재 세션에 PATH 추가
export PATH=$PATH:$HOME/bin
# 3. 환경 변수 영구 반영
# 3-1. ~/.bash_profile 끝에 PATH 추가 (Ubuntu 등에서는 ~/.bashrc 권장)
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bash_profile
# 3-2. 변경 사항 즉시 반영
source ~/.bash_profile
# 4. 정상 동작 확인
ncp-iam-authenticator help

1-4) NCP IAM 인증 및 NKS 클러스터 연결 (kubeconfig 설정)
kubectl 과 ncp-iam-authenticator 설치를 마쳤다면, 이제 내 계정 정보를 연결하여 실제 NCP 쿠버네티스 클러스터(NKS)를 제어할 차례다.
1. API 인증키 설정 (Access & Secret Key)
NCP 마이페이지의 '인증키 관리'에서 확인한 API 참조키를 Bastion Host 에 등록해야 한다. 두 가지 방법 중 편한 방법을 선택한다.
방법에 앞서, NCP 콘솔에서 인증키값 확인하기

방법 A: 환경 변수(ENV)로 일시적 설정
export NCLOUD_ACCESS_KEY="사용자의_Access_Key"
export NCLOUD_SECRET_KEY="사용자의_Secret_Key"
export NCLOUD_API_GW=https://ncloud.apigw.ntruss.com
방법 B: 설정 파일생성 (권장 - 영구석 설정)
mkdir -p ~/.ncloud
vi ~/.ncloud/configure
# 아래 내용을 입력 후 저장
[DEFAULT]
ncloud_access_key_id = 사용자의_Access_Key
ncloud_secret_access_key = 사용자의_Secret_Key
ncloud_api_url = https://ncloud.apigw.ntruss.com
2. kubeconfig 생성 (ncp-iam-authenticator 활용)
이제 인증 도구를 사용해 클러스터 접속 정보를 담은 kubeconfig.yaml 파일을 생성한다.
· Cluster UUID 확인: NCP 콘솔 > Services > Kubernetes Service > 클러스터 상세 페이지에서 확인 가능하다.

ncp-iam-authenticator create-kubeconfig \
--region KR \
--clusterUuid [your-cluster-uuid] \
--output kubeconfig.yaml
3. 접속 테스트 및 편의 설정 (Alias)
생성된 설정 파일을 사용하여 클러스터와 통신이 되는지 확인한다.
# 특정 설정 파일을 지정하여 테스트
kubectl get namespaces --kubeconfig kubeconfig.yaml
매번 -- kubeconfig 옵션을 붙이는 것이 번거롭다면, alias 를 설정하여 간소화한다.
vi ~/.bash_profile
# 파일 맨 밑에 추가
alias kubectl='kubectl --kubeconfig="$HOME/kubeconfig.yaml"'
# 변경 사항 반영
source ~/.bash_profile
# 이제 옵션 없이 바로 사용 가능
kubectl get namespaces


1-5) [중요] 보안 강화: ACG 규칙 정리
설정 과정에서 원활한 통신을 위해 일시적으로 오픈했던 ACG(Access Control Group) 규칙을 정리해야 한다.
· 조치 사항: 아웃바운드(Outbound) 규칙에 추가했던 0.0.0.0/0 (모든 포트 1-65535) 허용 정책을 삭제한다.
· 이유: 초기 설정이 끝난 후에는 필요한 통신 채널만 남겨두는 것이 '최소 권한 원칙'에 부합하며, Bastion Host의 보안을 지키는 핵심이다.
1-6) [보안 필수] 설정 파일 권한 제한 (Permission Hardening)
~/.ncloud/configure와 kubeconfig.yaml 파일에는 여러분의 계정 인증키와 클러스터 접속 정보가 평문으로 저장되어 있다. Bastion Host에 접근할 수 있는 다른 사용자가 이 파일을 읽지 못하도록 권한을 엄격히 제한해야 한다.
# 본인(소유자)만 읽고 쓸 수 있도록 권한 변경 (600: rw-------)
chmod 600 ~/.ncloud/configure
chmod 600 ~/kubeconfig.yaml
▶ 보안 팁: 리눅스 환경에서 민감한 키 파일은 항상 600 권한을 유지하는 것이 모범 사례다.
'인프라 > NCP k8s 세팅방법' 카테고리의 다른 글
| 5. Bastion 을 통한 워커 노드 SSH 접속 및 관리 [참고용] (0) | 2026.09.02 |
|---|---|
| 3. Bastion Host Server (중간 서버) 생성 (0) | 2026.09.02 |
| 2. 쿠버네티스 클러스터 생성 (0) | 2026.09.02 |
| 1. 네트워크 설정 (0) | 2026.09.02 |