AWS에서 가장 추천하는 보안 정책은 최소한의 권한을 부여하는것이다. 이것은 Least Privilege Principle 이라고 불린다.
AWS EKS IRSA 의 필요성
EKS의 경우 하나의 ec2가 하나의 워커노드가 되는데, 이는 결국 하나의 ec2내에 여러개의 파드가 운영된다는 것이다.
IAM 정책은 ec2 단위로 사용할 수 있어 파드별로 권한을 줄 수 없게 된다.
예를 들어 하나의 ec2 내에 DB파드와 kinesis운영 파드를 운영한다면 하나의 워커노드에 이 두가지를 동시에 할 수 있는 권한을 주게 되는데 이것이 Least Privilege Principle 에 위배 된다.
이 때 사용가능한 것이 aws 기능 중 하나인 IRSA(IAM Role for Service Account) 이다.
이 방법을 통해서는 pod별로 권한을 줄 수 있게 된다.
IAM 과 Cluster 연결
본격적으로 IRSA을 하기 전에 aws의 IAM 서비스와 Cluster가 연결 되어야 한다.
이를 위해 OpenID Connect provider URL을 이용하여 IAM의 Identity provider를 생성해야 한다.
eksctl utils associate-iam-oidc-provider --region=ap-northeast-2 --cluster=<cluster name> --approve
EKS Iamserviceaccount 생성
이제 IRSA을 생성해보자
eksctl create iamserviceaccount \
--namespace=<namespace> \
--cluster=<cluster-name> \
--name=<iamserviceaccount name> \
--attach-policy-arn=arn:aws:iam::<aws id number>:policy/<policy name> \
--override-existing-serviceaccounts \
--approve
이렇게 다양한 파라미터들이 있다.
그리고 내가 생성한 sa을 확인할 수 있다.
kubectl describe serviceaccount my-service-account -n default
pod 생성
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
namespace: default # Service Account와 같은 namespace
spec:
selector:
matchLabels:
app: test
template:
metadata:
labels:
app: test
spec:
containers:
- name: test
image: nginx
serviceAccountName: my-serviceAccountName
마지막에 serviceAccountName 만 추가로 작성해주면 해당 파드는 사전에 만든 IRSA 권한만 부여 된다.
'AWS' 카테고리의 다른 글
AWS_ Spot instance (0) | 2023.10.11 |
---|---|
AWS_eksctl 개념 및 설치 방법 (0) | 2023.10.11 |
AWS_EKS (kubectl , helm 설치) (0) | 2023.10.03 |
AWS_VPC 개념 (0) | 2023.09.02 |