AWS S3

../main.png

  • S3는 한 리전에 귀속된다
    Amazon S3 버킷은 특정 리전에 생성되며, 해당 리전에 귀속된다. 이를 통해 데이터가 저장되는 물리적 위치를 제어할 수 있으며, 리전 간의 데이터 전송에 따른 지연 시간을 줄일 수 있다.

  • 기본적으로 공개된 URL로 파일에 접근할 수 없다
    기본적으로 S3 버킷에 저장된 객체는 비공개이며, 공개된 URL을 통해 접근할 수 없다. 하지만, 특정 설정을 통해 객체에 대한 접근을 허용할 수 있다. 이를 통해 데이터 보안을 유지하면서도 필요한 경우 접근을 제어할 수 있다.

보안 기능

사용자 기반 보안

  • IAM 정책: 특정 사용자에 대해 어떤 API 호출을 허용할지를 정의한다. IAM 정책을 통해 세밀하게 접근 권한을 설정할 수 있다.

리소스 기반 보안

  • 버킷 정책: S3 콘솔을 통해 설정할 수 있는 버킷 전체에 적용되는 규칙이다. 크로스 계정 액세스를 허용할 수 있다.
  • 객체 접근 제어 목록 (ACL): 객체 수준에서 더 세밀한 권한 제어를 제공한다. 필요에 따라 비활성화할 수 있다.
  • 버킷 접근 제어 목록 (ACL): 버킷 수준에서의 권한 제어를 제공하지만, 덜 일반적으로 사용되며 비활성화할 수 있다.

접근 제어

  • IAM 주체가 S3 객체에 접근할 수 있는 경우:
    • 사용자 IAM 권한이 허용되거나, 리소스 정책이 허용되며 명시적으로 거부되지 않는 경우에 접근할 수 있다.

암호화

  • S3에 저장된 객체를 암호화 키를 사용하여 암호화할 수 있다. 이를 통해 데이터의 기밀성을 보장할 수 있다.

S3 버킷 정책

S3 버킷 정책은 JSON 형식으로 작성되며, 다음과 같은 요소를 포함한다:

  • 리소스: 버킷과 객체를 지정한다.
  • 효과 (Effect): 허용(Allow) 또는 거부(Deny) 동작을 정의한다.
  • 작업 (Actions): 허용 또는 거부할 API 작업 세트를 정의한다.
  • 주체 (Principal): 정책을 적용할 계정 또는 사용자를 지정한다.

버킷 정책의 사용 사례

  • 버킷에 대한 공용 액세스 부여
  • 업로드 시 객체 암호화 강제
  • 다른 계정에 대한 액세스 권한 부여 (크로스 계정)

JSON 예시

다음은 버킷에 대한 공용 읽기 액세스를 허용하는 버킷 정책의 예시이다:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicRead",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::examplebucket/*"
      ]
    }
  ]
}

공용 액세스 차단 설정

공용 액세스 차단 설정

a1.png

  • 모든 공용 액세스 차단: 모든 공용 액세스를 차단한다.
  • 새로운 ACL을 통한 공용 액세스 차단: 새로운 ACL을 통한 버킷 및 객체의 공용 액세스를 차단한다.
  • 기존 ACL을 통한 모든 공용 액세스 차단: 기존 ACL을 통한 모든 공용 액세스를 차단한다.
  • 새로운 퍼블릭 버킷 또는 액세스 포인트 정책을 통한 공용 액세스 차단: 새로운 퍼블릭 버킷 또는 액세스 포인트 정책을 통한 공용 액세스를 차단한다.
  • 모든 퍼블릭 버킷 또는 액세스 포인트 정책을 통한 공용 및 크로스 계정 액세스 차단: 모든 퍼블릭 버킷 또는 액세스 포인트 정책을 통한 공용 및 크로스 계정 액세스를 차단한다.

이러한 설정은 회사 데이터 유출을 방지하기 위해 만들어졌다. 버킷이 절대 공용이 되어서는 안 되는 경우, 이 설정을 유지하는 것이 좋다. 계정 수준에서 설정할 수 있다.