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

4분 분량
0

AWS Identity and Access Management(IAM) ID 사용자 또는 역할에 대한 신뢰 정책을 편집하려고 했더니 다음 오류가 발생했습니다. "Failed to update trust policy. Invalid principal in policy."

간략한 설명

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

  • IAM 역할 신뢰 정책이 주요 요소에 올바른 형식의 지원되는 값을 사용합니다.
  • IAM 역할 신뢰 정책에서 IAM 사용자 또는 역할을 위탁자로 사용하는 경우 해당 사용자 또는 역할이 삭제되지 않았는지 확인합니다.

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

해결 방법

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

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

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

    "Principal":
    {"AWS": "123456789012"
    }

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

  2. 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"
      ]
    }
  3. 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 세션 주체 또는 서비스 주체가 리소스에 액세스하는 것을 허용하지 않습니다. 이 방법은 Condition 요소와 aws:PrincipalArn과 같은 조건 키만 사용하여 사용 권한을 제한하는 것이 가장 좋습니다. 다음 예제 신뢰 정책은 aws:PrincipalArn 조건 키를 사용하여 사용자 이름이 일치하는 사용자만 IAM 역할을 맡도록 허용합니다.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "*"
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringLike": {
              "aws:PrincipalArn": "arn:aws:iam::123456789012:user/user-*"
            }
          }
        }
      ]
    }
  4. IAM 역할이 AWS 서비스 역할인 경우, 전체 서비스 주체는 다음과 유사하게 지정해야 합니다:

    "Principal": {
      "Service": "ec2.amazonaws.com"
    }
  5. 외부 SAML ID 공급자와 함께 SAML 세션 위탁자를 사용하여 IAM 사용자를 인증할 수 있습니다. IAM 역할의 신뢰 정책에는 다음과 유사한 주요 요소가 있어야 합니다:

    "Principal": {
      "Federated": "arn:aws:iam::123456789012:saml-provider/provider-name"
    }
  6. 웹 ID 세션 위탁자를 사용하여 IAM 사용자를 인증할 수 있습니다. 액세스를 제공하는 IAM 역할의 신뢰 정책에는 다음과 유사한 주요 요소가 있어야 합니다.

    "Principal": {
       "Federated": "cognito-identity.amazonaws.com"
    }
  7. 단일 문 내에서 서로 다른 계정 유형을 사용하는 경우 다음과 유사하게 IAM 신뢰 정책의 형식을 지정합니다:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/user-name",
            "Service": "ec2.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }

신뢰 정책에 AIDA 또는 AROA 접두사가 포함되어 있지 않은지 확인

신뢰 정책에 IAM 엔터티에 대한 ARN과 함께 Principal 요소가 포함되어 있는 경우 ARN은 저장 시 고유한 위탁자 ID로 변경됩니다. 이 고유한 보안 위탁자 ID에는 IAM 사용자의 경우 AIDA 접두사가 붙고 IAM 역할의 경우 다음과 유사한 AROA라는 접두사가 붙습니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "AIDAW4GTDFISYQEXAMPLE",
          "AROAW4GTDFISYQEXAMPLE"
        ]
      },
      "Action": "sts:AssumeRole",
      "Condition": {}
    }
  ]
}

신뢰 정책의 고유한 위탁자 ID는 IAM 사용자 또는 역할이 삭제되었음을 나타냅니다. 보안 주체 ID는 AWS가 이를 유효한 ARN에 다시 매핑할 수 없기 때문에 나타납니다. 신뢰 정책을 편집할 경우 위탁자 ID를 제거하거나 유효한 위탁자 ARN으로 바꿔야 합니다. 정책을 저장하면 ARN이 사용자 또는 역할의 새 고유 ID로 변경됩니다.

자세한 내용은 IAM 리소스 기반 정책에 알 수 없는 주요 형식이 있는 이유는 무엇입니까?를 참조하십시오.

관련 정보

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

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

AWS 공식
AWS 공식업데이트됨 4달 전