그누보드

aws s3 스토리지를 그누보드5와 영카트5에 사용하기

June 2019. 10. 30. 18:32

1. AWS S3 는 무엇인가요?

Amazon 에서 서비스하는 웹 스토리지 서비스입니다. ( 아래 URL 참고 )

https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/Welcome.html

 

2. 본 자료의 적용방법

 

첨부파일을 그대로 덮어쓰기 해 주시면 됩니다. ( 본 첨부파일에 aws sdk php 라이브러리가 같이 첨부되어 있습니다. )

 

aws sdk php 의 github.com 저장소를 보면은 

 

https://github.com/aws/aws-sdk-php

 

해당 페이지의 중간에 Minimum requirements PHP >= 5.5라고 나와 있습니다.

 

그렇습니다. 본 자료의 최소 php 최소버전의 요구사항은 5.5 이상입니다.

 

그누보드5 버전은 5.4.0.4 이상이어야 사용할수 있습니다.

 

3. AWS S3 저장소 만들기

 

AWS 에 가입후에 S3 에 버킷을 생성합니다. ( 버킷이름 을 잘 기억하고 있어야 합니다. )

 

 

해당 버킷의 권한 탭에서

 

"임의의 퍼블릭 버킷 정책을 통해 부여된 버킷 및 객체에 대한 퍼블릭 및 교차 계정 액세스 차단" 만 체크한 상태로 설정합니다.

 

 

4. AWS S3 용 IAM 사용자 키와 비밀키를 발급 후 설정하기

 

본 자료를 적용하려면 AWS 에 가입후에 IAM 사용자를 생성후 필요한 권한만 부여한 후에,

해당 IAM 사용자의 키와 비밀키를 발급한 후에, 그누보드5 관리자 메뉴에서 IAM 사용자의 키와 비밀키를 적용합니다.

 

IAM이란 ?

 

 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다. ( 아래 URL 참고 )

https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/introduction.html

 

간단히 설명하자면 루트사용자로 키와 비밀키를 발급하여 사용한다면, 루트사용자와 키와 비밀키가 외부에 유출된다면 어마어마한 피해를 받을수 있습니다. 이를 방지하고자 서브사용자를 생성하여 각각 서비스에 대한 최소한의 권한만 부여하여, 서브사용자의 키와 비밀키가 외부에 노출되어도 피해를 최소한으로 줄이기 위해서 IAM 사용자를 생성 후에 최소한의 권한을 부여하는 것을 이야기 하는것입니다.

 

루트키를 발급받아 외부에 유출되어 피해를 본 사례들 : 

 

https://lmgtfy.com/?q=aws+%ED%95%B4%ED%82%B9+%EA%B3%BC%EA%B8%88&s=g

 

그러니 절대로 루트키를 발급받지 마세요. 만약에 루트키를 발급받았다면 전부 삭제하세요.

루트키를 발급받아서 사용하다가 위와 같은 최악의 상황을 맞을수 있습니다.

본 자료를 사용하려고 루트키를 발급받은 사용자들은 아예 사람 취급을 안하겠습니다. ( 이런 표현은 쓴 이유는 정말로 루트키를 발급하는 행동이 위험하기 때문입니다. )

반드시 IAM 사용자를 생성 후에 각 서비스에 맞게 최소한의 권한을 부여한 후에 사용해주세요.

( 이 부분은 너무나 중요한 부분이기 때문에 본문 내용에서 여러번 언급을 하겠습니다. )

 

IAM 사용자 생성하기 및 정책 그룹 생성

 

1 ) S3 스토리지를 사용할수 있는 최소한의 권한을 부여하는 정책을 생성합니다.

아래 정책은 스토리지 내 자료를 GET, PUT, DELETE 만 할수 있는 정책입니다.

AWS 사이트에서 로그인 후에 내 보안 자격증명 -> 정책을 선택 -> 정책 생성 버튼을 누릅니다.

 

 

2) 정책 생성에서 JSON 탭에 위에서 생성한 S3 버킷이름을 기억하여

아래 코드를 복사하여 S3 버킷이름만 수정하여 정책 검토 버튼을 누릅니다.

 

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::위에서생성한S3버킷이름"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObjectAcl",
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::위에서생성한S3버킷이름/*"
            ]
        }
    ]
}

 

 

3 ) 정책 검토에서 이름을 입력후에 정책 생성을 합니다. ( 생성한 정책이름을 잘 기억하고 있어야 합니다. ) 정책 이름은 마음대로 지을수 있습니다.

 

 

4 ) AWS 사이트에서 로그인 후에 내 보안 자격증명 -> 그룹을 선택 -> 새로운 그룹 생성 버튼을 누릅니다.

 

 

5 ) 그룹 이름 설정 에서 그룹 이름을 지정합니다.

그룹 이름은 사용자 마음대로 편집할수 있습니다.

 

 

6 ) 생성한 그룹에 정책을 위에서 생성한 정책을 연결하여 그룹을 생성합니다.

 

 

 

7 ) 사용자 메뉴에서 사용자 추가 버튼을 클릭합니다. ( IAM 사용자 생성하는 것입니다. )

 

 

8 ) 사용자 이름을 입력 후에 엑세스 유형은 프로그래밍 방식 액세스 를 체크 합니다.

 

 

9 ) 위에서 생성한 그룹에 사용자를 추가 합니다.

 

 

10 ) 태그 추가는 건너뛰기 한 후에 검토 화면에서 생성될 IAM 사용자를 확인 후에 사용자 만들기 버튼을 클릭합니다.

 

 

 

11 ) IAM 사용자가 생성되었으며, S3 를 사용할수 있는 최소한의 권한이 부여되었습니다.

.csv 다운로드 버튼을 눌러서 액세스 키 ID 와 비밀 액세스 키를 확인해 주세요.

 

이 키는 외부에 유출이 되면 안됩니다. 만약에 외부에 노출되었다면 해당 사용자를 삭제 후에 위의 과정을 보고 다시 재 생성 해서 설정해 주세요.

 

 

 

12 ) 이제 그누보드5 관리자 -> aws S3 설정 메뉴에서 여러 키 값을 설정합니다.

 

 

 

4. 위의 과정을 잘 하셨다면 게시판이나 쇼핑몰에 첨부파일을 업로드시 aws s3 에 동시에 업로드 되게 됩니다.

위의 과정 중 하나라도 틀렸다면, 파일 업로드시 에러가 일어납니다.

aws s3 설정 중 버킷이름, 리전 유저키, 유저 비밀키 하나라도 틀리면 당연히 에러가 일어납니다.

 

업로드 되는 과정은

 

내 사이트 서버에 업로드 -> AWS S3 스토리지에 업로드 -> 내 사이트 서버에 원본 파일 삭제

 

이렇게 이루어집니다.

 

관리자 페이지의 aws_s3 설정에서 

 

 

내 서버에 파일 저장 여부에 체크가 되어 있다면 

 

내 사이트 서버에 업로드 -> AWS S3 스토리지에 업로드 과정만 하게 되어 사이트의 물리서버에도 같이 저장이 되게 됩니다.

 

5. AWS 계정 보안에 대해서 설명해둔 유용한 영상입니다.

보시면 AWS 과금 또는 계정 보안에 대해 매우 도움이 됩니다.

 

 

 

aws_s3.plugin.zip
2.06MB

 

https://www.youtube.com/watch?v=r3lL3KsYfig

 

 

출처 : sir https://sir.kr/bbs/board.php?bo_table=g5_plugin&wr_id=6220