닫기
도커 레지스트리 만들기

도커 레지스트리 만들기

spike
May 21, 2020
TECH

읽기 전에

아래의 조건을 만족한다고 가정하고 진행합니다.

  • 유닉스 계열 운영체제다.
  • 도커가 설치되어 있다.
  • docker-compose도 설치되어 있다.
  • 도메인의 소유자다.
  • 서버로 nginx를 사용한다.

도커 레지스트리, 왜 필요한가

도커의 강점 중 하나는 다른 사람이 만들어놓은 이미지를 도커 허브에서 언제든지 받을 수 있다는 점입니다. 그런데 도커 허브는 퍼블릭 저장소는 제한 없이 제공하지만 프라이빗은 그렇지 않습니다. 만약 회사에서 사용하는 이미지를 서버에 저장하고 싶을때 어떻게 해야 할까요?

  1. 이미지 자체를 백업한다.
  2. 클라우드에 레지스트리를 만든다.
  3. 온 프레미스에 레지스트리를 만든다.

첫번째 경우를 살펴보죠. ‘도커도 어딘가에는 이미지를 파일 시스템에 저장할테니 그걸 백업하는게 어떨까?’라는 무식한 방법이 있습니다. 보통 도커는 리눅스 기준 /var/lib/docker/에 데이터를 저장합니다.

아래 명령으로 컨테이너 레이어를 직접 볼수도 있습니다.

$ sudo ls /var/lib/docker/containers
1a174fc216cccf18ec7d4fe14e008e30130b11ede0f0f94a87982e310cf2e765
1e7264576d78a3134fbaf7829bc24b1d96017cf2bc046b7cd8b08b5775c33d0c
38fa94212a419a082e6a6b87a8e2ec4a44dd327d7069b85892a707e3fc818544
c36785c423ec7e0422b2af7364a7ba4da6146cbba7981a0951fcc3fa0430c409
dcad7101795e4206e637d9358a818e5c32e13b349e62b00bf05cd5a4343ea513

그러므로 /var/lib/docker/를 통째로 백업하여 두고두고 개인 저장소로 만들어도 됩니다. 하지만 이러면 관리뿐만 아니라 사용하기도 불편합니다. 흠, 더 나은 방법은 없을까? 아래와 같은 방법은 좀 나을까요?

docker save my_image > my_image.tar

역시 좋은 생각이 아닙니다. 아무래도 도커 허브와 같은 레지스트리가 필요할 듯 합니다. 제일 간단한 방법은 클라우드 서비스를 이용하는 겁니다. 아마존의 경우 Elastic Container Registry를 제공합니다. 흔히 ECR이라고 하죠. 여러분이 AWS를 사용하고 있다면 이는 아주 좋은 선택일 것입니다. Elastic Container Service와 연동하기 매우 용이하기 때문이죠.

하지만 어떠한 이유로 개인 서버에만 이미지를 저장하고 싶을 수 있습니다. 이럴땐 직접 도커 레지스트리를 만들면 됩니다! 심지어 레지스트리 이미지도 있습니다! 그러면 이미지를 받고 실행만 하면 끝날까요?

Let’s get Let’s Encrypt SSL Certificates

불행히도 도커 레지스트리는 HTTPS만 지원합니다. HTTP도 가능하나 설정 과정이 귀찮습니다. 보안도 신경쓰고 인터넷에서 접속이 가능케 하려면 역시 인증서를 받는게 좋습니다. SSL 인증서를 발급 받으려면 보통 돈을 내야 합니다. 하지만 우리에겐 무료로 인증서를 발급해주는 Let’s Encrypt가 있습니다. 그리고 이 과정조차 매우 간단하게 해주는 certbot도 있죠! 다음 명령어로 certbot-auto를 받읍시다.

$ wget https://dl.eff.org/certbot-auto
--2019-08-21 17:22:02--  https://dl.eff.org/certbot-auto
Resolving dl.eff.org (dl.eff.org)... 151.101.0.201, 151.101.64.201, 151.101.128.201, ...
Connecting to dl.eff.org (dl.eff.org)|151.101.0.201|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 68689 (67K) [application/octet-stream]
Saving to: 'certbot-auto'  
certbot-auto      100%[==================================>]  67.08K   259KB/s    in 0.3s  
2019-08-21 17:22:03 (259 KB/s) - 'certbot-auto' saved [68689/68689]

어? 데비안 계열의 apt나 맥의 brew 같은 패키지 매니저로도 받을수 있지 않나요? 다른건 몰라도 저는 apt를 굉장히 싫어합니다. 서버가 오래되고 관리하다 보면 언젠가 터지는 종속성 문제 때문입니다. 해결도 쉽지 않죠.

어쨌든 certbot-auto를 받았으면 다음의 명령으로 실행권한을 주고, 명령어로 등록합시다.

chmod +x certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto

이제 certbot-auto를 사용할 수 있습니다. 다음 명령에서 registry.example.com은 자신의 도메인을, email@example.com은 자신의 이메일로 바꾸어 실행합니다.

$ certbot-auto certonly --standalone -d registry.example.com \
--preferred-challenges http \
--agree-tos -n -m email@example.com \
--keep-until-expiring  
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for registry.example.com
Waiting for verification...
Cleaning up challenges  
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/registry.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/registry.example.com/privkey.pem
   Your cert will expire on 2019-11-19. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"  
 - If you like Certbot, please consider supporting our work by:  
   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

이게 전부입니다. /etc/letsencrypt/live/에 방금 발급 받은 뜨끈한 인증서가 있습니다.

인증서 발급 트러블슈팅

인증서 발급 실패의 경우 대개 아래와 같은 문제가 대다수입니다. 만약 정상적으로 발급 받았다면 그냥 넘어가시면 됩니다.

이미 사용중인 포트 사용

에러 메세지 중에 아래의 내용이 있다면 현재 80번 포트를 다른 프로그램에서 사용하고 있어 Let’s Encrypt에서 도메인을 확인하지 못한다는 뜻입니다.

Problem binding to port 80: Could not bind to IPv4 or IPv6.

주로 nginx, apache 등 내부 서버를 사용하는 경우 발생하므로 잠시 껐다가 인증서를 발급 받고 다시 켜시면 됩니다.

서브도메인 미등록

CNAME 또는 A레코드를 등록하지 않아서 생기는 문제입니다.

Challenge failed for domain registry.example.com
​
IMPORTANT NOTES:
 - The following errors were reported by the server:
​
   Domain: registry.example.com
   Type:   connection
   Detail: dns :: DNS problem: NXDOMAIN looking up A for
   registry.example.com
​
   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address. Additionally, please check that
   your computer has a publicly routable IP address and that no
   firewalls are preventing the server from communicating with the
   client. If you're using the webroot plugin, you should also verify
   that you are serving files from the webroot path you provided.

당연히 자신의 도메인에 A레코드나 CNAME을 등록하면 해결됩니다.

SSL 적용하기

이제 발급 받은 인증서를 nginx에 적용합시다. registry.example.com라는 파일을 만듭니다. 여러분은 자신이 만든 도메인을 파일 이름으로 사용하시면 됩니다.

vi /etc/nginx/sites-enabled/registry.example.com

아래와 같이 기본적인 내용을 작성합니다.

# registry.example.com setting
server {
  # http -> https redirect setting
  listen 80;
  server_name registry.example.com;
  server_tokens off; ## Don't show the nginx version number, a security best practice
  return 301 https://$host$request_uri;
  access_log  /var/log/nginx/registry_access.log access;
  error_log   /var/log/nginx/registry_error.log;
}
server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name registry.example.com;
  # Certificate and key files location
  ssl_certificate            /etc/letsencrypt/live/registry.example.com/fullchain.pem;
  ssl_certificate_key        /etc/letsencrypt/live/registry.example.com/privkey.pem;
  client_max_body_size       2048M; # Change this to the max file size you want to allow
  location / {
    proxy_set_header  Host              $http_host;   # required for docker client's sake
    proxy_set_header  X-Real-IP         $remote_addr; # pass on real client's IP
    proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header  X-Forwarded-Proto $scheme;
    proxy_read_timeout                  900;
    proxy_pass        http://localhost:5000;
  }
}

반드시 위와 같을 필요는 없습니다. 상황에 맞게 설정을 하는게 가장 좋습니다. 단, 주의하실 점은 proxy_pass의 값을 아래에서 등록할 레지스트리의 주소를 입력해야 합니다. 위 값은 같은 머신에서 도커 레지스트리의 기본 포트 값을 적용했을 경우입니다.

드디어 레지스트리 만들기

이제 도커 레지스트리를 만듭시다. 저는 서비스를 하나만 추가하더라도 별도의 docker-compose.yml을 만들어 관리하는 걸 선호합니다.

mkdir -p registry/auth && cd registry
vi docker-compose.yml

auth 디렉토리는 나중에 접근을 제어하기 위해 필요합니다. 일단 아래의 내용을 작성합니다.

registry:
  restart: always
  image: registry:2
  container_name: registry
  ports:
    - 5000:5000
  environment:
    REGISTRY_AUTH: htpasswd
    REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
    REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
  volumes:
    - ./auth:/auth

나중에 레지스트리 접근 제어를 위해 htpasswd를 사용합니다. 작성을 끝냈으면 이제 빌드합니다.

docker-compose up -d

축하합니다! 이제 여러분만의 도커 레지스트리가 생겼습니다. 서비스가 제대로 올라갔는지 확인해 봅시다.

$ docker-compose ps
  Name                Command               State           Ports
--------------------------------------------------------------------------
registry   /entrypoint.sh /etc/docker ...   Up      0.0.0.0:5000->5000/tcp
​
$ curl https://registry.example.com/v2/_catalog
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"registry","Class":"","Name":"catalog","Action":"*"}]}]}

접근제어를 위해 인증 옵션을 주었기 때문에 위와 같이 출력되면 정상적으로 서비스가 올라간 겁니다.

레지스트리 접근 제어하기

앞서 묻지도 따지지도 않고 레지스트리에 권한을 요구하도록 했습니다. 사설 레지스트리인데 아무나 접근하면 안되기 때문입니다. 그럴 경우는 없다고 생각하지만, 인증을 원치 않으면 docker-compose.yml을 다음과 같이 작성하면 됩니다.

registry:
  restart: always
  image: registry:2
  container_name: registry
  ports:
    - 5000:5000

우리는 인증을 사용할 것이기 때문에 이제 사용자를 추가해야 합니다.

$ docker run --rm --entrypoint htpasswd registry:2 -Bbn user1 1q2w3e4r >> auth/htpasswd
$ cat auth/htpasswd
user1:$2y$05$DjCZOMqHQ0yE1aV6ydFf2eMb3nn5J1DQCoeYG5cKHjXdXU4SmfjUy

user1과 1q2w3e4r은 원하는 아이디와 비밀번호를 입력하면 됩니다. 정상적으로 동작하는지 확인합시다.

$ docker login registry.example.com
Username: user1
Password:
WARNING! Your password will be stored unencrypted in /root/snap/docker/384/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
​
Login Succeeded

진짜로 축하합니다! 드디어 레지스트리 설치와 작업이 끝났습니다!

레지스트리 사용하기

직접 설치했지만 도커 허브와 사용법이 다르지 않습니다.

푸쉬하기

푸쉬를 하기 위해 일단 alpine 이미지를 도커 허브에서 받습니다.

$ docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
9d48c3bd43c5: Pull complete
Digest: sha256:72c42ed48c3a2db31b7dafe17d275b634664a708d901ec9fd57b1529280f01fb
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

여기서 주의해야 할 점이 있는데 푸쉬할 이미지의 이름을 바꾸어 줘야 합니다.

$ docker tag alpine registry.example.com/alipine
$ docker ps
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
alpine                           latest              961769676411        33 hours ago        5.58MB
registry.example.com/alipine     latest              961769676411        33 hours ago        5.58MB

위와 같이 반드시 도메인/이미지으로 변경해야 합니다. 도커 허브에서 개인저장소에 푸쉬 할 경우 아이디/이미지처럼 되는 것과 같은 이치입니다. 이제 로그인을 하고 푸쉬를 해봅시다!

$ docker login registry.example.com
Authenticating with existing credentials...
Login Succeeded
$ docker push registry.example.com/alipine
The push refers to repository [registry.example.com/alipine]
03901b4a2ea8: Pushed
latest: digest: sha256:acd3ca9941a85e8ed16515bfc5328e4e2f8c128caa72959a58a127b7801ee01f size: 528

성공했습니다!

풀 받기

이제 풀 테스트를 해봅시다.

# 현재 저장되어 있는 이미지를 삭제합니다.
$ docker rmi registry.example.com/alipine
Untagged: registry.example.com/alipine:latest
Untagged: registry.example.com/alipine@sha256:acd3ca9941a85e8ed16515bfc5328e4e2f8c128caa72959a58a127b7801ee01f
​
$ docker pull registry.example.com/alipine
Using default tag: latest
latest: Pulling from alipine
Digest: sha256:acd3ca9941a85e8ed16515bfc5328e4e2f8c128caa72959a58a127b7801ee01f
Status: Downloaded newer image for registry.example.com/alipine:latest

또 성공했습니다!

결론

도커 레지스트리를 설치하고 HTTPS까지 설정하여 언제 어디서나 레지스트리를 이용할 수 있게 되었습니다. 문서 초반에도 설명했지만 클라우드를 이용하고 있다면 해당 클라우드의 레지스트리 서비스를 이용하는게 가장 좋습니다.

만약 도커 레지스트리를 입맛에 맞게 설정하려면 레지스트리 설정을 확인하세요. htpasswd가 아닌 다른 인증 방식을 사용하고 싶으면 레지스트리 인증에서 원하는 인증방식을 선택하세요.

참고

  • https://docs.docker.com/registry/deploying/
  • https://docs.docker.com/registry/spec/api/
  • https://computingforgeeks.com/how-to-setup-docker-private-registry-on-ubuntu-18-04-letsencrypt-ssl/
  • https://gitlab.com/gitlab-org/gitlab-ce/blob/master/lib/support/nginx/registry-ssl
닫기

개인정보 처리방침

<매드업>은 개인정보보호법에 따라 이용자의 개인정보 보호 및 권익을 보호하고 개인정보와 관련한 이용자의 고충을 원활하게 처리할 수 있도록 다음과 같은 처리방침을 두고 있습니다.

<매드업>은 회사는 개인정보처리방침을 개정하는 경우 웹사이트 공지사항(또는 개별공지)을 통하여 공지할 것입니다.

○ 본 방침은 2020년 1월 15일부터 시행됩니다.

개인정보의 처리 목적 <매드업>은 개인정보를 다음의 목적을 위해 처리합니다. 처리한 개인정보는 다음의 목적 이외의 용도로는 사용되지 않으며 이용 목적이 변경될 시에는 사전동의를 구할 예정입니다.

가. 홈페이지 회원가입 및 관리 회원 가입의사 확인, 회원제 서비스 제공에 따른 본인 식별·인증, 회원자격 유지·관리, 제한적 본인확인제 시행에 따른 본인확인, 서비스 부정이용 방지, 만14세 미만 아동 개인정보 수집 시 법정대리인 동의 여부 확인, 각종 고지·통지, 고충처리, 분쟁 조정을 위한 기록 보존 등을 목적으로 개인정보를 처리합니다.

나. 민원사무 처리 민원인의 신원 확인, 민원사항 확인, 사실조사를 위한 연락·통지, 처리결과 통보 등을 목적으로 개인정보를 처리합니다.

다. 재화 또는 서비스 제공 물품배송, 서비스 제공, 청구서 발송, 콘텐츠 제공, 맞춤 서비스 제공, 본인인증, 연령인증, 요금결제·정산 등을 목적으로 개인정보를 처리합니다.

라. 마케팅 및 광고에의 활용 신규 서비스(제품) 개발 및 맞춤 서비스 제공, 이벤트 및 광고성 정보 제공 및 참여기회 제공 , 인구통계학적 특성에 따른 서비스 제공 및 광고 게재 , 서비스의 유효성 확인, 접속빈도 파악 또는 회원의 서비스 이용에 대한 통계 등을 목적으로 개인정보를 처리합니다.

 

 

개인정보 파일 현황

가. 개인정보 파일명 : 개인정보 처리방침

개인정보 항목 : 이메일, 휴대전화번호, 비밀번호, 이름, 업체명, 제목, 광고 예산, 내용, 사업자 등록 번호, 신용카드정보, 은행계좌정보, 예금주, 생년월일, 서비스 이용 기록, 접속 로그, 쿠키, 접속 IP 정보, 결제기록

수집방법 : 홈페이지, 계약서

보유근거 : 홈페이지 회원정보 수집 등에 관한 기록

보유기간 : 5년

관련법령 : 대금결제 및 재화 등의 공급에 관한 기록 : 5년

개인정보의 처리 및 보유 기간 ① <매드업>은 법령에 따른 개인정보 보유·이용기간 또는 정보주체로부터 개인정보를 수집 시에 동의 받은 개인정보 보유,이용기간 내에서 개인정보를 처리,보유합니다. ② 각각의 개인정보 처리 및 보유 기간은 다음과 같습니다.

 

가. <홈페이지 회원가입 및 관리> <홈페이지 회원가입 및 관리>와 관련한 개인정보는 수집.이용에 관한 동의일로부터<5년>까지 위 이용목적을 위하여 보유.이용됩니다.

보유근거 : 홈페이지 회원정보 수집 등에 관한 기록

관련법령 : 대금결제 및 재화 등의 공급에 관한 기록 : 5년

예외사유 :

 

나. <재화 또는 서비스 제공> <재화 또는 서비스 제공>와 관련한 개인정보는 수집.이용에 관한 동의일로부터<5년>까지 위 이용목적을 위하여 보유.이용됩니다.

보유근거 : 계약 또는 청약철회 등에 관한 기록

관련법령 : 계약 또는 청약철회 등에 관한 기록 : 5년

예외사유 :

 

다. <마케팅 및 광고에의 활용> <마케팅 및 광고에의 활용>와 관련한 개인정보는 수집.이용에 관한 동의일로부터<3년>까지 위 이용목적을 위하여 보유.이용됩니다.

보유근거 : 전자상거래등에서의 소비자보호에 관한 법률

관련법령 : 소비자의 불만 또는 분쟁처리에 관한 기록 : 3년

예외사유 :

 

 

정보 주체와 법정대리인의 권리·의무 및 그 행사방법 이용자는 개인정보주체로써 다음과 같은 권리를 행사할 수 있습니다.

① 정보주체는 매드업에 대해 언제든지 개인정보 열람,정정,삭제,처리 정지 요구 등의 권리를 행사할 수 있습니다.

② 제1항에 따른 권리 행사는 매드업에 대해 개인정보 보호법 시행령 제41조제1항에 따라 서면, 전자우편, 모사전송(FAX) 등을 통하여 하실 수 있으며 매드업은 이에 대해 지체 없이 조치하겠습니다.

③ 제1항에 따른 권리 행사는 정보주체의 법정대리인이나 위임을 받은 자 등 대리인을 통하여 하실 수 있습니다. 이 경우 개인정보 보호법 시행규칙 별지 제11호 서식에 따른 위임장을 제출하셔야 합니다.

④ 개인정보 열람 및 처리 정지 요구는 개인정보보호법 제35조 제5항, 제37조 제2항에 의하여 정보주체의 권리가 제한 될 수 있습니다.

⑤ 개인정보의 정정 및 삭제 요구는 다른 법령에서 그 개인정보가 수집 대상으로 명시되어 있는 경우에는 그 삭제를 요구할 수 없습니다.

⑥ 매드업은 정보주체 권리에 따른 열람의 요구, 정정·삭제의 요구, 처리 정지의 요구 시 열람 등 요구를 한 자가 본인이거나 정당한 대리인인지를 확인합니다.

 

 

처리하는 개인정보의 항목 작성

① <매드업>은 다음의 개인정보 항목을 처리하고 있습니다.

 

가. <홈페이지 문의 및 관리>

필수항목 : 업체명, 이메일, 제목, 연락처, 광고 예산, 내용, 휴대전화번호, 비밀번호, 이름, 서비스 이용 기록, 접속 로그, 쿠키, 접속 IP 정보

선택항목 : 프로필 사진

 

나. <재화 또는 서비스 제공>

필수항목 : 업체명, 이메일, 제목, 연락처, 광고 예산, 내용, 비밀번호, 이름, 회사명, 사업자 등록 번호, 신용카드정보, 은행계좌정보, 예금주, 생년월일, 서비스 이용 기록, 접속 로그, 쿠키, 접속 IP 정보, 결제기록

선택항목 :

 

다. <마케팅 및 광고에의 활용>

필수항목 : 업체명, 이메일, 제목, 연락처, 광고 예산, 내용, 휴대전화번호, 이름, 서비스 이용 기록, 접속 로그, 쿠키, 접속 IP 정보

선택항목 :

 

개인정보의 파기<매드업>은 원칙적으로 개인정보 처리 목적이 달성된 경우에는 지체없이 해당 개인정보를 파기합니다. 파기의 절차, 기한 및 방법은 다음과 같습니다.

 

 

파기절차

이용자가 입력한 정보는 목적 달성 후 별도의 DB에 옮겨져(종이의 경우 별도의 서류) 내부 방침 및 기타 관련 법령에 따라 일정기간 저장된 후 혹은 즉시 파기됩니다. 이 때, DB로 옮겨진 개인정보는 법률에 의한 경우가 아니고서는 다른 목적으로 이용되지 않습니다.

 

파기기한

이용자의 개인정보는 개인정보의 보유기간이 경과된 경우에는 보유기간의 종료일로부터 5일 이내에, 개인정보의 처리 목적 달성, 해당 서비스의 폐지, 사업의 종료 등 그 개인정보가 불필요하게 되었을 때에는 개인정보의 처리가 불필요한 것으로 인정되는 날로부터 5일 이내에 그 개인정보를 파기합니다.

파기방법

전자적 파일 형태의 정보는 기록을 재생할 수 없는 기술적 방법을 사용합니다. 종이에 출력된 개인정보는 분쇄기로 분쇄하거나 소각을 통하여 파기합니다.

 

개인정보 자동 수집 장치의 설치•운영 및 거부에 관한 사항

① 매드업은 개별적인 맞춤서비스를 제공하기 위해 이용 정보를 저장하고 수시로 불러오는 ‘쿠키(cookie)’를 사용합니다.

② 쿠키는 웹사이트를 운영하는데 이용되는 서버(http)가 이용자의 컴퓨터 브라우저에게 보내는 소량의 정보이며 이용자들의 PC 컴퓨터 내의 하드디스크에 저장되기도 합니다.

가. 쿠키의 사용 목적 : 이용자가 방문한 각 서비스와 웹 사이트들에 대한 방문 및 이용형태, 인기 검색어, 보안접속 여부, 등을 파악하여 이용자에게 최적화된 정보 제공을 위해 사용됩니다.

나. 쿠키의 설치•운영 및 거부 : 웹브라우저 상단의 도구>인터넷 옵션>개인정보 메뉴의 옵션 설정을 통해 쿠키 저장을 거부 할 수 있습니다.

다. 쿠키 저장을 거부할 경우 맞춤형 서비스 이용에 어려움이 발생할 수 있습니다.

 

 

개인정보 보호책임자 작성

① 매드업은 개인정보 처리에 관한 업무를 총괄해서 책임지고, 개인정보 처리와 관련한 정보주체의 불만처리 및 피해구제 등을 위하여 아래와 같이 개인정보 보호책임자를 지정하고 있습니다.

 

▶ 개인정보 보호책임자

성명 : 강남석

직책 : CFO

직급 : CFO

연락처 : 02-1522-1060, contact@madup.com

※ 개인정보 보호 담당부서로 연결됩니다.

 

▶ 개인정보 보호 담당부서

부서명 : General Affairs Team

담당자 : 민상준

연락처 : 02-1522-1060, contact@madup.com

 

② 정보 주체께서는 매드업의 서비스(또는 사업)을 이용하시면서 발생한 모든 개인정보 보호 관련 문의, 불만처리, 피해구제 등에 관한 사항을 개인정보 보호책임자 및 담당부서로 문의하실 수 있습니다. 매드업은 정보주체의 문의에 대해 지체 없이 답변 및 처리해드릴 것입니다.

 

 

개인정보 처리방침 변경

① 이 개인정보처리방침은 시행일로부터 적용되며, 법령 및 방침에 따른 변경 내용의 추가, 삭제 및 정정이 있는 경우에는 변경사항의 시행 7일 전부터 공지사항을 통하여 고지할 것입니다.

 

 

개인정보의 안전성 확보 조치 <매드업>은 개인정보보호법 제29조에 따라 다음과 같이 안전성 확보에 필요한 기술적/관리적 및 물리적 조치를 하고 있습니다.

가. 정기적인 자체 감사 실시 개인정보 취급 관련 안정성 확보를 위해 정기적(분기 1회)으로 자체 감사를 실시하고 있습니다.

나. 개인정보 취급 직원의 최소화 및 교육 개인정보를 취급하는 직원을 지정하고 담당자에 한정시켜 최소화 하여 개인정보를 관리하는 대책을 시행하고 있습니다.

다. 내부관리계획의 수립 및 시행 개인정보의 안전한 처리를 위하여 내부관리계획을 수립하고 시행하고 있습니다.

라. 해킹 등에 대비한 기술적 대책 <매드업>은 해킹이나 컴퓨터 바이러스 등에 의한 개인정보 유출 및 훼손을 막기 위하여 보안프로그램을 설치하고 주기적인 갱신·점검을 하며 외부로부터 접근이 통제된 구역에 시스템을 설치하고 기술적/물리적으로 감시 및 차단하고 있습니다.

마. 개인정보의 암호화 이용자의 개인정보는 비밀번호는 암호화 되어 저장 및 관리되고 있어, 본인만이 알 수 있으며 중요한 데이터는 파일 및 전송 데이터를 암호화 하거나 파일 잠금 기능을 사용하는 등의 별도 보안기능을 사용하고 있습니다.

바. 접속 기록의 보관 및 위변조 방지 개인정보처리시스템에 접속한 기록을 최소 6개월 이상 보관, 관리하고 있으며, 접속 기록이 위변조 및 도난, 분실되지 않도록 보안기능 사용하고 있습니다.

사. 개인정보에 대한 접근 제한 개인정보를 처리하는 데이터베이스시스템에 대한 접근 권한의 부여,변경,말소를 통하여 개인정보에 대한 접근통제를 위하여 필요한 조치를 하고 있으며 침입차단시스템을 이용하여 외부로부터의 무단 접근을 통제하고 있습니다.

아. 문서 보안을 위한 잠금 장치 사용 개인정보가 포함된 서류, 보조저장매체 등을 잠금 장치가 있는 안전한 장소에 보관하고 있습니다.

자. 비인가자에 대한 출입 통제 개인정보를 보관하고 있는 물리적 보관 장소를 별도로 두고 이에 대해 출입통제 절차를 수립, 운영하고 있습니다.