Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Hack3rSoltion의 클라우드 보안 이야기

AWS 보안 체크리스트 - S3 / AWS Security Check List - S3 본문

AWS

AWS 보안 체크리스트 - S3 / AWS Security Check List - S3

hack3rsolution 2018. 1. 19. 10:21

오늘은 마지막으로 보안 체크리스트 S3에 대해 알아보겠습니다.



1. 공용 액세스 S3 버킷을 만들지 마세요.

  a. IAM 또는 S3 버킷 정책을 사용하여 S3 버킷에 대한 액세스를 제어하세요.

  b. 버킷 정책을 설정할 때에는 다음과 같은 항목들을 고려해야 합니다.

    i. 추가 조건을 포함하여 여러 계정에 권한 부여

    ii. 익명 사용자에게 읽기 전용 권한 부여

    iii. 특정 IP 주소 액세스 제한

    iv. 특정 HTTP 참조자에 대한 액세스 제한

    v. Amazon CloudFront 오리진 자격 증명에 권한 부여

    vi. MFA가 필요한 버킷 정책 추가

    vii. 버킷 소유자가 완벽하게 제어할 수 있도록 보증하면서 객체에 업로드하는 교차 계정 권한 부여

    viii. Amazon S3 인벤토리 및 Amazon S3 분석에 권한 부여

  c. IAM 에서 사용자에게 특정 S3 버킷이나 폴더에 대한 제하된 권한을 설정할 수 있습니다.

  d. 아래와 같은 정책을 예로 들겠습니다.

{

   "Version":"2012-10-17",

   "Statement":[

      {

         "Effect":"Allow",

         "Action":[

            "s3:ListAllMyBuckets"

         ],

         "Resource":"arn:aws:s3:::*"

      },

      {

         "Effect":"Allow",

         "Action":[

            "s3:ListBucket",

            "s3:GetBucketLocation"

         ],

         "Resource":"arn:aws:s3:::examplebucket"

      },

      {

         "Effect":"Allow",

         "Action":[

            "s3:PutObject",

            "s3:PutObjectAcl",

            "s3:GetObject",

            "s3:GetObjectAcl",

            "s3:DeleteObject"

         ],

         "Resource":"arn:aws:s3:::examplebucket/*"

      }

   ]

}


  d. 이 정책을 적용받는 사용자는

    i. 모든 S3에 대한 목록을 볼 수 있습니다.

    ii. 'examplebucket'이라는 버킷에 대해 다음의 권한을 갖습니다.

      2) 목록을 가져오고

      3) 위치 하위 리소스를 사용하여 버킷의 영역을 반환할 수 있습니다.

    iii. 'examplebucket'이라는 버킷에 담긴 모든 객체에 대해 다음의 권한을 갖습니다.

      1) 객체 업로드

      2) 객체 업로드에 대한 액세스 제어 목록 (ACL) 권한을 설정

      3) 객체 다운로드

      4) 객체 다운로드에 대한 액세스 제어 목록 (ACL) 권한을 설정

      5) 객체 삭제


2. SSE(Server Side Encryption)를 사용하여 S3의 중요한 데이터를 암호화합니다.

  a. 적절한 버킷 정책을 사용하여 암호화를 시행하세요.

{

  "Version": "2012-10-17",

  "Id": "PutObjPolicy",

  "Statement": [

    {

      "Sid": "DenyIncorrectEncryptionHeader",

      "Effect": "Deny",

      "Principal": "*",

      "Action": "s3:PutObject",

      "Resource": "arn:aws:s3:::YourBucket/*",

      "Condition": {

        "StringNotEquals": {

          "s3:x-amz-server-side-encryption": "AES256"

        }

      }

    },

    {

      "Sid": "DenyUnEncryptedObjectUploads",

      "Effect": "Deny",

      "Principal": "*",

      "Action": "s3:PutObject",

      "Resource": "arn:aws:s3:::YourBucket/*",

      "Condition": {

        "Null": {

          "s3:x-amz-server-side-encryption": "true"

        }

      }

    }

  ]


  b. 예를 들어 이 버킷 정책은 요청에 서버 측 암호화를 나타내는 x-amz-server-side-encryption 헤더가 포함되지 않을 경우 모든 사용자에게 객체 업로드(s3:PutObject) 권한을 거부합니다.


3. 인바운드 및 아웃 바운드 S3 데이터 트래픽을 암호화합니다.

  a. S3 SSL 엔드 포인트를 사용하여 HTTPS를 통해 안전하게 데이터를 전송하세요.

  b. S3는 상주 데이터를 자동으로 암호화하고 다양한 키 관리 방법을 제공할 수 있습니다.

  c. 수신하는 스토리지 요청에 암호화 정보가 없는 경우 S3 버킷을 구성하여 객체를 S3에 저장하기 전에 자동으로 암호화할 수 있습니다.

  d. 또는 Amazon S3 암호화 클라이언트 같은 클라이언트 암호화 라이브러리를 사용하여 Amazon S3에 업로드하기 전에 데이터를 암호화할 수 있습니다.


4. S3 버전 관리 및 S3 라이프 사이클 정책을 숙지하세요.

  a. 버전 관리를 사용하여 Amazon S3 버킷에 저장된 모든 객체의 모든 버전을 보존, 검색 및 복원하세요.

  b. 규칙 기반 작업을 통해 S3 객체의 라이프 사이클을 자동화하세요.

  c. 버전 관리를 사용하면 my-image.jpg(버전 111111) 및 my-image.jpg (버전 222222)와 같이 한 버킷에서 같은 객체에 대해 여러 개의 버전을 유지할 수 있습니다.

  d. 의도하지 않은 덮어쓰기 또는 삭제로부터 보호하거나, 이전 버전을 검색할 수 있도록 객체를 보관하기 위해 버전 관리를 활성화할 수 있습니다.

  e. 객체 라이프 사이클 구성은 1개 이상으로 된 일련의 규칙으로서, 각 규칙은 Amazon S3가 객체 그룹에 적용할 작업을 정의합니다. 

    i. 전환 작업

      1) 객체가 다른 스토리지 클래스로 전환할 시기를 정의합니다. 

      2) 예를 들어 생성 후 30일이 지나면 객체를 STANDARD_IA(IA, 자주 액세스하지 않는 경우) 스토리지 클래스로 전환하거나 생성 후 1년이 지나면 객체를 GLACIER 스토리지 클래스에 보관하도록 선택할 수 있습니다.

    ii. 만료 작업

      1) 객체가 만료되는 시기를 지정합니다.

      2) 그러면 Amazon S3에서 만료된 객체를 자동으로 삭제합니다.


5. S3 Access Logging을 활성화하고 정기적으로 로그를 분석하세요.

  a. 액세스 로그 분석을 통해 보안 감사 중에 도움을받으며 사용자 행동에 대한 상세한 정보를 제공하고,

  b. S3 사용 요금을 더 잘 이해할 수 있도록 도와주세요.

  c. 각 액세스 로그 레코드는 한 액세스 요청에 대한 세부 정보(요청자, 버킷 이름, 요청 시간, 요청 작업, 응답 상태, 오류 코드 등)를 제공합니다. 

  d. 액세스 로그 정보는 보안 및 액세스 감사에 유용할 수 있습니다. 

  e. 또한 고객 기반을 이해하고 Amazon S3 청구 비용을 파악할 수 있습니다.

Comments