RBAC-ABAC.md

๐Ÿก

RBAC & ABAC

์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์—ญํ•  ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ์ œ์–ด์™€ ์†์„ฑ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ์ œ์–ด๋ฅผ ๋น„๊ตํ•ด๋ณด์ž.

| ๋ชฉํ‘œ | ์›น๊ฐœ๋ฐœ ๊ฐœ๋…๋“ค์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด์ž. | | -------- | --------------------------------------- | | ํ•™์Šต๋‚ด์šฉ | RBAC, ABAC | | ๋‚œ์ด๋„ | ๐Ÿฅš |

์žํˆฌ๋ฆฌ ๊ณต๋ถ€ ๐Ÿ‘‰ ์˜ˆ์‹œ ํ™•์ธ: RBAC, ABAC

๐Ÿ“Œ RBAC, Role-based Access Control

์˜์–ด: ์•Œ๋ฐฑ์ด๋ผ ์ฝ์Œ

์—ญํ•  Role์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ์ •์ ์ธ ์ ‘๊ทผ ์ œ์–ด ๋ชจ๋ธ (๋งŽ์ด ์“ฐ์ž„)

1. ๊ฐœ๋…

| concept | ๊ตฌ๋ถ„ | ๋‚ด์šฉ | ์˜ˆ์‹œ | | ---------- | ------ | ------------------------------------- | -------------------- | | User | ์‚ฌ์šฉ์ž | ํ•˜๋‚˜ ์ด์ƒ์˜ ์—ญํ• ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ | ์œ ์ €A, ์œ ์ €B | | Role | ์—ญํ•  | ์‚ฌ์šฉ์ž ๊ทธ๋ฃน | ๊ด€๋ฆฌ์ž, ๋งค๋‹ˆ์ €, ์‚ฌ์› | | Resource | ์ž์› | ๋ณดํ˜ธํ•ด์•ผ ํ•˜๋Š” ๋ฌผ๋ฆฌ์  ํ˜น์€ ๋…ผ๋ฆฌ์  ์š”์†Œ | ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํŒŒ์ผ | | Permission | ๊ถŒํ•œ | ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ, ํ—ˆ์šฉ๋œ ๋™์ž‘ | RWX |

Administrator & User

| Administrator | ๊ด€๋ฆฌ์ž | ์‚ฌ์šฉ์ž์—๊ฒŒ ์—ญํ• ์„ ๋ถ€์—ฌ, ๊ฐ ์—ญํ• ์— ํ•ด๋‹นํ•˜๋Š” ๊ถŒํ•œ ํ• ๋‹น | | ------------- | ------ | ---------------------------------------------------- | | User | ์‚ฌ์šฉ์ž | ์—ญํ• ์„ ๊ฐ€์ง€๋ฉฐ, ์—ญํ• ์— ๋”ฐ๋ผ ์ž์›์— ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ€์ง |

2. ์˜ˆ์‹œ: ์น˜๊ณผ

  • ์—ญํ•  Role

| ์น˜๊ณผ ์˜์‚ฌ | ํ™˜์ž ์ง„๋ฃŒ, ์น˜๋ฃŒ ๊ธฐ๋ก, ์ฒ˜๋ฐฉ | | --------- | -------------------------------- | | ๊ธฐ๊ณต์‚ฌ | ๋ณด์ฒ ๋ฌผ ์ œ์ž‘ | | ํ™˜์ž | ์ž์‹ ์˜ ์ง„๋ฃŒ ๊ธฐ๋ก, ์˜ˆ์•ฝ ์ •๋ณด ํ™•์ธ |

  • ์ž์› Resource

| ํ™˜์ž DB | ๊ฐœ๋ณ„ ํ™˜์ž์˜ ์ •๋ณด, ์น˜๋ฃŒ ๊ธฐ๋ก | | -------------- | ----------------------------- | | ์ง„๋ฃŒ DB | ์น˜๋ฃŒ ๋ฐ ์ง„๋ฃŒ ๊ธฐ๋ก | | ์˜๋ฃŒ ๋ณด์ฒ ๋ฌผ DB | ๋ณด์ฒ ๋ฌผ ์˜๋ขฐ ์ƒํƒœ ๋ฐ ์ฃผ๋ฌธ ์ •๋ณด |

  • ๊ถŒํ•œ Permission

| | ํ™˜์ž | ์ง„๋ฃŒ | ๋ณด์ฒ ๋ฌผ | | -------------- | ------------ | ------------ | ------------ | | ์น˜๊ณผ ์˜์‚ฌ ์—ญํ•  | O | O | O | | ๊ธฐ๊ณต์‚ฌ ์—ญํ•  | X | X | O | | ํ™˜์ž ์—ญํ•  | O(๋ณธ์ธ ๊ธฐ๋ก) | O(๋ณธ์ธ ๊ธฐ๋ก) | O(๋ณธ์ธ ๊ธฐ๋ก) |

3. ๊ตฌํ˜„

์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI)๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ , ์‚ฌ์šฉ์ž์˜ ์—ญํ•  Role๊ณผ ๊ถŒํ•œ Permission์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํ™”๋ฉด๊ณผ ๊ธฐ๋Šฅ์ด ๋ณด์ด๋„๋ก ๊ตฌํ˜„

  • ๋ณด์•ˆ์„ ๊ณ ๋ คํ•˜์—ฌ ์‚ฌ์šฉ์ž ์—ญํ• ๊ณผ ๊ถŒํ•œ์— ๋”ฐ๋ฅธ ์•ก์„ธ์Šค ์ œ์–ด๋ฅผ ๊ตฌํ˜„

| ๊ตฌ๋ถ„ | ๊ตฌํ˜„ | ์˜ˆ์‹œ | | ------------------------- | --------------------------------------------------- | -------------------------------------------- | | ๋กœ๊ทธ์ธ | ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ | user๋Š” role์„ ๊ฐ€์ง | | ๋Œ€์‹œ๋ณด๋“œ | ๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•œ ์‚ฌ์šฉ์ž์˜ ์—ญํ• ์— ๋”ฐ๋ผ, ๋Œ€์‹œ๋ณด๋“œ ์ ‘๊ทผ | ๊ด€๋ฆฌ์ž๋Š” ๋ชจ๋“  ์ž์›๊ณผ ๊ธฐ๋Šฅ ์‚ฌ์šฉ์ง์›์€ ํ•„์š”ํ•œ ์ •๋ณด๋งŒ ํ™•์ธ | | ๋ฉ”๋‰ด | ๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•œ ์‚ฌ์šฉ์ž์˜ ์—ญํ• ์— ๋”ฐ๋ผ, ๋ฉ”๋‰ด ํ™•์ธ | ์ง์›์€ ๊ด€๋ฆฌ์ž ๋ฉ”๋‰ด๋ฅผ ๋ณผ ์ˆ˜ ์—†์Œ | | ๋ฒ„ํŠผ | ๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•œ ์‚ฌ์šฉ์ž์˜ ์—ญํ• ์— ๋”ฐ๋ผ, ๋ฒ„ํŠผ ํ™œ์„ฑํ™” | ์ง์›์€ ๊ด€๋ฆฌ์ž permission์˜ ๋ฒ„ํŠผ์„ ๋ณผ ์ˆ˜ ์—†์Œ |


๐Ÿ“Œ ABAC, Attribute-based Access Control

์†์„ฑ Attribute์— ๋”ฐ๋ผ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์„ค์ •ํ•˜๋Š” ๋™์ ์ธ ์ ‘๊ทผ ์ œ์–ด ๋ชจ๋ธ(์œ ์—ฐํ•จ)

1. ๊ฐœ๋…

| concept | ๊ตฌ๋ถ„ | ๋‚ด์šฉ | ์˜ˆ์‹œ | | ---------- | ---- | --------------------------------- | --------------------------- | | Attributes | ์†์„ฑ | ์‚ฌ์šฉ์ž ์†์„ฑ, ์ž์› ์†์„ฑ, ํ™˜๊ฒฝ ์†์„ฑ | ์‚ฌ์šฉ์ž ์†์„ฑ: ๋ถ€์„œ, ๋ณด์•ˆ๋ ˆ๋ฒจ |

์ž์› ์†์„ฑ: ์œ„์น˜, ๋ฏผ๊ฐ๋„, ์†Œ์œ ๊ถŒ ํ™˜๊ฒฝ ์†์„ฑ: ์‹œ๊ฐ„, ๋„คํŠธ์›Œํฌ ์กฐ๊ฑด | | Policies | ์ •์ฑ… | ์†์„ฑ๊ฐ’์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์•ก์„ธ์Šค ์ œ์–ด ๊ฒฐ์ • | ์†์„ฑ ์กฐํ•ฉ + ๊ถŒํ•œ ํ• ๋‹น | | Access Request | ์•ก์„ธ์Šค ์š”์ฒญ | ์ž์›์— ์ ‘๊ทผ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์š”์ฒญ | ์†์„ฑ ํ‰๊ฐ€ ํ›„, ABAC ์ •์ฑ…์— ๋”ฐ๋ผ ์•ก์„ธ์Šค ๊ฒฐ์ • |

2. ์˜ˆ์‹œ: ์น˜๊ณผ

| ์ž์› Resource | ์ž์› ์„ค๋ช… | Ownership | ์†Œ์œ ๊ถŒ ์„ค๋ช… | | -------------- | -------------------------------------------------- | --------- | ------------------------------------------------------------------- | | ์น˜๊ณผ ๊ธฐ๋ก DB | ํ™˜์ž์˜ ์น˜๋ฃŒ ๊ธฐ๋ก๊ณผ ์ง„๋ฃŒ ์ •๋ณด DB | ์น˜๊ณผ | ์น˜๊ณผ๊ฐ€ ์†Œ์œ ํ•˜๊ณ  ๊ด€๋ฆฌ | | ์˜ˆ์•ฝ ์‹œ์Šคํ…œ | ํ™˜์ž์˜ ์ง„๋ฃŒ ์˜ˆ์•ฝ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ | ์น˜๊ณผ | ์น˜๊ณผ๊ฐ€ ์†Œ์œ ํ•˜๊ณ  ๊ด€๋ฆฌ | | ํ™˜์ž ๊ฐœ์ธ ์ •๋ณด | ๊ฐœ๋ณ„ ํ™˜์ž์˜ ๊ฐœ์ธ ์ •๋ณด์™€ ์—ฐ๋ฝ์ฒ˜ ๋“ฑ ๊ฐœ์ธ ์ •๋ณด | ํ™˜์ž | ํ•ด๋‹น ํ™˜์ž ์†Œ์œ ๊ถŒ: ํ™˜์ž๋Š” ์ž์‹ ์˜ ๊ฐœ์ธ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ | | ์˜๋ฃŒ ๋ณด์ฒ ๋ฌผ DB | ๋ณด์ฒ ๋ฌผ ์ œ์ž‘๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค | ์น˜๊ณผ | ์น˜๊ณผ๊ฐ€ ๋ณด์ฒ ๋ฌผ ์ œ์ž‘์— ๊ด€๋ จ๋œ ์ž์›์„ ์†Œ์œ : ์ด์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ถ€์—ฌ |

3. ๊ตฌํ˜„

ABAC๋Š” ๋‹ค์–‘ํ•œ ์†์„ฑ Attribute์„ ํ™œ์šฉํ•˜์—ฌ ๋™์ ์ธ ์•ก์„ธ์Šค Access๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์˜ˆ์‹œ
    • A Clinic์˜ ํŠน์ • ํ™˜์ž์˜ ๊ฐœ์ธ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ, ํ™˜์ž ์—ญํ• ์˜ ์‚ฌ์šฉ์ž์ด๋ฉฐ ์†Œ์œ ๊ถŒ์„ ๊ฐ€์ง„ ๋ณธ์ธ์ด๋ผ๋ฉด ์ž์›์— ์ ‘๊ทผ
    • ๋ณด์ฒ ๋ฌผ ์˜๋ขฐ๊ฐ€ ์™„๋ฃŒ ์ƒํƒœ๊ฐ€ ๋˜์—ˆ์„ ๋•Œ, ํ™˜์ž ์—ญํ• ์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์ด ์†Œ์œ ๊ถŒ์„ ๊ฐ€์ง„ ๋ณด์ฒ ๋ฌผ์„ ํ™•์ธ ๊ฐ€๋Šฅ
    • ํŠน์ • ์‹œ๊ฐ„์— ์˜๋ฃŒ ๋ณด์ฒ ๋ฌผ์˜ ์˜๋ขฐ ์ƒํƒœ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ ๋“ฑ