AWS STS OIDC discovery용 VPC 엔드포인트 만들기
AWS STS OIDC discovery용 VPC 엔드포인트 만들기
외부 ID 페더레이션(outbound identity federation)으로 발급한 JWT를 검증할 때 필요한 OIDC discovery 엔드포인트를 VPC 안에서 비공개로 접근하고 싶다면 이 페이지를 참고해요. 어느 엔드포인트 서비스를 골라야 할지 표로 정리해 줘요.
출처: 문서
본문
AWS Security Token Service(AWS STS) OIDC discovery는 외부 ID 페더레이션이 발급한 JSON 웹 토큰(JWT)을 검증하는 데 신뢰 당사자(relaying party)가 필요한 메타데이터와 검증 키를 제공하는 한 쌍의 공용 엔드포인트예요.
외부 ID 페더레이션을 활성화하면 AWS STS가 계정별 발급자 URL(issuer URL)을 게시해요. 이 URL은 두 개의 OpenID Connect(OIDC) discovery 엔드포인트를 호스팅해요. 신뢰 당사자는 이 엔드포인트를 가져와서 GetWebIdentityToken이 발급한 JWT를 검증하는 데 필요한 메타데이터와 공개 키를 얻어요.
{issuer_url}/.well-known/openid-configuration— OIDC discovery 문서{issuer_url}/.well-known/jwks.json— 토큰 서명 검증 키가 들어 있는 JSON 웹 키 세트(JWKS)
기본적으로 VPC에서 이 엔드포인트에 도달하려면 인터넷 게이트웨이, NAT 디바이스, VPN 연결, 또는 연결이 필요해요. 이 트래픽을 AWS 네트워크 위에서만 흐르게 하려면 STS OIDC discovery 엔드포인트용 인터페이스 VPC 엔드포인트를 만들어요.
Note — STS OIDC discovery 엔드포인트는 위에 나열한 두 엔드포인트만 제공해요. AWS STS API 동작은 전혀 제공하지 않아요.
GetWebIdentityToken,AssumeRole또는 다른 AWS STS 동작을 비공개로 호출하려면com.amazonaws.region.sts엔드포인트 서비스를 사용하세요. AWS STS용 VPC 엔드포인트 만들기를 참고하세요.
올바른 엔드포인트 서비스 선택
외부 ID 페더레이션은 두 개의 서로 다른 네트워크 경로를 사용해요. 토큰을 발급(mint)하고 검증하는 워크로드 대부분은 두 엔드포인트 서비스가 모두 필요해요.
| 작업 | 엔드포인트 서비스 | 인증 |
|---|---|---|
JWT 발급(sts:GetWebIdentityToken) |
com.amazonaws.region.sts |
AWS SigV4 |
/.well-known/openid-configuration 읽기 |
com.amazonaws.region.sts-oidc |
없음(비인증) |
/.well-known/jwks.json 읽기 |
com.amazonaws.region.sts-oidc |
없음(비인증) |
토큰을 검증하는 유일한 주체가 AWS 외부의 외부 서비스라면 STS OIDC discovery 엔드포인트는 필요 없어요. 그 서비스는 공용 인터넷으로 발급자 URL을 가져오고, 그 트래픽은 VPC로 들어오지 않기 때문이에요.
고려 사항
STS OIDC discovery용 인터페이스 VPC 엔드포인트를 만들기 전에 다음을 고려하세요.
- VPC 엔드포인트 정책이 지원되지 않아요. 두 discovery API 모두 공개적으로 제공되는 데이터를 제공하고, STS OIDC discovery 엔드포인트는 VPC 엔드포인트 정책을 적용하지 않아요. 어떤 리소스가 엔드포인트에 도달할 수 있는지 제어하려면 보안 그룹과 서브넷 배치를 사용하세요.
- 두 경로만 제공돼요. 엔드포인트는
/.well-known/openid-configuration과/.well-known/jwks.json에 대한 HTTPS GET 요청만 받아들여요. 그 외의 모든 경로와 메서드는 오류를 반환해요.
STS OIDC discovery용 인터페이스 VPC 엔드포인트 만들기
STS OIDC discovery 엔드포인트용 VPC 엔드포인트는 Amazon Virtual Private Cloud 콘솔이나 AWS 명령줄 인터페이스로 만들 수 있어요. 자세한 내용은 Amazon VPC 사용자 가이드의 인터페이스 VPC 엔드포인트로 AWS 서비스 접근을 참고하세요.
다음 서비스 이름으로 STS OIDC discovery용 VPC 엔드포인트를 만들어요.
com.amazonaws.region.sts-oidc
엔드포인트에 대해 프라이빗 DNS를 활성화하면 sts-oidc.region.amazonaws.com으로 요청을 보낼 수 있고, 그 요청은 VPC 안의 엔드포인트 네트워크 인터페이스로 해석(resolve)돼요.
엔드포인트를 통해 요청 보내기
VPC 안의 신뢰 당사자가 JWT를 검증해야 하면 발급자 URL에서 OIDC discovery 문서와 JWKS를 가져와요. 발급자 호스트 이름(예: uuid.tokens.sts.global.api.aws)은 엔드포인트(sts-oidc.region.amazonaws.com)와 도메인이 달라서 기본적으로 VPC 엔드포인트로 해석되지 않아요.
발급자 호스트 이름에 대한 요청을 엔드포인트로 라우팅하려면 발급자 호스트 이름에 대한 Amazon Route 53 프라이빗 호스팅 영역을 만들고, VPC 엔드포인트를 가리키는 별칭(alias) 레코드를 추가해요. 호스팅 영역을 만든 뒤에는 VPC 안의 리소스가 발급자 호스트 이름을 엔드포인트의 네트워크 인터페이스로 해석해요. 그러면 표준 OIDC 라이브러리가 코드 변경 없이 discovery 문서를 가져올 수 있어요. 프라이빗 호스팅 영역 만드는 방법은 Amazon Route 53 개발자 안내서의 프라이빗 호스팅 영역 작업을 참고하세요.
Note — 엔드포인트 서비스는 리전별이지만, 단일 엔드포인트가 파티션 안의 모든 발급자 UUID에 대한 discovery 요청을 처리해요. 검증자가 실행되는 리전에 엔드포인트를 만드세요. 발급자 계정마다 엔드포인트가 하나씩 필요하진 않아요.