Docker 개인 등록 센터 인증
4371 단어 대리nginxapidocker-registrydocker
안전 은 이미 우리 의 생활 에 융합 되 었 다.우 리 는 문 을 잠 그 고 비밀 번 호 를 사용 하여 우리 의 은행 정 보 를 보호 하지만, 일반적으로 비밀 번 호 는 이렇게 복잡 해서 우 리 는 그것 을 잊 기 쉽다.상식 으로 시스템 의 안전 을 보호 하 는 것 은 좋 은 실천 이다.이것 은 정말 쉽게 나타난다. 왜냐하면 이것 은 내부 시스템 이기 때문에 신분 인증 과 안전 전송 을 사용 할 필요 가 없 지만 현재 우리 의 원 격 작업 시대 에 내부 네트워크 는 매우 광범 위 할 수 있다.
이 점 을 고려 하여 우 리 는 우리 가 유지 하 는 여러 가지 시스템 을 심사 하 는 데 시간 을 들 였 고 이번 주 에 나 는 우리 의 개인 Docker 등록 센터 에 신분 인증 을 추가 하 는 목 표를 설정 했다.Docker 등록 에 인증 방법 이 없다 는 것 을 알 고 있 을 지도 모른다.그래서 우리 가 초기 방안 을 결정 한 것 은 우리 의 미 러 창고 앞 에 신분 인증 대 리 를 추가 하 는 것 이다.저희 사례 에서 SSL 을 통 해 Nginx 를 사용 하고 내부 인증 API 를 추가 하기 로 했 습 니 다.
이 해결 방안 의 몇 가지 장점:
간단 한 기초 인증 서비스
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 인증 에이전트 의 코드 를 찾 을 수 있 습 니 다. 사용 가능 한 용기 입 니 다.이 방안 을 사용 하려 면 몇 가지 주의 가 필요 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 에이전트(jdk 정적 에이전트, 동적 에이전트와 cglib 동적 에이전트)2. jdk 정적 에이전트 에이전트 클래스 System.out.println ("사무가 끝났습니다."); 3. jdk 동적 에이전트 에이전트 클래스 4. 에이전트 클래스 3. jdk 동적 에이전트는 인터페이스 에이전...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.