페더레이션 사용자로 IAM 정책 변수를 사용하려면 어떻게 해야 하나요?

1분 분량
0

GetFederationToken API를 사용하여 임시 자격 증명을 생성하려고 하는데 ${aws:userName} 정책 변수가 작동하지 않습니다.

해결 방법

보안 주체 요소가 페더레이션 사용자인 경우 ${aws:userName} AWS Identity and Access Management (IAM) 정책 변수가 요청에 포함되지 않습니다. 대신 GetFederationToken API 호출에 ${aws:userID} 정책 변수를 사용하세요. 자세한 내용은 정책 변수를 사용할 수 있는 위치를 참고하세요.

다음 JSON 정책 예시에서는 ${aws:userName} 정책 변수를 ${aws:userID} 정책 변수로 변경했습니다.

{   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"AllowListingOfUserFolder",
         "Action":[
            "s3:ListBucket"
         ],

         "Effect":"Allow",

         "Resource":[
            "arn:aws:s3:::TESTBUCKET"
         ],
         "Condition":{
            "StringLike":{
               "s3:prefix":[
                  "TESTBUCKET/${aws:userid}/*"
               ]
            }
         }
      },
      {
         "Sid":"AllowAllS3ActionsInUserFolder",
         "Action":[
            "s3:PutObject",
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:DeleteObject"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::TESTBUCKET/${aws:userid}/*"
         ]
      }
   ]
}

aws:userid 변수 값은 ACCOUNTNUMBER:caller-specified-name이어야 합니다.

GetFederationToken API 호출의 이름 파라미터 값은 GetFederationToken의 지침에 따라야 합니다. 예를 들어, Bob과 같이 친숙한 이름을 지정한다고 했을 때 올바른 형식은 123456789102:Bob입니다. 이 형식을 사용하면 세션 이름을 지정하고 접두사가 일치하는 Amazon Simple Storage Service(S3) 버킷에 액세스할 수 있습니다.

참고: 위 예제에서는 aws:userid 변수의 호출 지정 친숙 이름고유 식별자라고 가정합니다. 이렇게 고유하면서도 친숙한 이름을 사용하면 같은 이름을 가진 다른 사용자가 JSON 정책에 지정된 리소스에 액세스해도 허용하지 않습니다.

관련 정보

GetFederationToken 권한

IAM 정책 요소: 변수 및 태그

IAM 식별자

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음