OIDC 토큰 검증을 위한 서명 키 가져오기

OIDC 토큰 검증을 위한 서명 키 가져오기

ProjectedServiceAccountToken을 검증하기 위해 OIDC 공개 서명 키를 가져오는 방법을 설명합니다.

출처: 문서

본문

Kubernetes는 각 Kubernetes 서비스 계정에 ProjectedServiceAccountToken을 발급합니다. 이 토큰은 OIDC 토큰이며, 더 나아가 JSON 웹 토큰(JWT)의 한 유형입니다. Amazon EKS는 외부 시스템이 토큰을 검증할 수 있도록 토큰의 서명 키가 포함된 공개 OIDC 엔드포인트를 각 클러스터에 호스팅합니다.

ProjectedServiceAccountToken을 검증하려면 JSON Web Key Set(JWKS)이라고도 하는 OIDC 공개 서명 키를 가져와야 합니다. 애플리케이션에서 이 키를 사용해 토큰을 검증하세요. 예를 들어 PyJWT Python 라이브러리를 사용해 이 키로 토큰을 검증할 수 있습니다. ProjectedServiceAccountToken에 대한 자세한 내용은 "IAM, Kubernetes 및 OpenID Connect(OIDC) 배경 정보"를 참고하세요.

참고: 검증기가 아웃바운드 인터넷 액세스가 없는 VPC에서 실행된다면, 클러스터 OIDC 엔드포인트(com.amazonaws.region-code.oidc-eks)에 대한 AWS PrivateLink 인터페이스 엔드포인트를 생성해 검색 문서와 JWKS를 프라이빗으로 가져올 수 있습니다. 자세한 내용은 "AWS PrivateLink를 사용한 클러스터 OIDC 엔드포인트 액세스"를 참고하세요.

전제 조건

  • 클러스터용 기존 AWS Identity and Access Management(IAM) OpenID Connect(OIDC) 공급자. 이미 있는지 확인하거나 생성하는 방법은 "클러스터용 IAM OIDC 공급자 생성"을 참고하세요.
  • AWS CLI – Amazon EKS를 포함한 AWS 서비스 작업용 명령줄 도구. 자세한 내용은 AWS Command Line Interface 사용 설명서의 "Installing"을 참고하세요. AWS CLI 설치 후 구성도 권장합니다. 자세한 내용은 AWS Command Line Interface 사용 설명서의 "aws configure를 사용한 빠른 구성"을 참고하세요.

절차

  1. AWS CLI로 Amazon EKS 클러스터의 OIDC URL을 검색합니다.
$ aws eks describe-cluster --name my-cluster --query 'cluster.identity.oidc.issuer'
"https://oidc.eks.us-west-2.amazonaws.com/id/8EBDXXXX00BAE"
  1. curl 또는 유사한 도구로 공개 서명 키를 가져옵니다. 결과는 JSON Web Key Set(JWKS)입니다.

중요: Amazon EKS는 OIDC 엔드포인트에 대한 호출을 제한(throttle)합니다. 공개 서명 키를 캐시해야 합니다. 응답에 포함된 cache-control 헤더를 준수하세요.

중요: Amazon EKS는 OIDC 서명 키를 7일마다 교체합니다.

$ curl https://oidc.eks.us-west-2.amazonaws.com/id/8EBDXXXX00BAE/keys
{"keys":[{"kty":"RSA","kid":"2284XXXX4a40","use":"sig","alg":"RS256","n":"wklbXXXXMVfQ","e":"AQAB"}]}

더 알아보기 (Learn more)