Amazon EKS의 교차 서비스 혼동 대리자(Confused Deputy) 방지
Amazon EKS의 교차 서비스 혼동 대리자(Confused Deputy) 방지
혼동 대리자 문제는 어떤 작업을 수행할 권한이 없는 엔터티가 더 높은 권한을 가진 엔터티를 강제로 그 작업을 수행하게 만드는 보안 문제예요. AWS에서 교차 서비스 사칭(impersonation)은 혼동 대리자 문제를 일으킬 수 있어요. 교차 서비스 사칭은 한 서비스(호출 서비스)가 다른 서비스(피호출 서비스)를 호출할 때 발생할 수 있어요. 호출 서비스는 자신이 접근 권한이 없는 다른 고객의 리소스에 대해 자신의 권한을 사용해 처리하도록 조작될 수 있어요. 이를 방지하기 위해 AWS는 계정의 리소스에 접근 권한이 부여된 서비스 보안 주체(service principal)를 가진 모든 서비스에 대해 데이터를 보호하는 데 도움이 되는 도구를 제공해요.
리소스 정책에서 aws:SourceArn, aws:SourceAccount 글로벌 조건 컨텍스트 키를 사용해 Amazon Elastic Kubernetes Service(Amazon EKS)가 다른 서비스에 리소스를 부여하는 권한을 제한하는 것을 권장해요.
aws:SourceArn– 교차 서비스 접근에 리소스 하나만 연결하려면aws:SourceArn을 사용하세요.aws:SourceAccount– 그 계정의 모든 리소스가 교차 서비스 사용과 연결되도록 하려면aws:SourceAccount를 사용하세요.
혼동 대리자 문제를 방지하는 가장 효과적인 방법은 aws:SourceArn 글로벌 조건 컨텍스트 키를 리소스의 전체 ARN과 함께 사용하는 거예요. 리소스의 전체 ARN을 모르거나 여러 리소스를 지정하는 경우 ARN의 알 수 없는 부분에 와일드카드 문자(*)를 사용해 aws:SourceArn 글로벌 컨텍스트 조건 키를 사용하세요. 예를 들어 arn:aws::*::*처럼요.
aws:SourceArn 값이 Amazon S3 버킷 ARN처럼 계정 ID를 포함하지 않는 경우 권한을 제한하려면 aws:SourceAccount와 aws:SourceArn을 모두 사용해야 해요.
Amazon EKS 클러스터 역할의 교차 서비스 혼동 대리자 방지
각 클러스터에는 Amazon EKS 클러스터 IAM 역할이 필요해요. Amazon EKS가 관리하는 Kubernetes 클러스터는 이 역할을 사용해 노드를 관리하고, 레거시 Cloud Provider는 이 역할을 사용해 Elastic Load Balancing으로 서비스용 로드 밸런서를 만듭니다. 이러한 클러스터 작업은 같은 계정에만 영향을 줄 수 있으므로 각 클러스터 역할을 해당 클러스터와 계정으로 제한할 것을 권장해요. 이는 계정에서 최소 권한(least privilege) 원칙을 따르라는 AWS 권장 사항의 구체적 적용이에요.
소스 ARN 형식
aws:SourceArn 값은 arn:aws:eks:region:account:cluster/cluster-name 형식의 EKS 클러스터 ARN이어야 해요. 예를 들어 arn:aws:eks:us-west-2:123456789012:cluster/my-cluster처럼요.
EKS 클러스터 역할의 신뢰 정책 형식
다음 예시는 Amazon EKS에서 aws:SourceArn과 aws:SourceAccount 글로벌 조건 컨텍스트 키를 사용해 혼동 대리자 문제를 방지하는 방법을 보여줘요.
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "eks.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:eks:us-west-2:123456789012:cluster/my-cluster"
},
"StringEquals": {
"aws:SourceAccount": "123456789012"
}
}
}
]
}
더 알아보기 (Learn more)
출처: 문서