• Mindscape ๐Ÿ”ฅ
    • Playlist ๐ŸŽง
  • ๐Ÿค– Artifical Intelligence

    • 1. Basics; Linear Algebra
    • 2. Basics; Linear Algebra (2), Search (1)
    • 3. Search (2)
    • 4. Knowledge and Logic (1)
    • 5. Knowledge and Logic (2)
    • 6. Probability
    • 7. Information Theory
    • 8. Probabilitc Reasoning (2)
    • 9. Probabilitc Reasoning (3)
    • 10. Machine Learning (1)
    • 11. Machine Learning (2)
    • 12. Machine Learning (3)
    • 13. Linear Models
    • 14. Other Classic ML Models (1)
    • 15. Other Classic ML Models (2)
  • ๐Ÿ”’ Computer Security

    • 01. Overview
    • 02. ์ •๋ณด๋ณด์•ˆ์ •์ฑ… ๋ฐ ๋ฒ•๊ทœ
    • 03. Cryptographic Tools
    • 04. User Authentication
    • 05. Access Control
    • 06. Database Security
    • 07. Malicious Software
    • 08. Firmware Analysis
  • ๐Ÿ—„๏ธ Database System

    • 1. Introduction
    • 2. Relational Model
    • 3. SQL
    • 6. E-R Model
    • 7. Relational Database Design (1)
    • 7. Relational Database Design (2)
    • 13. Data Storage Structures
    • 14. Indexing
    • 15. Query Processing
  • ๐Ÿ“ Software Engineering

    • 2. Introduction to Software Engineering
    • 3. Process
    • 4. Process Models
    • 5. Agile
    • 6. Requirements
    • 7. Requirements Elicitation and Documentation
    • 8. Architecture
    • 9. Unified Modelling Language
    • 10. Object-Oriented Analysis
    • Object-Oriented Design
  • ๐Ÿง  Algorithm

    • Python ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ํŒ
    • C++ std::vector ์‚ฌ์šฉ๋ฒ• ์ •๋ฆฌ
    • Vim ์‚ฌ์šฉ ๋งค๋‰ด์–ผ
    • 1018๋ฒˆ: ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ
    • 1966๋ฒˆ: ํ”„๋ฆฐํ„ฐ ํ

05. Access Control

Access Control

ITU-T Recommendation X.800์ด ์ •์˜ํ•œ access control(์ ‘๊ทผ ์ œ์–ด)

resource์˜ ๋ฌด๋‹จ ์‚ฌ์šฉ ๋ฐฉ์ง€๋ฅผ ํฌํ•จํ•˜์—ฌ, ์Šน์ธ๋˜์ง€ ์•Š์€ ๋ฐฉ์‹์œผ๋กœ resource๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ

Access Control Principles

RFC 2828์ด ์ •์˜ํ•œ computer security(์ปดํ“จํ„ฐ ๋ณด์•ˆ)

์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์—์„œ ๋ณด์•ˆ ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๋ณด์ฆํ•˜๋Š” ์กฐ์น˜, ํŠนํžˆ ์ ‘๊ทผ ์ œ์–ด ์„œ๋น„์Šค๋ฅผ ๋ณด์ฆํ•˜๋Š” ์กฐ์น˜

Relationship Among Access Control and Other Security Functions

  • access control์€ authentication(์ธ์ฆ) ๋ฐ audit(๊ฐ์‚ฌ)๊ณผ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ด€๋ จ
  • ์ธ์ฆ์€ ์‚ฌ์šฉ์ž์˜ ์‹ ์›์„ ํ™•์ธํ•˜๊ณ , access control์€ ํ™•์ธ๋œ ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • resource์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •
  • Auditing ๊ธฐ๋Šฅ์€ ์ ‘๊ทผ ์‹œ๋„๋ฅผ ๊ธฐ๋กํ•˜์—ฌ ๋ณด์•ˆ policy ์ค€์ˆ˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ณ  ์นจ์ž…์„ ํƒ์ง€

Access Control Policies

  • Discretionary Access Control(์ž„์˜ ์ ‘๊ทผ ์ œ์–ด, DAC): resource์˜ ์†Œ์œ ์ž๊ฐ€ ๋‹ค๋ฅธ subject์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์„ค์ •
  • Mandatory Access Control(๊ฐ•์ œ ์ ‘๊ทผ ์ œ์–ด, MAC): ์‹œ์Šคํ…œ ์ „๋ฐ˜์˜ policy์— ๋”ฐ๋ผ ์ ‘๊ทผ ๊ถŒํ•œ์ด ์ค‘์•™์—์„œ ๊ด€๋ฆฌ๋จ.
  • Role-Based Access Control(role ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ์ œ์–ด, RBAC): ์‚ฌ์šฉ์ž์˜ ์กฐ์ง ๋‚ด role์— ๋”ฐ๋ผ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ถ€์—ฌ

Access Control Requirements

  • Reliable input(์‹ ๋ขฐ ๊ฐ€๋Šฅํ•œ ์ž…๋ ฅ)
  • Support for fine and coarse specifications(์„ธ๋ฐ€ํ•˜๊ณ  ํฌ๊ด„์ ์ธ ๋ช…์„ธ ์ง€์›)
  • Least privilege(์ตœ์†Œ ๊ถŒํ•œ)
  • Separation of duty(์ง๋ฌด ๋ถ„๋ฆฌ)
    • ํ•˜๋‚˜์˜ ์ž‘์—…์„ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๋ช… ์ด์ƒ์ด ํ•„์š”
  • Open and closed policies(๊ฐœ๋ฐฉ ๋ฐ ํ์‡„ policy)
  • Policy combinations and conflict resolution(policy ์กฐํ•ฉ ๋ฐ ์ถฉ๋Œ ํ•ด๊ฒฐ)
  • Administrative policies(๊ด€๋ฆฌ policy)
    • policy ๊ฐœ๋ฐœ ์ ˆ์ฐจ ๋“ฑ...

Access Control Basic Elements

  • Subject(์ฃผ์ฒด): object์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” entity
    • process(process)์˜ ๊ฐœ๋…๊ณผ ๋™์ผ
    • ์ผ๋ฐ˜์ ์œผ๋กœ ์ž์‹ ์ด ์‹œ์ž‘ํ•œ ํ–‰๋™์— ๋Œ€ํ•ด ์ฑ…์ž„์ด ์žˆ์Œ.
    • ์ข…์ข… owner(์†Œ์œ ์ž), group(๊ทธ๋ฃน), world(์›”๋“œ)์˜ ์„ธ ๊ฐ€์ง€ class๋ฅผ ๊ฐ€์ง.
  • Object(๊ฐ์ฒด): ์ ‘๊ทผ์ด control๋˜๋Š” resource(์ž์›)
    • ์ •๋ณด๋ฅผ ํฌํ•จ and/or ์ˆ˜์‹ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” entity
    • ๋ณดํ˜ธ๋Š” access control์ด ์ž‘๋™ํ•˜๋Š” ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง.
  • Access right(์ ‘๊ทผ ๊ถŒํ•œ): subject๊ฐ€ object์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์„ ๊ธฐ์ˆ 
    • ์˜ˆ: read(์ฝ๊ธฐ), write(์“ฐ๊ธฐ), execute(์‹คํ–‰), delete(์‚ญ์ œ), create(์ƒ์„ฑ), search(๊ฒ€์ƒ‰)

Mandatory Access Control

  • MAC(๊ฐ•์ œ ์ ‘๊ทผ ์ œ์–ด)๋Š” ๋” ์ œํ•œ์ ์ธ ๋ฐฉ์‹
  • ์†Œ์œ ๊ถŒ๊ณผ ๊ด€๊ณ„์—†์ด ์‚ฌ์šฉ์ž๊ฐ€ ํŒŒ์ผ์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ.
  • ๋Œ€์‹ , ๋ณด์•ˆ ๊ฒฐ์ •์€ central policy administrator(์ค‘์•™ policy ๊ด€๋ฆฌ์ž)์— ์˜ํ•ด ์ด๋ฃจ์–ด์ง.
  • ๊ฐ ๋ณด์•ˆ ๊ทœ์น™์€ ์ ‘๊ทผ์„ ์‹œ๋„ํ•˜๋Š” ๋‹น์‚ฌ์ž๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” subject, ์ ‘๊ทผ ๋Œ€์ƒ resource๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” object, ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น resource์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•˜๋Š” ์ผ๋ จ์˜ ๊ถŒํ•œ์œผ๋กœ ๊ตฌ์„ฑ๋จ.
  • SELinux(Security-Enhanced Linux)๋Š” MAC์„ ํ†ตํ•ฉํ•จ.

SELinux and MAC

  • ๋ชจ๋“  process์™€ ์‹œ์Šคํ…œ resource๋Š” SELinux context(SELinux ์ปจํ…์ŠคํŠธ, ๋˜๋Š” SELinux ๋ ˆ์ด๋ธ”)๋ผ๋Š” ํŠน๋ณ„ํ•œ ๋ณด์•ˆ ๋ ˆ์ด๋ธ”์„ ๊ฐ€์ง.
  • SELinux policy์€ ์ด context๋ฅผ ์ผ๋ จ์˜ ๊ทœ์น™์—์„œ ์‚ฌ์šฉํ•˜์—ฌ process๊ฐ€ ์„œ๋กœ ๋ฐ ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ resource๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์ •์˜ํ•จ.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ, policy์€ ๊ทœ์น™์ด ๋ช…์‹œ์ ์œผ๋กœ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ํ•œ ์–ด๋– ํ•œ ์ƒํ˜ธ ์ž‘์šฉ๋„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ.
  • SELinux context๋Š” user(์‚ฌ์šฉ์ž), role(role), type(์œ ํ˜•), security level(๋ณด์•ˆ ์ˆ˜์ค€) ๋“ฑ ์—ฌ๋Ÿฌ field๋ฅผ ๊ฐ€์ง.
  • ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ policy ๊ทœ์น™์ด ์ „์ฒด SELinux context๊ฐ€ ์•„๋‹Œ SELinux ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— SELinux ์œ ํ˜• ์ •๋ณด๊ฐ€ SELinux policy์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•  ์ˆ˜ ์žˆ์Œ.

Discretionary Access Control (DAC)

  • ํ•œ entity๊ฐ€ ๋‹ค๋ฅธ entity์—๊ฒŒ ์ผ๋ถ€ resource์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๋ฐฉ์‹
  • ์ข…์ข… access matrix(์ ‘๊ทผ ํ–‰๋ ฌ)์„ ์‚ฌ์šฉํ•˜์—ฌ ์ œ๊ณต๋จ.
    • ํ•œ ์ฐจ์›์€ resource์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ๋Š” ์‹๋ณ„๋œ subject๋กœ ๊ตฌ์„ฑ๋จ.
    • ๋‹ค๋ฅธ ์ฐจ์›์€ ์ ‘๊ทผ๋  ์ˆ˜ ์žˆ๋Š” object๋ฅผ ๋‚˜์—ดํ•จ.
  • ํ–‰๋ ฌ์˜ ๊ฐ ํ•ญ๋ชฉ์€ ํŠน์ • subject๊ฐ€ ํŠน์ • object์— ๋Œ€ํ•ด ๊ฐ–๋Š” ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋‚˜ํƒ€๋ƒ„.

Access Matrix

  • ํ–‰์€ subject(์‚ฌ์šฉ์ž, process)๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  ์—ด์€ object(ํŒŒ์ผ, ์žฅ์น˜)๋ฅผ ๋‚˜ํƒ€๋ƒ„.
  • ํ–‰๋ ฌ์˜ ๊ฐ ์…€ (i,ย j)(i,~j)(i,ย j)๋Š” subject iii๊ฐ€ object jjj์— ๋Œ€ํ•ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ ‘๊ทผ ๊ถŒํ•œ(์˜ˆ: ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์†Œ์œ )์„ ๋ช…์‹œํ•จ.

Example of Access Control Structures

  • Access matrix(์ ‘๊ทผ ํ–‰๋ ฌ): subject์™€ object ๊ฐ„์˜ ๋ชจ๋“  ๊ถŒํ•œ์„ ํ‘œ๋กœ ๋‚˜ํƒ€๋ƒ„.
  • Access Control Lists(์ ‘๊ทผ ์ œ์–ด ๋ชฉ๋ก, ACLs): object ์ค‘์‹ฌ. ๊ฐ object์— ๋Œ€ํ•ด ์–ด๋–ค subject๊ฐ€ ์–ด๋–ค ๊ถŒํ•œ์„ ๊ฐ–๋Š”์ง€ ๋ชฉ๋ก์œผ๋กœ ๊ด€๋ฆฌ (access matrix์˜ ์—ด์— ํ•ด๋‹น)
  • Capability Lists(๋Šฅ๋ ฅ ๋ชฉ๋ก): subject ์ค‘์‹ฌ. ๊ฐ subject๊ฐ€ ์–ด๋–ค object์— ๋Œ€ํ•ด ์–ด๋–ค ๊ถŒํ•œ์„ ๊ฐ–๋Š”์ง€ ๋ชฉ๋ก์œผ๋กœ ๊ด€๋ฆฌ (access matrix์˜ ํ–‰์— ํ•ด๋‹น)

Extended Access Control Matrix

  • ๊ธฐ์กด access matrix์„ ํ™•์žฅํ•˜์—ฌ ์กฐ๊ฑด๋ถ€ access control์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Œ.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • subject๊ฐ€ object์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๋‹ค๋ฅธ subject์—๊ฒŒ copy(๋ณต์‚ฌ)ํ•˜๊ฑฐ๋‚˜ owner(์†Œ์œ ๊ถŒ)๋ฅผ ์ด์ „ํ•˜๋Š” ๊ถŒํ•œ, ๋˜๋Š” ์ ‘๊ทผ์„ Audit(๊ฐ์‚ฌ)ํ•˜๋Š” ๊ถŒํ•œ ๋“ฑ์„ ์ถ”๊ฐ€๋กœ ๋ช…์‹œ.

Access Control Function

  • ์‚ฌ์šฉ์ž๊ฐ€ object์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์š”์ฒญํ•˜๋ฉด, Access Control Function(์ ‘๊ทผ ์ œ์–ด ํ•จ์ˆ˜)์ด ์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ”.
  • ์ด function์€ Access Control Policy์„ ์ฐธ์กฐํ•˜์—ฌ ์š”์ฒญ์„ grantํ• ์ง€ denyํ• ์ง€ ๊ฒฐ์ •ํ•จ.
  • ๊ฒฐ์ • ๊ฒฐ๊ณผ๋Š” Audit File์— ๊ธฐ๋ก๋  ์ˆ˜ ์žˆ์Œ.

Table 4.2 Access Control System Commands

๋ช…๋ น์„ค๋ช…
grant(subject, right, object)subject์—๊ฒŒ object์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌ
revoke(subject, right, object)subject๋กœ๋ถ€ํ„ฐ object์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ํšŒ์ˆ˜
create(subject, object)subject๊ฐ€ object๋ฅผ ์ƒ์„ฑ. ์ƒ์„ฑ์ž๋Š” ์†Œ์œ ์ž๊ฐ€ ๋จ.
delete(subject, object)subject๊ฐ€ object๋ฅผ ์‚ญ์ œ. ์†Œ์œ ์ž๋งŒ ๊ฐ€๋Šฅ.
read(subject, attribute, object)subject๊ฐ€ object์˜ ์†์„ฑ์„ ์ฝ์Œ.
write(subject, attribute, object)subject๊ฐ€ object์˜ ์†์„ฑ์„ ๋ณ€๊ฒฝ. ์†Œ์œ ์ž๋งŒ ๊ฐ€๋Šฅ.

Protection Domains

  • object์™€ ๊ทธ object์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์˜ ์ง‘ํ•ฉ
  • protection domains(๋ณดํ˜ธ ๋„๋ฉ”์ธ)๊ณผ ๋Šฅ๋ ฅ์„ ์—ฐ๊ด€์‹œํ‚ฌ ๋•Œ ๋” ํฐ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณต
  • Access matrix ์ธก๋ฉด์—์„œ, ํ•œ ํ–‰์€ ๋ณดํ˜ธ ๋„๋ฉ”์ธ์„ ์ •์˜ํ•จ.
  • ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์˜ ์ ‘๊ทผ ๊ถŒํ•œ์˜ ์ผ๋ถ€๋ฅผ ๊ฐ€์ง„ process๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ.
  • process์™€ ๋„๋ฉ”์ธ ๊ฐ„์˜ ์—ฐ๊ด€์€ ์ •์ ์ด๊ฑฐ๋‚˜ ๋™์ ์ผ ์ˆ˜ ์žˆ์Œ.
  • user mode(์‚ฌ์šฉ์ž ๋ชจ๋“œ)์—์„œ๋Š” ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด ์‚ฌ์šฉ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธ๋˜๋ฉฐ ํŠน์ • ๋ช…๋ น์–ด๋Š” ์‹คํ–‰๋  ์ˆ˜ ์—†์Œ.
  • kernel mode(์ปค๋„ ๋ชจ๋“œ)์—์„œ๋Š” ํŠน๊ถŒ ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ณดํ˜ธ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ.

UNIX File Access Control

  • UNIX ํŒŒ์ผ์€ i-nodes(์•„์ด๋…ธ๋“œ, index nodes)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ฆฌ๋จ.
    • ํŠน์ • ํŒŒ์ผ์— ํ•„์š”ํ•œ ์ฃผ์š” ์ •๋ณด๊ฐ€ ์žˆ๋Š” ์ œ์–ด ๊ตฌ์กฐ
    • ์—ฌ๋Ÿฌ ํŒŒ์ผ ์ด๋ฆ„์ด ๋‹จ์ผ inode์™€ ์—ฐ๊ด€๋  ์ˆ˜ ์žˆ์Œ.
    • ํ™œ์„ฑ inode๋Š” ์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ํŒŒ์ผ๊ณผ ์—ฐ๊ด€๋จ.
    • ํŒŒ์ผ ์†์„ฑ, ๊ถŒํ•œ ๋ฐ ์ œ์–ด ์ •๋ณด๋Š” inode์— ์ €์žฅ๋จ.
    • ๋””์Šคํฌ์—๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๋ชจ๋“  ํŒŒ์ผ์˜ inode๋ฅผ ํฌํ•จํ•˜๋Š” inode ํ…Œ์ด๋ธ” ๋˜๋Š” inode ๋ชฉ๋ก์ด ์žˆ์Œ.
    • ํŒŒ์ผ์ด ์—ด๋ฆฌ๋ฉด ํ•ด๋‹น inode๊ฐ€ ์ฃผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ฐ€์ ธ์™€์ ธ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์ฃผ inode ํ…Œ์ด๋ธ”์— ์ €์žฅ๋จ.
  • directory๋Š” ๊ณ„์ธต์  ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ๋จ.
    • ํŒŒ์ผ ๋ฐ/๋˜๋Š” ๋‹ค๋ฅธ directory๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Œ.
    • ํŒŒ์ผ ์ด๋ฆ„๊ณผ ์—ฐ๊ด€๋œ inode๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ํฌํ•จํ•จ.
  • user ID(๊ณ ์œ  ์‚ฌ์šฉ์ž ์‹๋ณ„ ๋ฒˆํ˜ธ, ์‚ฌ์šฉ์ž ID)
  • ๊ทธ๋ฃน ID๋กœ ์‹๋ณ„๋˜๋Š” ์ฃผ ๊ทธ๋ฃน์˜ ๋ฉค๋ฒ„
  • ํŠน์ • ๊ทธ๋ฃน์— ์†ํ•จ.
  • 12๊ฐœ์˜ ๋ณดํ˜ธ ๋น„ํŠธ
    • ํŒŒ์ผ์˜ ์†Œ์œ ์ž, ๊ทธ๋ฃน ๋ฉค๋ฒ„, ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์‹คํ–‰ ๊ถŒํ•œ์„ ๋ช…์‹œ
  • ์†Œ์œ ์ž ID, ๊ทธ๋ฃน ID, ๋ณดํ˜ธ ๋น„ํŠธ๋Š” ํŒŒ์ผ์˜ inode์˜ ์ผ๋ถ€์ž„.

Traditional UNIX File Access Control

  • "set user ID"(SetUID)
  • "set group ID"(SetGID)
    • ์‹œ์Šคํ…œ์ด access control decision์„ ๋‚ด๋ฆด ๋•Œ ์‹ค์ œ ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์— ๋”ํ•˜์—ฌ ํŒŒ์ผ ์†Œ์œ ์ž/๊ทธ๋ฃน์˜ ๊ถŒํ•œ์„ ์ผ์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•จ.
    • ํŠน๊ถŒ ํ”„๋กœ๊ทธ๋žจ์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ํŒŒ์ผ/resource์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ.
  • Sticky bit(์Šคํ‹ฐํ‚ค ๋น„ํŠธ)
    • directory์— ์ ์šฉ๋  ๋•Œ, ํ•ด๋‹น directory ๋‚ด์˜ ํŒŒ์ผ ์†Œ์œ ์ž๋งŒ์ด ํŒŒ์ผ์„ ์žฌ๋ช…๋ช…, ์ด๋™ ๋˜๋Š” ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์ •ํ•˜๋Š” ๊ฒƒ
    • /tmp directory๋Š” ๋ˆ„๊ตฌ๋‚˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ์‚ญ์ œ ๊ฐ€๋Šฅํ•œ๋ฐ, linux๋ฅผ ๊ณต๋™์œผ๋กœ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ๊ณผ ์‚ฌ์šฉํ•  ๋•Œ quater๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋Š”๋ฐ, tmp directory๋Š” system reboot๋  ๋•Œ ๋‹ค ์‚ญ์ œ๋จ. f1๋ผ๋Š” ํŒŒ์ผ์„ ์ƒ์„ฑํ–ˆ๋Š”๋ฐ, ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ํŒŒ์ผ์„ ์‚ญ์ œํ•  ์ˆ˜ ์—†๋„๋ก ํ•ด์•ผ ํ•˜๋Š”๋ฐ, rwx๋กœ ๋˜์–ด ์žˆ์œผ๋‹ˆ ๋ˆ„๊ตฌ๋‚˜ directory ๋‚ด์šฉ์„ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•จ. ํ•˜์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์•ˆ ๋˜๋ฏ€๋กœ sticky bit๊ฐ€ ์„ค์ •๋œ directory๋Š” ํ•ด๋‹น ํŒŒ์ผ์˜ owner๋งŒ rename, move, deleteํ•  ์ˆ˜ ์žˆ์Œ.
  • Superuser(์Šˆํผ์œ ์ €): ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž
    • ์ผ๋ฐ˜์ ์ธ access control ์ œํ•œ์—์„œ ์ œ์™ธ๋จ.
    • ์‹œ์Šคํ…œ ์ „๋ฐ˜์— ๊ฑธ์นœ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ€์ง.

Access Control Lists (ACLs) in UNIX

  • Modern UNIX ์‹œ์Šคํ…œ์€ ACL๋„ supportํ•จ.
    • FreeBSD, OpenBSD, Linux, Solaris ๋“ฑ์—์„œ
  • FreeBSD
    • setfacl ๋ช…๋ น์€ UNIX ์‚ฌ์šฉ์ž ID ๋ฐ ๊ทธ๋ฃน์˜ ๋ชฉ๋ก์„ ํ• ๋‹นํ•จ.
    • ํŒŒ์ผ์— ์ž„์˜์˜ ์ˆ˜์˜ ์‚ฌ์šฉ์ž ๋ฐ ๊ทธ๋ฃน์„ ์—ฐ๊ด€์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ.
    • ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์‹คํ–‰ ๋ณดํ˜ธ ๋น„ํŠธ
    • ํŒŒ์ผ์ด ACL์„ ๊ฐ€์งˆ ํ•„์š”๋Š” ์—†์Œ.
    • ํŒŒ์ผ์— ํ™•์žฅ ACL์ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ถ”๊ฐ€ ๋ณดํ˜ธ ๋น„ํŠธ๋ฅผ ํฌํ•จํ•จ.
  • process๊ฐ€ ํŒŒ์ผ ์‹œ์Šคํ…œ object์— ์ ‘๊ทผ์„ ์š”์ฒญํ•  ๋•Œ ๋‘ ๋‹จ๊ณ„๊ฐ€ ์ˆ˜ํ–‰๋จ.
    1. ๊ฐ€์žฅ ์ ์ ˆํ•œ ACL์„ ์„ ํƒ (์†Œ์œ ์ž, ์ง€์ •๋œ ์‚ฌ์šฉ์ž, ์†Œ์œ  ๊ทธ๋ฃน/์ง€์ •๋œ ๊ทธ๋ฃน, ๊ธฐํƒ€)
    2. ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์— ์ถฉ๋ถ„ํ•œ ๊ถŒํ•œ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ
  • ํŠน์ • ํŒŒ์ผ์˜ ์‚ญ์ œ ๊ถŒํ•œ์€ ์ƒ์œ„ directory์— ๋Œ€ํ•œ write ๊ถŒํ•œ์ž„.

Role-Based Access Control (RBAC)

  • ์‚ฌ์šฉ์ž๋Š” role(์—ญํ• )์„ ํ• ๋‹น๋ฐ›๊ณ , role์€ resources์„ ํ• ๋‹น๋ฐ›๋Š” ๊ตฌ์กฐ
  • user-role, role-resources ๊ด€๊ณ„๋ฅผ ํ†ตํ•ด access control์„ ๊ด€๋ฆฌ
  • ์‚ฌ์šฉ์ž๋Š” session(์„ธ์…˜) ๋‚ด์—์„œ ํŠน์ • role์„ ํ™œ์„ฑํ™”ํ•˜์—ฌ ํ•ด๋‹น role์— ๋ถ€์—ฌ๋œ ๊ถŒํ•œ์„ ํ–‰์‚ฌ

Role-Based Access Control Models

  • RBAC๋Š” ์—ฌ๋Ÿฌ ๋ชจ๋ธ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๊ณ„์ธต์  ๊ตฌ์กฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ.
  1. Core RBAC(ํ•ต์‹ฌ RBAC): user, role, permission, session์˜ ๊ธฐ๋ณธ ์š”์†Œ๋ฅผ ์ •์˜
  2. Hierarchical RBAC(๊ณ„์ธต์  RBAC): role ๊ฐ„์˜ ์ƒ์† ๊ด€๊ณ„๋ฅผ ์ง€์›ํ•˜์—ฌ ๊ถŒํ•œ ๊ด€๋ฆฌ์˜ ํšจ์œจ์„ฑ์„ ๋†’์ž„.
  3. Static Separation of Duty RBAC(์ •์  ์ง๋ฌด ๋ถ„๋ฆฌ RBAC): ์ƒํ˜ธ ๋ฐฐํƒ€์ ์ธ role์„ ์ •์˜ํ•˜์—ฌ ์ดํ•ด ์ƒ์ถฉ์„ ๋ฐฉ์ง€ํ•จ.
  4. Dynamic Separation of Duty RBAC(๋™์  ์ง๋ฌด ๋ถ„๋ฆฌ RBAC): ํ•œ session ๋‚ด์—์„œ ํ™œ์„ฑํ™”๋  ์ˆ˜ ์žˆ๋Š” role๋“ค์„ ์ œํ•œํ•จ.

Constraints

  • ์กฐ์ง์˜ ํ–‰์ • ๋ฐ ๋ณด์•ˆ policy์˜ ํŠน์ˆ˜์„ฑ์— RBAC๋ฅผ ์ ์šฉํ•˜๋Š” ์ˆ˜๋‹จ์„ ์ œ๊ณต
  • Role ๊ฐ„์˜ ์ •์˜๋œ ๊ด€๊ณ„ ๋˜๋Š” role๊ณผ ๊ด€๋ จ๋œ ์กฐ๊ฑด
  • ์œ ํ˜•
    • Mutually exclusive roles(์ƒํ˜ธ ๋ฐฐํƒ€์  ์—ญํ• )
      • ์‚ฌ์šฉ์ž๋Š” (์„ธ์…˜ ๋™์•ˆ ๋˜๋Š” ์ •์ ์œผ๋กœ) ์ง‘ํ•ฉ ๋‚ด์˜ ํ•œ role์—๋งŒ ํ• ๋‹น๋  ์ˆ˜ ์žˆ์Œ.
      • ๋ชจ๋“  ๊ถŒํ•œ(์ ‘๊ทผ ๊ถŒํ•œ)์€ ์ง‘ํ•ฉ ๋‚ด์˜ ํ•œ role์—๋งŒ ๋ถ€์—ฌ๋  ์ˆ˜ ์žˆ์Œ.
    • Cardinality
      • role๊ณผ ๊ด€๋ จํ•˜์—ฌ maximum number๋ฅผ ์„ค์ •
    • Prerequisite roles(์„ ํ–‰ ์กฐ๊ฑด ์—ญํ• )
      • ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ๋‹ค๋ฅธ role์— ์ด๋ฏธ ํ• ๋‹น๋œ ๊ฒฝ์šฐ์—๋งŒ ํŠน์ • role์— ํ• ๋‹น๋  ์ˆ˜ ์žˆ์Œ์„ ์ง€์‹œ

NIST RBAC Model

  • SSD: Static separation of duty
  • DSD: Dynamic separation of duty

Basic Definitions

  • Object
    • ํŒŒ์ผ, ํ”„๋ฆฐํ„ฐ, ํ„ฐ๋ฏธ๋„, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ ˆ์ฝ”๋“œ ๋“ฑ access control์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ๋ชจ๋“  ์‹œ์Šคํ…œ resource
  • Operation(์—ฐ์‚ฐ)
    • ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ด๋ฏธ์ง€๋กœ, ํ˜ธ์ถœ ์‹œ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์ผ๋ถ€ ๊ธฐ๋Šฅ์„ ์‹คํ–‰
  • Permission(๊ถŒํ•œ)
    • ํ•˜๋‚˜ ์ด์ƒ์˜ RBAC ๋ณดํ˜ธ object์— ๋Œ€ํ•ด ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ํ—ˆ์šฉ, ์Šน์ธ

Core RBAC

  • Administrative functions(๊ด€๋ฆฌ ๊ธฐ๋Šฅ)
    • ์‚ฌ์šฉ์ž ์ง‘ํ•ฉ์—์„œ ์‚ฌ์šฉ์ž ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ
    • role ์ง‘ํ•ฉ์—์„œ role ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ
    • user-to-role ํ• ๋‹น ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ
    • permission-to-role ํ• ๋‹น ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ
  • Supporting system functions(์ง€์› ์‹œ์Šคํ…œ ๊ธฐ๋Šฅ)
    • ๊ธฐ๋ณธ ํ™œ์„ฑ role ์ง‘ํ•ฉ์œผ๋กœ ์‚ฌ์šฉ์ž session ์ƒ์„ฑ
    • session์— ํ™œ์„ฑ role ์ถ”๊ฐ€
    • session์—์„œ role ์‚ญ์ œ
    • session subject๊ฐ€ ์š”์ฒญ๋œ ์—ฐ์‚ฐ์„ object์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•  ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธ
  • Review functions(๊ฒ€ํ†  ๊ธฐ๋Šฅ)
    • ๊ด€๋ฆฌ์ž๊ฐ€ role assignment๋‚˜ permission assignment๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ธฐ๋Šฅ
    • ๋ชจ๋ธ์˜ ๋ชจ๋“  ์š”์†Œ์™€ ๊ทธ ๊ด€๊ณ„๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•จ.

Hierarchical RBAC

  • General role hierarchies: ์ž„์˜์˜ partial ordering์„ ํ—ˆ์šฉ
  • Limited role hierarchies: tree ๊ตฌ์กฐ๋ฅผ ์ฑ„ํƒํ•˜์—ฌ cycle์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•จ

Static Separation of Duty Relations (SSD)

  • ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์ง‘ํ•ฉ ๋‚ด์˜ ํ•œ role์— ํ• ๋‹น๋˜๋ฉด, ํ•ด๋‹น ์ง‘ํ•ฉ์˜ ๋‹ค๋ฅธ ์–ด๋–ค role์—๋„ ํ• ๋‹น๋  ์ˆ˜ ์—†๋„๋ก ํ•˜๋Š” ์ƒํ˜ธ ๋ฐฐํƒ€์ ์ธ role ์ง‘ํ•ฉ์˜ ์ •์˜๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ.
  • role ์ง‘ํ•ฉ์— ์นด๋””๋„๋ฆฌํ‹ฐ ์ œ์•ฝ์„ ๋‘˜ ์ˆ˜ ์žˆ์Œ.
    • (role set, n) ์Œ ํ˜•ํƒœ๋กœ ์ •์˜๋˜๋ฉฐ, ์–ด๋–ค ์‚ฌ์šฉ์ž๋„ ํ•ด๋‹น role ์ง‘ํ•ฉ์—์„œ n๊ฐœ ์ด์ƒ์˜ role์— ํ• ๋‹น๋˜์ง€ ์•Š์Œ.
  • role ์ง‘ํ•ฉ ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ, role ๋ฉค๋ฒ„ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ๋ฅผ ์œ„ํ•œ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•จ.
  • ๊ธฐ์กด SSD ์ง‘ํ•ฉ์˜ ์†์„ฑ์„ ๋ณด๊ธฐ ์œ„ํ•œ ๊ฒ€ํ†  ๊ธฐ๋Šฅ์„ ํฌํ•จํ•จ.

Dynamic Separation of Duty Relations (DSD)

  • ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ€์šฉํ•œ ๊ถŒํ•œ์„ ์ œํ•œํ•จ.
  • ์‚ฌ์šฉ์ž session ๋‚ด์—์„œ ๋˜๋Š” session ๊ฐ„์— ํ™œ์„ฑํ™”๋  ์ˆ˜ ์žˆ๋Š” role์— ์ œ์•ฝ์„ ๋‘ .
  • ์ œ์•ฝ์€ (role set, n) ์Œ์œผ๋กœ ์ •์˜๋˜๋ฉฐ, ์—ฌ๊ธฐ์„œ n์€ ์ž์—ฐ์ˆ˜ nโ‰ฅ2n \geq 2nโ‰ฅ2์ด๊ณ , ์–ด๋–ค ์‚ฌ์šฉ์ž session๋„ role ์ง‘ํ•ฉ์—์„œ n๊ฐœ ์ด์ƒ์˜ role์„ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์—†๋Š” ์†์„ฑ์„ ๊ฐ€์ง.
  • ๊ด€๋ฆฌ์ž๊ฐ€ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ, ๊ฒน์น˜์ง€ ์•Š๋Š” ์‹œ๊ฐ„๋Œ€์— ํŠน์ • ๋Šฅ๋ ฅ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ.
  • DSD ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๊ณ  ๋ณด๊ธฐ ์œ„ํ•œ ๊ด€๋ฆฌ ๋ฐ ๊ฒ€ํ†  ๊ธฐ๋Šฅ์„ ํฌํ•จํ•จ.

Example of Access Control Administration

  • HR ๋ถ€์„œ: ์‚ฌ์šฉ์ž ์ง์› ๊ฐ ID์— ๋Œ€ํ•˜์—ฌ role์„ ์ •์˜ํ•˜๊ณ , role์— ๋Œ€ํ•ด์„œ ๊ฐ ์‚ฌ์šฉ์ž๋ฅผ ํŠน์ • role์— assign
    • ๋”ฐ๋ผ์„œ, ํ•˜๋‚˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌ๋Ÿฌ role์— assign๋  ์ˆ˜ ์žˆ์Œ.
  • Application ๊ด€๋ฆฌ์ž: ์–ด๋–ค application์ด ์–ด๋–ค access ๊ถŒํ•œ์„ ๊ฐ–๋Š”์ง€ ์ •์˜
  • Authorization ๊ด€๋ฆฌ์ž: ์–ด๋–ค role์ด ์–ด๋–ค application์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ •์˜
  • RBAC ํ™˜๊ฒฝ์—์„œ๋Š” ๊ด€๋ฆฌ role์ด user-to-role ํ• ๋‹น ๋ฐ permission-to-role ํ• ๋‹น์„ ๊ด€๋ฆฌํ•จ.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, '์‚ฌ์šฉ์ž ๊ด€๋ฆฌ์ž' role์€ ์‚ฌ์šฉ์ž์—๊ฒŒ role์„ ํ• ๋‹นํ•˜๊ณ , '๊ถŒํ•œ ๊ด€๋ฆฌ์ž' role์€ role์— ๊ถŒํ•œ์„ ํ• ๋‹นํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•จ.

Attribute-based Access Control (ABAC)

  • ์†์„ฑ์„ ํ•จ๊ป˜ ๊ฒฐํ•ฉํ•˜๋Š” policy์— ๊ธฐ๋ฐ˜
    • ์‚ฌ์šฉ์ž ์†์„ฑ, resource ์†์„ฑ, ํ™˜๊ฒฝ ์†์„ฑ ๋“ฑ
    • ์˜ˆ: ๋‚˜์ด, role, ์งํ•จ ๋“ฑ / ์ฝ๊ธฐ, ์‚ญ์ œ, view ๋“ฑ / object type ๋“ฑ
  • ๋‹ค์–‘ํ•œ ์†์„ฑ์„ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ณต์žกํ•œ Boolean rule set์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Œ.
  • ์˜ˆ:
    • policy: ๊ด€๋ฆฌ์ž๋Š” ์ž์‹ ์˜ ์ง€์—ญ ๋‚ด์˜ transaction์„ ๋ณผ ์ˆ˜ ์žˆ์Œ.
    • policy: user.role == manager์ธ ์‚ฌ์šฉ์ž๋Š” user.region == transaction.region์ธ ๊ฒฝ์šฐ table == TRANSACTIONS ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด action == SELECT ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ.
์ตœ๊ทผ ์ˆ˜์ •: 25. 11. 6. ์˜คํ›„ 12:07
Contributors: kmbzn
Prev
04. User Authentication
Next
06. Database Security

BUILT WITH

CloudflareNode.jsGitHubGitVue.jsJavaScriptVSCodenpm

All trademarks and logos are property of their respective owners.
ยฉ 2025 kmbzn ยท MIT License