내용으로 건너뛰기

Amazon S3 버킷 정책을 업데이트하려고 할 때 "Invalid principal in policy"라는 오류가 표시되는 이유는 무엇입니까?

3분 분량
0

Amazon Simple Storage Service(Amazon S3) 버킷 정책을 추가하거나 편집하려고 하면 “Invalid principal in policy” 오류가 표시됩니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

Amazon S3 버킷 정책에 Principal 요소의 잘못된 값이 포함된 경우 “Invalid principal in policy” 오류가 표시됩니다. 이 오류를 해결하려면 다음 문제 해결 단계를 따르십시오.

버킷 정책에서 Principal 요소에 지원되는 값을 사용하는지 확인

S3 버킷 정책에서 Principal 요소에 지원되는 다음 값을 지정해야 합니다.

참고: 와일드카드 별표 문자(*)를 Principal 요소로 사용하는 경우 인증된 모든 익명 사용자에게 액세스 권한이 부여됩니다.

Principal 값의 형식이 올바르게 지정되었는지 확인하십시오.

버킷 정책의 Principal 요소의 형식이 올바르게 지정되었는지 검토하십시오. Principal 요소에 한 명의 사용자가 포함된 경우 다음 형식을 사용하십시오.

"Principal": {    "AWS": "arn:aws:iam::111111111111:user/user-name1"
}

참고: user-name1을 IAM 사용자 이름으로 바꾸십시오.

Principal 요소에 둘 이상의 IAM 사용자 또는 역할이 포함된 경우 다음 형식을 사용하십시오.

"Principal": {  "AWS": [
    "arn:aws:iam::111111111111:user/user-name1",
    "arn:aws:iam::111111111111:role/role-name1"
  ]
}

참고: user-name1을 IAM 사용자 이름으로 바꾸고 role-name1을 IAM 역할 이름으로 바꾸십시오.

Principal 요소에 모든 사용자가 포함된 경우 다음 형식을 사용하십시오.

{  "Principal": "*"
}

참고: Allow 효과가 있는 리소스 기반 정책의 Principal 요소에 와일드카드(*)를 사용하지 않는 것이 가장 좋습니다. 와일드카드(*)는 공개 또는 익명 액세스를 허용할 때만 사용하십시오. Principal 요소에서 의도한 Principal 요소, 서비스 또는 AWS 계정을 지정합니다. 그런 다음 Condition 요소를 사용하여 액세스를 제한합니다.

참고: 익명 액세스 권한을 부여하면 누구나 버킷에 액세스할 수 있습니다. S3 버킷에 익명 쓰기 액세스 권한을 부여하지 않는 것이 좋습니다. 자세한 내용은 Amazon S3가 IAM과 함께 작동하는 방식을 참조하십시오.

IAM 사용자 또는 역할이 삭제되지 않았는지 확인

고유 식별자를 Principal 요소로 사용하여 버킷 정책을 저장하려고 하는 경우 “Invalid principal in policy” 오류가 표시됩니다. 이는 Principal 요소가 유효한 IAM ARN만 지원하기 때문입니다. 이 오류를 해결하려면 Principal 요소에서 모든 고유 식별자를 삭제해야 합니다.

버킷 정책에서 Principal 요소에 IAM 사용자 또는 역할이 포함되어 있는 경우 해당 IAM ID가 삭제되지 않았는지 확인합니다. 버킷 정책에서 삭제된 IAM 사용자 및 역할을 식별하려면 Principal 요소에 전체 ARN 대신 고유 식별자를 지정합니다.

예를 들어 다음과 같습니다.

"Principal": {  "AWS": [
    "arn:aws:iam::111111111111:user/user-name1",
    "AIDAJQABLZS4A3QDU576Q",
    "arn:aws:iam::111111111111:user/user-name2"
  ]
}

참고: user-name1user-name2를 IAM 사용자 이름으로 바꾸십시오.

IAM 주체 계정에 리전이 활성화되어 있는지 확인

S3 버킷 정책을 적용하면 AWS가 필요한 AWS 리전을 IAM 주체의 계정에서 사용할 수 있는지 확인합니다. 버킷은 AWS에서 기본적으로 활성화하지 않는 AWS 리전에 있을 수 있습니다. 이 경우 IAM 주체의 계정에서 리전을 활성화했는지 확인하십시오. 크로스 계정 시나리오에서는 두 AWS 계정 모두에 대해 AWS 리전을 활성화하십시오. 자세한 내용은 계정의 AWS 리전 활성화 또는 비활성화를 참조하십시오.

IAM Access Analyzer를 사용하여 버킷 액세스 검증

권한을 배포하기 전에 S3 버킷에 대한 액세스를 검증하려면 AWS Identity and Access Management Access Analyzer를 사용하십시오. 다른 AWS 계정의 리소스를 부여하는 S3 버킷 정책을 검토할 수 있습니다.

또한 IAM Access Analyzer를 사용하여 AWS CloudTrail 이벤트를 분석하여 해당 활동을 기반으로 IAM 정책을 생성할 수 있습니다. 자세한 내용은 IAM Access Analyzer 정책 생성을 참조하십시오.

IAM Access Analyzer를 활성화하려면 AWS Identity and Access Management Access Analyzer 시작하기를 참조하십시오.

참고: AWS는 매월 생성된 모든 미사용 액세스 분석에 대해 요금을 청구합니다. 자세한 내용은 IAM Access Analyzer 요금을 참조하십시오.

IAM Access Analyzer 권한 문제를 해결하려면 IAM Access Analyzer에서 생성된 정책으로 권한 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오.