Direkt zum Inhalt

sts:AssumeRole 권한이 없는 IAM 사용자의 역할 전환 성공에 대한 설명 요청

1

안녕하세요, AWS Support팀.
다음과 같은 상황에 대해 문의드립니다.

■ 배경 지식
https://aws.amazon.com/ko/blogs/korea/how-to-use-trust-policies-with-iam-roles-html/
위 블로그 글에서 'Principal 속성을 사용하여 범위 축소' 섹션에 다음과 같은 문구가 있습니다.

신뢰 정책에서 Principal 속성은 IAM 역할을 맡을 수 있는 다른 보안 주체를 나타냅니다. 위의 예에서 111122223333은 감사자의 AWS 계정에 대한 AWS 계정 번호를 나타냅니다. 실제로 이렇게 하면 sts:AssumeRole 권한이 있는 111122223333 AWS 계정의 모든 보안 주체가 이 역할을 맡을 수 있습니다.

특정 IAM 사용자 계정에 대한 액세스를 제한하려면 111122223333 계정의 IAM 사용자 LiJuan만 이 역할을 맡을 수 있도록 다음 예와 같이 신뢰 정책을 정의하면 됩니다. LiJuan이 작동하려면 IAM 사용자에게 sts:AssumeRole 권한도 연결되어 있어야 합니다.

■ 상황 설명
IAM 사용자 test.user1은 본인의 권한 정책에 sts:AssumeRole 권한이 명시되어 있지 않습니다.

그러나 다음과 같은 신뢰 정책을 가진 IAM Role에 대해, 콘솔에서 성공적으로 역할을 전환할 수 있었고 혹은 CLI에서 aws sts assume-role 명령을 통해 임시 Credentials을 받을 수 있었습니다.

{  
    "Version": "2012-10-17",  
    "Statement": [  
        {  
            "Effect": "Allow",  
            "Principal": {  
                "AWS": "arn:aws:iam::111122223333:user/test.user1"  
            },  
            "Action": "sts:AssumeRole",  
            "Condition": {}  
        }  
    ]  
}  

저는 이때 test.user1(동일 계정 내의 IAM 사용자)의 권한 정책에 sts:AssumeRole 권한이 없기 때문에, 역할 전환 혹은 STS AssumeRole 호출이 실패할 것으로 예상했습니다. 하지만 예상과 다르게 역할이 잘 전환되거나, STS에서 임시 자격 증명(Credentials)을 정상적으로 발급받았습니다.

■ 문의사항

  1. test.user1이 sts:AssumeRole 권한을 보유하지 않고 있음에도, 위와 같은 신뢰 정책을 가진 역할을 성공적으로 전환할 수 있었던 이유는 무엇인가요?

AWS IAM의 권한 평가 로직에서, 해당 사례처럼 IAM 사용자(Principal) 가 신뢰 정책에 명시되어 있는 경우, 자신의 권한 정책에 sts:AssumeRole을 명시하지 않아도 되는 것인지 궁금합니다.

  1. 그렇다면 신뢰 정책 내의 Action은 어떤 의미를 갖는 것인지 궁금합니다.
2 Antworten
0

안녕하세요, 문의사항들에 대해 답변드립니다.

먼저 test.user1이 sts:AssumeRole 권한 없이도 역할 전환에 성공한 이유는 동일 계정 내에서 IAM 사용자가 신뢰 정책(Trust Policy)에 명시적으로 Principal로 지정된 경우, 해당 사용자의 권한 정책에 sts:AssumeRole 권한이 없어도 역할을 전환할 수 있기 때문입니다.

IAM 역할 전환(Assuming role) 시 권한 평가는 다음 두 가지를 모두 확인합니다.

  • 신뢰 정책(Trust Policy): 역할을 누가 맡을 수 있는지 정의
  • 권한 정책(Identity-based Policy): Principal이 sts:AssumeRole을 호출할 권한이 있는지 정의

이때 동일 계정인 경우와 교차 계정인 경우의 차이가 존재합니다.

동일 계정 내 (Same Account):

  • IAM 사용자가 신뢰 정책에 명시적으로 지정된 경우 (예: arn:aws:iam::111122223333:user/test.user1)
  • 해당 사용자는 자신의 권한 정책에 sts:AssumeRole 권한이 없어도 역할 전환 가능

교차 계정 (Cross-Account):

  • 다른 계정의 Principal이 역할을 맡으려면 양쪽 모두 허용해야 함
  • 신뢰 정책 + Principal의 권한 정책에 sts:AssumeRole 권한 필요

이를 IAM Policy Evaluation Logic 관점에서 보면 AWS IAM Policy Evaluation Logic에 따르면 역할 전환 시 Resource-based Policy(신뢰 정책), Identity-based Policy(권한 정책) 두 가지 정책 경로가 평가됩니다.

일반적으로는 두 경로 모두 'Allow'를 반환해야 최종적으로 허용되지만 동일 계정 내에서 신뢰 정책이 IAM 사용자를 명시적으로 지정한 경우, AWS는 Identity-based policy의 sts:AssumeRole 권한 확인을 생략합니다.

따라서 "동일 계정 내에서 IAM 사용자가 신뢰 정책에 명시적으로 Principal로 지정된 경우, 해당 사용자의 권한 정책에 sts:AssumeRole 권한이 없어도 역할 전환(Assuming role)이 가능합니다."

(주의 사항: 이때 예외 케이스로는 신뢰 정책에서 Principal을 계정 루트 (예: arn:aws:iam:111122223333:root)로 지정한 경우는 다릅니다. 이는 해당 계정의 모든 Principal에게 잠재적 권한만 부여하므로, 각 IAM 사용자는 자신의 Identity-based Policy에 sts:AssumeRole 권한이 반드시 필요합니다.)

다음으로 신뢰 정책에서 "Action"의 의미는 역할 측에서 "이 작업을 허용한다"는 의미입니다. 위의 예시에서 "Action": "sts:AssumeRole"은 해당 역할에 대해 허용되는 STS 작업을 정의하는 것입니다.

즉, Principal이 이 역할을 맡기 위해 호출할 수 있는 API 작업을 명시하고 있습니다.

추가적인 문의사항이 있으시다면 질문 남겨주시면 더 자세히 도와드리겠습니다.

감사합니다.

Sources

docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html - IAM 정책 평가 로직 전체 설명

docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html - 동일/교차 계정 역할 전환 시나리오

aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/ - 신뢰 정책 사용 가이드

docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_permissions-to-switch.html - 역할 전환 권한 부여 방법

beantwortet vor 10 Monaten

-1

IAM 사용자가 역할을 수임(assume)할 수 있는지 여부는 두 가지 권한 검사를 통해 결정됩니다:

  1. 역할의 신뢰 정책(Trust Policy): 이 정책은 "누가 이 역할을 수임할 수 있는지"를 정의합니다.
  2. 사용자의 권한 정책(Permission Policy): 이 정책은 "사용자가 어떤 작업을 수행할 수 있는지"를 정의합니다.

귀하의 사례에서, test.user1 사용자는 자신의 권한 정책에 sts:AssumeRole 권한이 명시되어 있지 않음에도 역할을 성공적으로 수임할 수 있었습니다. 이는 역할의 신뢰 정책에서 해당 사용자를 명시적으로 Principal로 지정했기 때문입니다.

신뢰 정책에서 특정 IAM 사용자(ARN)를 Principal로 직접 지정하면, 해당 사용자는 자신의 권한 정책에 sts:AssumeRole 권한이 없어도 해당 역할을 수임할 수 있습니다. 이는 AWS IAM의 권한 평가 로직에서 특별한 경우로 취급됩니다.

신뢰 정책 내의 "Action": "sts:AssumeRole"은 해당 Principal이 수행할 수 있는 작업을 지정합니다. 이 경우, test.user1 사용자는 이 역할에 대해 sts:AssumeRole 작업만 수행할 수 있습니다. 다른 작업(예: sts:AssumeRoleWithWebIdentity)은 허용되지 않습니다.

일반적으로 보안 모범 사례로는, 사용자의 권한 정책에도 sts:AssumeRole 권한을 명시적으로 부여하고, 필요한 경우 특정 역할 ARN으로 제한하는 것이 좋습니다. 이렇게 하면 최소 권한 원칙을 더 잘 준수할 수 있습니다.
Sources
Access for an IAM user in another AWS account that you own - AWS Identity and Access Management

beantwortet vor einem Jahr

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.