AWS 리전에서 AWS STS 관리
AWS 리전에서 AWS STS 관리 (Manage AWS STS in an AWS Region)
리전 엔드포인트(Regional endpoint)는 특정 리전 안에 있는 AWS 웹 서비스의 진입점 URL이에요. AWS는 지연 시간을 줄이고, 중복성을 구축하고, 세션 토큰 유효성을 높이기 위해 전역 엔드포인트 대신 리전 AWS STS 엔드포인트 사용을 권장해요.
출처: 문서
본문
전역(레거시) AWS STS 엔드포인트 https://sts.amazonaws.com은 고가용성이지만, **단일 AWS 리전(미국 동부 버지니아 북부)**에서 호스팅되며 다른 엔드포인트와 마찬가지로 다른 리전의 엔드포인트로 자동 장애 조치를 제공하지 않아요.
- 지연 시간 줄이기 — 서비스와 애플리케이션에 지리적으로 가까운 엔드포인트로 AWS STS 호출을 보내면 더 낮은 지연 시간과 더 나은 응답 시간으로 AWS STS 서비스에 접근할 수 있어요.
- 중복성 구축 — 워크로드 내 실패의 영향을 예측 가능한 영향 범위를 가진 제한된 수의 컴포넌트로 한정할 수 있어요. 리전 AWS STS 엔드포인트를 사용하면 컴포넌트의 범위를 세션 토큰의 범위와 정렬할 수 있어요. 이 신뢰성 필러에 대한 자세한 내용은 AWS Well-Architected Framework의 장애 격리를 사용해 워크로드 보호를 참고하세요.
- 세션 토큰 유효성 높이기 — 리전 AWS STS 엔드포인트의 세션 토큰은 모든 AWS 리전에서 유효해요. 전역 STS 엔드포인트의 세션 토큰은 기본적으로 활성화된 AWS 리전에서만 유효해요. 계정에 새 리전을 활성화할 계획이라면 리전 AWS STS 엔드포인트의 세션 토큰을 사용할 수 있어요. 전역 엔드포인트를 사용하기로 했다면, 전역 엔드포인트의 AWS STS 세션 토큰의 리전 호환성을 변경해야 해요. 그래야 토큰이 모든 AWS 리전에서 유효해져요.
AWS STS 리전과 그 엔드포인트 목록은 AWS STS 리전과 엔드포인트를 참고하세요.
참고
AWS는 기본적으로 활성화된 리전의 AWS STS 전역 엔드포인트(https://sts.amazonaws.com)에 탄력성·성능 향상을 위한 변경을 적용했어요. 전역 엔드포인트에 대한 AWS STS 요청은 워크로드와 같은 AWS 리전에서 자동으로 서비스돼요. 이 변경은 opt-in 리전에는 배포되지 않아요. 적절한 AWS STS 리전 엔드포인트를 사용하길 권장해요. 자세한 내용은 AWS STS 전역 엔드포인트 변경을 참고하세요.
다루는 주제
- AWS 리전에서 AWS STS 활성화·비활성화
- AWS STS 리전을 사용하는 코드 작성
- 전역 엔드포인트 세션 토큰 관리
AWS 리전에서 AWS STS 활성화·비활성화
리전에 대해 AWS STS 엔드포인트를 활성화하면, AWS STS 요청을 하는 계정의 사용자·역할에게 임시 자격 증명을 발급할 수 있어요. 그 자격 증명은 기본적으로 활성화되거나 수동으로 활성화한 어느 리전에서든 사용할 수 있어요.
기본적으로 활성화된 리전에서는 임시 자격 증명이 생성되는 계정에서 리전 AWS STS 엔드포인트를 활성화해야 해요. 사용자가 요청할 때 같은 계정에 로그인했는지 다른 계정에 로그인했는지는 중요하지 않아요.
수동으로 활성화한 리전을 사용해 다른 AWS 계정의 역할에 대한 임시 자격 증명을 요청할 때는, 대상 계정(역할이 있는 계정)이 AWS STS 작업을 위해 그 리전을 활성화해야 해요. 그래야 임시 보안 자격 증명이 올바르게 생성될 수 있어요.
예를 들어 계정 A의 사용자가 AWS STS 리전 엔드포인트 https://sts.ap-southeast-3.amazonaws.com으로 sts:AssumeRole API 요청을 보낸다고 해 보죠. 이 요청은 계정 B의 Developer 역할에 대한 임시 자격 증명을 요청하는 거예요. 계정 B의 엔터티에 대한 자격 증명을 만드는 요청이므로, 계정 B가 ap-southeast-3 리전을 활성화해야 해요. 계정 A(또는 다른 계정)의 사용자는 지역이 그들 계정에서 활성화됐는지와 무관하게 ap-southeast-3 AWS STS 엔드포인트를 호출해 계정 B의 자격 증명을 요청할 수 있어요. 자세한 내용은 계정에서 AWS 리전 활성화 또는 비활성화를 참고하세요.
참고
활성 리전은 그 계정에서 임시 자격 증명을 사용하는 모두가 사용할 수 있어요. 어떤 IAM 사용자나 역할이 리전에 접근할 수 있는지 제어하려면 권한 정책에서 aws:RequestedRegion 조건 키를 사용하세요.
기본적으로 활성화된 리전에서 AWS STS 활성화·비활성화 (콘솔)
- 루트 사용자 또는 IAM 관리 작업을 수행할 권한이 있는 사용자로 로그인해요.
- IAM 콘솔을 열고 탐색 창에서 Account settings를 선택해요.
- Security Token Service (STS) 섹션의 Endpoints에서 구성하려는 리전을 찾고, STS status 열에서 Active 또는 Inactive를 선택해요.
- 열린 대화 상자에서 Activate 또는 Deactivate를 선택해요.
대부분 활성화해야 하는 리전에서는 리전을 활성화하면 AWS STS가 자동으로 활성화돼요. 리전을 활성화한 뒤에는 AWS STS가 그 리전에서 항상 활성 상태이며 비활성화할 수 없어요. 기본적으로 비활성화된 리전을 활성화하는 방법은 AWS Account Management Reference Guide의 계정이 사용할 AWS 리전 지정을 참고하세요.
AWS STS 리전을 사용하는 코드 작성
리전을 활성화한 뒤에는 AWS STS API 호출을 그 리전으로 보낼 수 있어요. 다음 Java 코드 스니펫은 Europe(Milan)(eu-south-1) 리전에 요청을 보내도록 AWSSecurityTokenService 객체를 구성하는 방법을 보여줘요.
EndpointConfiguration regionEndpointConfig = new EndpointConfiguration("https://sts.eu-south-1.amazonaws.com", "eu-south-1");
AWSSecurityTokenService stsRegionalClient = AWSSecurityTokenServiceClientBuilder.standard()
.withCredentials(credentials)
.withEndpointConfiguration(regionEndpointConfig)
.build();
AWS STS는 리전 엔드포인트로 호출하길 권장해요. 리전을 수동으로 활성화하는 방법은 AWS Account Management Reference Guide의 계정이 사용할 AWS 리전 지정을 참고하세요.
예시에서 첫 번째 줄은 regionEndpointConfig라는 EndpointConfiguration 객체를 인스턴스화하며, 파라미터로 엔드포인트 URL과 AWS 리전을 전달해요.
AWS SDK에 환경 변수로 AWS STS 리전 엔드포인트를 설정하는 방법은 AWS SDKs and Tools Reference Guide의 AWS STS 리전화 엔드포인트를 참고하세요.
다른 언어·프로그래밍 환경 조합은 해당 SDK의 문서를 참고하세요.
전역 엔드포인트 세션 토큰 관리
대부분의 AWS 리전은 기본적으로 모든 AWS 서비스의 작업에 활성화돼 있어요. 그런 리전은 AWS STS와 함께 자동으로 활성화돼요. 아시아 태평양(홍콩) 같은 일부 리전은 수동으로 활성화해야 해요. AWS 리전 활성화·비활성화에 대한 자세한 내용은 AWS Account Management Reference Guide의 계정이 사용할 AWS 리전 지정을 참고하세요.
이런 AWS 리전을 활성화하면 AWS STS와 함께 자동으로 활성화돼요. 비활성화된 리전에서는 AWS STS 엔드포인트를 활성화할 수 없어요. 모든 AWS 리전에서 유효한 세션 토큰은 기본적으로 활성화된 리전에서만 유효한 토큰보다 더 많은 문자를 포함해요. 이 설정을 변경하면 토큰을 임시로 저장하는 기존 시스템에 영향을 줄 수 있어요.
이 설정은 AWS Management Console, AWS CLI, 또는 AWS API로 변경할 수 있어요.
전역 엔드포인트의 세션 토큰 리전 호환성 변경 (콘솔)
- 루트 사용자 또는 IAM 관리 작업을 수행할 권한이 있는 사용자로 로그인해요. 세션 토큰의 호환성을 변경하려면
iam:SetSecurityTokenServicePreferences작업을 허용하는 정책이 있어야 해요. - IAM 콘솔을 열고 탐색 창에서 Account settings를 선택해요.
- Security Token Service (STS) 섹션의 Session Tokens from the STS endpoints에서 Global endpoint가 Valid only in AWS Regions enabled by default임을 나타내면 Change를 선택해요.
- Change region compatibility 대화 상자에서 All AWS Regions을 선택한 뒤 Save changes를 선택해요.
참고
모든 AWS 리전에서 유효한 세션 토큰은 기본적으로 활성화된 리전에서만 유효한 토큰보다 더 많은 문자를 포함해요. 이 설정을 변경하면 토큰을 임시로 저장하는 기존 시스템에 영향을 줄 수 있어요.
전역 엔드포인트의 세션 토큰 리전 호환성 변경 (AWS CLI)
세션 토큰 버전을 설정해요. 버전 1 토큰은 기본적으로 사용 가능한 AWS 리전에서만 유효해요. 이 토큰은 아시아 태평양(홍콩)처럼 수동으로 활성화한 리전에서는 동작하지 않아요. 버전 2 토큰은 모든 리전에서 유효해요. 다만 버전 2 토큰은 더 많은 문자를 포함하며 토큰을 임시로 저장하는 시스템에 영향을 줄 수 있어요.
aws iam set-security-token-service-preferences
전역 엔드포인트의 세션 토큰 리전 호환성 변경 (AWS API)
세션 토큰 버전을 설정해요. 버전 1 토큰은 기본적으로 사용 가능한 AWS 리전에서만 유효해요. 이 토큰은 아시아 태평양(홍콩)처럼 수동으로 활성화한 리전에서는 동작하지 않아요. 버전 2 토큰은 모든 리전에서 유효해요. 다만 버전 2 토큰은 더 많은 문자를 포함하며 토큰을 임시로 저장하는 시스템에 영향을 줄 수 있어요.
SetSecurityTokenServicePreferences
더 알아보기 (Learn more)
- 임시 보안 자격 증명 요청 — 자격 증명 요청 방법을 확인해 보세요.
- 임시 보안 자격 증명으로 AWS 리소스 사용 — 임시 자격 증명을 실제로 쓰는 방법을 살펴보세요.
- AWS STS 리전과 엔드포인트 — 리전 엔드포인트 목록을 참고하세요.