보안 주체 - Amazon Simple Storage Service

보안 주체

Principal 요소는 사용자, 계정, 서비스 또는 리소스에 대한 액세스가 허용 또는 거부된 기타 주체를 지정합니다. 다음은 Principal 지정의 예입니다. 자세한 내용은 IAM 사용 설명서보안 주체를 참조하십시오.

AWS 계정에 권한 부여

AWS 계정에 권한을 부여하려면 다음 형식을 사용하여 계정을 식별합니다.

"AWS":"account-ARN"

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

"Principal":{"AWS":"arn:aws:iam::AccountIDWithoutHyphens:root"}
"Principal":{"AWS":["arn:aws:iam::AccountID1WithoutHyphens:root","arn:aws:iam::AccountID2WithoutHyphens:root"]}

또한, Amazon S3에서는 난독화된 형식의 AWS 계정 ID인 정식 사용자 ID를 지원합니다. 다음 형식을 사용하여 이 ID를 지정할 수 있습니다.

"CanonicalUser":"64-digit-alphanumeric-value"

다음은 예제입니다.

"Principal":{"CanonicalUser":"64-digit-alphanumeric-value"}

계정의 정식 사용자 ID를 찾는 방법에 대한 정보는 계정 정식 사용자 ID 찾기를 참조하십시오.

중요

정책에 정식 사용자 ID를 사용하는 경우 Amazon S3가 정식 ID를 해당 AWS 계정 ID로 변경할 수 있습니다. 이러한 ID는 둘 다 동일한 계정을 식별하기 때문에 정책에 영향을 주지는 않습니다.

IAM 사용자에게 권한 부여

계정 내의 IAM 사용자에게 권한을 부여하려면 "AWS":"user-ARN" 이름-값 페어를 제공해야 합니다.

"Principal":{"AWS":"arn:aws:iam::account-number-without-hyphens:user/username"}

단계별 지침을 제공하는 자세한 예는 예제 1: 버킷 소유자가 자신의 사용자에게 버킷 권한 부여예제 3: 버킷 소유자가 자신이 소유하지 않는 객체에 대한 권한 부여 단원을 참조하십시오.

참고

버킷 정책을 업데이트한 후 IAM 자격 증명이 삭제되면 버킷 정책은 ARN 대신 principal 요소에 고유 식별자를 표시합니다. 이러한 고유 ID는 절대 재사용되지 않으므로 모든 정책 설명에서 고유 식별자가 있는 보안 주체를 안전하게 제거할 수 있습니다. 고유 식별자에 대한 자세한 내용은 IAM 사용 설명서의 IAM 식별자를 참조하십시오.

익명 권한 부여

모두에게 권한을 부여하고 익명 액세스로도 참조되려면 와일드카드 문자("*")를 Principal 값으로 설정합니다. 예를 들어 버킷을 웹 사이트로 구성하는 경우 버킷의 모든 객체를 공개적으로 액세스 가능하게 하려 할 수 있습니다.

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

리소스 기반 정책에서 "Principal": "*"을(를) Allow 효과와 함께 사용하면 사용자 리소스에 액세스하기 위해 AWS에 로그인하지 않아도 누구나 허용할 수 있습니다.

리소스 기반 정책에서 "Principal" : { "AWS" : "*" }Allow 효과와 함께 사용하면 동일한 파티션의 모든 계정에 있는 모든 루트 사용자, IAM 사용자, 수임된 역할 세션 또는 페더레이션 사용자가 리소스에 액세스할 수 있습니다.

익명 사용자의 경우 이들 두 메서드는 동일합니다. 자세한 내용은 IAM 사용 설명서모든 보안 주체를 참조하십시오.

보안 주체 이름이나 ARN의 일부를 나타내기 위해 와일드카드를 사용할 수 없습니다.

중요

누구나 AWS 계정을 생성할 수 있기 때문에 두 가지 방법의 보안 수준은 다르게 작동하더라도 동일합니다.

주의

Amazon S3 버킷에 익명 액세스 권한을 부여할 때는 주의해야 합니다. 익명 액세스 권한을 부여하면 전 세계 누구나 버킷에 액세스할 수 있습니다. S3 버킷에 대한 익명 쓰기 액세스 권한을 부여하지 않는 것이 좋습니다.

리소스 권한 제한

또한 리소스 정책을 사용하여 IAM 보안 주체가 사용할 수 있을 리소스에 대한 액세스를 제한할 수 있습니다. 액세스를 방지하려면 Deny 명령문을 사용합니다.

다음은 보안 전송 프로토콜을 사용하지 않는 경우 액세스를 차단하는 예시입니다.

{"Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": <bucket ARN>, "Condition": { "Boolean": { "aws:SecureTransport" : "false"} } }

이 방법을 사용하여 특정 계정이나 보안 주체에 대한 액세스를 거부하는 대신 "Principal": "*"을 사용하여 이 제한이 모든 사람에게 적용되도록 하는 것이 이 정책의 모범 사례입니다.

CloudFront URL을 통한 액세스 요구

사용자가 Amazon S3 URL 대신 Amazon CloudFront URL을 사용하여 Amazon S3 콘텐츠에 액세스하도록 요구할 수 있습니다. 이렇게 하려면 CloudFront 원본 액세스 ID(OAI)를 만듭니다. 그런 다음 버킷 또는 버킷의 객체에 대한 권한을 변경합니다. Principal 문에서 OAI를 지정하기 위한 형식은 다음과 같습니다.

"Principal":{"CanonicalUser":"Amazon S3 Canonical User ID assigned to origin access identity"}

자세한 내용은 Amazon CloudFront 개발자 안내서오리진 액세스 ID를 사용하여 Amazon S3 콘텐츠에 대한 액세스 제한 단원을 참조하십시오.