Amazon S3의 정책 및 권한
Amazon S3의 정책 및 권한 (Policies and permissions in Amazon S3)
이 페이지는 Amazon S3의 버킷 및 사용자 정책에 대한 개요를 제공하고 AWS Identity and Access Management(IAM) 정책의 기본 요소를 설명해요. 나열된 각 요소는 해당 요소에 대한 자세한 내용과 사용 방법 예시로 연결돼요.
Amazon S3 작업, 리소스, 조건의 전체 목록은 서비스 권한 부여 참조의 Amazon S3용 작업, 리소스 및 조건 키를 참고하세요.
S3 리소스 유형별 S3 API 작업 권한에 대한 자세한 내용은 Amazon S3 API 작업에 필요한 권한을 참고하세요.
가장 기본적인 의미에서 정책에는 다음 요소가 포함돼요.
- 리소스(Resource) – 정책이 적용되는 Amazon S3 버킷, 객체, 액세스 포인트 또는 작업이에요. 버킷, 객체, 액세스 포인트 또는 작업의 Amazon 리소스 이름(ARN)을 사용해 리소스를 식별하세요.
- 버킷 수준 작업의 예시:
"Resource": "arn:aws:s3:::bucket_name" - 객체 수준 작업의 예시:
"Resource": "arn:aws:s3:::bucket_name/*"- 버킷의 모든 객체에 대한 것.
"Resource": "arn:aws:s3:::bucket_name/prefix/*"- 버킷의 특정 프리픽스 아래 객체에 대한 것.
- 자세한 내용은 Amazon S3용 정책 리소스를 참고하세요.
- 버킷 수준 작업의 예시:
- 작업(Actions) – 각 리소스에 대해 Amazon S3는 일련의 작업을 지원해요. 작업 키워드를 사용해 허용(또는 거부)할 리소스 작업을 식별해요. 예를 들어
s3:ListBucket권한은 사용자가 Amazon S3ListObjectsV2작업을 사용할 수 있게 해줘요. (s3:ListBucket권한은 작업 이름이 작업 이름에 직접 매핑되지 않는 경우예요.) Amazon S3 작업 사용에 대한 자세한 내용은 Amazon S3용 정책 작업을 참고하세요. Amazon S3 작업의 전체 목록은 Amazon Simple Storage Service API 참조의 작업을 참고하세요. - 효과(Effect) – 사용자가 특정 작업을 요청할 때의 효과로,
Allow또는Deny일 수 있어요. 리소스에 대한 액세스를 명시적으로 부여(허용)하지 않으면 액세스가 암시적으로 거부돼요. 리소스에 대한 액세스를 명시적으로 거부할 수도 있어요. 다른 정책이 액세스를 부여하더라도 사용자가 리소스에 액세스할 수 없도록 하려는 경우 이렇게 할 수 있어요. 자세한 내용은 IAM 사용자 가이드의 IAM JSON 정책 요소: Effect를 참고하세요. - 보안 주체(Principal) – 문에서 작업과 리소스에 액세스할 수 있게 허용된 계정 또는 사용자예요. 버킷 정책에서 보안 주체는 이 권한의 수신자인 사용자, 계정, 서비스 또는 기타 엔터티예요. 자세한 내용은 버킷 정책의 보안 주체를 참고하세요.
- 조건(Condition) – 정책이 적용되는 조건이에요. Amazon S3 액세스 정책에서 조건을 지정할 때 AWS 전체 키와 Amazon S3 특정 키를 사용할 수 있어요. 자세한 내용은 조건 키를 사용한 버킷 정책 예시를 참고하세요.
다음 예시 버킷 정책은 Effect, Principal, Action, Resource 요소를 보여줘요. 이 정책은 계정 123456789012의 사용자 Akua에게 amzn-s3-demo-bucket1 버킷에 대한 s3:GetObject, s3:GetBucketLocation, s3:ListBucket Amazon S3 권한을 허용해요.
{
"Version": "2012-10-17",
"Id": "ExamplePolicy01",
"Statement": [
{
"Sid": "ExampleStatement01",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/Akua"
},
"Action": [
"s3:GetObject",
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket1/*",
"arn:aws:s3:::amzn-s3-demo-bucket1"
]
}
]
}
완전한 정책 언어 정보는 IAM 사용자 가이드의 IAM의 정책 및 권한과 IAM JSON 정책 참조를 참고하세요.
출처: 문서
본문
권한 위임 (Permission delegation)
AWS 계정이 리소스를 소유하면 해당 권한을 다른 AWS 계정에 부여할 수 있어요. 그 계정은 그 권한 또는 그 일부를 계정의 사용자에게 위임할 수 있어요. 이를 권한 위임이라고 해요. 하지만 다른 계정으로부터 권한을 받은 계정은 권한을 다른 AWS 계정에 교차 계정으로 위임할 수 없어요.
Amazon S3 버킷 및 객체 소유권
버킷과 객체는 Amazon S3 리소스예요. 기본적으로 리소스 소유자만 이러한 리소스에 액세스할 수 있어요. 리소스 소유자는 리소스를 생성한 AWS 계정을 말해요. 예를 들면 다음과 같아요.
- 버킷을 만들고 객체를 업로드하는 데 사용하는 AWS 계정이 해당 리소스를 소유해요.
- AWS Identity and Access Management(IAM) 사용자 또는 역할 자격 증명으로 객체를 업로드하면 사용자 또는 역할이 속한 AWS 계정이 객체를 소유해요.
- 버킷 소유자는 다른 AWS 계정(또는 다른 계정의 사용자)에 객체를 업로드할 교차 계정 권한을 부여할 수 있어요. 이 경우 객체를 업로드하는 AWS 계정이 해당 객체를 소유해요. 버킷 소유자는 다른 계정이 소유한 객체에 대한 권한이 없으며, 다음 예외가 있어요.
- 버킷 소유자는 청구서를 지불해요. 버킷 소유자는 누가 소유하는지와 관계없이 버킷의 모든 객체에 대한 액세스를 거부하거나 모든 객체를 삭제할 수 있어요.
- 버킷 소유자는 누가 소유하는지와 관계없이 모든 객체를 보관하거나 보관된 객체를 복원할 수 있어요. 보관은 객체를 저장하는 데 사용되는 스토리지 클래스를 말해요. 자세한 내용은 객체 라이프사이클 관리를 참고하세요.
소유권과 요청 인증
버킷에 대한 모든 요청은 인증되거나 인증되지 않을 수 있어요. 인증된 요청에는 요청 발신자를 인증하는 서명 값이 포함되어야 하고, 인증되지 않은 요청에는 그렇지 않아요. 요청 인증에 대한 자세한 내용은 Amazon S3 API 참조의 요청하기를 참고하세요.
버킷 소유자는 인증되지 않은 요청을 허용할 수 있어요. 예를 들어 버킷에 공개 버킷 정책이 있거나 버킷 ACL이 All Users 그룹 또는 익명 사용자에게 WRITE 또는 FULL_CONTROL 액세스를 부여할 때 인증되지 않은 PutObject 요청이 허용돼요. 공개 버킷 정책 및 공개 액세스 제어 목록(ACL)에 대한 자세한 내용은 "공개"의 의미를 참고하세요.
모든 인증되지 않은 요청은 익명 사용자가 만든 것이에요. 이 사용자는 ACL에서 특정 캐노니컬 사용자 ID 65a011a29cdf8ec533ec3d1ccaae921c로 표시돼요. 인증되지 않은 요청을 통해 객체가 버킷에 업로드되면 익명 사용자가 객체를 소유해요. 기본 객체 ACL은 객체 소유자로서 익명 사용자에게 FULL_CONTROL을 부여해요. 따라서 Amazon S3는 인증되지 않은 요청이 객체를 검색하거나 그 ACL을 수정하는 것을 허용해요.
익명 사용자가 객체를 수정하지 못하게 하려면 버킷에 익명 공개 쓰기를 허용하는 버킷 정책을 구현하거나 익명 사용자에게 버킷 쓰기 액세스를 허용하는 ACL을 사용하지 말 것을 권장해요. Amazon S3 공개 액세스 차단을 사용해 이 권장 동작을 강제할 수 있어요.
공개 액세스 차단에 대한 자세한 내용은 Amazon S3 스토리지에 대한 공개 액세스 차단을 참고하세요. ACL에 대한 자세한 내용은 액세스 제어 목록(ACL) 개요를 참고하세요.
중요 AWS 계정 루트 사용자 자격 증명을 사용해 인증된 요청을 하지 말 것을 권장해요. 대신 IAM 역할을 만들고 해당 역할에 전체 액세스를 부여하세요. 이 역할을 가진 사용자를 관리자 사용자라고 해요. AWS 계정 루트 사용자 자격 증명 대신 관리자 역할에 할당된 자격 증명을 사용해 AWS와 상호작용하고 버킷 생성, 사용자 생성, 권한 부여 같은 작업을 수행할 수 있어요. 자세한 내용은 IAM 사용자 가이드의 AWS 보안 자격 증명과 IAM 보안 모범 사례를 참고하세요.