๋ ˆ๋””์Šค ACL

Redis 6 New-Feature๐ŸŽ‰

GARIMOO
garimoo

--

https://redis.io/topics/acl

ACL

๋ ˆ๋””์Šค์˜ ACL(Access Control List)์€ ํŠน์ • ์ปค๋„ฅ์…˜์— ๋Œ€ํ•ด ์ปค๋งจ๋“œ์™€ ํ‚ค์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ์ปค๋„ฅ์…˜์„ ๋งบ์€ ๋’ค ์œ ์ €์˜ ์ด๋ฆ„๊ณผ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ธ์ฆํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค. ์ธ์ฆ์ด ์„ฑ๊ณตํ•˜๋ฉด ์ด ์ปค๋„ฅ์…˜์€ ํŠน์ • ์œ ์ €์™€ ์—ฐ๊ฒฐ๋˜๋ฉฐ ์œ ์ €๋Š” ์ œํ•œ์ ์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ์ฒซ ์—ฐ๊ฒฐ์ด ๊ธฐ๋ณธ ์œ ์ €๋กœ ๋งบ์–ด์ง€๊ณ , ๊ธฐ๋ณธ ์œ ์ €๋Š” ๋ช…์‹œ์ ์œผ๋กœ ์ธ์ฆ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ๊ธฐ๋Šฅ์˜ ์ผ๋ถ€๋ถ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ถ€์ž‘์šฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๊ธฐ๋ณธ ๊ตฌ์„ฑ์—์„œ ๋ ˆ๋””์Šค6์€ ์ด์ „ ๋ฒ„์ „๊ณผ ๋˜‘๊ฐ™์ด ์ž‘๋™ํ•œ๋‹ค. ์ƒˆ๋กœ์šด ๋ชจ๋“  ์ปค๋„ฅ์…˜์€ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ปค๋งจ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๋ชจ๋“  ํ‚ค์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ACL ๊ธฐ๋Šฅ์€ ์ด์ „์˜ ํด๋ผ์ด์–ธํŠธ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์—ญํ˜ธํ™˜๋œ๋‹ค. ๋˜ํ•œ ์ด์ „ ๋ฒ„์ „์—์„œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋˜ ๋ฐฉ์‹์ธ requirepass๋ฅผ ์—ฌ์ „ํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด ๋ฐฉ๋ฒ•์€ ๊ธฐ๋ณธ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์•”ํ˜ธ๋ฅผ ์„ค์ •ํ•˜๋Š”๊ฒƒ์œผ๋กœ๋งŒ ์—ฌ๊ฒจ์ง„๋‹ค.

๋ ˆ๋””์Šค6์—์„œ AUTH ์ปค๋งจ๋“œ๋Š” ํ™•์žฅ๋˜์—ˆ์œผ๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘ ๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

AUTH <username> <password>

์ด์ „ ๋ฒ„์ „์˜ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ์•„๋ž˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

AUTH <password>

์ธ์ฆ์— ์‚ฌ์šฉ๋œ ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„์ด โ€œdefaultโ€ ์ด๋ฏ€๋กœ ํŒจ์Šค์›Œ๋“œ๋งŒ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ธ์ฆ์œผ๋กœ ๋ฐ›์•„๋“ค์—ฌ์ง„๋‹ค. ๋”ฐ๋ผ์„œ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ์™„๋ฒฝํ•œ ์—ญํ˜ธํ™˜์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

When ACLs are useful

ACL์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์—, ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์„œ ์–ป๊ณ ์ž ํ•˜๋Š”๊ฒŒ ๋ฌด์—‡์ธ์ง€๋ฅผ ๋จผ์ € ์ƒ๊ฐํ•ด๋ณด์ž. ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ์œ„ํ•ด ACL์„ ์‚ฌ์šฉํ•œ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ตœ์†Œํ•œ์˜ ๊ถŒํ•œ๋งŒ ๋ถ€์—ฌ: ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ๋Š” ์ฝ๊ธฐ ๊ถŒํ•œ๋งŒ ๋ถ€์—ฌํ•จ์œผ๋กœ์จ ๊ผญ ํ•„์š”ํ•œ ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
  2. ์•ˆ์ „ํ•œ ๋ ˆ๋””์Šค์˜ ์šด์˜: ํ”„๋กœ์„ธ์Šค์—์„œ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๋‚˜ ์šด์˜์ž์˜ ์‹ค์ˆ˜๋กœ ์ธํ•ด ๋ ˆ๋””์Šค์— ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋ฅผ ๋ผ์น˜๋Š” ๊ฒƒ์„ ํ”ผํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ๊ธฐ๋Šฅ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ ˆ๋””์Šค์—์„œ ์ผ๋ถ€ job์ด ์ง€์—ฐ๋˜์—ˆ๋‹ค๊ณ  ํ•ด์„œ FLUSHALL ์ปค๋งจ๋“œ๋ฅผ ๋‚ ๋ฆฌ๋Š” ๋“ฑ์˜ ์‹ค์ˆ˜๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๋˜ ๋‹ค๋ฅธ ACL์˜ ์‚ฌ์šฉ ์˜ˆ์ œ๋Š” ๋ ˆ๋””์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์— ์žˆ๋‹ค. ๋ณดํ†ต ํšŒ์‚ฌ ๋‚ด์—์„œ ๋ ˆ๋””์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” ํšŒ์‚ฌ ๋‚ด์˜ ์ธํ”„๋ผ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํŒ€์—์„œ ๋ ˆ๋””์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ์ œ๊ณต๋ฐ›๊ฑฐ๋‚˜, ๋‹ค๋ฅธ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•ด์„œ SAAS๋กœ ๋ ˆ๋””์Šค๋ฅผ ์ œ๊ณต๋ฐ›๋Š”๋‹ค. ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋ ˆ๋””์Šค๋ฅผ ๋ฐœ๊ธ‰๋ฐ›๋Š” ์‚ฌ์šฉ์ž๋Š” ๋ ˆ๋””์Šค ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ์ปค๋งจ๋“œ๋Š” ์ œ์™ธ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์ด์ „ ๋ฒ„์ „์—์„œ ์ปค๋งจ๋“œ์˜ ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ธฐ๋Šฅ์€ ACL ๊ธฐ๋Šฅ ์—†์ด ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํŠธ๋ฆญ์ด์—ˆ์ง€๋งŒ ์™„๋ฒฝํ•˜๊ฒŒ ์ด์ƒ์ ์ธ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ์—ˆ๋‹ค.

Configuring ACLs using the ACL command

ACL์€ ํŠน์ • ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ์•ก์…˜์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ์—†๋Š”์ง€๋ฅผ ์„ค๋ช…ํ•˜๋Š” DSL(Domain Specific Language)๋ฅผ ์ด์šฉํ•˜์—ฌ ์ •์˜๋œ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๋ ค๋ฉด DSL์˜ ๋‚˜์—ด ์ˆœ์„œ๋ฅผ ์ง€ํ‚ค๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ํ•ญ์ƒ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰, ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.

์ฒ˜์Œ ๋ ˆ๋””์Šค ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ํ•œ ๊ฐœ์˜ ๊ธฐ๋ณธ ์œ ์ €(default user)๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ACL LIST ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ˜„์žฌ ํ™œ์„ฑ ACL์„ ํ™•์ธํ•˜๊ณ  ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‹œ์ž‘๋œ ๋ ˆ๋””์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

> ACL LIST
1) "user default on nopass ~* +@all"

์ด ์ปค๋งจ๋“œ๋Š” ์‚ฌ์šฉ์ž์— ํ• ๋‹น๋œ ํ˜„์žฌ์˜ ACL ๊ทœ์น™์„ ๊ตฌ์„ฑํŒŒ์ผ์—์„œ ํ™•์ธํ•˜๋Š” ๊ฒƒ๊ณผ ๋˜‘๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๋ณด์—ฌ์ค€๋‹ค.

๊ฐ ํ–‰์˜ ์ฒ˜์Œ ๋‘ ๋‹จ์–ด๋Š” โ€œuserโ€ ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž๋ช…์ด๋‹ค. ๋‹ค์Œ ๋‹จ์–ด๋Š” ๋‹ค๋ฅธ ACL ๊ทœ์น™์„ ์ •์˜ํ•œ๋‹ค. ๊ทœ์น™์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€๋Š” ๋’ค์— ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์ง€๋งŒ, ์ผ๋‹จ ๊ธฐ๋ณธ ์œ ์ €๋Š” ํ™œ์„ฑ(on) ์ƒํƒœ, ๋น„๋ฐ€๋ฒˆํ˜ธ ์—†์ด(nopass), ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ํ‚ค์— ์ ‘๊ทผ(~*), ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ์ปค๋งจ๋“œ๋ฅผ ์ˆ˜ํ–‰(+@all) ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

๋˜ํ•œ, ๊ธฐ๋ณธ ์œ ์ €์˜ ๊ฒฝ์šฐ nopass ๊ทœ์น™์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— AUTH ๋ฅผ ํ˜ธ์ถœํ•  ํ•„์š” ์—†์ด ์ž๋™์œผ๋กœ ์ปค๋„ฅ์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

ACL rules

Enable and disallow users

  • on: ์œ ์ €๋ฅผ ํ—ˆ์šฉํ•จ: ์ด ์œ ์ €๋Š” ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋ช…์‹œํ•จ.
  • off: ์œ ์ €๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ: ์ด ์œ ์ €๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†์ง€๋งŒ, ์ด๋ฏธ ์ธ์ฆ๋˜์–ด์žˆ๋Š” ์—ฐ๊ฒฐ์€ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•จ.
โœ”๏ธŽ NOTE
๊ธฐ๋ณธ ์œ ์ €์— ๋Œ€ํ•ด 'off'๋กœ ์„ค์ •์„ ํ•œ๋‹ค๋ฉด ์‚ฌ์šฉ์ž๋Š” ์ƒˆ๋กœ์šด ์ปค๋„ฅ์…˜์„ ๋งบ์„ ๋•Œ ์ž๋™์œผ๋กœ ์ธ์ฆ๋˜์ง€ ์•Š์œผ๋ฉฐ, ๊ธฐ๋ณธ ์œ ์ €์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ•ญ์ƒ AUTH ์ปค๋งจ๋“œ๋ฅผ ํ†ตํ•ด ๊ถŒํ•œ์„ ์ธ์ฆํ•ด์•ผ ํ•œ๋‹ค.

Allow and disallow commands

  • +<command>: ์œ ์ €๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ปค๋งจ๋“œ๋ฅผ ๋‚˜์—ด
  • -<command>: ์œ ์ €๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ปค๋งจ๋“œ๋ฅผ ๋‚˜์—ด
  • +@<category>: ์œ ์ €๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ปค๋งจ๋“œ์˜ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋‚˜์—ด. ์˜ˆ๋ฅผ ๋“ค์–ด @admin, @set, @sortedset ๋“ฑ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ „์ฒด ๋ฆฌ์ŠคํŠธ๋Š” ACL CAT ์ปค๋งจ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. @all ์นดํ…Œ๊ณ ๋ฆฌ๋Š” ๋ชจ๋“  ์ปค๋งจ๋“œ๋ฅผ ๋œปํ•˜๋ฉฐ, ํ˜„์žฌ ์„œ๋ฒ„๋ฟ ์•„๋‹ˆ๋ผ ๋‚˜์ค‘์— ๋ชจ๋“ˆ์„ ํ†ตํ•ด ๋กœ๋“œ๋  ์ปค๋งจ๋“œ ์ „๋ถ€๋ฅผ ๋œปํ•œ๋‹ค.
  • -@<category>: ์œ„์™€ ๋น„์Šทํ•˜์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์นดํ…Œ๊ณ ๋ฆฌ ์ปค๋งจ๋“œ๋ฅผ ์ œํ•œํ•œ๋‹ค.
  • +|subcommand: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ์„ค์ •๋œ ์ปค๋งจ๋“œ์˜ ํŠน์ • ํ•˜์œ„ ์ปค๋งจ๋“œ๋Š” ํ—ˆ์šฉํ•œ๋‹ค๋Š” ์˜๋ฏธ. ์—ฌ๊ธฐ์„œ ๋‚˜์—ดํ•œ ์ปค๋งจ๋“œ๊ฐ€ ์ด๋ฏธ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋‹ค๋ฉด ์ด ACL์€ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
  • allcommands: +@all ์™€ ๊ฐ™์€ ๋œป์ด๋‹ค. ์ด ์ปค๋งจ๋“œ๋Š” ์ดํ›„์— ๋กœ๋“œ๋  ๋ชจ๋“  ๋ชจ๋“ˆ์˜ ์ปค๋งจ๋“œ์— ๋Œ€ํ•ด์„œ๋„ ํ—ˆ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
  • nocommands: -@all ๊ณผ ๊ฐ™์€ ๋œป์ด๋‹ค.

Allow and disallow certain keys

  • ~<pattern>: ์ปค๋งจ๋“œ์˜ ์ผ๋ถ€๋กœ ์–ธ๊ธ‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค ํŒจํ„ด์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ~*๋Š” ๋ชจ๋“  ํ‚ค๋ฅผ ํ—ˆ์šฉํ•œ๋‹ค. ์ด ํŒจํ„ด์€ KEYS์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ธ€๋กœ๋ฒŒ ์Šคํƒ€์ผ์˜ ํŒจํ„ด์ด๋‹ค. ๋ณต์ˆ˜์˜ ํŒจํ„ด์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. * allkeys ๋Š” ~* ์™€ ๊ฐ™์€ ๋œป์ด๋ฉฐ, * resetkeys ๋Š” ํ—ˆ์šฉ๋œ ํ‚ค ํŒจํ„ด ๋ชฉ๋ก์„ ๋ฒ„๋ฆฌ๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜๊ณผ ๊ฐ™์€ ๊ทœ์น™์—์„œ ํด๋ผ์ด์–ธํŠธ๋Š” objects:* ์˜ ํŒจํ„ด์ด ๋“ค์–ด๊ฐ„ ํ‚ค์—๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
ACL ~foo:* ~bar:* resetkeys ~objects:*

Configure valid passwords for the user

  • ><password>: ์œ ์ €์— ๋Œ€ํ•œ ํŒจ์Šค์›Œ๋“œ ๋ฆฌ์ŠคํŠธ์— ์ด ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด >mypass๋Š” mypass ๋ผ๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์œ ํšจํ•œ ํŒจ์Šค์›Œ๋“œ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•œ๋‹ค. ์ด ๋ช…๋ น์€ nopass ํ”Œ๋ž˜๊ทธ๋ฅผ ๋ฌดํšจํ™”ํ•œ๋‹ค. ๋ชจ๋“  ์œ ์ €๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • <<password>: ์œ ํšจํ•œ ํŒจ์Šค์›Œ๋“œ ๋ฆฌ์ŠคํŠธ์—์„œ ์ด ํŒจ์Šค์›Œ๋“œ๋ฅผ ์‚ญ์ œํ•œ๋‹ค. ๋งŒ์•ฝ ์œ ํšจํ•œ ํŒจ์Šค์›Œ๋“œ ๋ชฉ๋ก์— ์ด ํŒจ์Šค์›Œ๋“œ๊ฐ€ ์—†๋‹ค๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  • #<hash>: ์ด SHA-256 ํ•ด์‹œ๊ฐ’์„ ์œ ํšจํ•œ ํŒจ์Šค์›Œ๋“œ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•œ๋‹ค. ์ด ํ•ด์‹œ๊ฐ’์€ ์ ‘์†์„ ์‹œ๋„ํ•˜๋Š” ์œ ์ €์— ๋Œ€ํ•ด ์ž…๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ํ•ด์‹œ์™€ ๋น„๊ต๋œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ์ผ๋ฐ˜ ํ…์ŠคํŠธ ์•”ํ˜ธ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  acl.conf ํŒŒ์ผ์— ํ•ด์‹œ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ํŒจ์Šค์›Œ๋“œ์— ์‚ฌ์šฉ๋˜๋Š” ํ•ด์‹œ๊ฐ’์€ 64์ž์˜ 16์ง„์ˆ˜ ๋ฌธ์ž๊ฐ’์ด์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— SHA-256 ํ•ด์‹œ ๊ฐ’๋งŒ ํ—ˆ์šฉ๋œ๋‹ค.
  • !<hash>: ์œ ํšจํ•œ ์•”ํ˜ธ ๋ชฉ๋ก์—์„œ ์ด ํ•ด์‹œ๊ฐ’์„ ์ œ๊ฑฐํ•œ๋‹ค. ์ด๋Š” ํ•ด์‹œ๊ฐ’์œผ๋กœ ์ง€์ •๋œ ์•”ํ˜ธ๋ฅผ ๋ชจ๋ฅด์ง€๋งŒ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์•”ํ˜ธ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ ์ž ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.
  • nopass: ๊ธฐ์กด์˜ ๋ชจ๋“  ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ์ง€์ •๋œ๋‹ค. ์ด ์ง€์‹œ์–ด๊ฐ€ ๊ธฐ๋ณธ ์œ ์ €์—๊ฒŒ ์ง€์ •๋˜๋Š” ๊ฒฝ์šฐ, ๋ชจ๋“  ์ƒˆ ์—ฐ๊ฒฐ์€ ๋ช…์‹œ์ ์ธ AUTH ์ปค๋งจ๋“œ ์—†์ด ๊ธฐ๋ณธ์œ ์ €์— ์ฆ‰์‹œ ์—ฐ๊ฒฐ๋œ๋‹ค. resetpass ์ง€์‹œ๋ฌธ์€ ์ด ์กฐ๊ฑด์„ ์‚ญ์ œํ•œ๋‹ค๋Š” ๊ฒƒ์— ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค.
  • resetpass: ๋ชจ๋“  ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉฐ, nopass ์ƒํƒœ๊นŒ์ง€ ์ง€์›Œ๋ฒ„๋ฆฐ๋‹ค. ์ด ์ƒํƒœ์—์„œ ์‚ฌ์šฉ์ž๋Š” ๊ด€๋ จ๋œ ํŒจ์Šค์›Œ๋“œ๊ฐ€ ํ•˜๋‚˜๋„ ์—†์œผ๋ฉฐ, nopass ์ƒํƒœ ๋˜๋Š” ์ผ๋ถ€ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์ „๊นŒ์ง€ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋‹ค.
โœ”๏ธŽ NOTE
nopass ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š๊ณ , ์œ ์š”ํ•œ ์•”ํ˜ธ ๋ชฉ๋ก์ด ์—†๋‹ค๋ฉด ์ด ์‚ฌ์šฉ์ž๋กœ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์‹ค์ƒ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์ด๋‹ค.

Reset the user

  • reset ์€ ๋‹ค์Œ ์•ก์…˜์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. resetpass, resetkeys, off, -@all. ๋”ฐ๋ผ์„œ ์œ ์ €๋Š” ์ƒ์„ฑ ์งํ›„์™€ ๋™์ผํ•œ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ„๋‹ค.

Creating and editing users ACLs with the ACL SETUSER command

์œ ์ €๋Š” ๋‹ค์Œ์˜ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ƒ์„ฑ๋˜๊ณ , ์ˆ˜์ •๋  ์ˆ˜ ์žˆ๋‹ค.

  1. ACL SETUSER ๋ผ๋Š” ACL ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉ
  2. ์œ ์ €๋ฅผ ์ •์˜ํ•˜๋Š” ์„œ๋ฒ„์˜ ๊ตฌ์„ฑํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•œ ๋’ค ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘์‹œํ‚ค๊ฑฐ๋‚˜, ์™ธ๋ถ€์˜ ACLํŒŒ์ผ์„ ์‚ฌ์šฉํ•œ ๋’ค ACL LOAD ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ด ์žฅ์—์„œ ์šฐ๋ฆฌ๋Š” ACL ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์œ ์ €๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•  ๊ฒƒ์ด๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ๋‚˜๋ฉด ๊ตฌ์„ฑํŒŒ์ผ์„ ์ด์šฉํ•ด์„œ ์œ ์ €๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์€ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ด๋Š” ๋‚˜์ค‘์— ๋‹ค๋ฅธ ์„น์…˜์—์„œ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค.

๊ฐ„๋‹จํ•œ ACL SETUSER ์ปค๋งจ๋“œ๋ฅผ ์‹œ๋„ํ•ด๋ณด์ž.

> ACL SETUSER alice
OK

SETUSER ์ปค๋งจ๋“œ๋Š” ์œ ์ €๋ช…๊ณผ ์œ ์ €์—๊ฒŒ ์ ์šฉํ•  ACL ๊ทœ์น™์„ ๋‚˜์—ดํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์œ„์˜ ์˜ˆ์—์„œ๋Š” ๊ทœ์น™์„ ๋ช…์‹œํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ, ์ด๋Ÿด ๋•Œ์— ๋งŒ์•ฝ ์œ ์ €๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๊ธฐ๋ณธ ๊ทœ์น™์„ ์œ ์ €์—๊ฒŒ ๋ถ€์—ฌํ•œ๋‹ค. ์œ ์ €๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•œ๋‹ค๋ฉด ์œ„์˜ ์ปค๋งจ๋“œ๋Š” ์•„๋ฌด๋Ÿฐ ์ผ๋„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ธฐ๋ณธ ์œ ์ €์˜ ์ƒํƒœ๋ฅผ ์•Œ์•„๋ณด์ž.

> ACL LIST
1) "user alice off -@all"
2) "user default on nopass ~* +@all"

๋ฐฉ๊ธˆ ๋งŒ๋“  ์œ ์ € alice์˜ ์ƒํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • off ์ƒํƒœ์ด๋ฉฐ, ๋”ฐ๋ผ์„œ ๋น„ํ™œ์„ฑํ™” ์ƒํƒœ์ด๋‹ค. AUTH ์ปค๋งจ๋“œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์•„๋ฌด ์ปค๋งจ๋“œ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ์ปค๋งจ๋“œ๋„ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ๋กœ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋ฏ€๋กœ ์œ„์˜ ์ถœ๋ ฅ์—์„œ -@all ์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ACL LIST์—์„œ๋Š” ๋ช…์‹œ์ ์œผ๋กœ ๋…ธ์ถœํ–ˆ๋‹ค.
  • ๊ฒฐ๋ก ์ ์œผ๋กœ, ์ด ์œ ์ €๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค ํŒจํ„ด์€ ์—†๋‹ค.
  • ์œ ์ €๋Š” ์ ‘์† ๊ฐ€๋Šฅํ•œ ํŒจ์Šค์›Œ๋“œ๋„ ์—†๋‹ค.

์ง€๊ธˆ ์ƒํƒœ์˜ ์œ ์ €๋กœ๋Š” ์•„๋ฌด ๊ฒƒ๋„ ํ•  ์ˆ˜ ์—†๋‹ค. ์ด์ œ ์œ ์ €๋ฅผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ํŒจ์Šค์›Œ๋“œ๋„ ๋งŒ๋“ค๊ณ , โ€˜cached:โ€™ ํ”„๋ฆฌํ”ฝ์Šค๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ‚ค๋ฅผ GET ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ ‘๊ทผ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด๋ณด์ž.

> ACL SETUSER alice on >p1pp0 ~cached:* +get
OK

์ด์ œ ์œ ์ €๋Š” ์ผ๋ถ€ ๊ถŒํ•œ์„ ๊ฐ€์กŒ์ง€๋งŒ, ์ผ๋ถ€์— ๋Œ€ํ•ด์„œ๋Š” ๊ถŒํ•œ์ด ์—†๋‹ค.

> AUTH alice p1pp0
OK
> GET foo
(error) NOPERM this user has no permissions to access on of the keys used as arguments
> GET cached:1234
(nil)
> SET cached:1234 zap
(error) NOPERM this user has no permissions to run the 'set' command or its subcommand

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

> ACL GETUSER alice
1) "flags"
2) 1) "on"
3) "passwords"
4) 1) "2d9c75..."
5) "commands"
6) "-@all +get"
7) "keys"
8) 1) "cached:*"

ACL GETUSER ์ปค๋งจ๋“œ๋Š” ํ•„๋“œ-๊ฐ’ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์ด ์œ ์ €๋ฅผ ์กฐ๊ธˆ ๋” ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋„๋ก ๋ณด์—ฌ์ค€๋‹ค. ๊ฒฐ๊ณผ๊ฐ’์€ ํ”Œ๋ž˜๊ทธ ์„ธํŠธ, ์ฃผ์š” ํŒจํ„ด ๋ชฉ๋ก, ์•”ํ˜ธ ๋“ฑ์„ ํฌํ•จํ•œ๋‹ค. RESP3์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์•„๋ž˜์ฒ˜๋Ÿผ ๋” ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ๋งต์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

> ACL GETUSER alice
1# "flags" => 1~ "on"
2# "passwords" => 1) "2d9c75..."
3# "commands" => "-@all +get"
4# "keys" => 1) "cached:*"
โœ”๏ธŽ NOTE
์ด์ œ๋ถ€ํ„ฐ ์šฐ๋ฆฌ๋Š” ๋ ˆ๋””์Šค์˜ ๊ธฐ๋ณธ ํ”„๋กœํ† ์ฝœ์ธ version 2๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค ์™œ๋ƒํ•˜๋ฉด ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ƒˆ๋กœ์šด ํ”„๋กœํ† ์ฝœ๋กœ ์ „ํ™˜ํ•˜๋Š” ๋ฐ์— ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด์ œ ๋‹ค์‹œ ACL SETUSER ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์œ ์ €์—๊ฒŒ ๋” ๋งŽ์€ ๊ทœ์น™์„ ์ ์šฉํ•ด๋ณด์ž.

> ACL SETUSER alice ~objects:* ~items:* ~public:*
OK
> ACL LIST
1) "user alice on >2d9c75... ~cached:* ~objects:* ~items:* ~public:* -@all +get"
2) "user default on nopass ~* +@all

What happens calling ACL SETUSER multiple times

ACL SETUSER๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ๋ฐ˜์˜๋˜๋Š”์ง€ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ SETUSER ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ณ„์† ๊ธฐ์กด ์œ ์ €์— ๋ฃฐ์ด ์ถ”๊ฐ€๋˜์ง€, ๊ธฐ์กด ์œ ์ €๊ฐ€ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์œ ์ €๋Š” ๊ธฐ์กด์— ์•Œ๋ ค์ง€์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ์—๋งŒ ์žฌ์„ค์ •๋œ๋‹ค. ์ƒˆ๋กœ์šด ์œ ์ €๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด zero-ACL ์ƒํƒœ์ด๋ฉฐ, ์œ ์ €๋Š” ์•„๋ฌด๊ฒƒ๋„ ํ•  ์ˆ˜ ์—†๊ณ , ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ, ์•”ํ˜ธ๊ฐ€ ์—†๋Š”๋ฐ, ์ด๋Š” ๋ณด์•ˆ์„ ์œ„ํ•œ ์ตœ๊ณ ์˜ ์„ค์ •์ด๋‹ค.

๊ทธ ์œ ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ถ”ํ›„์— ์•„๋ž˜์˜ ๋ฐฉ๋ฒ•์„ ๋”ฐ๋ผ ์ ์ง„์ ์œผ๋กœ ๊ทœ์น™์„ ์ˆ˜์ •ํ•ด ๋‚˜๊ฐ€์•ผ ํ•œ๋‹ค.

> ACL SETUSER myuser +set
OK
> ACL GETUSER myuser +get
OK

์ดํ›„ myuser๋Š” GET๊ณผ SET์„ ๋ชจ๋‘ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

> ACL LIST
1) "user default on nopass ~* +@all"
2) "user myuser off -@all +set +get"

Playings with command categories

์œ ์ €๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปค๋งจ๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ๊ท€์ฐฎ์€ ๋ฐฉ๋ฒ•์ด๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค์Œ์ฒ˜๋Ÿผ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŽธํ•˜๋‹ค.

> ACL SETUSER antirez on +@all -@dangerous >42a979... ~*

+@all ์™€ -@dangerous ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ๋ชจ๋“  ์ปค๋งจ๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค๊ฐ€ ๋ ˆ๋””์Šค์˜ ์ปค๋งจ๋“œ ํ…Œ์ด๋ธ” ๋‚ด์— dangerous๋กœ ์ง€์ •๋œ ์ผ๋ถ€ ์ปค๋งจ๋“œ๋ฅผ ์‚ญ์ œํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ปค๋งจ๋“œ ์นดํ…Œ๊ณ ๋ฆฌ๋Š” +@all์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ชจ๋“ˆ์˜ ์ปค๋งจ๋“œ๋Š” ์ ˆ๋Œ€ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•ด์•ผ ํ•œ๋‹ค. +@all ์ปค๋งจ๋“œ๋ฅผ ์œ ์ €์—๊ฒŒ ๋ถ€์—ฌํ•œ๋‹ค๋ฉด ๋‚˜์ค‘์— ๋ชจ๋“ˆ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ์‹œ์Šคํ…œ์˜ ์ปค๋งจ๋“œ๋„ ํฌํ•จํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ํ•˜์ง€๋งŒ ACL ๊ทœ์น™์— +@readonly ํ˜น์€ ๋‹ค๋ฅธ ์ปค๋งจ๋“œ๋ฅผ ์“ธ ๋•Œ์—๋Š” ๋ชจ๋“ˆ์˜ ์ปค๋งจ๋“œ๋Š” ํ•ญ์ƒ ์ œ์™ธ๋œ๋‹ค. ์ด๋Š” ๋ ˆ๋””์Šค ๋‚ด๋ถ€์˜ ์ปค๋งจ๋“œ ํ…Œ์ด๋ธ”์„ ์‹ ๋ขฐํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•˜๋‹ค. ๋ชจ๋“ˆ์€ ์œ„ํ—˜ํ•œ ๊ฒƒ์„ ๋…ธ์ถœํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฉฐ, +@all -... ์˜ ํ˜•ํƒœ๋กœ ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ๋‹ค. ์˜๋„ํ•˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ์„ ํฌํ•จํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์„ ํ™•์‹ ํ•ด์•ผ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์–ด๋–ค ์นดํ…Œ๊ณ ๋ฆฌ์— ์–ด๋–ค ์ปค๋งจ๋“œ๊ฐ€ ๋“ค์–ด์žˆ๋Š”์ง€๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์•„๋ž˜ ACL CAT ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ด๋ฅผ ๋‘๊ฐ€์ง€ ํ˜•ํƒœ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

ACL CAT -- ์กด์žฌํ•˜๋Š” ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋ฆฌ์ŠคํŠธ๋งŒ ๋‚˜์—ด
ACL CAT <category-name> -- ์นดํ…Œ๊ณ ๋ฆฌ ๋‚ด๋ถ€์˜ ๋ชจ๋“  ์ปค๋งจ๋“œ๋ฅผ ๋‚˜์—ด
> ACL CAT
1) "keyspace"
2) "read"
3) "write"
4) "set"
5) "sortedset"
6) "list"
7) "hash"
8) "string"
9) "bitmap"
10) "hyperloglog"
11) "geo"
12) "stream"
13) "pubsub"
14) "admin"
15) "fast"
16) "slow"
17) "blocking"
18) "dangerous"
19) "connection"
20) "transaction"
21) "scripting"

์œ„์˜ ๊ฒฐ๊ณผ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋“ฏ์ด ์ด 21๊ฐœ์˜ ์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ ์กด์žฌํ•œ๋‹ค. geo ์นดํ…Œ๊ณ ๋ฆฌ์—๋Š” ์–ด๋–ค ์ปค๋งจ๋“œ๊ฐ€ ํฌํ•จ๋˜๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž.

> ACL CAT geo
1) "geohash"
2) "georadius_ro"
3) "georadiusbymember"
4) "geopos"
5) "geoadd"
6) "georadiusbymember_ro"
7) "geodist"
8) "georadius"

์ปค๋งจ๋“œ๋Š” ์—ฌ๋Ÿฌ ์นดํ…Œ๊ณ ๋ฆฌ์— ์†ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด +@geo -@readonly ๋ผ๋Š” ACL ๊ทœ์น™์œผ๋กœ ์ธํ•ด ๋ช‡ ๊ฐœ์˜ geo ์ปค๋งจ๋“œ๋Š” read-only ๊ทœ์น™์œผ๋กœ ์ธํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค.

Adding subcommands

์ปค๋งจ๋“œ ์ „์ฒด๋ฅผ ํฌํ•จํ•˜๊ฑฐ๋‚˜ ์ œ์™ธํ•˜๋Š”๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์„ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๋งŽ์€ ๋ ˆ๋””์Šค ์ปค๋งจ๋“œ๋“ค์€ ์ธ์ˆ˜๋ฅผ ํฌํ•จํ•œ ์„œ๋ธŒ์ปค๋งจ๋“œ๋กœ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด CLIENT ์ปค๋งจ๋“œ๋Š” ์œ„ํ—˜ํ•˜๊ฒŒ๋„, ์œ„ํ—˜ํ•˜์ง€ ์•Š๊ฒŒ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. ์–ด๋“œ๋ฏผ ๋ ˆ๋ฒจ์ด ์•„๋‹ ๋•Œ CLIENT KILL ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋„๋ก ํ•˜๊ณ ์‹ถ์ง€๋งŒ, ๊ทธ๋“ค์ด CLIENT SETNAME์€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๊ณ ์‹ถ์„ ์ˆ˜๋„ ์žˆ๋‹ค.

์ด ๋•Œ ACL ์ปค๋งจ๋“œ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฃฐ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

ACL SETUSER myuser -clinet +client|setname + client|getname

์ฒ˜์Œ์— CLIENT ์ปค๋งจ๋“œ๋Š” ๋ชจ๋‘ ์ œ์™ธ์‹œ์ผฐ์ง€๋งŒ, ์ดํ›„์— ๋‘ ๊ฐœ์˜ ์„œ๋ธŒ์ปค๋งจ๋“œ๋ฅผ ํ—ˆ์šฉํ–ˆ๋‹ค. ์ด ๊ทœ์น™์—์„œ ์ˆœ์„œ๋Š” ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. ์„œ๋ธŒ์ปค๋งจ๋“œ๋Š” ์ œ์™ธ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ , ๊ทœ์น™์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ๋งŒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ดํ›„์— ์ƒˆ๋กœ์šด ์„œ๋ธŒ์ปค๋งจ๋“œ๋“ค์ด ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๊ณ , ์œ ์ €๋ณ„๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์„œ๋ธŒ์ปค๋งจ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š”๊ฒƒ์ด ๋” ์•ˆ์ „ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฒŒ๋‹ค๊ฐ€, ์ด๋ฏธ ์ œ์™ธ๋œ ์ปค๋งจ๋“œ๊ฐ€ ์•„๋‹Œ ์„œ๋ธŒ์ปค๋งจ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ACL ๊ทœ์น™์˜ ๋ฒ„๊ทธ๋ผ๊ณ  ์—ฌ๊ฒจ์ ธ์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ๋œ๋‹ค.

> ACL SETUSER default +debug|segfault
(error) ERR Error in ACL SETUSER modifier '+debug|segfault': Adding a subcommand of a command already fully added is not allowed. Remove the command to start. Example: -DEBUG +DEBUG|DIGEST

์„œ๋ธŒ์ปค๋งจ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•ฝ๊ฐ„์˜ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๋Ÿฐ ํŒจ๋„ํ‹ฐ๋Š” ๋ฒค์น˜๋งˆํฌ ํˆด๋กœ๋„ ์ธก์ •ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต๊ณ , ๋‹ค๋ฅธ ์ปค๋งจ๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ํ•ด๋‹น ์ปค๋งจ๋“œ๊ฐ€ ์‚ฌ์šฉ๋  ๋•Œ์—๋งŒ CPU๋ฅผ ์กฐ๊ธˆ ๋” ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์„ ์•Œ์•„์•ผ ํ•œ๋‹ค.

How passwords are stored internally

๋ ˆ๋””์Šค๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ SHA256์„ ์‚ฌ์šฉํ•ด์„œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ €์žฅํ•œ๋‹ค. ๋งŒ์•ฝ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์„ค์ •ํ•˜๊ณ  ACL LIST ๋˜๋Š” GETUSER ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋žœ๋คํ•œ ๊ฐ’์˜ hex ๋ฌธ์ž์—ด์„ ๋ณด๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.

> ACL GETUSER default
1) "flags"
2) 1) "on"
2) "allkeys"
3) "allcommands"
3) "passwords"
4) 1) "2d9c75273d72b32df726fb545c8a4edc719f0a95a6fd993950b10c474ad9c927"
5) "commands"
6) "+@all"
7) "keys"
8) 1) "*"

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด์ „์˜ ์ปค๋งจ๋“œ์ธ CONFIG GET requirepass ๋Š” ๋ ˆ๋””์Šค ๋ฒ„์ „ 6๋ถ€ํ„ฐ๋Š” ํ•ด์‹ฑ๋œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋ณด์—ฌ์ค„ ๊ฒƒ์ด๋‹ค.
SHA256์„ ์‚ฌ์šฉํ•˜๋ฉด ํŒจ์Šค์›Œ๋“œ ์ž์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•˜๋ฉด์„œ๋„ ๋น ๋ฅด๊ฒŒ AUTH๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋Š” ๋ ˆ๋””์Šค์˜ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›ํ•˜๋Š” ์ ์ด๋‹ค.
ํ•˜์ง€๋งŒ ACL passwords๋Š” ์‹ค์ œ๋กœ ํŒจ์Šค์›Œ๋“œ๊ฐ€ ์•„๋‹ˆ๋‹ค. ์ด ํŒจ์Šค์›Œ๋“œ๋Š” ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•˜๋Š” ์ธ์ฆ ํ† ํฐ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  • ๊ธธ์ด ์ œํ•œ์ด ์—†๋‹ค. ์ด ํŒจ์Šค์›Œ๋“œ๋Š” ํด๋ผ์ด์–ธํŠธ ์†Œํ”„ํŠธ์›จ์–ด์— ์ €์žฅ๋  ๋ฟ์ด์ง€, ์‚ฌ๋žŒ์ด ๊ธฐ์–ตํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
  • ACL ํŒจ์Šค์›Œ๋“œ๋Š” ๋‹ค๋ฅธ ๊ฒƒ์„ ๋ณดํ˜ธํ•˜์ง€ ์•Š๋Š”๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด๋ฉ”์ผ ๊ณ„์ •์˜ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์—ฌ๊ธฐ์— ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š์„ ๊ฒƒ์ด๋‹ค.
  • ํŠน์ • ์„œ๋ฒ„์˜ ๋ ˆ๋””์Šค ์ปค๋งจ๋“œ์— ๋Œ€ํ•œ ์ „์ฒด ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์–ป์—ˆ๊ฑฐ๋‚˜, ์‹œ์Šคํ…œ์„ ๋ฌด๋‹จ์œผ๋กœ ์นจ์ž…ํ•˜์—ฌ ํ•ด์‹œ๋œ ์•”ํ˜ธ ์ž์ฒด์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ ๊ฒฝ์šฐ, ์ด๋ฏธ ์•”ํ˜ธ๋ฅผ ํ†ตํ•ด์„œ ๋ณดํ˜ธํ•˜๊ณ ์ž ํ•˜๋Š” ์ธ์Šคํ„ด์Šค ์•ˆ์ „์„ฑ๊ณผ ๋ ˆ๋””์Šค์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค.

๋”ฐ๋ผ์„œ ์‹œ๊ฐ„๊ณผ ๊ณต๊ฐ„์„ ๋” ์ฐจ์ง€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํŒจ์Šค์›Œ๋“œ ์ธ์ฆ ์‹œ๊ฐ„์„ ๋Š๋ฆฌ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์€ ํŒจ์Šค์›Œ๋“œ ํฌ๋ž˜ํ‚น์ด ์‹ฌํ•ด์ง€๋„๋ก ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋งค์šฐ ์ข‹์ง€ ๋ชปํ•œ ์„ ํƒ์ด๋‹ค. ์ฐจ๋ผ๋ฆฌ ๊ฐ•๋ ฅํ•œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ•ด์‹œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์กฐ์ฐจ๋„ ๋”•์…”๋„ˆ๋ฆฌ๋‚˜ brute force ๊ณต๊ฒฉ์„ ์‚ฌ์šฉํ•ด์„œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ํ•ด๋…ํ•  ์ˆ˜ ์—†๋„๋ก ๋งŒ๋“œ๋Š” ๊ฑธ ์ œ์•ˆํ•œ๋‹ค. ์ด๋Ÿฐ ์ด์œ ๋กœ ์‹œ์Šคํ…œ์˜ ์•”ํ˜ธํ™” ์Šˆ๋„ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํŠน์ˆ˜ ACL ์ปค๋งจ๋“œ๊ฐ€ ์žˆ๋‹ค.

> ACL GENPASS
"dd721260bfe1b3d9601e7fbab36de6d04e2e67b0ef1c53de59d45950db0dd3cc"

์ปค๋งจ๋“œ๋Š” 32๋ฐ”์ดํŠธ์˜ ๋žœ๋คํ•œ ์Šˆ๋„ ์ŠคํŠธ๋ง์„ ์ƒ์„ฑํ•ด์„œ 64๋ฐ”์ดํŠธ์˜ ์˜๋ฌธ๊ณผ ์•ŒํŒŒ๋ฒณ ์ŠคํŠธ๋ง์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ์ด๋Š” ๊ณต๊ฒฉ์— ๋ฐฉ์–ดํ•˜๊ธฐ ์ถฉ๋ถ„ํ•œ ๊ธธ์ด์ด๋ฉฐ, ๋™์‹œ์— ๋ณต์‚ฌ&๋ถ™ํ˜€๋„ฃ๊ธฐ, ์ €์žฅ ๋“ฑ ๊ด€๋ฆฌํ•˜๊ธฐ์—๋„ ์‰ฌ์šด ๊ธธ์ด์ด๋‹ค. ์ด๋Š” ๋ ˆ๋””์Šค์—์„œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

Using an external ACL file

์œ ์ € ์ •๋ณด๋ฅผ ๋ ˆ๋””์Šค ๊ตฌ์„ฑํŒŒ์ผ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ๋‘ ๊ฐ€์ง€ ์žˆ๋‹ค.

  1. redis.conf ํŒŒ์ผ ๋‚ด์— ์ €์žฅ
  2. ์™ธ๋ถ€์˜ ACLํŒŒ์ผ์— ์ €์žฅ

๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€ ํ˜ธํ™˜๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ๋ ˆ๋””์Šค๋Š” ๋‹น์‹ ์—๊ฒŒ ๋‘˜ ์ค‘ ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๋ฌผ์–ด๋ณผ ๊ฒƒ์ด๋‹ค. redis.conf ํŒŒ์ผ ๋‚ด์— ์œ ์ €์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์€ ์ œ์ผ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค. ๋ณต์žกํ•œ ํ™˜๊ฒฝ์—์„œ ๋งŽ์€ ์œ ์ €๋ฅผ ์ง€์ •ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, ACL ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.

redis.conf ์™€ ์™ธ๋ถ€์˜ ACLํŒŒ์ผ์—์„œ ์œ ์ €๋ฅผ ์ •์˜ํ•˜๋Š” ํฌ๋งท์€ ๋™์ผํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ํ•˜๋‚˜์—์„œ ๋‹ค๋ฅธ ํ•˜๋‚˜๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ„๋‹จํ•˜๋‹ค.

user worker +@list +@connection ~jobs:* on >ffa9203c493aa99

๋งŒ์•ฝ ์™ธ๋ถ€์˜ ACLํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์•„๋ž˜์ฒ˜๋Ÿผ aclfile ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.

aclfile /etc/redis/users.acl

๋งŒ์•ฝ ๋ช‡๋ช‡์˜ ์œ ์ €๋“ค๋งŒ redis.conf ํŒŒ์ผ ๋‚ด์— ์ง€์ •ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, CONFIG REWRITE ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ƒˆ๋กœ์šด ์œ ์ € ์ •๋ณด๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

ACL ์ •๋ณด๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•  ๋•Œ์—๋Š” ์•„๋ž˜ ๋‘ ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ACL LOAD (/commands/acl-load) ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ˆ˜์ •ํ•œ ACL ๋ฆฌ์ŠคํŠธ๋ฅผ ์„œ๋ฒ„๋กœ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ๋ชจ๋“  ์œ ์ €์˜ ์ •๋ณด๊ฐ€ ์ •ํ™•ํ•ด์•ผ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์— ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ด ์ปค๋งจ๋“œ๋Š” ์—๋Ÿฌ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ธฐ์กด์˜ ACL ๋ฆฌ์ŠคํŠธ๋Š” ์ •์ƒ์œผ๋กœ ๋‚จ์•„์žˆ๊ฒŒ ๋œ๋‹ค.
  • ACL SAVE (/commands/acl-save) ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ˜„์žฌ์˜ ACL ๊ตฌ์„ฑ์„ ํŒŒ์ผ์— ์ €์žฅํ•œ๋‹ค.
โœ”๏ธŽ NOTE
CONFIG REWRITE ์ปค๋งจ๋“œ๊ฐ€ ACL SAVE ์ปค๋งจ๋“œ์™€๋Š” ์ƒ๊ด€์ด ์—†์Œ์„ ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค. ACL ๋ฆฌ์ŠคํŠธ๋ฅผ ํŒŒ์ผ๋กœ ๋ณด๊ด€ํ•œ๋‹ค๋ฉด ๊ฐ๊ฐ ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

ACL rules for Sentinel and Replicas

๋งŒ์•ฝ ๋ฆฌํ”Œ๋ฆฌ์นด ์ธ์Šคํ„ด์Šค๋‚˜ ์„ผํ‹ฐ๋„ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งˆ์Šคํ„ฐ์— ์ผ๋ถ€๋งŒ ์ ‘๊ทผํ•˜๋„๋ก ์ œํ•œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ๋‹ค์Œ ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
์„ผํ‹ฐ๋„์˜ ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์Šคํ„ฐ ๋ฐ ๋ฆฌํ”Œ๋ฆฌ์นด ์ธ์Šคํ„ด์Šค์—์„œ ๋‹ค์Œ ์ปค๋งจ๋“œ์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผํ•œ๋‹ค.

  • AUTH, CLIENT, SUBSCRIBE, SCRIPT, PUBLISH, PING, INFO, MULTI, SLAVEOF, CONFIG, CLIENT, EXEC
    ์„ผํ‹ฐ๋„์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ํ‚ค์— ์ ‘๊ทผํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ๊ทœ์น™์„ ๋งŒ๋“ค์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.(์–ธ์ œ๋‚˜ ์ ‘๊ทผ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— AUTH๋„ ํ•„์š” ์—†๋‹ค.)
ACL setuser sentinel-user >somepassword *client *subscribe +publish +ping +info +multi +slaveof +config +client +exec on

๋ ˆ๋””์Šค์˜ ๋ฆฌํ”Œ๋ฆฌ์นด๋Š” ๋งˆ์Šคํ„ฐ ์ธ์Šคํ„ด์Šค์—์„œ ๋‹ค์Œ ์ปค๋งจ๋“œ๋ฅผ ํ—ˆ์šฉํ•ด์ค˜์•ผ ํ•œ๋‹ค.

  • PSYNC, REPLCONF, PING
    ํ‚ค์— ์ ‘๊ทผํ•  ํ•„์š”๋Š” ์—†๊ณ , ๋”ฐ๋ผ์„œ ๋‹ค์Œ ๊ทœ์น™์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
ACL setuser replica-user >somepassword +psync +replconf +ping on

๋งˆ์Šคํ„ฐ๊ฐ€ ๋ชจ๋“  ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฆฌํ”Œ๋ฆฌ์นด ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ์„ฑํ•  ํ•„์š”๋Š” ์—†๋‹ค๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค. ๋งˆ์Šคํ„ฐ๋Š” ํ•ญ์ƒ ๋ณต์ œ๋ณธ ๊ด€์ ์—์„œ๋Š” ๋ฃจํŠธ ์‚ฌ์šฉ์ž๋กœ ์ธ์‹๋œ๋‹ค.

--

--

GARIMOO
garimoo
Editor for

์ž˜ ์“ฐ๊ณ  ์‹ถ์–ด์š”