From T3_KR_KNU
Jump to: navigation, search
(권한)
(dCache에서 WebDav 프로토콜 및 MACAROONS 인증 사용하기)
 
(59 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== dCache에서 WebDav 프로토콜 및 마카롱 인증 사용하기 ==
+
== dCache에서 WebDav 프로토콜 및 MACAROONS 인증 사용하기 ==
 +
 
 +
향후 GridFTP와 X509 인증을 대체하는 WebDav 프로토콜과 MACAROONS 인증에 대한 소개 문서입니다.
  
향후 GridFTP와 x507 그리드 인증을 대체하는 WebDav 프로토콜과 마카롱 인증에 대한 소개 문서입니다.
 
  
 
=== 사전 작업 ===
 
=== 사전 작업 ===
  
 
X509_USER_PROXY 변수가 있는지 확인하고 없다면 다음과 같이 만들어줍니다.
 
X509_USER_PROXY 변수가 있는지 확인하고 없다면 다음과 같이 만들어줍니다.
  echo $X509_USER_PROXY
+
  $ echo $X509_USER_PROXY
  export X509_USER_PROXY=/tmp/x509up_u`id -u $USER`
+
  $ export X509_USER_PROXY=/tmp/x509up_u`id -u $USER`
echo $X509_USER_PROXY
+
  
 
프록시를 생성합니다. 마카롱 토큰을 발급받기 위해서는 여러기지 인증을 사용할 수 있지만 일단 지금은 X509_USER_PROXY로 부터 마카롱 토큰을 발급받겠습니다.
 
프록시를 생성합니다. 마카롱 토큰을 발급받기 위해서는 여러기지 인증을 사용할 수 있지만 일단 지금은 X509_USER_PROXY로 부터 마카롱 토큰을 발급받겠습니다.
  voms-proxy-init --voms cms   
+
  $ voms-proxy-init --voms cms   
 
  or
 
  or
  voms-proxy-init --voms cms --valid 168:00 # 전송에 긴 시간이 소요될것으로 예상이 된다면 프록시를 생성할때 유효기간을 충분히 늘려줘야 합니다.
+
  $ voms-proxy-init --voms cms --valid 168:00 # 전송에 긴 시간이 소요될 것으로 예상이 된다면 프록시를 생성할때 유효기간을 충분히 늘려줘야 합니다.
  
 
=== 마카롱 인증 ===
 
=== 마카롱 인증 ===
Line 25: Line 25:
  
 
  ex) PT1H : 1시간  
 
  ex) PT1H : 1시간  
     P14D : 14일
+
     P02D : 2일
  
 
==== curl을 이용한 토큰 발급 ====
 
==== curl을 이용한 토큰 발급 ====
  
  curl -L --capath /etc/grid-security/certificates --cacert $X509_USER_PROXY -E $X509_USER_PROXY \
+
  $ curl -L --capath /etc/grid-security/certificates --cacert $X509_USER_PROXY -E $X509_USER_PROXY \
 
             -X POST -d '{"caveats": ["activity:DOWNLOAD,LIST"], "validity": "PT1H"}' \
 
             -X POST -d '{"caveats": ["activity:DOWNLOAD,LIST"], "validity": "PT1H"}' \
 
             -H 'Content-Type: application/macaroon-request' \
 
             -H 'Content-Type: application/macaroon-request' \
             https://cluster142.knu.ac.kr:2880/cms/store/user/{my_cern_id}/test/
+
             https://cluster142.knu.ac.kr:2880/cms/store/user/{CERN_ID}/test/
  
 
  {
 
  {
Line 39: Line 39:
 
         "targetWithMacaroon": "https://cluster142.knu.ac.kr:2880/cms/store/user/dhhan/test/?authz=MDA0NmxvY2F0aW9uIE9wdGlvbm.....................................................",
 
         "targetWithMacaroon": "https://cluster142.knu.ac.kr:2880/cms/store/user/dhhan/test/?authz=MDA0NmxvY2F0aW9uIE9wdGlvbm.....................................................",
 
         "baseWithMacaroon": "https://cluster142.knu.ac.kr:2880/?authz=MDA0NmxvY2F0aW9uIE9wdGlvbmFsWy9wbm..............................................................",
 
         "baseWithMacaroon": "https://cluster142.knu.ac.kr:2880/?authz=MDA0NmxvY2F0aW9uIE9wdGlvbmFsWy9wbm..............................................................",
         "target": "https://cluster142.knu.ac.kr:2880/cms/store/user/{my_cern_id}/test/",
+
         "target": "https://cluster142.knu.ac.kr:2880/cms/store/user/{CERN_ID}/test/",
 
         "base": "https://cluster142.knu.ac.kr:2880/"
 
         "base": "https://cluster142.knu.ac.kr:2880/"
 
     }
 
     }
Line 48: Line 48:
  
 
==== get_macaroon을 이용한 토큰 발급 ====
 
==== 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.........
 +
 +
* 경북대에서는 --chroot 옵션이 기본값이 되도록 get-macaroon를 수정하였습니다. 따라서 발급되는 마카롱 토큰은 --chroot 옵션이 적용된 상태로 발급됩니다. 이용에 유의하시기 바랍니다.
 +
* 접근할 수 있는 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
  
 
* 좀더 자세한 내용은 아래 링크를 참고하시기 바랍니다.
 
* 좀더 자세한 내용은 아래 링크를 참고하시기 바랍니다.
Line 54: Line 81:
  
 
==== view_macaroon을 이용한 토큰 정보 확인 ====
 
==== 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
  
 
* 좀더 자세한 내용은 아래 링크를 참고하시기 바랍니다.
 
* 좀더 자세한 내용은 아래 링크를 참고하시기 바랍니다.
Line 68: Line 109:
 
| list, download
 
| list, download
 
| firefox, chrome, etc
 
| firefox, chrome, etc
 
|- style="background:white; color:black"
 
| curl
 
| list, download, upload, del
 
|
 
  
 
|- style="background:white; color:black"
 
|- style="background:white; color:black"
 
| rclone
 
| rclone
| list, download, upload, del
+
| All
 
|  
 
|  
 
|}
 
|}
Line 82: Line 118:
 
==== 웹브라우저를 이용하여 SE에서 파일 다운로드하기 ====
 
==== 웹브라우저를 이용하여 SE에서 파일 다운로드하기 ====
  
==== curl 사용법 ====
+
https://cluster142.knu.ac.kr:2880/?authz=MDAxY2xvY2F0aW9uIE9wdGlvbmFsLmVtcHR5C.........
 +
 
 +
* 웹브라우저를 열고 조금전에 발급 받은 링크를 복사해서 입력합니다.
 +
* Email 등으로 타인에게 링크를 전달함으로써 스토리지 엘리먼트의 연구 데이터를 쉽게 공유할 수 있습니다.
 +
* 따라서 토큰의 생성과 관리에 유의해야합니다. (특히 삭제나 쓰기 권한을 가지고 있는 토큰)
  
 
==== rclone 사용법 ====
 
==== rclone 사용법 ====
  
 +
===== 토큰 생성  =====
 +
 +
get-macaroon 으로 다음과 같이 토큰을 생성합니다.
 +
 +
get-macaroon --url https://cluster142.knu.ac.kr:2880/cms/store/user/{CERN_ID}/test/ --proxy --permissions DOWNLOAD,LIST --duration PT1H
 +
 +
* 경북대에서는 --chroot 옵션이 기본값이 되도록 get-macaroon를 수정하였습니다. 따라서 발급되는 마카롱 토큰은 --chroot 옵션이 적용된 상태로 발급됩니다. 이용에 유의하시기 바랍니다.
 +
 +
===== rclone.conf =====
 +
 +
설정파일을 다음과 같이 만들어 줍니다.
 +
 +
$ cat rclone.conf
 +
[cluster142]
 +
type = webdav
 +
url = https://cluster142.knu.ac.kr:2880/
 +
vendor = other
 +
user =
 +
pass =
 +
bearer_token = MDAxY2xvY2F0aW9uIE9wdGlvbmFsLmVtcHR5CjAw.....................
 +
 +
===== ls & lsf =====
 +
 +
$ export RCLONE_NO_CHECK_CERTIFICATE=true
 +
$ rclone --config=rclone.conf lsf cluster142:/
 +
aaa
 +
bbb
 +
data/
 +
 +
* 다음 경로의 모든 파일과 디렉토리를 표시
 +
* https://cluster142.knu.ac.kr:2880/cms/store/user/{CERN_ID}/test/
 +
* dCache에 디렉토리를 생성하기 위해서는 토큰을 생성할때 LIST 권한을 추가해야 합니다.
 +
 +
$ rclone --config=rclone.conf ls cluster142:/
 +
        0 aaa
 +
        0 bbb
 +
        0 data/ccc
 +
 +
* 다음 경로와 그 아래의 모든 파일을 표시
 +
* https://cluster142.knu.ac.kr:2880/cms/store/user/{CERN_ID}/test/
 +
 +
===== copy =====
 +
 +
$ export RCLONE_NO_CHECK_CERTIFICATE=true
 +
$ rclone --config=rclone.conf copy cluster142:/test.transfer .
 +
 +
* Source: https://cluster142.knu.ac.kr:2880/cms/store/user/{CERN_ID}/test/test.transfer
 +
* Target: . (현재 디렉토리)
 +
* dCache에서 파일을 내려받기 위해서는 토큰을 생성할때 DOWNLOAD 권한을 추가해야 합니다.
 +
* dCache에 파일을 쓰기 위해서는 토큰을 생성할때 UPLOAD 권한을 추가해야 합니다.
 +
 +
===== delete & deletefile =====
 +
 +
* delete          해당경로의 파일들을 삭제합니다.
 +
* deletefile    해당 경로의 대상 파일을 삭제합니다.
 +
 +
* dCache에 파일을 삭제하기 위해서는 토큰을 생성할때 DELETE 권한을 추가해야 합니다.
 +
 +
===== mkdir =====
 +
 +
대상 디렉토리가 존재하지 않는다면 생성합니다.
 +
 +
$ rclone --config=rclone.conf mkdir cluster142:/data2
 +
$ rclone --config=rclone.conf lsf cluster142:/
 +
aaa
 +
bbb
 +
data/
 +
data2/
 +
 +
* 다음과 같이 디렉토리가 생성되었습니다.
 +
* https://cluster142.knu.ac.kr:2880/cms/store/user/{CERN_ID}/test/data2
 +
* dCache에 디렉토리를 생성하기 위해서는 토큰을 생성할때 UPLOAD 권한을 추가해야 합니다.
 +
 +
===== rmdir & rmdirs =====
 +
 +
* rmdir          해당 경로의 비어있는 디렉토리를 삭제합니다.
 +
* rmdirs        해당 경로 아래의 비어있는 디렉토리들을 삭제합니다.
 +
* dCache에 파일을 삭제하기 위해서는 토큰을 생성할때 DELETE 권한을 추가해야 합니다.
  
 
=== 참고문서 ===
 
=== 참고문서 ===
  
 +
* 마카롱 인증에 대한 좀더 자세한 내용은 아래 문서를 참고하세요.
 
* https://dcache.org/old/manuals/workshop-2018-05-28-DESY/macaroons.pdf
 
* https://dcache.org/old/manuals/workshop-2018-05-28-DESY/macaroons.pdf
 +
* rclone에 대한 좀더 자세한 사용방법이 궁금하다면 아래 링크를 참고하세요.
 +
* https://rclone.org

Latest revision as of 08:31, 6 December 2021

dCache에서 WebDav 프로토콜 및 MACAROONS 인증 사용하기

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


사전 작업

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 # 전송에 긴 시간이 소요될 것으로 예상이 된다면 프록시를 생성할때 유효기간을 충분히 늘려줘야 합니다.

마카롱 인증

권한

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

토큰의 유효기간

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

ex) PT1H : 1시간 
    P02D : 2일

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/"
    }
}

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.........
  • 경북대에서는 --chroot 옵션이 기본값이 되도록 get-macaroon를 수정하였습니다. 따라서 발급되는 마카롱 토큰은 --chroot 옵션이 적용된 상태로 발급됩니다. 이용에 유의하시기 바랍니다.
  • 접근할 수 있는 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

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

WebDav 프로토콜

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

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

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

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

rclone 사용법

토큰 생성

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

get-macaroon --url https://cluster142.knu.ac.kr:2880/cms/store/user/{CERN_ID}/test/ --proxy --permissions DOWNLOAD,LIST --duration PT1H
  • 경북대에서는 --chroot 옵션이 기본값이 되도록 get-macaroon를 수정하였습니다. 따라서 발급되는 마카롱 토큰은 --chroot 옵션이 적용된 상태로 발급됩니다. 이용에 유의하시기 바랍니다.
rclone.conf

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

$ cat rclone.conf 
[cluster142]
type = webdav
url = https://cluster142.knu.ac.kr:2880/
vendor = other
user =
pass =
bearer_token = MDAxY2xvY2F0aW9uIE9wdGlvbmFsLmVtcHR5CjAw.....................
ls & lsf
$ export RCLONE_NO_CHECK_CERTIFICATE=true
$ rclone --config=rclone.conf lsf cluster142:/
aaa
bbb
data/

$ rclone --config=rclone.conf ls cluster142:/
       0 aaa
       0 bbb
       0 data/ccc

copy
$ export RCLONE_NO_CHECK_CERTIFICATE=true
$ rclone --config=rclone.conf copy cluster142:/test.transfer .
delete & deletefile
  • delete 해당경로의 파일들을 삭제합니다.
  • deletefile 해당 경로의 대상 파일을 삭제합니다.
  • dCache에 파일을 삭제하기 위해서는 토큰을 생성할때 DELETE 권한을 추가해야 합니다.
mkdir

대상 디렉토리가 존재하지 않는다면 생성합니다.

$ rclone --config=rclone.conf mkdir cluster142:/data2
$ rclone --config=rclone.conf lsf cluster142:/
aaa
bbb
data/
data2/
rmdir & rmdirs
  • rmdir 해당 경로의 비어있는 디렉토리를 삭제합니다.
  • rmdirs 해당 경로 아래의 비어있는 디렉토리들을 삭제합니다.
  • dCache에 파일을 삭제하기 위해서는 토큰을 생성할때 DELETE 권한을 추가해야 합니다.

참고문서