IAM의 임시 보안 자격 증명

IAM의 임시 보안 자격 증명 (Temporary security credentials in IAM)

AWS Security Token Service(AWS STS)를 사용하면 신뢰할 수 있는 사용자에게, AWS 리소스에 대한 접근을 제어하는 **임시 보안 자격 증명(temporary security credentials)**을 만들고 제공할 수 있어요. 임시 보안 자격 증명은 장기 접근 키 자격 증명과 거의 동일하게 동작하지만, 다음 차이점이 있어요.

출처: 문서

본문

  • 임시 보안 자격 증명은 단기예요. 이름에서 알 수 있듯이 몇 분에서 몇 시간까지 지속되도록 구성할 수 있어요. 자격 증명이 만료되면 AWS는 더 이상 그 자격 증명을 인식하지 않고, 그걸로 보낸 API 요청에서 어떤 종류의 접근도 허용하지 않아요.
  • 임시 보안 자격 증명은 사용자와 함께 저장되지 않아요. 요청할 때 동적으로 생성되어 사용자에게 전달돼요. 임시 보안 자격 증명이 만료될 때(또는 그 전에) 사용자는, 요청하는 사용자에게 여전히 권한이 있다면 새 자격 증명을 요청할 수 있어요.

그 결과 임시 자격 증명은 장기 자격 증명보다 다음 장점이 있어요.

  • 애플리케이션에 장기 AWS 보안 자격 증명을 배포하거나 내장할 필요가 없어요.
  • 사용자에게 AWS 아이덴티티를 정의하지 않고도 AWS 리소스 접근을 제공할 수 있어요. 임시 자격 증명은 역할과 아이덴티티 페더레이션의 기초예요.
  • 임시 보안 자격 증명은 수명이 제한되어 있어서, 더 이상 필요 없을 때 갱신하거나 명시적으로 철회할 필요가 없어요. 만료 후에는 재사용할 수 없어요. 자격 증명이 유효한 시간을 최대 한도까지 지정할 수 있어요.

AWS STS와 AWS 리전

임시 보안 자격 증명은 AWS STS가 생성해요. 기본적으로 AWS STS는 전역 서비스이며 단일 엔드포인트 https://sts.amazonaws.com을 갖고 있어요. 하지만 AWS STS API 호출을 다른 지원 리전의 엔드포인트로 보내도록 선택할 수도 있어요. 그러면 지리적으로 가까운 리전의 서버로 요청을 보내 **지연 시간(서버 레그)**을 줄일 수 있어요. 자격 증명이 어느 리전에서 왔든 전역에서 동작해요. 자세한 내용은 AWS 리전에서 AWS STS 관리(Manage AWS STS in an AWS Region)를 참고하세요.

임시 자격 증명의 일반적인 시나리오

임시 자격 증명은 아이덴티티 페더레이션, 위임(delegation), 교차 계정 접근, IAM 역할을 포함하는 시나리오에서 유용해요.

아이덴티티 페더레이션

사용자 아이덴티티를 AWS 밖의 외부 시스템에서 관리하고, 그 시스템에서 로그인하는 사용자에게 AWS 작업과 AWS 리소스 접근 권한을 부여할 수 있어요. IAM은 두 가지 유형의 아이덴티티 페더레이션을 지원해요. 두 경우 모두 아이덴티티는 AWS 밖에 저장돼요. 차이는 외부 시스템이 어디에 있는지예요 — 우리 데이터 센터에 있거나, 웹상의 외부 제3자에 있거나. 아이덴티티 페더레이션용 임시 보안 자격 증명의 기능을 비교하려면 AWS STS 자격 증명 비교를 참고하세요.

외부 아이덴티티 프로바이더에 대한 자세한 내용은 아이덴티티 프로바이더와 AWS 페더레이션을 참고하세요.

  • OpenID Connect(OIDC) 페더레이션 — Login with Amazon, Facebook, Google, 또는 OIDC 호환 프로바이더 같은 잘 알려진 제3자 아이덴티티 프로바이더로 사용자가 로그인하게 할 수 있어요. 모바일·웹 애플리케이션에 커스텀 로그인 코드를 만들거나 자체 사용자 아이덴티티를 관리할 필요가 없어요. OIDC 페더레이션을 쓰면 IAM 사용자 접근 키 같은 장기 보안 자격 증명을 애플리케이션에 배포하지 않아도 되므로 AWS 계정을 안전하게 유지하는 데 도움이 돼요. 자세한 내용은 OIDC 페더레이션을 참고하세요.

AWS STS OIDC 페더레이션은 Login with Amazon, Facebook, Google, 그리고 OpenID Connect(OIDC) 호환 아이덴티티 프로바이더를 지원해요.

참고

모바일 애플리케이션에는 Amazon Cognito를 권장해요. 모바일 개발용 AWS SDK와 함께 이 서비스를 사용해 사용자별 고유 아이덴티티를 만들고, AWS 리소스에 안전하게 접근하도록 인증할 수 있어요. Amazon Cognito는 AWS STS와 같은 아이덴티티 프로바이더를 지원하고, 인증되지 않은(게스트) 접근도 지원하며, 사용자가 로그인할 때 사용자 데이터를 마이그레이션할 수 있게 해줘요. 또한 사용자가 기기 간에 이동할 때 데이터가 보존되도록 동기화하는 API 작업도 제공해요. 자세한 내용은 Amplify 문서의 Amplify로 인증을 참고하세요.

  • SAML 페더레이션 — 조직 네트워크에서 사용자를 인증한 뒤, 그 사용자에게 새 AWS 아이덴티티를 만들거나 다른 로그인 자격 증명으로 로그인하게 하지 않고 AWS 접근을 제공할 수 있어요. 이를 임시 접근의 싱글 사인온(single sign-on) 방식이라고 해요. AWS STS는 SAML(Security Assertion Markup Language) 2.0 같은 개방 표준을 지원하며, Microsoft AD FS로 Microsoft Active Directory를 활용할 수 있어요. SAML 2.0으로 사용자 아이덴티티를 페더레이션하는 자체 솔루션을 관리할 수도 있어요. 자세한 내용은 SAML 2.0 페더레이션을 참고하세요.
  • 커스텀 페더레이션 브로커 — 조직의 인증 시스템을 사용해 AWS 리소스 접근을 부여할 수 있어요. 예시 시나리오는 AWS 콘솔에 커스텀 아이덴티티 브로커 접근 활성화를 참고하세요.
  • SAML 2.0을 사용한 페더레이션 — 조직의 인증 시스템과 SAML을 사용해 AWS 리소스 접근을 부여할 수 있어요. 자세한 내용과 예시 시나리오는 SAML 2.0 페더레이션을 참고하세요.

교차 계정 접근용 역할

많은 조직이 하나 이상의 AWS 계정을 운영해요. 역할과 교차 계정 접근을 사용하면 한 계정에서 사용자 아이덴티티를 정의하고, 그 아이덴티티로 조직에 속한 다른 계정의 AWS 리소스에 접근할 수 있어요. 이를 임시 접근의 위임(delegation) 방식이라고 해요. 교차 계정 역할 만들기에 대한 자세한 내용은 IAM 사용자에게 권한을 주는 역할 만들기를 참고하세요. 신뢰 영역(신뢰하는 조직·계정) 밖의 계정에 있는 프린시펄이 우리 역할을 수임할 수 있는지 알아보려면 IAM Access Analyzer란 무엇인가요?를 참고하세요.

Amazon EC2용 역할

Amazon EC2 인스턴스에서 애플리케이션을 실행하고 그 애플리케이션이 AWS 리소스에 접근해야 한다면, 인스턴스를 시작할 때 인스턴스에 임시 보안 자격 증명을 제공할 수 있어요. 이 임시 보안 자격 증명은 인스턴스에서 실행되는 모든 애플리케이션에 제공되므로, 인스턴스에 장기 자격 증명을 저장할 필요가 없어요. 자세한 내용은 Amazon EC2 인스턴스에서 실행되는 애플리케이션에 권한을 부여하는 IAM 역할 사용을 참고하세요.

IAM Amazon EC2 역할 자격 증명에 대해 더 알아보려면 Amazon Elastic Compute Cloud 사용자 가이드의 Amazon EC2용 IAM 역할을 참고하세요.

기타 AWS 서비스

임시 보안 자격 증명으로 대부분의 AWS 서비스에 접근할 수 있어요. 임시 보안 자격 증명을 받아들이는 서비스 목록은 IAM과 함께 동작하는 AWS 서비스를 참고하세요.

임시 자격 증명을 사용하는 샘플 애플리케이션

AWS STS로 임시 보안 자격 증명을 관리하는 방법을 보려면, 완전한 예시 시나리오를 구현한 다음 샘플 애플리케이션을 내려받을 수 있어요.

  • Windows Active Directory, ADFS, SAML 2.0을 사용한 AWS 페더레이션 활성화 — Windows Active Directory(AD), Active Directory Federation Services(ADFS) 2.0, SAML(Security Assertion Markup Language) 2.0으로 엔터프라이즈 페더레이션을 사용해 접근을 위임하는 방법을 보여줘요.
  • AWS 콘솔에 커스텀 아이덴티티 브로커 접근 활성화 — 기존 Active Directory 사용자가 AWS Management Console에 로그인할 수 있도록 싱글 사인온(SSO)을 제공하는 커스텀 페더레이션 프록시를 만드는 방법을 보여줘요.
  • AWS Management Console에 싱글 사인온하기 위해 Shibboleth 사용 — Shibboleth와 SAML로 사용자에게 AWS Management Console에 싱글 사인온(SSO) 접근을 제공하는 방법을 보여줘요.

OIDC 페더레이션 샘플

다음 샘플 애플리케이션은 Login with Amazon, Amazon Cognito, Facebook, Google 같은 프로바이더와 OIDC 페더레이션을 사용하는 방법을 보여줘요. 이 프로바이더들의 인증을 임시 AWS 보안 자격 증명으로 교환해 AWS 서비스에 접근할 수 있어요.

  • Amazon Cognito 튜토리얼 — 모바일 개발용 AWS SDK와 함께 Amazon Cognito를 사용하길 권장해요. Amazon Cognito는 모바일 앱의 아이덴티티를 관리하는 가장 간단한 방법이며 동기화·교차 기기 아이덴티티 같은 추가 기능을 제공해요. 자세한 내용은 Amplify 문서의 Amplify로 인증을 참고하세요.

임시 보안 자격 증명의 추가 리소스

다음 시나리오와 애플리케이션이 임시 보안 자격 증명 사용을 안내해 줄 수 있어요.

  • AWS STS SourceIdentity를 아이덴티티 프로바이더와 통합하는 방법 — Okta, Ping, OneLogin을 IdP로 사용할 때 AWS STS SourceIdentity 속성을 설정하는 방법을 보여줘요.
  • OIDC 페더레이션 — OIDC 페더레이션과 AssumeRoleWithWebIdentity API를 사용할 때 IAM 역할을 구성하는 방법을 다뤄요.
  • MFA로 안전한 API 접근 — 계정의 민감한 API 작업을 보호하기 위해 역할로 다중 인증(MFA)을 요구하는 방법을 설명해요.

AWS의 정책과 권한에 대한 자세한 내용은 다음 주제를 참고하세요.

  • Access management for AWS resources(AWS 리소스 접근 관리)
  • Policy evaluation logic(정책 평가 로직)
  • Amazon Simple Storage Service 사용자 가이드의 Amazon S3 리소스 접근 권한 관리

신뢰 영역 밖 계정의 프린시펄이 역할을 수임할 수 있는지 알아보려면 IAM Access Analyzer란 무엇인가요?를 참고하세요.

더 알아보기 (Learn more)