Amazon EKS가 IAM과 동작하는 방식
Amazon EKS가 IAM과 동작하는 방식
IAM으로 Amazon EKS 접근을 관리하기 전에 Amazon EKS와 함께 사용할 수 있는 IAM 기능을 이해해야 해요. Amazon EKS와 다른 AWS 서비스가 IAM과 어떻게 동작하는지 개략적으로 보려면 IAM 사용자 가이드의 AWS services that work with IAM을 참고하세요.
출처: 문서
본문
관련 토픽
- Amazon EKS identity-based policies
- Amazon EKS resource-based policies
- Amazon EKS 태그 기반 승인
- Amazon EKS IAM roles
Amazon EKS identity-based policies
IAM identity-based policy를 사용하면 허용되거나 거부된 작업과 리소스, 그리고 작업이 허용되거나 거부되는 조건을 지정할 수 있어요. Amazon EKS는 특정 작업, 리소스, 조건 키를 지원해요. JSON 정책에서 사용하는 모든 요소에 대해 알아보려면 IAM 사용자 가이드의 IAM JSON policy elements reference를 참고하세요.
작업 (Actions)
관리자는 AWS JSON 정책으로 누가 무엇에 접근할 수 있는지, 즉 어떤 보안 주체가 어떤 리소스에서 어떤 작업을 수행할 수 있고 어떤 조건에서 그런지 지정할 수 있어요.
JSON 정책의 Action 요소는 정책에서 접근을 허용하거나 거부하는 데 사용할 수 있는 작업을 설명해요. 정책 작업은 일반적으로 관련 AWS API 작업과 같은 이름을 가져요. 일치하는 API 작업이 없는 권한 전용 작업 같은 예외가 있어요. 또한 여러 작업이 필요한 일부 작업도 있어요. 이러한 추가 작업을 종속 작업(dependent actions)이라고 해요.
정책에 작업을 포함해 관련 작업을 수행할 권한을 부여하세요.
Amazon EKS의 정책 작업은 작업 앞에 eks: 접두사를 사용해요. 예를 들어 Amazon EKS 클러스터에 대한 설명 정보를 가져올 권한을 누군가에게 부여하려면 그들의 정책에 DescribeCluster 작업을 포함하세요. 정책 문에는 Action 또는 NotAction 요소가 반드시 포함되어야 해요.
단일 문에서 여러 작업을 지정하려면 다음과 같이 쉼표로 구분하세요.
"Action": ["eks:action1", "eks:action2"]
와일드카드(*)로 여러 작업을 지정할 수 있어요. 예를 들어 Describe 단어로 시작하는 모든 작업을 지정하려면 다음 작업을 포함하세요.
"Action": "eks:Describe*"
Amazon EKS 작업 목록은 Service Authorization Reference의 Actions defined by Amazon Elastic Kubernetes Service를 참고하세요.
리소스 (Resources)
관리자는 AWS JSON 정책으로 누가 무엇에 접근할 수 있는지 지정할 수 있어요.
Resource JSON 정책 요소는 작업이 적용되는 객체를 지정해요. 문에는 Resource 또는 NotResource 요소가 반드시 포함되어야 해요. 모범 사례로 리소스는 ARN(Amazon Resource Name)으로 지정하세요. 리소스 수준 권한(resource-level permissions)이라고 하는 특정 리소스 유형을 지원하는 작업에 대해 이렇게 할 수 있어요.
리소스 수준 권한을 지원하지 않는 목록 작업 같은 작업의 경우 와일드카드(*)를 사용해 문이 모든 리소스에 적용됨을 나타내세요.
"Resource": "*"
Amazon EKS 클러스터 리소스는 다음 ARN을 가져요.
arn:aws:eks:region-code:account-id:cluster/cluster-name
ARN 형식에 대한 자세한 내용은 Amazon resource names (ARNs) and AWS service namespaces를 참고하세요.
예를 들어 my-cluster라는 이름의 클러스터를 문에서 지정하려면 다음 ARN을 사용하세요.
"Resource": "arn:aws:eks:region-code:111122223333:cluster/my-cluster"
특정 계정과 AWS 리전에 속한 모든 클러스터를 지정하려면 와일드카드(*)를 사용하세요.
"Resource": "arn:aws:eks:region-code:111122223333:cluster/*"
리소스를 만드는 작업 같은 일부 Amazon EKS 작업은 특정 리소스에 대해 수행할 수 없어요. 그런 경우 와일드카드(*)를 사용해야 해요.
"Resource": "*"
Amazon EKS 리소스 유형과 그 ARN 목록은 Service Authorization Reference의 Resources defined by Amazon Elastic Kubernetes Service를 참고하세요. 각 리소스의 ARN을 어떤 작업에 지정할 수 있는지 알아보려면 Actions defined by Amazon Elastic Kubernetes Service를 참고하세요.
조건 키 (Condition keys)
Amazon EKS는 자체 조건 키 세트를 정의하고 일부 글로벌 조건 키 사용도 지원해요. 모든 AWS 글로벌 조건 키는 IAM 사용자 가이드의 AWS Global Condition Context Keys를 참고하세요.
클러스터에 OpenID Connect 공급자를 연결할 때 조건 키를 설정할 수 있어요. 자세한 내용은 Example IAM policy를 참고하세요.
모든 Amazon EC2 작업은 aws:RequestedRegion과 ec2:Region 조건 키를 지원해요. 자세한 내용은 Example: Restricting Access to a Specific AWS Region을 참고하세요.
Amazon EKS 조건 키 목록은 Service Authorization Reference의 Conditions defined by Amazon Elastic Kubernetes Service를 참고하세요. 조건 키를 어떤 작업과 리소스에 사용할 수 있는지 알아보려면 Actions defined by Amazon Elastic Kubernetes Service를 참고하세요.
예시
Amazon EKS identity-based policy 예시는 Amazon EKS identity-based policy examples를 참고하세요.
Amazon EKS 클러스터를 만들 때 클러스터를 만든 IAM 보안 주체는 Amazon EKS 컨트롤 플레인의 클러스터 RBAC(Role-Based Access Control) 구성에서 system:masters 권한을 자동으로 부여받아요. 이 보안 주체는 보이는 구성에 나타나지 않으므로, 원래 클러스터를 만든 보안 주체가 누구인지 추적해 두어야 해요. 다른 IAM 보안 주체에 클러스터와 상호작용할 수 있는 권한을 부여하려면 Kubernetes 안의 aws-auth ConfigMap을 편집하고 aws-auth ConfigMap에서 지정한 group 이름으로 Kubernetes rolebinding 또는 clusterrolebinding을 만드세요.
ConfigMap 작업에 대한 자세한 내용은 IAM 사용자와 역할에 Kubernetes API 접근 권한 부여하기를 참고하세요.
Amazon EKS resource-based policies
Amazon EKS는 리소스 기반 정책을 지원하지 않아요.
Amazon EKS 태그 기반 승인
Amazon EKS 리소스에 태그를 연결하거나 요청에서 태그를 Amazon EKS에 전달할 수 있어요. 태그를 기준으로 접근을 제어하려면 aws:ResourceTag/key-name, aws:RequestTag/key-name 또는 aws:TagKeys 조건 키를 사용해 정책의 조건 요소에 태그 정보를 제공하세요. Amazon EKS 리소스 태그 지정에 대한 자세한 내용은 Amazon EKS 리소스를 태그로 구성하기를 참고하세요. 조건 키에서 태그를 어떤 작업에 사용할 수 있는지 알아보려면 Service Authorization Reference의 Actions defined by Amazon EKS를 참고하세요.
Amazon EKS IAM roles
IAM 역할은 특정 권한을 가진 AWS 계정 내의 엔터티예요.
Amazon EKS와 함께 임시 자격 증명 사용
임시 자격 증명을 사용해 페더레이션으로 로그인하거나, IAM 역할을 맡거나, 교차 계정 역할을 맡을 수 있어요. AssumeRole 또는 GetFederationToken 같은 AWS STS API 작업을 호출해 임시 보안 자격 증명을 얻어요.
Amazon EKS는 임시 자격 증명 사용을 지원해요.
서비스 연결 역할
서비스 연결 역할은 AWS 서비스가 사용자를 대신해 작업을 완료하기 위해 다른 서비스의 리소스에 접근할 수 있게 해줘요. 서비스 연결 역할은 IAM 계정에 나타나며 서비스가 소유해요. 관리자는 서비스 연결 역할의 권한을 볼 수 있지만 편집할 수는 없어요.
Amazon EKS는 서비스 연결 역할을 지원해요. Amazon EKS 서비스 연결 역할 생성·관리에 대한 자세한 내용은 Amazon EKS용 서비스 연결 역할 사용하기를 참고하세요.
서비스 역할
이 기능은 서비스가 사용자를 대신해 서비스 역할을 맡을 수 있게 해줘요. 이 역할은 서비스가 사용자를 대신해 작업을 완료하기 위해 다른 서비스의 리소스에 접근할 수 있게 해줘요. 서비스 역할은 IAM 계정에 나타나며 계정이 소유해요. 즉 IAM 관리자가 이 역할의 권한을 변경할 수 있어요. 다만 그렇게 하면 서비스 기능이 깨질 수 있어요.
Amazon EKS는 서비스 역할을 지원해요. 자세한 내용은 Amazon EKS 클러스터 IAM 역할과 Amazon EKS 노드 IAM 역할을 참고하세요.
Amazon EKS에서 IAM 역할 선택
Amazon EKS에서 클러스터 리소스를 만들 때는 여러 다른 AWS 리소스에 사용자를 대신해 접근하도록 Amazon EKS에 허용할 역할을 선택해야 해요. 이전에 서비스 역할을 만든 적이 있다면 Amazon EKS가 선택할 수 있는 역할 목록을 제공해요. Amazon EKS 관리형 정책이 연결된 역할을 선택하는 것이 중요해요. 자세한 내용은 기존 클러스터 역할 확인하기와 기존 노드 역할 확인하기를 참고하세요.