Portainer: LDAP ์‚ฌ์šฉ์ž๋Š” ์—”๋“œํฌ์ธํŠธ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 04์›” 02์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: portainer/portainer

๋ฒ„๊ทธ ์„ค๋ช…

LDAP ๊ฐ€์ ธ์˜จ ์‚ฌ์šฉ์ž(Aactive Directory์—์„œ)๋Š” ์Šคํƒ, ์„œ๋น„์Šค, ์ปจํ…Œ์ด๋„ˆ, ๋ณผ๋ฅจ ๋˜๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜๋Š” ์œ ์ผํ•œ ์„น์…˜์€ ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์•ก์„ธ์Šค ๊ด€๋ฆฌ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์—”๋“œํฌ์ธํŠธ์— ์ง์ ‘ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์—๊ฒŒ ์ง์ ‘ ๋˜๋Š” ๊ฐ€์ ธ์˜จ LDAP ๊ทธ๋ฃน์„ ํ†ตํ•ด ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™
๊ฐ€์ ธ์˜จ LDAP ์‚ฌ์šฉ์ž๋Š” ๊ด€๋ฆฌ์ž๊ฐ€ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ ๋์ ์˜ ์ผ๋ถ€์ธ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„:

๋™์ž‘์„ ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„:

  1. ๊ณต์‹ ๋ฐฐํฌ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌํ…Œ์ด๋„ˆ ๋ฐฐํฌ(์ปดํฌ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Swarm ๋ชจ๋“œ)
  2. LDAP ์ธ์ฆ ๊ตฌ์„ฑ(๋‹จ์ˆœ ๋ฐ”์ธ๋”ฉ, TLS ๋˜๋Š” StartTLS)
  3. ๊ธฐ๋ณธ "๊ธฐ๋ณธ" ์—”๋“œํฌ์ธํŠธ๋กœ ์ด๋™ํ•˜๊ณ  ์•ก์„ธ์Šค ๊ด€๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ก์„ธ์Šค ๊ถŒํ•œ ๋ถ€์—ฌ
  4. ์‚ฌ์šฉ์ž์™€ ํ•จ๊ป˜ ํฌํ…Œ์ด๋„ˆ์— ๋กœ๊ทธ์ธ(ํ™ˆ ์„น์…˜์—์„œ ๊ทธ๋Š” ๊ธฐ๋ณธ ์—”๋“œํฌ์ธํŠธ, ์Šคํƒ, ์„œ๋น„์Šค, ์ปจํ…Œ์ด๋„ˆ, ๋ณผ๋ฅจ ๋ฐ ์ด๋ฏธ์ง€์˜ ์ˆ˜์— ๋Œ€ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Œ)
  5. ํ™ˆ ํŽ˜์ด์ง€์—์„œ ๊ธฐ๋ณธ ์—”๋“œํฌ์ธํŠธ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  6. ์‚ฌ์šฉ์ž๋Š” Swarm ๋‚ด๋ถ€์˜ ์ด๋ฏธ์ง€ ์ˆ˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค(์Šคํƒ, ์ปจํ…Œ์ด๋„ˆ, ๋ณผ๋ฅจ, ์„œ๋น„์Šค ๋˜๋Š” ๋„คํŠธ์›Œํฌ)๋Š” 0๊ฐœ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ์— ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์  ์„ธ๋ถ€ ์‚ฌํ•ญ:

  • ํฌํ…Œ์ด๋„ˆ ๋ฒ„์ „: 1.20.2
  • Docker ๋ฒ„์ „(Porttainer์—์„œ ๊ด€๋ฆฌ): 18.09.03
  • ํ”Œ๋žซํผ(์œˆ๋„์šฐ/๋ฆฌ๋ˆ…์Šค): ๋ฆฌ๋ˆ…์Šค
  • Porttainer๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ช…๋ น( docker run -p 9000:9000 portainer/portainer ): docker stack deploy --compose-file=porttainer-agent-stack.yml porttainer(๋ฐฐํฌ ์ง€์นจ์˜ ๊ธฐ๋ณธ ์ž‘๊ณก๊ฐ€ ํŒŒ์ผ)
  • ๋ธŒ๋ผ์šฐ์ €: ํฌ๋กฌ 73.0.3683.86
    Captura1
    Captura2
    Captura3
    Captura4
    Captura5

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด๊ฒƒ์€ ๋ฒ„๊ทธ๊ฐ€ ์•„๋‹ˆ๋ฉฐ ์‹ค์ œ๋กœ Porttainer ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์ •์ƒ์ ์ธ ๋™์ž‘์ž…๋‹ˆ๋‹ค.

Porttainer ์™ธ๋ถ€์—์„œ ์ƒ์„ฑ๋œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋Š” ๊ด€๋ฆฌ์ž ์‚ฌ์šฉ์ž์—๊ฒŒ๋งŒ ์ œํ•œ๋˜๋ฉฐ, ์ด๋Š” Porttainer ๋‚ด๋ถ€์—์„œ ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ ์‹œ ๊ธฐ๋ณธ ์ •์ฑ…์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

LDAP/OAuth ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ์‚ฌ์šฉ์ž๋Š” ์ƒ์„ฑ ์‹œ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ์—ญํ• ์ด ํ• ๋‹น๋˜๋ฏ€๋กœ ๊ด€๋ฆฌ์ž๋กœ ์ œํ•œ๋œ ๊ธฐ์กด ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Neil์ด ๋งํ–ˆ๋“ฏ์ด ์ด๋Ÿฌํ•œ ๊ฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ด€๋ฆฌ์ž ์—ญํ• ์„ ํ• ๋‹นํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์†Œ์œ ๊ถŒ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ง„ํ™” ์š”์ฒญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/porttainer/porttainer/issues/685

๋˜ํ•œ ๊ณ ๊ธ‰ ์—ญํ•  ๊ธฐ๋ฐ˜ ์•ก์„ธ์Šค ์ œ์–ด ๊ด€๋ฆฌ๋ฅผ ๋„์ž…ํ•  ๋‹ค์Œ ํ™•์žฅ์—์„œ ๋ณด๋‹ค ๊ฐ•๋ ฅํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š”,

๊ด€๋ฆฌ์ž๋กœ ๋กœ๊ทธ์ธํ•˜๊ณ  ๊ฐ ํŽ˜์ด์ง€(์Šคํƒ, ์„œ๋น„์Šค, ์ปจํ…Œ์ด๋„ˆ, ๋ณผ๋ฅจ, ๋„คํŠธ์›Œํฌ, ๊ตฌ์„ฑ, ๋น„๋ฐ€)๋ฅผ ๋ณด๋Š” ๊ฒฝ์šฐ "์†Œ์œ ๊ถŒ" ์—ด์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. "๊ด€๋ฆฌ์ž"๋ผ๊ณ  ํ‘œ์‹œ๋˜๋ฉด ํ‘œ์ค€ ์‚ฌ์šฉ์ž๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

LDAP ์‚ฌ์šฉ์ž๋ฅผ ๊ด€๋ฆฌ์ž๋กœ ์Šน๊ฒฉ์‹œํ‚ค๊ฑฐ๋‚˜(Porttainer์—์„œ ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ํด๋ฆญํ•˜๊ณ  ๊ด€๋ฆฌ์ž๋กœ ํ‘œ์‹œ) ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์•ก์„ธ์Šค ์ œ์–ด๋ฅผ "๊ณต๊ฐœ"๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ฒ„๊ทธ๊ฐ€ ์•„๋‹ˆ๋ฉฐ ์‹ค์ œ๋กœ Porttainer ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์ •์ƒ์ ์ธ ๋™์ž‘์ž…๋‹ˆ๋‹ค.

Porttainer ์™ธ๋ถ€์—์„œ ์ƒ์„ฑ๋œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋Š” ๊ด€๋ฆฌ์ž ์‚ฌ์šฉ์ž์—๊ฒŒ๋งŒ ์ œํ•œ๋˜๋ฉฐ, ์ด๋Š” Porttainer ๋‚ด๋ถ€์—์„œ ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ ์‹œ ๊ธฐ๋ณธ ์ •์ฑ…์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

LDAP/OAuth ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ์‚ฌ์šฉ์ž๋Š” ์ƒ์„ฑ ์‹œ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ์—ญํ• ์ด ํ• ๋‹น๋˜๋ฏ€๋กœ ๊ด€๋ฆฌ์ž๋กœ ์ œํ•œ๋œ ๊ธฐ์กด ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Neil์ด ๋งํ–ˆ๋“ฏ์ด ์ด๋Ÿฌํ•œ ๊ฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ด€๋ฆฌ์ž ์—ญํ• ์„ ํ• ๋‹นํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์†Œ์œ ๊ถŒ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ง„ํ™” ์š”์ฒญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/porttainer/porttainer/issues/685

๋˜ํ•œ ๊ณ ๊ธ‰ ์—ญํ•  ๊ธฐ๋ฐ˜ ์•ก์„ธ์Šค ์ œ์–ด ๊ด€๋ฆฌ๋ฅผ ๋„์ž…ํ•  ๋‹ค์Œ ํ™•์žฅ์—์„œ ๋ณด๋‹ค ๊ฐ•๋ ฅํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ ๋งˆ์›Œ ์–˜๋“ค์•„! ์ฒ˜์Œ์—๋Š” ์กฐ๊ธˆ ํ˜ผ๋ž€์Šค๋Ÿฌ์› ์ง€๋งŒ ์ด๊ฒƒ์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์ด ์„ค๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰