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

그누보드5 플러그인

그누보드는 여러가지 기능을 추가하기 쉽도록 제작 되었습니다.
플러그인 다운로드시 좋아요와 감사의 코멘트를 남기시면 제작자에게 큰 힘이됩니다. ^^y

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

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

첨부파일

첨부파일 aws_s3.plugin.zip (2.1M) 24회 다운로드 2019-10-29 16:11:08
테스트한 버전5.4.0.4
호환 가능 버전5.4.0.4 버전 이상

본문

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 이상이어야 사용할수 있습니다.

 

적용되는 대상은 아래와 같습니다.

 

게시판 에디터 이미지,

게시판 첨부파일,

게시판 첨부파일 view 썸네일( 게시판 리스트 썸네일은 제외 됩니다. 리스트 썸네일은 체크하는 과정이 많아서 비효율적인 것 같아서 넣지 않았습니다. )

쇼핑몰 이미지와 썸네일

 

영향받는 물리적인 경로 

 

data/editor

data/file

data/item

 

 

3. AWS S3 저장소 만들기

 

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

 

1794657427_1572333104.3774.png

 

해당 버킷의 권한 탭에서

 

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

 

1794657427_1572333156.2508.png

 

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://www.google.com/search?sxsrf=ACYBGNTRLkpB0iZ7Xp_cj0SUKJPcqIW2Zw%3A1573528718108&source=hp&ei=jiTKXd-8A4H6wQPNkLnwAw&q=aws+%ED%95%B4%ED%82%B9+%EA%B3%BC%EA%B8%88&oq=aws+%ED%95%B4%ED%82%B9+%EA%B3%BC%EA%B8%88

 

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

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

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

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

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

 

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

 

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

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

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

 

1794657427_1572333245.3794.png

 

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버킷이름/*"
            ]
        }
    ]
}

 

1794657427_1572333333.2091.png

 

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

 

1794657427_1572333354.7774.png

 

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

 

1794657427_1572333436.7144.png

 

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

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

 

1794657427_1572333485.4167.png

 

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

 

1794657427_1572333537.8134.png

 

 

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

 

1794657427_1572333567.0347.png

 

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

 

1794657427_1572334260.8179.png

 

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

 

1794657427_1572333603.9618.png

 

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

 

1794657427_1572333623.4759.png

 

 

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

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

 

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

 

1794657427_1572333677.7484.png

 

 

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

 

1794657427_1572333704.5192.png

 

 

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

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

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

 

업로드 되는 과정은

 

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

 

이렇게 이루어집니다.

 

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

 

1794657427_1572335148.0671.png

 

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

 

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

 

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

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

 

 

 

6. 기존자료를 aws s3 로 업로드하기

 

aws S3 스토리지에 업로드 하지 못한 자료들은 S3 Browser 툴을 이용하여 아래 방법으로 할수 있습니다.

기존 자료가 없으시고, 그누보드5를 최근에 처음 설치했다면 이 6번 부분을 하실 필요가 없습니다.

 

( 제가 아래에 써 놓은 방법보다 더 좋은 방법이 있으신 분들은 댓글로 알려주세요. )

 

1) 그누보드5와 영카트5의 경우 첨부파일이 보통 data 폴더에 쌓입니다.

data 폴더에서 editor, file, item 폴더를 복사해서 한 폴더에 붙여넣기 합니다. 해당 3개 폴더만 복사하세요. 나머지 폴더들은 작동 안되며 올려도 무용지물입니다.

( 그누보드5인 경우에는 editor, file 폴더 2개 이며, 영카트5 인 경우는 editor, file, item 폴더 3개 입니다. )

 

1794657427_1572577561.2306.png

 

2) AWS 사이트에서 AmazonS3FullAccess 권한을 가진 IAM 계정을 임시로 생성할 것입니다. 생성하여 S3 Browser 툴을 이용하여 복사한 자료를 S3 스토리지에 업로드 하고 난 후에, 업로드가 다 끝났으면 보안을 위해서 임시로 생성한 IAM 계정을 삭제합니다.

 

AmazonS3FullAccess 권한을 가진 IAM 계정을 임시로 생성하기

 

사용자 에서 사용자 추가를 누릅니다.

 

1794657427_1572577864.0927.png

 

사용자이름과 프로그래밍 방식 엑세스를 클릭 후 진행합니다.

 

1794657427_1572578097.8808.png

 

권한 설정 탭에서 기존 정책 직접 연결을 선택한 후에 정책 필터에서 s3 를 입력 후에 AmazonS3FullAccess 정책이름을 체크 한 후에 다음:태그 로 넘어갑니다.

 

1794657427_1572578248.8542.png

 

태그입력란은 생략해도 됩니다. 건너뛰기 한 후에 최종적으로 사용자 만들기를 합니다.

 

1794657427_1572578311.0637.png

.csv 다운로드 버튼을 누르거나 또는 비밀엑세스 키 표시를 눌러서 액세스 키 ID와 비밀 액세스 키를 조회합니다. 해당 키는 절대로 외부로 유출이 되면 안됩니다.

 

1794657427_1572578586.7813.png

 

3) 이제 S3 Browser 툴을 다운로드 받습니다. 업로드 하는 방식은 FTP툴과 매우 유사합니다.

 

다운주소 : 

https://s3browser.com/external-buckets-how-to-use-shared-bucket.aspx

 

다운 받았다면 설치 -> 실행하여 account 를 추가합니다. AmazonS3FullAccess 권한을 준 임시계정의 액세스키와 비밀 액세스키를 입력합니다.

 

1794657427_1572578740.0873.png

 

 

접속해서 조회후 data 폴더가 없으면 만든 다음에 해당 폴더에 editor, file, item 폴더를 업로드 합니다.

 

1794657427_1572579005.4664.png

 

->

 

1794657427_1572582095.145.png

 

data/editor

data/file

data/item

 

이런 형식으로 업로드 하면 됩니다.

 

업로드를 다 했다면,

 

aws s3 사이트에서 

 

위의 폴더들을 체크한 다음에 퍼블릭으로 설정 합니다. ( 퍼블릭으로 설정 안하면 이미지파일이 외부접근을 못해서 엑박이 뜹니다. )

 

1794657427_1572583339.6238.png

 

그런 다음 

 

그누보드5 관리자 -> aws s3 설정 에서 

 

"첨부된 데이터경로를 무조건 aws s3으로 할시에 체크" 란에 체크 합니다. 

 

1794657427_1572583377.9279.png

 

다 되었다면 사이트에서 첨부파일 또는 이미지들의 경로가 https://버킷이름.s3.리전.amazonaws.com 으로 나오는지 확인합니다.( 게시판 리스트 썸네일은 제외입니다. 게시판 리스트 썸네일들만 내 서버 도메인으로 출력됩니다. )

 

다 업로드 된것을 확인했다면 보안을 위해서 임시로 AmazonS3FullAccess권한을 준 IAM 계정을 삭제합니다.

 

1794657427_1572584994.6543.png

 

더 좋은 방법이나 좋은 의견이 있으시면 댓글로 알려주세요~

추천15

댓글 전체

와우 멋진글 감사합니다..
그런데 되게 어렵고 복잡하고, 위험(?) 한것 같은데 (글은 너무 쉬워요)
이렇게 까지해서 아마존을 사용할 필요가 있나요?? ㄷㄷㄷ
전체 307
그누보드5 플러그인 내용 검색

회원로그인

진행중 포인트경매

  1. 사이트맵 + RSS = 구글, 네이버 웹마스터도구

    참여10 회 시작19.12.13 10:44 종료19.12.16 10:44
  2. PHP 7 예비학교 - 냑과 함께 개발자 첫걸음

    참여132 회 시작19.12.11 14:22 종료19.12.14 14:22
  3. 강릉의 명물 초당/안목 커피빵

    참여26 회 시작19.12.10 11:21 종료19.12.17 11:21

(주)에스아이알소프트 (06253) 서울특별시 강남구 도곡로1길 14, 6층 624호 (역삼동, 삼일프라자) 대표메일:admin@sir.kr
사업자등록번호:217-81-36347 대표:홍석명 통신판매업신고번호:2014-서울강남-02098호 개인정보보호책임자:이총

© SIRSOFT