IAM 신뢰 정책 오류 "Failed to update trust policy. Invalid principal in policy"를 해결하려면 어떻게 해야 하나요?

4분 분량
0

AWS Management Console을 사용하여 제 AWS IAM(신원 및 액세스 관리) 역할에 대한 신뢰 정책을 편집하려고 할 때 "Failed to update trust policy. Invalid principal in policy."라는 오류가 발생합니다.

간략한 설명

이 오류 메시지는 IAM 신뢰 정책의 주요 요소 값이 유효하지 않음을 나타냅니다. 이 오류를 해결하려면 다음을 확인하세요.

  • IAM 역할 신뢰 정책이 주요 요소에 올바른 형식의 지원되는 값을 사용합니다.
  • IAM 역할 신뢰 정책에서 IAM ID(사용자, 사용자 그룹 및 역할)를 주체로 사용하는 경우 사용자 또는 역할이 삭제되지 않았는지 확인합니다.

참고: 표준 AWS 계정에서 AWS GovCloud(미국) 계정 번호를 추가하려고 하는 경우에도 이 오류가 발생할 수 있습니다. AWS GovCloud(미국) 계정과 표준 AWS 계정 간에 액세스를 위임하는 역할을 만들 수 없습니다. 자세한 내용은 AWS GovCloud(미국)의 IAM 차이점을 참고하세요.

해결 방법

주요 요소에 대해 지원되는 값을 확인합니다.

역할의 IAM 신뢰 정책의 주요 요소에는 다음과 같은 지원되는 값이 포함되어야 합니다.

  1. IAM 정책에 다음과 유사한 올바른 12자리 AWS 계정 ID가 포함되어 있는지 확인합니다.
"Principal": {
"AWS": "123456789012"
}

참고: AWS 계정은 루트 사용자 Amazon 리소스 이름(ARN))을 사용하여 지정할 수도 있습니다. 예: arn:aws:iam::123456789012:root.

  1. IAM 신뢰 정책 주체가 IAM 사용자, 역할 또는 페더레이션 사용자인 경우, 전체 ARN을 다음과 유사하게 지정해야 합니다:
"Principal": {
  "AWS": [
    "arn:aws:iam::123456789012:user/user-name",
    "arn:aws:iam::123456789012:role/role-name",
    "arn:aws:sts::123456789012:assumed-role/role-name/role-session-name",
    "arn:aws:sts::123456789012:federated-user/user-name"
  ]
}
  1. IAM 신뢰 정책에 와일드카드가 포함된 경우 다음 지침을 따르세요.

참고: 와일드카드 "*"을 사용하여 주체 이름 또는 ARN의 일부와 일치시킬 수 없습니다.

다음 예제에는 IAM 신뢰 정책에서 와일드카드가 잘못 사용되었습니다.

"Principal": {
  "AWS": "arn:aws:iam::123456789012:user/user-*"
}

와일드카드를 사용하여 주체 이름의 일부를 일치시키려면 Condition 요소와 전역 조건 키 aws:PrincipalArn을 사용합니다. 그런 다음 와일드카드로 ARN을 지정합니다.

모든 AWS 계정의 ID를 지정하려면 다음과 유사한 와일드카드를 사용합니다.

"Principal": {
  "AWS": "*"
}

중요: 신뢰 정책에서 허용 효과가 있는 주요 요소에 와일드카드를 사용할 수 있습니다. 그러나 이렇게 하면 동일한 파티션에 있는 AWS 계정의 모든 IAM 사용자, 가정된 역할 세션 또는 페더레이션 사용자가 내 역할에 액세스할 수 있습니다. AWS 계정 내의 IAM 사용자 및 역할 주체는 다른 권한이 필요하지 않습니다. 다른 AWS 계정의 주체는 ID 기반 권한이 있어야 IAM 역할을 맡을 수 있습니다.

이 방법을 사용하면 웹 ID 세션 주체, SAML 세션 주체 또는 서비스 주체가 리소스에 액세스하는 것을 허용하지 않습니다.

이 방법은 조건 요소와 aws:PrincipalArn과 같은 조건 키만 사용하여 사용 권한을 제한하는 것이 가장 좋습니다. 예를 들어 파일은 다음과 비슷하게 보일 수 있습니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringLike": {
          "aws:PrincipalArn": "arn:aws:iam::123456789012:user/user-*"
        }
      }
    }
  ]
}

이 예제 신뢰 정책은 aws:PrincipalArn 조건 키를 사용하여 사용자 이름이 일치하는 사용자만 IAM 역할을 맡을 수 있도록 허용합니다.

  1. IAM 역할이 AWS 서비스 역할인 경우, 전체 서비스 주체는 다음과 유사하게 지정해야 합니다:
"Principal": {
  "Service": "ec2.amazonaws.com"
}
  1. 외부 SAML ID 공급자와 함께 SAML 세션 주체를 사용하여 IAM 사용자를 인증할 수 있습니다. IAM 역할의 신뢰 정책에는 다음과 유사한 주요 요소가 있어야 합니다:
"Principal": {
  "Federated": "arn:aws:iam::123456789012:saml-provider/provider-name"
}
  1. 웹 ID 세션 주체를 사용하여 IAM 사용자를 인증할 수 있습니다. 액세스를 제공하는 IAM 역할의 신뢰 정책에는 다음과 유사한 주요 요소가 있어야 합니다.
"Principal": {
  "Federated": "cognito-identity.amazonaws.com"
}
  1. 단일 문 내에서 서로 다른 계정 유형을 사용하는 경우 다음과 유사하게 IAM 신뢰 정책의 형식을 지정합니다:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/user-name",
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

IAM 사용자 또는 역할은 기존 ID여야 합니다.

IAM 역할 신뢰 정책에서 IAM 사용자 또는 역할을 주체로 사용하는 경우 해당 IAM ID가 삭제되지 않았는지 확인합니다. IAM 신뢰 정책을 수정했는데 주체가 삭제된 경우 '정책의 주체가 잘못됨' 오류가 발생합니다.

참고: 주체가 삭제된 경우 IAM 신뢰 정책에서 ARN이 아닌 주체의 고유 ID에 유의하세요.

관련 정보

IAM을 사용하여 리소스에 대한 사용자 액세스를 허용하려면 어떻게 해야 하나요?

AWS IAM을 사용하여 다른 AWS 계정의 리소스에 액세스하려면 어떻게 해야 하나요?

IAM 리소스 기반 정책에 알 수 없는 주요 형식이 있는 이유는 무엇인가요?

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