Docker 개인 등록 센터 인증

주: 원문 작성 자 는 Alex Ianchici 이 고, 원문 주 소 는 Docker private registry authentication 입 니 다.
안전 은 이미 우리 의 생활 에 융합 되 었 다.우 리 는 문 을 잠 그 고 비밀 번 호 를 사용 하여 우리 의 은행 정 보 를 보호 하지만, 일반적으로 비밀 번 호 는 이렇게 복잡 해서 우 리 는 그것 을 잊 기 쉽다.상식 으로 시스템 의 안전 을 보호 하 는 것 은 좋 은 실천 이다.이것 은 정말 쉽게 나타난다. 왜냐하면 이것 은 내부 시스템 이기 때문에 신분 인증 과 안전 전송 을 사용 할 필요 가 없 지만 현재 우리 의 원 격 작업 시대 에 내부 네트워크 는 매우 광범 위 할 수 있다.
이 점 을 고려 하여 우 리 는 우리 가 유지 하 는 여러 가지 시스템 을 심사 하 는 데 시간 을 들 였 고 이번 주 에 나 는 우리 의 개인 Docker 등록 센터 에 신분 인증 을 추가 하 는 목 표를 설정 했다.Docker 등록 에 인증 방법 이 없다 는 것 을 알 고 있 을 지도 모른다.그래서 우리 가 초기 방안 을 결정 한 것 은 우리 의 미 러 창고 앞 에 신분 인증 대 리 를 추가 하 는 것 이다.저희 사례 에서 SSL 을 통 해 Nginx 를 사용 하고 내부 인증 API 를 추가 하기 로 했 습 니 다.
이 해결 방안 의 몇 가지 장점:
  • 우리 내부 의 인증 API
  • 를 사용 할 수 있 습 니 다.
  • 다른 시스템 에 신분 인증 을 중복 사용 할 수 있다
  • Docker 용 기 를 통 해 실현 할 수 있 습 니 다 (우리 가 사용 하 는 용기 의 수량 은 3 개 이하)
  • 간단 한 인증 서비스 와 Nginx 용 기 를 함께 놓 으 면 github 에서 사용 가능 한 버 전 을 가 져 올 수 있 습 니 다 (https://registry.hub.docker.com/u/opendns)。
    간단 한 기초 인증 서비스
    Nginx 프 록 시 용기 의 참고 로 저 희 는 NodeJS 를 사용 하여 인증 API 를 구축 하여 기본 인증 서 비 스 를 쉽게 만 들 었 습 니 다.우리 가 해 야 할 일 은 정말 간단 한 server. js 를 만 드 는 것 입 니 다. htpasswd utility 를 사용 하여 자격증 파일 을 만 들 고 Docker 용기 에 봉인 하 는 것 입 니 다. 우 리 는 다음 과 같은 Dockerfile 을 만 들 수 있 습 니 다.
    FROM google/nodejs 
    ADD . /app 
    WORKDIR /app 
    RUN npm install http-auth 
    EXPOSE 8000 
    ENV NODE_PATH /data/node_modules/ 
    CMD ["node", "server.js"]
    

    그리고 우 리 는 우리 의 서 비 스 를 테스트 하고 배치 합 니 다.
    ubuntu@trusty-64:/basic-auth# docker build -t opendns/basic-auth-service . 
    
    ubuntu@trusty-64:/basic-auth# docker run --name simple-auth opendns/basic-auth-service 
    
    ubuntu@trusty-64:/basic-auth# docker inspect --format '{{ .NetworkSettings.IPAddress }}' simple-auth 
    172.17.0.40 
    
    ubuntu@trusty-64:/basic-auth# curl 172.17.0.40:8000 
    401 Unauthorized 
    
    ubuntu@trusty-64:/basic-auth# curl -u testuser:testpassword 172.17.0.40:8000 
    User authenticated successfully
    

    기본 인증 서비스의 모든 예제 코드 를 찾 을 수 있 습 니 다. 사용 가능 한 용 기 는 여기에 있 습 니 다.
    Nginx 인증 에이전트
    Nginx 에이전트 의 핵심 부분 은 설정 파일 입 니 다.
    # define an /auth section to send the request to an authentication service 
    
    location = /auth { 
        proxy_pass {{auth_backend}}; 
        proxy_pass_request_body off; 
        proxy_set_header Content-Length ""; 
        proxy_set_header X-Original-URI $request_uri;
        proxy_set_header X-Docker-Token ""; 
    } 
    
    # use the auth_request directive to redirect all requests to the /auth section above 
    
    location / { 
        proxy_pass {{backend}}; 
        auth_request /auth; 
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 
        proxy_buffering off; 
    }
    

    http 사용auth_request 모듈 에서 사용 자 를 보 내 고 proxy 사용pass 명령 전송 요청 은 간단 한 신분 인증 서비스 처리 로 200 또는 401 로 되 돌아 갑 니 다.401 권한 수여 응답 은 Docker 클 라 이언 트 가 기본 인증 을 사용 하 는 증빙 에 응답 하도록 촉발 합 니 다.인증서 가 수락 되면 API 는 200 으로 돌아 갑 니 다.Nginx 는 개인 등록 센터 에 요청 을 보 내 서 이 두 용 기 를 함께 놓 을 수 있 습 니 다.
    ubuntu@trusty-64:/nginx-auth-proxy# docker run -d --name hello-world hello-world  # run a simple web server that prints out “Hello world” 
    
    ubuntu@trusty-64:/nginx-auth-proxy# docker inspect --format '{{ .NetworkSettings.IPAddress }}' hello-world 
    172.17.0.41 
    
    ubuntu@trusty-64:/nginx-auth-proxy# docker run -d -e AUTH_BACKEND=http://172.17.0.40:8000 -e BACKEND=http://172.17.0.41:8081 -p 0.0.0.0:8080:80 nginx-auth 
    
    ubuntu@trusty-64:/nginx-auth-proxy# curl 0.0.0.0:8080 
     
    401 Authorization Required 
     
    

    401 Authorization Required


    nginx/1.6.1
    ubuntu@trusty-64:/nginx-auth-proxy# curl -u testuser:testpassword 0.0.0.0:8080 Hello world

    유일 하 게 남 은 것 은 이 용기 에 SSL 인증 서 를 추가 하면 잘 놀 수 있다 는 것 이다.Nginx 인증 에이전트 의 코드 를 찾 을 수 있 습 니 다. 사용 가능 한 용기 입 니 다.이 방안 을 사용 하려 면 몇 가지 주의 가 필요 합 니 다.
  • 기초 인증 사용 은 모든 요청 이 인증 API
  • 에 접근 한 다 는 것 을 의미한다.
  • 기본 인증 은 연결 을 SSL 로 암호 화하 지 않 는 한 인증 서 를 보 내 는 데 지장 을 받 지 않 는 다 는 것 을 의미 합 니 다.주의: SSL 없 이 기본 인증 서 를 보 내지 마 십시오.Docker 의 클 라 이언 트 와 등록 센터 는 HTTP 방식 의 기본 인증 을 받 지 않 습 니 다
  • 사유 등록 센터 를 방문 하려 면 신분 인증 대리 에 대한 요청 에 대해 일정한 제한 을 해 야 한다
  • 이 솔 루 션 의 또 다른 재 미 있 는 추가 적 인 영향 은 개인 등록 센터 에서 SSL 을 사용 하면 모든 pull 요청 시간 이 줄 어 든 다 는 것 이다. 예 를 들 어 등록 센터 의 URL 에 포트 를 지정 하지 않 으 면 80 포트 에 연결 하기 전에 클 라 이언 트 가 먼저 443 포트 를 초기 화 하려 고 시도 하 는 것 이다.

    좋은 웹페이지 즐겨찾기