๋ ๋์ค ACL
ACL
๋ ๋์ค์ ACL(Access Control List)์ ํน์ ์ปค๋ฅ์ ์ ๋ํด ์ปค๋งจ๋์ ํค์ ๋ํ ์ ๊ทผ ๊ถํ์ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ์ด๋ค. ์ปค๋ฅ์ ์ ๋งบ์ ๋ค ์ ์ ์ ์ด๋ฆ๊ณผ ํจ์ค์๋๋ฅผ ์ธ์ฆํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค. ์ธ์ฆ์ด ์ฑ๊ณตํ๋ฉด ์ด ์ปค๋ฅ์ ์ ํน์ ์ ์ ์ ์ฐ๊ฒฐ๋๋ฉฐ ์ ์ ๋ ์ ํ์ ์ผ๋ก ๋์ํ ์ ์๊ฒ ๋๋ค. ์ฒซ ์ฐ๊ฒฐ์ด ๊ธฐ๋ณธ ์ ์ ๋ก ๋งบ์ด์ง๊ณ , ๊ธฐ๋ณธ ์ ์ ๋ ๋ช ์์ ์ผ๋ก ์ธ์ฆ๋์ง ์์์ง๋ง ๊ธฐ๋ฅ์ ์ผ๋ถ๋ถ์ ์ฌ์ฉํ ์ ์๋ค๋ ๋ถ์์ฉ์ ๊ฐ์ง๊ณ ์๋ค.
๊ธฐ๋ณธ ๊ตฌ์ฑ์์ ๋ ๋์ค6์ ์ด์ ๋ฒ์ ๊ณผ ๋๊ฐ์ด ์๋ํ๋ค. ์๋ก์ด ๋ชจ๋ ์ปค๋ฅ์
์ ๊ฐ๋ฅํ ๋ชจ๋ ์ปค๋งจ๋๋ฅผ ํธ์ถํ๊ณ ๋ชจ๋ ํค์ ์ก์ธ์ค ํ ์ ์์ผ๋ฏ๋ก ACL ๊ธฐ๋ฅ์ ์ด์ ์ ํด๋ผ์ด์ธํธ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ์ญํธํ๋๋ค. ๋ํ ์ด์ ๋ฒ์ ์์ ํจ์ค์๋๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ธ requirepass
๋ฅผ ์ฌ์ ํ ์ฌ์ฉํ ์ ์์ง๋ง, ์ด ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ ์ฌ์ฉ์์ ๋ํ ์ํธ๋ฅผ ์ค์ ํ๋๊ฒ์ผ๋ก๋ง ์ฌ๊ฒจ์ง๋ค.
๋ ๋์ค6์์ AUTH
์ปค๋งจ๋๋ ํ์ฅ๋์์ผ๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ด ๋ ๊ฐ์ ์ธ์๋ฅผ ๋ฐ์ ์ ์๋ค.
AUTH <username> <password>
์ด์ ๋ฒ์ ์ ํธํ์ฑ์ ์ํด ์๋์ฒ๋ผ ์ฌ์ฉํ ์๋ ์๋ค.
AUTH <password>
์ธ์ฆ์ ์ฌ์ฉ๋ ์ฌ์ฉ์์ ์ด๋ฆ์ด โdefaultโ ์ด๋ฏ๋ก ํจ์ค์๋๋ง ์ ๋ ฅํ๋ ๊ฒ์ด ๊ธฐ๋ณธ ์ฌ์ฉ์์ ๋ํ ์ธ์ฆ์ผ๋ก ๋ฐ์๋ค์ฌ์ง๋ค. ๋ฐ๋ผ์ ์ด์ ๋ฒ์ ๊ณผ์ ์๋ฒฝํ ์ญํธํ์ฑ์ ์ ๊ณตํ๋ค๊ณ ๋ณผ ์ ์๋ค.
When ACLs are useful
ACL์ ์ฌ์ฉํ๊ธฐ ์ ์, ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ ์ป๊ณ ์ ํ๋๊ฒ ๋ฌด์์ธ์ง๋ฅผ ๋จผ์ ์๊ฐํด๋ณด์. ์ผ๋ฐ์ ์ผ๋ก ๋ค์ ๋ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ํด ACL์ ์ฌ์ฉํ๋ค.
- ํด๋ผ์ด์ธํธ์๊ฒ ์ต์ํ์ ๊ถํ๋ง ๋ถ์ฌ: ์ ๋ขฐํ ์ ์๋ ํด๋ผ์ด์ธํธ์๊ฒ๋ ์ฝ๊ธฐ ๊ถํ๋ง ๋ถ์ฌํจ์ผ๋ก์จ ๊ผญ ํ์ํ ์์ ๋ง ์ํํ ์ ์๋๋ก ํ๋ค.
- ์์ ํ ๋ ๋์ค์ ์ด์: ํ๋ก์ธ์ค์์ ๋ฐ์ํ ์๋ฌ๋ ์ด์์์ ์ค์๋ก ์ธํด ๋ ๋์ค์ ์ฌ๊ฐํ ๋ฌธ์ ๋ฅผ ๋ผ์น๋ ๊ฒ์ ํผํ๊ฒ ํ๊ธฐ ์ํด ์ผ๋ถ ๊ธฐ๋ฅ์ ํ์ฉํ์ง ์๊ณ ์ถ์ ์ ์๋ค. ์๋ฅผ ๋ค์ด ๋ ๋์ค์์ ์ผ๋ถ 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
์ ์ ๋ ๋ค์์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์์ฑ๋๊ณ , ์์ ๋ ์ ์๋ค.
- ACL SETUSER ๋ผ๋ ACL ์ปค๋งจ๋๋ฅผ ์ฌ์ฉ
- ์ ์ ๋ฅผ ์ ์ํ๋ ์๋ฒ์ ๊ตฌ์ฑํ์ผ์ ๋ณ๊ฒฝํ ๋ค ์๋ฒ๋ฅผ ์ฌ์์์ํค๊ฑฐ๋, ์ธ๋ถ์ 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
์ ์ ์ ๋ณด๋ฅผ ๋ ๋์ค ๊ตฌ์ฑํ์ผ์ ์ ์ฅํ ์ ์๋ ๋ฐฉ๋ฒ์ด ๋ ๊ฐ์ง ์๋ค.
- redis.conf ํ์ผ ๋ด์ ์ ์ฅ
- ์ธ๋ถ์ 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
๋ง์คํฐ๊ฐ ๋ชจ๋ ์ปค๋งจ๋๋ฅผ ์คํํ ์ ์๋๋ก ๋ฆฌํ๋ฆฌ์นด ์ธ์คํด์ค๋ฅผ ๊ตฌ์ฑํ ํ์๋ ์๋ค๋ ์ ์ ์ ์ํด์ผ ํ๋ค. ๋ง์คํฐ๋ ํญ์ ๋ณต์ ๋ณธ ๊ด์ ์์๋ ๋ฃจํธ ์ฌ์ฉ์๋ก ์ธ์๋๋ค.