Fine-Grained Authorization
Keycloak์ Fine-Grained Authorization์ ๋ฆฌ์์ค ๋จ์๋ก ๋งค์ฐ ์ธ๋ฐํ ์ ๊ทผ ์ ์ฑ ์ ์๋ฆฝํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ๋๋ ๊ธฐ๋ฅ์ด๋ค. ๋จ์ํ ์ฌ์ฉ์ ์ญํ (Role)์๋ง ์์กดํ๋ ๊ฒ์ด ์๋๋ผ, ๋ฆฌ์์ค(Resource)์ ์ค์ฝํ(Scope)์ ๊ฐ๋ ์ ๋์ ํด ๋ณด๋ค ๋์ ์์ค์ ์ ์ฑ ์ ๊ตฌ์ฑํ ์ ์๊ฒ ํด์ค๋ค. ์ด๋ฅผ ํตํด ์์คํ ์ ๊ฐ ๋ฆฌ์์ค๋ง๋ค ๋ ๋ฆฝ์ ์ธ ์ ๊ทผ ํต์ ๊ธฐ์ค์ ๋ง๋ จํ๊ณ , ์ธ๋ถํ๋ ๊ถํ์ ๋ช ํํ ์ ์ํ ์ ์๋ค.
๋ค์์ Fine-Grained Authorization์ ๊ตฌ์ฑํ๋ ์ฃผ์ ์์์ ๋์ ๋ฐฉ์์ ๋จ๊ณ์ ์ผ๋ก ์ดํด๋ณธ ๋ด์ฉ์ด๋ค.
๋ฆฌ์์ค(Resource)
Keycloak์์์ ๋ฆฌ์์ค๋ ๋ณดํธ๊ฐ ํ์ํ ๋์(์: API ์๋ํฌ์ธํธ, ํ์ผ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ์ฝ๋ ๋ฑ)์ ์๋ฏธํ๋ค.
๊ด๋ฆฌ์๋ Keycloak Admin Console์์ ์ ํ๋ฆฌ์ผ์ด์ ๋ง๋ค ํ์ํ ๋ฆฌ์์ค๋ฅผ ์ ์ํ ์ ์์ผ๋ฉฐ, ๊ฐ ๋ฆฌ์์ค์๋ ์ด๋ฆ๊ณผ URI, ์์ ์ ๋ฑ์ ์ค์ ํ๋ค.
๋ฆฌ์์ค๋ ์ค์ฝํ๋ฅผ ํฌํจํ์ฌ ์ ์๋ ์ ์๋ค. ์์ปจ๋
document๋ผ๋ ๋ฆฌ์์ค์view,edit์ค์ฝํ๋ฅผ ๋ถ์ฌํด โ๋ฌธ์๋ฅผ ์กฐํํ ๊ถํโ๊ณผ โ๋ฌธ์๋ฅผ ํธ์งํ ๊ถํโ์ ๊ตฌ๋ถํ ์ ์๋ค.
์ค์ฝํ(Scope)
ํน์ ๋ฆฌ์์ค์ ๋ํด ์ํํ ์ ์๋ ๋์์ ์ ์ํ๋ค.
โ์ฝ๊ธฐโ, โ์ฐ๊ธฐโ, โ์ญ์ โ์ ๊ฐ์ด RESTful API ์ ๊ทผ ๋ฐฉ์์ ๊ธฐ์ค์ผ๋ก ๋ช ๋ช ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
์ค์ฝํ ๋จ์์ ๊ถํ ๊ด๋ฆฌ๋ฅผ ํตํด ๊ฐ์ ๋ฆฌ์์ค๋ผ๋ ๋์๋ณ๋ก ์ ๊ทผ์ ํต์ ํ ์ ์๋ค.
ํด๋ฆฌ์(Policy)
โ์ด๋ ํ ์กฐ๊ฑด์์ ์ ๊ทผ์ด ํ์ฉ(๋๋ ๊ฑฐ๋ถ)๋๋๊ฐ?โ๋ฅผ ์ ์ํ๋ ๊ท์น์ด๋ค.
์ญํ (Role), ๊ทธ๋ฃน(Group), ์ฌ์ฉ์ ์์ฑ, ์๊ฐ ์กฐ๊ฑด, ์ฌ์ฉ์ ๋์(Consent) ๋ฑ ๋ค์ํ ๋ฐฉ์์ผ๋ก ์กฐ๊ฑด์ ์ค์ ํ ์ ์๋ค.
์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ(์๋ฐ์คํฌ๋ฆฝํธ, JBoss Drools ๋ฑ)๋ฅผ ํ์ฉํ ๊ณ ๊ธ ์ ์ฑ ๋ ๊ฐ๋ฅํ๋ค.
ํด๋ฆฌ์๋ ๋จ์ผ ์กฐ๊ฑด๋ง ์ ์ํ๊ฑฐ๋, ๋ค๋ฅธ ์ฌ๋ฌ ํด๋ฆฌ์๋ฅผ ์ฐธ์กฐํด ๋ณตํฉ์ ์ธ ๋ก์ง์ ๊ตฌ์ฑํ ์ ์๋ค.
ํผ๋ฏธ์ (Permission)
ํด๋ฆฌ์์ ๋ฆฌ์์ค(ํน์ ์ค์ฝํ)๋ฅผ ์ฐ๊ฒฐํ์ฌ ์ต์ข ์ ์ธ ์ ๊ทผ ๊ถํ์ ์์ฑํ๋ ๊ณผ์ ์ด๋ค.
์๋ฅผ ๋ค์ด, โ
document๋ฆฌ์์ค์edit์ค์ฝํ์ ๋ํด โAdminโ ์ญํ ๋ง ์ ๊ทผ ๊ฐ๋ฅโ์ด๋ผ๋ ํผ๋ฏธ์ ์ ์ ์ํ๋ฉด, ํด๋น ์ญํ ์ ๊ฐ์ง ์ฌ์ฉ์๋ง ๋ฌธ์๋ฅผ ํธ์งํ ์ ์๊ฒ ๋๋ค.ํผ๋ฏธ์ ๋จ์์์ ์ ์ฑ ์กฐํฉ ๋ฐฉ์์ ์ค์ ํด, ์ฌ๋ฌ ํด๋ฆฌ์๋ฅผ โANDโ ๋๋ โORโ ์กฐ๊ฑด์ผ๋ก ๊ฒฐํฉํ ์ ์๋ค.
์ ์ฑ ํ๊ฐ(Policy Evaluation)
์ฌ์ฉ์๊ฐ ํน์ ๋ฆฌ์์ค์ ์ ๊ทผ ์์ฒญ์ ํ๋ฉด Keycloak์ ๊ด๋ จ ๋ฆฌ์์ค์ ์ค์ฝํ๋ฅผ ํ์ธํ๊ณ , ์ฌ๊ธฐ์ ํ ๋น๋ ํผ๋ฏธ์ ๋ฐ ์ ์ฑ ์ ๊ฒ์ฌํ๋ค.
์ ์ฑ ์์ ์ค์ ํ ์กฐ๊ฑด์ด ๋ชจ๋ ์ถฉ์กฑ๋๋ฉด ์ ๊ทผ์ด ํ๊ฐ๋๊ณ , ์กฐ๊ฑด ์ค ํ๋๋ผ๋ ์ถฉ์กฑ๋์ง ์์ผ๋ฉด ์ ๊ทผ์ด ๊ฑฐ๋ถ๋๋ค.
Keycloak์ ์ด ๊ณผ์ ์ ํตํฉ์ ์ผ๋ก ๊ด๋ฆฌํ๋ฏ๋ก, ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ๋จ์ํํ ์ ์๋ค.
๋ฆฌ์์ค ์๋ฒ(Resource Server) ๊ตฌ์ฑ
์ ํ๋ฆฌ์ผ์ด์ ์ด Keycloak์ผ๋ก๋ถํฐ ์ ์ฑ ํ๊ฐ๋ฅผ ๋ฐ์ ์ ์ฉํ๋ ค๋ฉด, ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฆฌ์์ค ์๋ฒ๋ก ๋ฑ๋กํด์ผ ํ๋ค.
Admin Console์์ ์ ํ๋ฆฌ์ผ์ด์ ํด๋ผ์ด์ธํธ(Client)์ โAuthorizationโ ํญ์ ํ์ฑํํด ๋ฆฌ์์ค์ ํด๋ฆฌ์, ํผ๋ฏธ์ ๋ฑ์ ์ค์ ํ๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ธก์์๋ Keycloak Policy Enforcement Point(PEP) ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ์ง์ Authorization API๋ฅผ ํธ์ถํด ์ ๊ทผ ๊ถํ ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๋ค.
๊ณ ๋ ค ์ฌํญ
์ธ๋ฐํ ์ ์ฑ ์ด ๋์ด๋ ์๋ก ์ ์ฑ ๊ด๋ฆฌ๊ฐ ๋ณต์กํด์ง ์ ์๋ค. ๋ฆฌ์์ค์ ์ค์ฝํ, ์ ์ฑ , ํผ๋ฏธ์ ์ค๊ณ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์งํํด์ผ ํ๋ค.
์ ์ฑ ์ถฉ๋์ด ๋ฐ์ํ์ง ์๋๋ก ์ญํ , ๊ทธ๋ฃน, ์์ฑ ๊ธฐ๋ฐ ์ ์ฑ ๋ค์ ์ถฉ๋ถํ ๊ฒํ ํ๊ณ , ํ ์คํธ ํ๊ฒฝ์์ ์๋ฎฌ๋ ์ด์ ์ ๊ฑฐ์ณ ์ค์ ์ด์์ ๋ฐ์ํด์ผ ํ๋ค.
์คํ ์๊ฐ์ ๋ถํ๊ฐ ์ฐ๋ ค๋๋ ๋ณตํฉ ์ ์ฑ (์คํฌ๋ฆฝํธ, ๋ค๋จ๊ณ ์กฐ๊ฑด ๋ฑ)์ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ์ง ์๋๋ก ์ฃผ์ํ๋ค.
Fine-Grained Authorization์ ์ฌ๋ฐ๋ฅด๊ฒ ํ์ฉํ๋ฉด, ์์คํ ์ ๋ฆฌ์์ค๋ณ ์ ๊ทผ ์ ์ด๋ฅผ ํฌ๋ช ํ๊ณ ์ ํํ๊ฒ ์ค์ ํ ์ ์๋ค. ์ด๋ฅผ ํตํด ๋ฏผ๊ฐ ๋ฐ์ดํฐ๋ ๊ธฐ๋ฅ์ ๋ํ ๋ณด์์ ํ์ธต ๊ฐํํ ์ ์์ผ๋ฉฐ, ์กฐ์ง ๋ด ๋ค์ํ ์ ๊ทผ ๊ถํ ์๊ตฌ์ฌํญ์ ์ ์ฐํ๊ฒ ์์ฉํ ์ ์๋ค. Keycloak์ด ์ ๊ณตํ๋ Authorization Services UI์ API๋ฅผ ์ ์ ํ ํ์ฉํ๋ฉด ๊ด๋ฆฌ์ ํ์ฅ์ด ์ฉ์ดํ๋ฏ๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์๊ตฌ์ฌํญ์ ๋ง์ถฐ ์ธ๋ฐํ ์ ์ฑ ์ ์ ๊ทน์ ์ผ๋ก ๋์ ํ๋ ๊ฒ์ด ์ข๋ค.
Last updated