AWS Identity and Access Management
사용 설명서

임시 보안 자격 증명을 사용해 AWS 리소스에 대한 액세스 요청하기

IAM 사용자 자격 증명과 같은 장기 보안 자격 증명을 사용하는 것과 똑같은 방식으로 임시 보안 자격 증명을 사용해 AWS SDK 또는 API 호출로 AWS 리소스를 프로그래밍 방식으로 요청할 수 있습니다. 그러나 몇 가지 차이점이 있습니다.

  • 임시 보안 자격 증명을 사용해 호출할 경우 그 호출에 반드시 세션 토큰이 포함되어야 하는데, 이 세션 토큰은 임시 자격 증명과 함께 반환됩니다. AWS는 세션 토큰을 사용해 임시 보안 자격 증명의 유효성을 검증합니다.

  • 임시 자격 증명은 지정된 간격 후에 만료됩니다. 자격 증명이 만료된 후에는 그 자격 증명을 사용한 어떤 요청도 실패할 것이므로 일련의 새로운 자격 증명을 얻어야 합니다.

AWS SDK, AWS Command Line Interface(AWS CLI) 또는 Windows PowerShell용 도구을 사용하고 있다면 임시 보안 자격 증명을 얻고 사용하는 방식은 컨텍스트에 따라 달라집니다. EC2 인스턴스 내부에서 코드, AWS CLI 또는 Windows PowerShell용 도구 명령을 실행 중이라면 Amazon EC2에 대한 역할을 이용할 수 있습니다. 그렇지 않은 경우 AWS STS API를 호출해 임시 자격 증명을 얻은 다음, 그 자격 증명을 사용해 AWS 서비스를 명시적으로 호출할 수 있습니다.

참고

AWS Security Token Service(AWS STS)를 사용하면 AWS 리소스에 대한 액세스를 제어할 수 있는 임시 보안 자격 증명을 생성하여 신뢰받는 사용자에게 제공할 수 있습니다. AWS STS에 대한 자세한 정보는 임시 보안 자격 증명 단원을 참조하십시오. AWS STS는 https://sts.amazonaws.com에 기본 엔드포인트가 있는 전역적 서비스입니다. 이 엔드포인트 및 다른 엔드포인트로부터 얻는 자격 증명이 전역적으로 유효하고 어떤 리전의 서비스 및 리소스에서 유효하다 해도, 이 엔드포인트는 미국 동부(오하이오) 리전에 있습니다. 지원되는 리전에서 엔드포인트에 대한 AWS STS API 호출을 할 수도 있습니다. 이렇게 지리적으로 더 가까운 리전에 있는 서버에서 요청함으로써 지연 시간을 단축할 수 있습니다. 자격 증명은 어떤 리전에서 오는지 상관없이 전역적으로 유효합니다. 자세한 내용은 AWS 리전에서 AWS STS 활성화 및 비활성화 단원을 참조하십시오.

Amazon EC2 인스턴스에서 임시 자격 증명 사용하기

EC2 인스턴스 내에서 AWS CLI 명령 또는 코드를 실행하고자 하는 경우 자격 증명을 얻는 바람직한 방법은 Amazon EC2에 대한 역할을 사용하는 것입니다. EC2 인스턴스 상에서 실행되는 애플리케이션에 부여하고 싶은 권한을 지정하는 IAM 역할을 생성합니다. 인스턴스를 시작할 때 그 역할을 인스턴스에 연결합니다.

인스턴스 상에서 실행되는 애플리케이션, AWS CLI 및 Windows PowerShell용 도구 명령은 인스턴스 메타데이터로부터 자동 임시 보안 자격 증명을 얻을 수 있습니다. 임시 보안 자격 증명을 명시적으로 얻지 않아도 됩니다. AWS SDK, AWS CLI 및 Windows PowerShell용 도구이 EC2 인스턴스 메타데이터 서비스로부터 자격 증명을 자동으로 얻어 그것을 사용하기 때문입니다. 임시 자격 증명은 그 인스턴스에 연결된 역할에 대해 정의한 권한이 있습니다.

자세한 내용 및 예시는 다음을 참조하십시오.

AWS SDK에서 임시 보안 자격 증명 사용하기

코드의 임시 보안 자격 증명을 사용하려면 AssumeRole과 같은 AWS STS API를 프로그래밍 방식으로 호출하고 그 결과 얻은 자격 증명 및 세션 토큰을 추출한 다음, 그 값을 AWS에 대한 후속 호출을 위한 자격 증명으로 사용하면 됩니다. 다음 예는 AWS SDK를 사용할 경우 임시 보안 자격 증명을 사용하는 방법에 대한 유사 코드를 보여줍니다.

assumeRoleResult = AssumeRole(role-arn); tempCredentials = new SessionAWSCredentials( assumeRoleResult.AccessKeyId, assumeRoleResult.SecretAccessKey, assumeRoleResult.SessionToken); s3Request = CreateAmazonS3Client(tempCredentials);

AssumeRole을 호출하여 임시 보안 자격 증명을 얻은 다음 그 자격 증명을 사용해 AWS SDK for Python (Boto)를 호출하는 방법을 보여주는 Python(Amazon S3 사용)으로 작성된 예를 보려면 IAM 역할(AWS API)로 전환하기을 참조하십시오.

AssumeRole, GetFederationToken 및 기타 API 작업을 호출하는 방법에 대한 자세한 내용은 AWS Security Token Service API Reference를 참조하십시오. 이러한 호출의 결과에서 임시 보안 자격 증명 및 세션 토큰을 얻는 방법에 대한 자세한 내용은 사용하고 있는 SDK의 설명서를 참조하십시오. SDK 및 도구 키트 섹션의 AWS 설명서 메인 페이지에서 모든 AWS SDK의 설명서를 검색할 수 있습니다.

이전 자격 증명이 만료되기 전에 반드시 새로운 일련의 자격 증명을 얻도록 해야 합니다. 일부 SDK에서는 자격 증명 갱신 프로세스를 관리해주는 공급자를 사용할 수 있습니다. 사용하고 있는 SDK의 설명서를 확인하십시오.

AWS CLI에서 임시 보안 자격 증명 사용하기

AWS CLI에서 임시 보안 자격 증명을 사용할 수 있습니다. 이 임시 보안 자격 증명은 정책을 테스트하는 데 유용합니다.

AWS CLI를 사용해 AssumeRole 또는 GetFederationToken과 같은 AWS STS API를 호출한 다음, 그 결과물로 얻은 출력을 캡처할 수 있습니다. 다음 예는 파일에 출력을 전송하는 AssumeRole에 대한 호출을 보여줍니다. 예시에서 profile 파라미터는 AWS CLI 구성 파일에 있는 프로필이라고 가정되고, 아울러 역할 수임 권한을 지닌 IAM 사용자의 자격 증명을 참조한다고 가정됩니다.

$ aws sts assume-role --role-arn arn:aws:iam::123456789012:role/role-name --role-session-name "RoleSession1" --profile IAM-user-name > assume-role-output.txt

명령이 끝나면 액세스 키 ID, 보안 액세스 키 및 세션 토큰을 해당 명령을 라우팅한 곳이 어디든지 간에 그 곳에서 수동으로 또는 스크립트를 사용해 추출할 수 있습니다. 그런 다음 이 값을 환경 변수에 할당할 수 있습니다.

AWS CLI 명령을 실행한다면 AWS CLI가 환경 변수를 먼저 검색하고 다음 순서로 자격 증명을 검색하는 특정 순서로 구성 파일을 검색합니다. 따라서 임시 자격 증명을 환경 변수에 넣은 후에 AWS CLI는 그 자격 증명을 기본 값으로 사용합니다. (명령에 profile 파라미터를 지정한다면 AWS CLI는 환경 변수를 건너 뛰어 구성 파일에서 검색합니다. 이로써 필요한 경우 환경 변수에서 자격 증명을 무시할 수 있게 됩니다.)

다음 예는 임시 보안 자격 증명에 대한 환경 변수를 설정한 다음, AWS CLI 명령을 호출하는 방법을 보여줍니다. profile 파라미터는 AWS CLI 명령에 포함되어 있지 않기 때문에 AWS CLI는 먼저 환경 변수에서 자격 증명을 검색하고, 따라서 임시 자격 증명을 사용합니다.

Linux

$ export AWS_ACCESS_KEY_ID=AKIAI44QH8DHBEXAMPLE $ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY $ export AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of security token> $ aws ec2 describe-instances --region us-west-1

Windows

C:\> SET AWS_ACCESS_KEY_ID=AKIAI44QH8DHBEXAMPLE C:\> SET AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY C:\> SET AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of token> C:\> aws ec2 describe-instances --region us-west-1

API 작업을 통해 임시 보안 자격 증명 사용

AWS로 직접 HTTPS API 요청을 하는 경우, AWS Security Token Service(AWS STS)에서 가져오는 임시 보안 자격 증명으로 그러한 요청에 서명할 수 있습니다. 이를 위해서는 장기 자격 증명을 사용하는 것과 동일한 방식으로 AWS STS로부터 받는 액세스 키 ID 및 보안 액세스 키를 사용하여 요청에 서명합니다. 또한 AWS STS로부터 받는 세션 토큰을 API 요청에 추가합니다. 그 세션 토큰을 HTTP 헤더 또는 X-Amz-Security-Token이라는 쿼리 문자열 파라미터에 추가합니다. 그 세션 토큰을 HTTP 헤더 또는 쿼리 문자열 파라미터에 추가하되, 하나에만 추가해야 합니다. HTTPS API 요청에 서명하는 방법에 대한 자세한 내용은 AWS General ReferenceAWS API 요청 서명을 참조하십시오.

추가 정보

다른 AWS 서비스와 함께 AWS STS를 사용하는 방법에 대한 자세한 내용은 다음 링크를 참조하십시오.