1.5 OS 버킷 생성 및 정책 설정

1.5 OS 버킷 생성 및 정책 설정

앞에서도 설명했지만 Oracle Cloud의 Data Lake는 Object Storage입니다. OCI Object Storage는 파일의 포멧과 크기에 제약없이 고가용성 데이터 저장소 이입니다. OCI Object Storage의 특징을 다음과 같이 요약할 수 있습니다.

구분 설명
Object Storage의 데이터 묶음 단위 Bucket
Compartment 별 최대 Bucket 수 1,000 개
Bucket 당 저장 가능한 최대 파일 수 제약 없음
최대 파일(Object) 사이즈 10 TB
- 최대 객체 Part Size

OCI Object Storage에 데이터를 저장하기 위해서는 bucket을 만들어야 하고, 지정한 Bucket에 “OCI CLI“를 이용하여 파일을 업로드하거나 Oracl ADW 인스턴스가 OCI Object Storage의 Bucket에 파일을 쓰거나 읽기 위해서는 보안 정책(Policy)를 설정해야 합니다.

OCI Object Storage에 Bucket을 만들고, 보안 정책을 설정해보겠습니다.

Bucket 만들기

OCI Object Storage에 이름이 “hol“인 Bucket을 만들어 보겠습니다. OCI Compute 관리 페이지에서 다음 메뉴로 “Object Storage” 관리 페이지로 이동합니다.

  • 메뉴 경로: MENU -> Object Storage -> Object Storage

  • Object Storage 관리 페이지로 이동

“Object Storage” 관리 페이지에서 Compartment에 “adw_hol_cmpt“를 선택하고 “Create Bucket“을 클릭합니다.

  • Bucket 생성 요청

Bucket Name“에 “hol“을 입력하고 “Create Bucket“을 클릭합니다.

  • Bucket 생성

hol” 버킷이 만들어지면, 다음 그림처럼 “Object Storage” 관리 페이지에 “hol” 버킷이 출력됩니다.

  • “Object Storage” 관리 페이지의 Bucket 목록

이제 “hol” 버킷을 만들었습니다. “hol” 버킷에 접근 정책을 설정해 보겠습니다.

자원 정책(Policies) 설정

OCI Object Storage의 hol 버킷의 접근 정책을 만들어 보겠습니다. 다음과 같은 정책을 만들 것입니다.

  • Policy 개요
    • adw_hol_cpmt 컴파트먼트의 hol 버킷에 포함된 object에 대한 읽기 권한을 adw_hol_group에 부여
    • adw_hol_cpmt 컴파트먼트의 hol 버킷에 포함된 객체의 관리 권한을 adw_hol_group에 부여
      • 관리 권한: 객체 생성, 객체 추가

이 정책은 다음과 같이 정의 됩니다.

policy 번호 Policy Statement 설명
1 Allow group adw_hol_group to read objects in compartment adw_hol_cpmt where target.bucket.name=‘hol’ adw_hol_group에 hol 버킷의 객체 읽기 권한 부여
2 Allow group adw_hol_group to manage objects in compartment adw_hol_cpmt where all {target.bucket.name=‘hol’, any {request.permission=‘OBJECT_CREATE’, request.permission=‘OBJECT_INSPECT’}} adw_hol_group에 hol 버킷의 객체 쓰기 권한 부여

“OCI Policy” 관리 페이지는 OCI Compute 관리 페이지에서 다음 메뉴로 이동합니다.

  • 메뉴 경로: MENU -> Identity -> Policies

  • “OCI Policy” 관리 페이지 이동

“OCI Policy” 관리 페이지에서 compartment를 “adw_hol_cmpt“를 선택하고 “Create Policy_“를 클릭하여 policy를 만들 수 있습니다.

  • OCI Policy 추가 요청

앞에서 정의한 정책을 다음과 같이 추가할 수 있습니다. 하나의 Policy는 여러개의 Policy Statement를 포함할 수 있습니다.

  • Name: hol_from_adw_policy
  • Description: policy of adw hands-on
  • Statements
    • Allow group adw_hol_group to read objects in compartment adw_hol_cpmt where target.bucket.name=‘hol’
    • Allow group adw_hol_group to manage objects in compartment adw_hol_cpmt where all {target.bucket.name=‘hol’, any {request.permission=‘OBJECT_CREATE’, request.permission=‘OBJECT_INSPECT’}}

  • Policy 생성

정책이 정상적으로 만들어지면 다음과 같이 정책 목록이 출력됩니다.

  • Policy 목록

OCI CLI를 이용한 파일 업로드

이제 Object Storage에 Bucket과 Policy를 만들었습니다. Policy이 잘 설정되어 있는지 확인하기 위하여 파일을 업로드해 보겠습니다. 우선 데모에 사용할 파일은 다음 URL에서 다운로드 받을수 있습니다.

다음은 wget으로 위 링크의 파일을 다운고 크기를 확인하는 콘솔 이미지입니다.

  • 파일 다운로드 및 확인

다음 OCI CLI 명령으로 위에서 다운로드 받은 파일을 OCI Object Storage의 “hol” 버킷에 업로드 할 수 있습니다.

> oci os object put --namespace twingirls \
                  --name dataset.zip --bucket-name hol \
                  --file ./datafiles_for_sh_tables.zip

위 명령에서 “\” 문자는 맥과 리눅스 콘솔에서 긴 명령을 입력할 때, 인위적으로 다음줄로 넘기지만 아직 현재 입력이 종료되지 않음을 표시하는 키워드 입니다. 위 명령은 콘솔에서 한줄로 처리됩니다. 위 명령의 각 옵션은 다음과 같은 의미를 갖습니다.

옵션 의미 설정값
–namespace 현재 Oracle Cloud의 tenancy 명 입력 twingirls
–file OCI Object Storage에 업로드할 로컬 파일 ./datafiles_for_sh_tables.zip
–name OCI Object Storage에 저장되는 파일명 dataset.zip
–bucket-name OCI Object Storage 대상 버킷명 hol

파일을 업로드하는 위 명령은 다음과 같이 처리됩니다.

  • OCI CLI 파일 업로드 명령

명령이 실행되면 다음과 같은 JSON 결과를 출력합니다.

Uploading object  [####################################]  100%
{
  "etag": "7E27A4B5A138B7ECE0530255C20ABC40",
  "last-modified": "Sat, 29 Dec 2018 10:41:14 GMT",
  "opc-content-md5": "o3oUIGEYreeEsTIckh4dNA=="
}

위 출력과 같은 형식의 로그가 출력되면 파일은 정상적으로 올라간 상태입니다. OCI Object Storage에 업로드된 파일은 OCI Object Storage 관리 페이지의 hol 버킷 상세 페이지에서 확인할수 있습니다.

  • 메뉴 경로: OCI Compute -> Menu -> Object Storage -> Object Storage -> hol 클릭

  • OCI Object Storage 관리 페이지에서 옵로드 파일 확인

OCI CLI 명령으로도 앞에서 업로드한 파일을 확인할 수 있습니다.

oci os object list --namespace twingirls --bucket-name hol \
                   --all --output table

위 명령에서 “\” 문자는 맥과 리눅스 콘솔에서 긴 명령을 입력할 때, 인위적으로 다음줄로 넘기지만 아직 현재 입력이 종료되지 않음을 표시하는 키워드 입니다. 위 명령은 콘솔에서 한줄로 처리됩니다. 위 명령의 각 옵션은 다음과 같은 의미를 갖습니다.

옵션 의미 설정값
–namespace 현재 Oracle Cloud의 tenancy 명 입력 twingirls
–bucket-name OCI Object Storage 대상 버킷명 hol
–all 모든 파일 출력 없음
–output 출력 포멧 table

이 명령의 실행 결과는 다음과 같이 출력됩니다.

  • OCI Object Storage의 hol 버킷에 포함된 파일 목록 출력

To the next ….

다음 문서에서는 OCI CLI로 OCI Object Storage에 파일을 업로드하는 몇 가지 명령이 예를 살펴보겠습니다.

Last updated on 21 Dec 2018 / Published on 21 Dec 2018
김태완 avatar
작성자: 김태완
1999년 부터 Java, Framework, Middleware, SOA, DB Replication, Cache, CEP, NoSQL, Big Data, Cloud를 키워드로 살아왔습니다. 현재는 빅데이터와 Machine Learning을 중점에 두고 있습니다.
E-mail: taewanme@gmail.com

Powered by http://taewan.kim