이 페이지 개선에 도움 주기
이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.
특정 Secret에 대한 액세스 권한을 EKS Auto Mode 로드 밸런서 컨트롤러에 부여
이 자습서에서는 특정 Kubernetes Secret에 대한 읽기 액세스 권한을 Amazon EKS Auto Mode 로드 밸런서 컨트롤러에 부여합니다. 이를 통해 ALB Ingress에서 OIDC 인증이 차단 해제됩니다. eks:managed 그룹을 대상으로 하는 네임스페이스 범위의 Role 및 RoleBinding을 사용합니다.
이 자습서는 완료되는데 약 15분이 걸립니다. 생성한 Kubernetes RBAC 객체에는 AWS 요금이 부과되지 않습니다.
Amazon EKS Auto Mode 로드 밸런서 컨트롤러는 ALB Ingress 객체에서 OIDC 인증을 지원합니다. alb.ingress.kubernetes.io/auth-type: oidc 주석을 사용하여 이 인증을 활성화합니다. OIDC 구성을 확인하기 위해 컨트롤러는 alb.ingress.kubernetes.io/auth-idp-oidc 주석에 명명된 Kubernetes Secret을 읽습니다. 관리형 액세스 정책은 현재 Secret 객체에 대한 get 권한을 부여하지 않으므로 조정자는 작업에 실패하고 다음과 유사한 메시지가 나타납니다.
Failed build model due to ingress: <ns>/<name>: secrets "<secret>" is forbidden: User "arn:aws:sts::<acct>:assumed-role/AWSServiceRoleForAmazonEKS/<session>" cannot get resource "secrets" in API group "" in the namespace "<ns>"
EKS Auto Mode 관리형 컨트롤러에 추가 Kubernetes RBAC 부여에 설명된 메커니즘을 사용하여 필요한 OIDC Secret에 대한 get 권한을 관리형 컨트롤러에 부여할 수 있습니다.
사전 조건
시작하기 전에, 다음 사항을 확인해야 합니다.
-
자동 생성된
AWSServiceRoleForAmazonEKS액세스 항목이 있는 Amazon EKS Auto Mode 클러스터. -
클러스터 액세스로 구성된
kubectl. -
aws sts get-caller-identity및aws eks describe-access-entry에 대한 권한을 통해 설치 및 구성된 AWS CLI. -
alb.ingress.kubernetes.io/auth-type: oidc주석을 사용하는 ALBIngress및 여기서 참조하는 KubernetesSecret.
1단계: 허용 목록에 추가할 Secret 식별
ALB Ingress에서 OIDC 구성은 다음과 같습니다. Secret 이름 및 Ingress 네임스페이스 기록 - RBAC 객체는 Secret과 동일한 네임스페이스에 상주해야 합니다.
annotations: alb.ingress.kubernetes.io/auth-type: oidc alb.ingress.kubernetes.io/auth-idp-oidc: > { "issuer": "...", "authorizationEndpoint": "...", "tokenEndpoint": "...", "userInfoEndpoint": "...", "secretName": "oidc" }
이 예제의 나머지 부분에서는 네임스페이스 monitoring 및 Secret 이름 oidc를 사용합니다.
2단계: 네임스페이스 범위 Role 및 RoleBinding 적용
이 양식은 정확히 하나의 네임스페이스에서 명명된 정확한 Secret에 정확히 get 권한을 부여합니다. 다음을 eks-managed-oidc-secret-reader.yaml으로 저장합니다.
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: eks-managed-oidc-secret-reader namespace: monitoring rules: - apiGroups: [""] resources: ["secrets"] resourceNames: ["oidc"] verbs: ["get"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: eks-managed-oidc-secret-reader namespace: monitoring subjects: - kind: Group name: eks:managed apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: eks-managed-oidc-secret-reader apiGroup: rbac.authorization.k8s.io
다음을 적용하세요.
kubectl apply -f eks-managed-oidc-secret-reader.yaml
나중에 허용 목록에 Secret 객체를 더 추가하려면 해당 이름을 Role’s `resourceNames 목록에 추가하고 다시 적용하세요.
3단계: 수신 복구 확인
로드 밸런서 컨트롤러는 다음 패스(일반적으로 몇 분 이내)에서 Ingress를 다시 조정합니다. 권한 부여가 작동하면 이전 secrets "oidc" is forbidden 오류가 Ingress에 표시되지 않고, 로드 밸런서가 진행됩니다. 오류가 지속되면 Role’s `namespace, resourceNames 및 RoleBinding 제목을 다시 확인합니다.
권한 부여 제거
중요
ALB Ingress에서 alb.ingress.kubernetes.io/auth-type: oidc를 사용하는 한, Role 및 RoleBinding을 제자리에 유지합니다. 이를 제거하면 Ingress에서 OIDC 확인이 다시 중단됩니다.
Ingress에서 OIDC 사용을 중지하는 경우 권한 부여를 제거합니다.
kubectl delete rolebinding eks-managed-oidc-secret-reader -n monitoring kubectl delete role eks-managed-oidc-secret-reader -n monitoring
관련 리소스
-
EKS Auto Mode 관리형 컨트롤러에 추가 Kubernetes RBAC 부여 -
eks:managed그룹의 개념적 개요 및 권한 부여 범위 지정 방법. -
EKS 액세스 항목을 사용한 IAM 사용자에게 Kubernetes에 대한 액세스 권한 부여 - Amazon EKS 액세스 항목.
-
Using RBAC Authorization
(Kubernetes 설명서).