AWS IAM 활용으로 EKS 파드의 보안 관리 방법을 알아보겠습니다.
목차
ToggleColumn IAM 역할을 파드별로 설정하기
- 목적 : 노드에 IAM을 설정하면 노드 안에 모든 파드에 불필요한 권한이 설정되므로 보안에 취약함. 파드별로 설정 가능하게 한다.
- IRSA( IAM Role for Service Accounts )
- EKS 클러스터의 OpenID Connect 공급자 기능을 활성화하고 IAM과 연결
- 서비스 계정과 IAM 역할을 연결하게 연결시키는 구조
- 지금까지 클러스터상에 배포된 파드에서 AWS 리소스를 사용하려면 필요한 IAM 정책을 노드에 부여하여 사용하였음. 이방법의 경우 노드에 파드 각각에 필요한 IAM 정책을 모두 부여하므로 결과적으로 모든 파드에 필요하지 않은 권한이 설정되어 버림. 보안적인 측면에서 좋지 않음. 이걸 해결하는 것이 IRSA 임.
- IRSA 사용 순서
1> EKS 클러스터의 OpenID Connect(OIDC) 공급자 기능을 활성화하고 IAM과 연결
→ EKS 클러스터의 OIDC 공급자 기능을 활성화하고 그 공급자 정보를 IAM에 등록해 EKS의 서비스 계정 인증과 IAM 인가 구조를 연결하는 것
eksctl utils associate-iam-oidc-provider \
--name eks-work-cluster \
--approve
# IAM에 EKS 클러스터의 OIDC 공급자 URL이 설정된 자격 증명 공급자가 생성됨.
# 이 명령으로 EKS 클러스터가 발행한 ID 토큰과 IAM을 연결할 수 있게 됨.
2> 서비스 계정과 IAM 역할 연결
→ 서비스 계정이 사용할 권한을 부여받은 IAM 역할을 생성하고, 서비스 계정을 생성할 때 그 IAM 역할의 ARN을 연결
# cloudwatch-agent 서비스 계정이 AWS의 CloudWatchAgentServerPolicy를 사용하는 경우
# 서비스 계정과 IAM 역할이 생성되고 다음과 같이 서비스 계정에는 생성된 IAM 역할의 ARN이 설정됨.
eksctl create iamserviceaccount \
--name cloudwatch-agent
--cluster eks-work-cluster
--attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \
--namespace amazon-cloudwatch \
--override-existing-serviceaccounts \
--approve
3> 서비스 계정을 설정하고 파드 동작
- cwagent-daemonset.yaml
- 서비스 계정을 설정하여 파드 동작시키기
- cwagent-daemonset.yaml → serviceAccountName : cloudwatch-agent
- EKS 클러스터가 IAM 역할을 부여하기 위해 필요한 토큰을 생성하고 그것이 파드 내의 특정 디렉토리에 마운트된다. 이 상태에서 파드 내부의 애플리케이션이 AWS SDK를 경유해 각종 처리를 요청하면 자동으로 이 토큰을 사용하여 IAM 역할을 연결하고 AWS 리소스를 조작할 수 있게 된다.
- 클러스터가 파드의 추가 설정을 자동으로 삽입하는 어드미션 컨트롤러 기능
Admission Controllers Reference
Column 관측 가능성의 중요성
- 마이크로서비스 특징
- 서비스 각각이 자율적으로 동작하도록 합니다.
- 마이크로서비스 각각이 느슨한 결합으로 구성되어 있다면 새로운 업데이트 등의 이유로 마이크로서비스를 배포할 경우 서비스 각각의 조정이나 영향 범위가 한정됩니다.
- 관측 가능성(Observabillity) : 마이크로서비스 각각의 연관성과 성능 상태를 시각화해 서비스 전체 상태를 파악하는 동사에, 평소와 다른 패턴이 보이거나 문제가 발생했을 때 빨리 원인을 특정 지을 수 있어야 합니다.
쿠버네티스의 다양한 모니터링 도구
- Container Insights 외에 도구들
- 프로메테우스 : https://prometheus.io
- 데이터독 : www.datadoghq.com
- 그라파나 : https://grafana.com
- 뉴렐릭 : https://newrelic.co.kr
이상으로 AWS IAM 활용으로 EKS 파드의 보안 관리법을 알아보았습니다.