From T3_KR_KNU
Revision as of 07:23, 22 June 2021 by Hanbi (Talk | contribs) (토큰 생성)

Jump to: navigation, search

1 dCache에서 WebDav 프로토콜 및 마카롱 인증 사용하기

향후 GridFTP와 X509 인증을 대체하는 WebDav 프로토콜과 마카롱 인증에 대한 소개 문서입니다.

1.1 사전 작업

X509_USER_PROXY 변수가 있는지 확인하고 없다면 다음과 같이 만들어줍니다.

$ echo $X509_USER_PROXY
$ export X509_USER_PROXY=/tmp/x509up_u`id -u $USER`

프록시를 생성합니다. 마카롱 토큰을 발급받기 위해서는 여러기지 인증을 사용할 수 있지만 일단 지금은 X509_USER_PROXY로 부터 마카롱 토큰을 발급받겠습니다.

$ voms-proxy-init --voms cms  
or
$ voms-proxy-init --voms cms --valid 168:00 # 전송에 긴 시간이 소요될 것으로 예상이 된다면 프록시를 생성할때 유효기간을 충분히 늘려줘야 합니다.

1.2 마카롱 인증

1.2.1 권한

DOWNLOAD,UPLOAD,DELETE,MANAGE,LIST,READ_METADATA,UPDATE_METADATA

1.2.2 토큰의 유효기간

발급하는 토큰은 유효기간을 정할 수 있습니다. 오용을 방지하기 위해서 반드시 적절한 유효기간을 설정하기를 권장합니다.

ex) PT1H : 1시간 
    P14D : 14일

1.2.3 curl을 이용한 토큰 발급

$ curl -L --capath /etc/grid-security/certificates --cacert $X509_USER_PROXY -E $X509_USER_PROXY \
            -X POST -d '{"caveats": ["activity:DOWNLOAD,LIST"], "validity": "PT1H"}' \
            -H 'Content-Type: application/macaroon-request' \
            https://cluster142.knu.ac.kr:2880/cms/store/user/{CERN_ID}/test/
{
   "macaroon": "MDA0NmxvY2F0aW9uIE9wdGlvbmFsWy9wbm..............................................................",
    "uri": {
       "targetWithMacaroon": "https://cluster142.knu.ac.kr:2880/cms/store/user/dhhan/test/?authz=MDA0NmxvY2F0aW9uIE9wdGlvbm.....................................................",
       "baseWithMacaroon": "https://cluster142.knu.ac.kr:2880/?authz=MDA0NmxvY2F0aW9uIE9wdGlvbmFsWy9wbm..............................................................",
       "target": "https://cluster142.knu.ac.kr:2880/cms/store/user/{CERN_ID}/test/",
       "base": "https://cluster142.knu.ac.kr:2880/"
    }
}

1.2.4 get_macaroon을 이용한 토큰 발급

위의 curl을 이용한 예제와 동일한 조건의 토큰을 발급합니다.

$ get-macaroon --url https://cluster142.knu.ac.kr:2880/cms/store/user/{CERN_ID}/test/ --proxy --permissions DOWNLOAD,LIST --duration PT1H
Macaroon viewer: /u/cms/bin/view-macaroon
=== View deserialized macaroon ===
location Optional.empty
identifier t30MLP8h
cid iid:VOrX6iIR
cid id:?????;????,?????;{KNU_ID}
cid before:2021-06-22T07:40:15.030Z
cid root:/pnfs/knu.ac.kr/data
cid root:/cms/store/user/{CERN_ID}/test/
cid activity:DOWNLOAD,LIST
signature 32e877749bbb88a9a3e5812f42abab1c54f8ebac0c33c90dca02bf882295f96c
=== End deserialized macaroon ===


https://cluster142.knu.ac.kr:2880/?authz=MDAxY2xvY2F0aW9uIE9wdGlvbmFsLmVtcHR5C.........

접근할 수 있는 IP를 제한하는 조건을 추가할 수도 있습니다. 145.100.0.0/16 의 접근만 허용합니다.

$ get-macaroon --url https://cluster142.knu.ac.kr:2880/cms/store/user/{CERN_ID}/test/ --proxy --permissions DOWNLOAD,LIST --duration PT1H --ip 145.100.0.0/16
Macaroon viewer: /u/cms/bin/view-macaroon

1.2.5 view_macaroon을 이용한 토큰 정보 확인

마카롱 토큰의 유효기간과 정보를 확인합니다.

$ view-macaroon MDAxY2xvY2F0aW9uIE9wdGlvbmFsLm........
location Optional.empty
identifier t30MLP8h
cid iid:VOrX6iIR
cid id:?????;????,?????;{KNU_ID}
cid before:2021-06-22T07:40:15.030Z
cid root:/pnfs/knu.ac.kr/data
cid root:/cms/store/user/{CERN_ID}/test/
cid activity:DOWNLOAD,LIST
signature 32e877749bbb88a9a3e5812f42abab1c54f8ebac0c33c90dca02bf882295f96c

1.3 WebDav 프로토콜

1.3.1 WebDav 프로토콜 클라이언트 프로그램

이름 지원 권한 비고
웹브라우저 list, download firefox, chrome, etc
curl list, download, upload, del
rclone list, download, upload, del

1.3.2 웹브라우저를 이용하여 SE에서 파일 다운로드하기

https://cluster142.knu.ac.kr:2880/?authz=MDAxY2xvY2F0aW9uIE9wdGlvbmFsLmVtcHR5C.........
  • 웹브라우저를 열고 조금전에 발급 받은 링크를 복사해서 입력합니다.
  • Email 등으로 타인에게 링크를 전달함으로써 스토리지 엘리먼트의 연구 데이터를 쉽게 공유할 수 있습니다.
  • 따라서 토큰의 생성과 관리에 유의해야합니다. (특히 삭제나 쓰기 권한을 가지고 있는 토큰)

1.3.3 curl 사용법

1.3.4 rclone 사용법

1.3.4.1 토큰 생성

get-macaroon 으로 다음과 같이 토큰을 생성합니다.

get-macaroon --url https://cluster142.knu.ac.kr:2880/cms/store/user/{CERN_ID}/test/ --proxy --permissions DOWNLOAD,LIST --duration PT1H
1.3.4.2 rclone.conf

설정파일을 다음과 같이 만들어 줍니다.

$ cat rclone.conf 
[cluster142]
type = webdav
url = https://cluster142.knu.ac.kr:2880/
vendor = other
user =
pass =
bearer_token = MDAxY2xvY2F0aW9uIE9wdGlvbmFsLmVtcHR5CjAw.....................
1.3.4.3 ls & lsf
$ rclone --config=rclone.conf lsf cluster142:/
1.3.4.4 copy
$ rclone --config=rclone.conf copy cluster142:/test.transfer .

1.4 참고문서