Skip to content

Commit

Permalink
STS & Cross Account Access
Browse files Browse the repository at this point in the history
  • Loading branch information
nowon9159 committed Mar 19, 2024
1 parent ce779c5 commit ac86992
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions SOA/SOA.md
Original file line number Diff line number Diff line change
Expand Up @@ -7613,3 +7613,36 @@ Cognito는 Public 응용 프로그램이 AWS 리소스에 액세스하는 방법

우리는 제3자로부터 얻은 토큰을 AWS의 서비스로 교환하여 임시 AWS 자격 증명을 얻는다.





## **STS & Cross Account Access**

STS에 대해 이야기 해보자
STS는 AWS 의 중심에 있는 보안 서비스이다.

그래서 이것을 보안 서비스라고 한다. 이 서비스는 AWS 리소스에 대한 제한적이고 일시적인 액세스를 부여할 수 있게 해준다.

따라서 토큰을 부여하고 1시간 이상 유효하며, 무효화될 때 Refresh 된다.

토근을 얻고 싶다면 먼저 STS 서비스에 API 호출을 발행해야 한다. 예를 들어 Role을 Assume할 때는 STS AssumeRole API 호출이 일어난다.

호출 시 계정 내에서 Role을 가정해 보안을 강화해 일정 시간이 지난 후에 무효화될 자격 증명을 가진다.

또는 대상 계정에서 Role을 가정해 거기서 작업을 수행할 수 ㅣㅇㅆ다. AssumeRole은 자격 증명을 제공하고 나중에 만료된다.

또한 AssumeRoleWithSAML을 할 수 있다.
- 그러면 사용자가 SAML로 로그인되어 있고, 그 SAML 토큰을 확장하여 STS에서 자격 증명을 받을 수 있다. 먼저 SAML 토큰을 교환하고 검증할 수 있어야하긴 한다.

또한 AssumeRoleWithWebIdnetity도 할 수 있다. 이 방법은 사용자가 Facebook 로그인, Google 로그인 또는 OIDC 호환 기타 로그인과 같은 IDP로 식별되었을 때 이 자격 증명을 다시 STS 자격 증명으로 교환한다.
이 API 호출은 때때로 사용되지 않으며 AWS는 대신 Cognito를 사용하도록 권장한다.

GetSessionToken 도 있다. 이것은 사용자 또는 계정 루트 사용자로부터 MFA를 수행하고 MFA로 로그인한 후에 실제 자격 증명을 얻고자 할 때 사용된다.
역할을 가정하기 위해 STS 를 사용할 때는 먼저 계정 내 또는 계정 간에 IAM 역할을 정의한 다음 어떤 principal이 이 IAM 역할에 액세스할 수 있는지 정의해야 한다.
그 다음 STS 서비스를 사용해 자격 증명을 검색한 다음 예를들자면 AssumeRole API를 사용해 액세스할 수 있는 IAM 역할을 가장한다.

그래서 사용자가 동일한 또는 다른 계정의 역할에 액세스하려면 AssumeRole API를 STS에 대해 수행한다.
물론 API 호출을 수행할 권한이 있어야 하며, STS는 권한을 확인하고 일시적인 자격 증명을 제공하고 이 자격 증명을 사용해 역할을 가정하게 된다.


0 comments on commit ac86992

Please sign in to comment.