AWS STS에서 AWS 리전 관리 - AWS Identity and Access Management

AWS STS에서 AWS 리전 관리

기본적으로 AWS Security Token Service(AWS STS)는 글로벌 서비스로 사용 가능하고 모든 AWS STS 요청은 https://sts.amazonaws.com의 단일 엔드포인트로 전송됩니다. AWS는 지연 시간을 줄이고, 중복으로 구축하고, 세션 토큰 유효성을 높이려면 전역 엔드포인트 대신 리전별 AWS STS 엔드포인트를 사용할 것을 권장합니다.

  • 지연 시간 감소 - 서비스 및 애플리케이션에서 지리적으로 더 가까운 엔드포인트에 AWS STS 호출을 함으로써 지연 시간 및 응답 시간을 단축하며 AWS STS 서비스에 액세스할 수 있습니다.

  • 중복 구축 - 워크로드 내에서 발생하는 장애의 영향을 예측 가능한 영향 억제 범위를 가진 한정된 수의 구성 요소로 제한할 수 있습니다. 리전별 AWS STS 엔드포인트를 사용하면 구성 요소의 범위를 세션 토큰의 범위에 맞출 수 있습니다. 이 신뢰성 요소에 대한 자세한 내용은 AWS Well-Architected Framework의 장애 격리를 사용하여 워크로드 보호를 참조하세요.

  • 세션 토큰 유효성 증가 - 리전별 AWS STS 엔드포인트의 세션 토큰은 모든 AWS 리전에서 유효합니다. 전역 STS 엔드포인트의 세션 토큰은 기본적으로 STS가 활성화된 AWS 리전에서만 유효합니다. 계정에 대해 새 리전을 활성화하려는 경우 리전별 AWS STS 엔드포인트의 세션 토큰을 사용할 수 있습니다. 전역 엔드포인트를 사용하는 경우 전역 엔드포인트에 대한 AWS STS 세션 토큰의 리전 호환성을 변경해야 합니다. 이를 통해 토큰이 모든 AWS 리전에서 유효합니다.

전역 엔드포인트 세션 토큰 관리

대부분의 AWS 리전은 기본적으로 모든 AWS 서비스의 작업이 활성화되어 있습니다. 이러한 리전은 AWS STS 사용이 자동으로 활성화됩니다. 아시아 태평양(홍콩)과 같은 일부 리전은 수동으로 활성화해야 합니다. AWS 리전 활성화 및 비활성화에 대한 자세한 내용은 AWS Account Management 참조 안내서의 계정에서 사용할 수 있는 AWS 리전 지정을 참조하세요. 이러한 AWS 리전을 활성화할 때 자동으로 AWS STS 사용이 활성화됩니다. 비활성화된 리전에 대한 AWS STS 엔드포인트를 활성화할 수는 없습니다. 모든 AWS 리전에서 유효한 세션 토큰에는 기본적으로 활성화된 리전에서 유효한 토큰보다 많은 문자가 포함되어 있습니다. 이 설정을 변경하면 토큰을 임시로 저장한 기존 시스템에 영향을 미칠 수 있습니다.

AWS Management Console, AWS CLI 또는 AWS API를 사용하여 이 설정을 변경할 수 있습니다.

전역 엔드포인트에 대한 세션 토큰의 리전 호환성 변경(콘솔)
  1. 루트 사용자 또는 IAM 관리 작업을 수행할 권한이 있는 사용자로 로그인합니다. 세션 토큰의 호환성을 변경하려면 iam:SetSecurityTokenServicePreferences 작업을 허용하는 정책이 있어야 합니다.

  2. IAM 콘솔(IAM console)을 엽니다. 탐색 창에서 계정 설정(Account settings)를 선택합니다.

  3. Security Token Service (STS)(Security Token Service (STS)) 섹션의 Session Tokens from the STS endpoints(STS 엔드포인트의 세션 토큰). Global endpoint(글로벌 엔드포인트)는 Valid only in AWS 리전 enabled by default를 나타냅니다. 변경을 선택합니다.

  4. Change region compatibility(리전 호환성 변경) 대화 상자에서 All AWS 리전를 선택합니다. 변경 사항 저장(Save changes)을 선택합니다.

    참고

    모든 AWS 리전에서 유효한 세션 토큰에는 기본적으로 활성화된 리전에서 유효한 토큰보다 많은 문자가 포함되어 있습니다. 이 설정을 변경하면 토큰을 임시로 저장한 기존 시스템에 영향을 미칠 수 있습니다.

전역 엔드포인트에 대한 세션 토큰의 리전 호환성 변경(AWS CLI)

세션 토큰 버전을 설정합니다. 버전 1 토큰은 기본적으로 이용 가능한 AWS 리전에서만 유효합니다. 이러한 토큰은 아시아 태평양(홍콩)과 같이 수동으로 활성화된 리전에서 작동하지 않습니다. 버전 2는 모든 리전에서 유효합니다. 하지만 버전 2 토큰에 포함된 문자가 더 많고 일시적으로 토큰을 저장하는 시스템에 영향을 미칠 수 있습니다.

전역 엔드포인트에 대한 세션 토큰의 리전 호환성 변경(AWS API)

세션 토큰 버전을 설정합니다. 버전 1 토큰은 기본적으로 이용 가능한 AWS 리전에서만 유효합니다. 이러한 토큰은 아시아 태평양(홍콩)과 같이 수동으로 활성화된 리전에서 작동하지 않습니다. 버전 2는 모든 리전에서 유효합니다. 하지만 버전 2 토큰에 포함된 문자가 더 많고 일시적으로 토큰을 저장하는 시스템에 영향을 미칠 수 있습니다.

AWS 리전에서 AWS STS 활성화 및 비활성화

리전에 대한 STS 엔드포인트를 활성화할 때 AWS STS에서 AWS STS 요청을 수행하는 계정의 사용자 및 역할에 임시 자격 증명을 발급할 수 있습니다. 이러한 자격 증명은 기본적으로 활성화되었거나 수동으로 활성화된 모든 리전에서 사용할 수 있습니다. 기본적으로 활성화된 리전의 경우, 임시 보안 인증 정보가 생성되는 계정에서 리전별 STS 엔드포인트를 활성화해야 합니다. 요청 시 사용자가 동일한 계정으로 로그인하거나 각기 다른 계정으로 로그인하는지 여부는 중요하지 않습니다. 수동으로 활성화된 리전의 경우, 요청을 수행하는 계정과 임시 보안 인증 정보가 생성되는 계정 모두에서 리전을 활성화해야 합니다.

예를 들어, 계정 A의 사용자가 AWS STS 리전 엔드포인트 https://sts.ap-east-1.amazonaws.com으로 sts:AssumeRole API 요청을 보내려 할 수 있습니다. 이는 계정 B의 Developer 역할에 대한 임시 자격 증명을 요청하기 위한 것입니다. 이 요청은 계정 B의 엔터티에 대한 자격 증명을 만들기 위한 것이기 때문에 계정 B는 ap-east-1 리전을 활성화해야 합니다. 계정 A(또는 다른 계정)의 사용자는 자신의 계정에서 리전이 활성화되었는지 여부와 상관없이 ap-east-1 AWS STS 엔드포인트를 호출하여 계정 B의 자격 증명을 요청할 수 있습니다.

참고

활성 리전은 해당 계정의 임시 자격 증명을 이용하는 모두가 이용할 수 있습니다. 어떤 IAM 사용자 또는 역할이 리전에 액세스할 수 있는지 여부를 제어하려면 권한 정책에서 aws:RequestedRegion 조건 키를 사용합니다.

기본적으로 활성화된 리전에서 AWS STS 활성화 또는 비활성화(콘솔)
  1. 루트 사용자 또는 IAM 관리 작업을 수행할 권한이 있는 사용자로 로그인합니다.

  2. IAM 콘솔을 열고 탐색 창에서 계정 설정(Account Settings)을 선택합니다.

  3. Security Token Service (STS)(Security Token Service(STS)) 섹션의 Endpoints(엔드포인트)에서 구성하려는 리전을 찾은 다음 STS status(STS 상태) 열에서 Active(활성) 또는 Inactive(비활성)를 선택합니다.

  4. 열리는 대화 상자에서 Activate(활성화) 또는 Deactivate(비활성화)를 선택합니다.

활성화해야 하는 리전의 경우 리전을 활성화하면 AWS STS가 자동으로 활성화됩니다. 리전을 활성화한 후에는 AWS STS가 해당 리전에 대해 항상 활성화되어 있으며 비활성화할 수 없습니다. 기본적으로 비활성화된 리전을 활성화하는 방법에 대해 알아보려면 AWS Account Management 참조 안내서의 계정에서 사용할 수 있는 AWS 리전 지정을 참조하세요.

AWS STS 리전 사용을 위한 코드 작성

리전을 활성화한 후에 AWS STS API 호출을 그 리전으로 보낼 수 있습니다. 다음 Java 코드 조각은 AWSSecurityTokenService 객체를 구성해 유럽(밀라노)(eu-south-1) 리전으로 요청하는 방법을 보여줍니다.

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 참조 안내서의 계정에서 사용할 수 있는 AWS 리전 지정을 참조하세요.

이 예에서 첫 번째 줄은 regionEndpointConfig라는 EndpointConfiguration 객체를 인스턴스화하여 엔드포인트의 URL과 AWS 리전을 파라미터로 전달합니다.

AWS SDK의 환경 변수를 사용해 AWS STS 리전 엔드포인트를 설정하는 방법은 AWS SDK 및 도구 참조 가이드AWS STS 리전화된 엔드포인트를 참조하세요.

다른 모든 언어 및 프로그래밍 환경의 조합에 대해서는 해당 SDK 문서를 참조하세요.

리전 및 엔드포인트

다음 표에서는 해당 리전과 그 엔드포인트를 나열합니다. 기본적으로 어떤 것들이 활성화되며, 어떤 것을 활성화 또는 비활성화할 수 있는지를 보여줍니다.

지역명 엔드포인트 기본 활성화 수동으로 활성화/비활성화
--전역-- sts.amazonaws.com 아니요
미국 동부(오하이오) sts.us-east-2.amazonaws.com
미국 동부(버지니아 북부) sts.us-east-1.amazonaws.com 아니요
미국 서부(캘리포니아 북부) sts.us-west-1.amazonaws.com
미국 서부(오레곤) sts.us-west-2.amazonaws.com
아프리카(케이프타운) sts.af-south-1.amazonaws.com 아니요¹ 아니요
아시아 태평양(홍콩) sts.ap-east-1.amazonaws.com 아니요¹ 아니요
아시아 태평양(하이데라바드) sts.ap-south-2.amazonaws.com 아니요¹ 아니요
아시아 태평양(자카르타) sts.ap-southeast-3.amazonaws.com 아니요¹ 아니요
아시아 태평양(멜버른) sts.ap-southeast-4.amazonaws.com 아니요¹ 아니요
아시아 태평양(뭄바이) sts.ap-south-1.amazonaws.com
아시아 태평양(오사카) sts.ap-northeast-3.amazonaws.com
아시아 태평양(서울) sts.ap-northeast-2.amazonaws.com
아시아 태평양(싱가포르) sts.ap-southeast-1.amazonaws.com
아시아 태평양(시드니) sts.ap-southeast-2.amazonaws.com
아시아 태평양(도쿄) sts.ap-northeast-1.amazonaws.com
캐나다(중부) sts.ca-central-1.amazonaws.com
캐나다 서부(캘거리) sts.ca-west-1.amazonaws.com
중국(베이징) sts.cn-north-1.amazonaws.com.cn 예² 아니요
중국(닝샤) sts.cn-northwest-1.amazonaws.com.cn 예²
유럽(프랑크푸르트) sts.eu-central-1.amazonaws.com
유럽(아일랜드) sts.eu-west-1.amazonaws.com
유럽(런던) sts.eu-west-2.amazonaws.com
유럽(밀라노) sts.eu-south-1.amazonaws.com 아니요¹ 아니요
유럽(파리) sts.eu-west-3.amazonaws.com
유럽(스페인) sts.eu-south-2.amazonaws.com 아니요¹ 아니요
유럽(스톡홀름) sts.eu-north-1.amazonaws.com
유럽(취리히) sts.eu-central-2.amazonaws.com 아니요¹ 아니요
이스라엘(텔아비브) sts.il-central-1.amazonaws.com 아니요¹ 아니요
중동(바레인) sts.me-south-1.amazonaws.com 아니요¹ 아니요
중동(UAE) sts.me-central-1.amazonaws.com 아니요¹ 아니요
남아메리카(상파울루) sts.sa-east-1.amazonaws.com

¹리전을 사용하려면 리전을 활성화해야 합니다. 그러면 AWS STS가 자동으로 활성화됩니다. 이러한 리전에서는 수동으로 AWS STS를 활성화하거나 비활성화할 수 없습니다.

²중국에서 AWS를 사용하려면 중국 AWS와 관련된 계정 및 보안 인증이 있어야 합니다.

AWS CloudTrail 및 리전 엔드포인트

리전 및 글로벌 엔드포인트에 대한 호출은 AWS CloudTrail의 tlsDetails 필드에 로그인됩니다. us-east-2.amazonaws.com와(과) 같은 리전 및 엔드포인트에 대한 호출은 CloudTrail에서 해당 지역으로 기록됩니다. 전역적 엔드포인트 sts.amazonaws.com에 대한 호출은 글로벌 서비스에 대한 호출로 로깅됩니다. 글로벌 AWS STS 엔드포인트의 이벤트는 us-east-1에 기록됩니다.

참고

이 필드를 지원하는 서비스에 대해서만 tlsDetails을(를) 볼 수 있습니다. AWS CloudTrail 사용 설명서의 CloudTrail에서 TLS 세부 정보를 지원하는 서비스를 참조하십시오

자세한 내용은 AWS CloudTrail을 사용하여 IAM 및 AWS STS API 호출 로깅 단원을 참조하십시오.