VPC 환경에서 이용 가능합니다.
ncp-iam-authenticator를 사용하여 kubeconfig를 구성하면 ServiceAccount 토큰을 이용하여 권한 제어를 할 필요가 없습니다.
IAM 인증 사용자 관리를 확인해 주십시오.
Ncloud Kubernetes Service에서 제공하는 kubeconfig 인증 파일은 ncp-iam-authenticator를 통해 동작 하므로 사용자가 Jenkins, Github Action과 같은 3rd-party 서비스를 사용하는 경우 일부 불편함이 발생할 수 있습니다. 또한 해당 인증 파일은 사용자의 클러스터 권한을 대상 3rd-party 서비스에 부여하므로 보안 문제가 발생할 가능성이 있습니다. 이를 방지하기 위해 토큰을 사용한 kubeconfig 인증 파일을 생성하고, 필요한 권한만 부여하여 권한을 최소화함으로써 보안을 강화할 수 있습니다.
kubeconfig 파일의 토큰 값 변경
kubeconfig 파일의 토큰 값을 변경하여 클러스터 권한을 제한하는 방법을 예제를 통해 설명합니다.
kubeconfig 파일의 토큰 값을 변경하는 방법은 다음과 같습니다.
-
아래 명령어를 차례대로 실행하여 Namespace와 Service Account를 생성해 주십시오.
-
아래 명령어를 실행하여 Role과 Role Binding을 추가해 주십시오.
- Role의 resources, verbs에서 사용할 권한을 정의합니다. 위 코드 예시에서는 hello-world라는 네임스페이스의 Pod 리소스만 제어하도록 제한합니다.
-
아래 명령어를 실행하여 Service Account의 Secret을 생성해 주십시오.
참고Kubernetes 1.24부터는 Service Account 생성 시 자동으로 default secret을 생성하지 않습니다. 사용하고 계신 버전이 1.24 이후인 경우 과정 3에서 관련 secret의 생성이 필요합니다. 이전 버전의 경우에는 자동으로 생성되므로 해당 과정을 진행하지 않아도 됩니다.
-
아래 명령어를 실행하여 Service Account의 토큰을 확인해 주십시오.
-
ncp-iam-authenticator를 통해 클러스터의 kubeconfig 파일을 생성해 주십시오.
- ncp-iam-authenticator에 대한 자세한 내용은 관련 가이드 [IAM 인증 사용자 관리] 를 참고해 주십시오.
-
생성한 kubeconfig 파일을 복사하여 kubeconfig-token.yaml 파일로 저장한 후, 해당 파일의 user 부분 client-certificate-data, client-key-data 값을 아래와 같이 삭제해 주십시오.
-
이전 단계에서 확인한 토큰 정보를 아래와 같이 user 값으로 추가해 주십시오.
권한 제어 확인
위 과정에서 생성한 kubeconfig-token.yaml 파일을 기준으로, 토큰을 이용하여 Kubernetes API 호출 시 정상적으로 권한을 제한하는지 확인하는 방법은 다음과 같습니다.
- 아래 명령어를 실행하여
kubeconfig-token.yaml
를 환경변수로 선언해 주십시오. - 아래 명령어를 각각 실행하여 접근 여부를 확인해 주십시오.
- Pod 객체 조회 (접근 가능)
- Deployment 객체 조회 (접근 불가능)
- 다른 네임스페이스 조회 (접근 불가능)