CICD/AWS

[AWS] S3 권한 관리

[dev] hiro 2024. 7. 26. 08:38
해당 포스팅은 AWS 강의실(https://www.youtube.com/@AWSClassroom)를 보고 공부한 내용을 정리한 블로그입니다.

아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
네 자신의 불행을 생각하지 않게 되는 가장 좋은 방법은 일에 몰두하는 것이다.
Ludwig van Beethoven

S3 권한 관리


S3 버킷 정책

  • IAM 정책 중의 리소스 정책

IAM 종류

  • Identity-based policies(자격 증명 기반 정책)
    • 자격 증명(IAM 유저, 그룹, 역할)에 부여하는 정책
    • 해당 자격증명이 무엇을 할 수 있는 지 허용

리소스 기반 정책

  • Resource-based policies(리소스 기반 정책)
    • 리소스(S3, SQS VPC Endpoint, KMS 등)에 부여하는 정책
    • 해당 리소스에 누가 무엇을 할 수 있는지 허용 가능
      • SQS 대기열에 lambda Service가 접근 가능
      • IAM 정책을 평가할 때 리소스 정책 허용이면 허용하는 특징

S3 버킷 정책

  • 버킷 단위로 부여되는 리소스 기반 정책
  • 해당 버킷의 데이터에 언제 누가 어디서 무엇을 어떻게 할 수 있는지 정의 가능
    • 리소스 계층 구조에 따라 권한 조절 가능
    • 다른 계정에 엔티티에 대해 권한 설정 가능(cross account)
    • 익명 사용자에 대한 권한 설정 가능.
  • 기본적으로 모든 버킷은 Private ⇒ 접근 불가능

S3의 계층 구조

{
	"Version": "2012-10-17",
    "Statement": [
    	{
        	"Sid": "StatementAllow",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::demo.rwlecture.com/*",
        }
    ]
}
  • AWS 콘솔에서는 S3의 디렉토리를 생성 가능하고 확인 가능
  • S3 내부적으로는 계층 구조가 존재하지 않음
    • 키 이름에 포함된 “/”로 계층 구조를 표현
      • s3:mybucket/aaa/bbb/ccc/ddd
      • bucket: mybucket
      • key: aaa/bbb/ccc/ddd(단일 스트링)
    • effect: 허용
    • principal: 누가? ⇒ 퍼블릭 액세스 차단 편집을 수정해야함.
    • action: 무엇을
    • resource: 어떤 버킷에 대해서?

버킷 관리 방법의 선택

  • Identity-based policies(자격 증명 기반 정책)
    • 같은 계정의 IAM 엔티티의 S3 권한 관리할 때
    • S3 이외에 다른 AWS 서비스와 같이 권한 관리할 때
  • Resource-based policies(리소스 기반 정책)
    • 익명 사용자 혹은 다른 계정의 엔티티의 S3 이용 권한을 관리할 때
    • S3 만의 권한을 관리할 때

Access Control List(ACL)

  • 버킷 혹은 객체 단위로 읽기, 쓰기의 권한 부여
  • S3에서 설정을 통해 ACL을 활성화 시킨 후에 적용 가능
  • 파일 업로드시 설정 가능
  • 간단하고 단순한 권한 관리만 가능
  • 사용하지 않는 추세 ⇒ 버킷 괸리로 사용 가능함.