BLOG

IAM role을 사용하여 최대 12시간 동안 AWS 리소스에 대한 연합 API 액세스를 활성화하기
작성일: 2018-04-12

이제 애플리케이션과 연합 유저는 IAM role에 대해 세션 시간을 최대 12시간으로 늘림으로써 더 오래, 단일 세션에서 실행되는 작업을 완료 할 수 있습니다. 사용자와 응용 프로그램은 AWS SecurityToken Service(AWS STS)를 사용하여 역할을 가정하에 임시 자격 증명을 검색하지만, AWS SDK 또는 CLI를 사용하면 이러한 자격 증명을 최대 12시간 동안 유효하게 할 수 있습니다. 이렇게 변경하면 사용자 및 애플리케이션이 단일 세션을 사용하여 ‘S3 또는 CloudFormation 템플릿에 일괄 업로드’와 같이 오래 실행되는 작업을 수행 할 수 있습니다. IAM console 또는 CLI를 사용하여 최대 세션 기간을 연장 할 수 있습니다. 최대 세션 기간을 늘리면, IAM role을 가정하는 사용자 및 응용 프로그램이, IAM role 세션이 만료 될 때 함께 만료되는 임시 자격 증명을 요청할 수 있습니다.

 

이번 포스팅에서는 IAM console을 사용하여 기존 IAM role의 최대 세션 지속 시간을 4시간 (최대 허용 지속 시간은 12시간)으로 구성하는 방법을 설명합니다. AWS는 연합 유저가 AWS 리소스에 액세스하는 데 필요한 최단 지속 시간으로 role의 세션 시간을 구성 할 것을 권장하므로, 4시간을 사용할 것 입니다. 그런 다음, 기존 연합 유저가 AWS SDK 또는 CLI를 사용하여 role 세션이 만료 될 때까지 유효한 임시 보안 자격 증명을 요청하는 방법을 보여드리겠습니다.

 

선제 요건

이 게시물에서는 연합 예제를 사용 할 것입니다. 기존 ID 공급자가 있는 경우 SAML (Security Assertion Markup Language)을 사용하여 연합을 활성화하면 사용자가 AWS 리소스에 액세스 할 수 있습니다. 이 게시물에서는 연합 된 사용자의 사용 권한을 정의하는 서드파티 ID 공급자에 대한 IAM role을 만들었다고 가정 됩니다. AWS에 대한 API 액세스를 위해 SAML 기반 연합을 구성 할 수도 있습니다. 필자는 IDP (Identity Provider)로 Microsoft Active Directory Federation Service (ADFS)를 사용하여 SAML 기반 연합을 구성할 것 입니다.

 

기존 IAM role 최대 세션 시간을 4시간으로 구성

연합 유저가 AWS 계정의 S3 버킷에 개체를 업로드 할 수 있게 해주는 ADFS-Production이라는 기존 IAM role이 있다고 가정합니다. 이 role의 최대 세션 시간을 4시간으로 연장하고자 합니다. 기본 세팅으로 AWS 계정의 IAM role은 최대 세션 시간이 1시간입니다. Role의 최대 세션 시간을 4시간으로 연장하려면 다음 단계를 따릅니다.

 

  1. IAM console에 로그인합니다.
  2. 왼쪽 탐색 창에서 Roles를 선택한 다음 최대 세션 기간을 늘릴 role을 선택 합니다. 이 예시에서는, ADFS-Production을 선택하고 이 role의 최대 세션 기간을 확인합니다. 이 값은 기본적으로 1 시간(3,600 초)으로 설정 되있습니다.
  3. Edit을 선택한 다음, 최대 세션 지속 시간을 정의합니다.

 

  1. 미리 정의 된 지속 시간 중 하나를 선택하거나 사용자 정의 지속 시간을 제공 합니다. 이 예시에서는 최대 세션 시간을 4시간으로 설정 할 것 입니다.
  2. Save changes로 설정을 저장 합니다.

 

대체 방법으로, 최신 AWS CLI를 사용해 Update-Role 을 호출하여 ADFS-Production role의 최대 세션 기간을 설정할 수 있습니다. 다음은 최대 세션 시간을 14,400초(4시간)으로 설정하는 예시입니다.

 

$ aws iam update-role -–role-name ADFS-Production -–MaxSessionDuration 14400

 

이제 IAM role, ADFS-Production 의 최대 세션시간을 성공적으로 연장 했으므로 연합 유저는 AWS STS를 사용하여 S3버킷에 액세스하는데 4시간 동안 유효한 임시 자격 증명을 선출 검색 할 수 있습니다.

 

AWS CLI / SDK 사용하여 임시 보안 자격 증명으로 AWS 리소스에 액세스

임시 보안 자격 증명을 사용하는 사용자에 대해 연합 SDK 및 CLI 액세스를 사용하기 위해 아마도 SAML 2.0 및 AD FS를 사용하여 연합 API 및 CLI 액세스 구현 방법 포스팅에 설명 된 솔루션을 구현했을 수 있습니다. 이전 포스팅은 AWS Python SDK 및 게시물에 제공된 추가 client-side 통합 코드를 사용하여 사용자를 위한 연합 SDK 및 CLI 액세스를 구현하는 방법을 보여줍니다.사용자가 더 긴 임시 보안 자격 증명을 요청할 수 있게 하려면, 그 포스팅에 제공된 솔루션을 가지고 현재 포스팅에서 제안된 다음의 변경을 할 수 있습니다.

 

AssumeRoleWithSAML API를 호출하여 AWS 임시 보안 자격 증명을 요청할 때는 DurationSeconds 매개 변수를 포함시켜야 합니다. 이 매개 변수의 값은 사용자가 요청하는 지속 시간과 임시 보안 자격 증명이 유효한 시간입니다. 이 예제에서는, boto를 사용하여 지난 포스팅에서 언급 드린 SAML 2.0 및 AD FS 게시를 사용하여 연합 API 및 CLI 액세스 구현 방법의 코드를 사용하여 14,400초(4시간)의 최대 길이를 요청합니다.

 

# Use the assertion to get an AWS STS token using Assume Role with SAML
conn = boto.sts.connect_to_region(region)
token = conn.assume_role_with_saml(role_arn, principal_arn, assertion, 14400)

 

AssumeRoleWithSAML 호출에서 DurationSeconds 매개 변수의 값을 추가하면 연합 된 유저가 최대 14,400초(4시간) 동안 유효한 임시 보안 자격 증명을 선출 검색 할 수 있습니다. 이 값을 제공하지 않으면 기본으로 제공되는 세션 지속 시간은 1시간입니다.

 

결론

Role에 대한 최대 세션 시간을 1시간(기본값)에서 최대 12시간까지 구성하는 방법을 설명했습니다. 그런 다음, 연합 유저가 AWS CLI / SDK를 사용하여 최대 12시간 동안 AWS 리소스에 액세스하는 동안 필요한 유효한 임시 보안 자격 증명을 선출 검색하는 방법을 보여 주었습니다.

 

이와 비슷하게, 어플리케이션과 Web Identity 또는 OpenID Connect Federation 또는 역할을 가정한 교차 계정 액세스를 사용하는 사용자의 최대 role 세션 기간을 늘릴 수도 있습니다.

 

원문 URL: https://aws.amazon.com/ko/blogs/security/enable-federated-api-access-to-your-aws-resources-for-up-to-12-hours-using-iam-roles/

** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.