06. Database Security
๋ฐ์ดํฐ๋ฒ ์ด์ค Databases
- ํ๋ ์ด์์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๊ธฐ ์ํด ์ ์ฅ๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐํ๋ ๋ชจ์
- ๋ฐ์ดํฐ ํญ๋ชฉ๊ณผ ๋ฐ์ดํฐ ํญ๋ชฉ ๊ทธ๋ฃน ๊ฐ์ ๊ด๊ณ๋ฅผ ํฌํจ
- ๋๋ก๋ ๋ณด์์ด ํ์ํ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ ์ ์์.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
(DBMS, database management system)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ณ ์ ์งํ๊ธฐ ์ํ ํ๋ก๊ทธ๋จ ๋ชจ์
- ์ฌ๋ฌ ์ฌ์ฉ์ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ query(ad hoc query) ๊ธฐ๋ฅ์ ์ ๊ณต
- Query language
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ํต์ผ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณต
DBMS Architecture
- ์ฌ์ฉ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ SQL ์ธํฐํ์ด์ค๋ฅผ ํตํด DBMS์ ์ํธ์์ฉํจ.
- Query Optimizer(์ฟผ๋ฆฌ ์ต์ ํ๊ธฐ)๋ SQL query๋ฅผ ํจ์จ์ ์ธ ์คํ ๊ณํ์ผ๋ก ๋ณํํจ.
- Query Executor(์ฟผ๋ฆฌ ์คํ๊ธฐ)๋ ๊ด๊ณํ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๊ณํ์ ์คํํจ.
- Storage Manager(์ ์ฅ ๊ด๋ฆฌ์)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌผ๋ฆฌ์ ์ ์ฅ์ ์ฒ๋ฆฌํ๋ฉฐ, ๋ฒํผ ๊ด๋ฆฌ์, ๋์คํฌ ๊ณต๊ฐ ๊ด๋ฆฌ์, ํธ๋์ญ์ ๊ด๋ฆฌ์, ์ ๊ธ ๊ด๋ฆฌ์, ๋ณต๊ตฌ ๊ด๋ฆฌ์ ๋ฑ์ ํ์ ๊ตฌ์ฑ์์๋ก ์ด๋ฃจ์ด์ง.
Relational Databases
- ํ๊ณผ ์ด๋ก ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ ํ ์ด๋ธ
- ๊ฐ ์ด์ ํน์ ์ ํ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์
- ๊ฐ ํ์ ๊ฐ ์ด์ ๋ํ ํน์ ๊ฐ์ ํฌํจ
- ์ด์์ ์ผ๋ก๋ ๋ชจ๋ ๊ฐ์ด ๊ณ ์ ํ์ฌ ํด๋น ํ์ ์๋ณ์/key(ํค)๋ฅผ ํ์ฑํ๋ ํ๋์ ์ด์ ๊ฐ์ง.
- ๋ชจ๋ ํ ์ด๋ธ์ ์กด์ฌํ๋ ๊ณ ์ ์๋ณ์์ ์ํด ์๋ก ์ฐ๊ฒฐ๋ ์ฌ๋ฌ ํ ์ด๋ธ์ ์์ฑ์ ๊ฐ๋ฅํ๊ฒ ํจ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๊ธฐ ์ํด relational query language(๊ด๊ณํ query์ด)๋ฅผ ์ฌ์ฉ
- ์ฌ์ฉ์๊ฐ ์ฃผ์ด์ง ๊ธฐ์ค์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ์ ์๋๋ก ํ์ฉ
Figure 5.2 Relational Database Example
Staff,Branch,StaffBranch์ธ ๊ฐ์ ํ ์ด๋ธ๋ก ๊ตฌ์ฑ๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์Staffํ ์ด๋ธ์staffNo(๊ธฐ๋ณธ ํค),name,telNo,posn์ด์ ๊ฐ์ง.Branchํ ์ด๋ธ์branchNo(๊ธฐ๋ณธ ํค),bAddress์ด์ ๊ฐ์ง.StaffBranchํ ์ด๋ธ์Staff์Branch๋ฅผ ์ฐ๊ฒฐํ๋ฉฐ,staffNo์branchNo๋ฅผ ์ธ๋ ํค๋ก ๊ฐ์ง.
Relational Database Elements
- Relation(๊ด๊ณ), Table(ํ ์ด๋ธ), File(ํ์ผ)
- Tuple(ํํ), Row(ํ), Record(๋ ์ฝ๋)
- Attribute(์์ฑ), Column(์ด), Field(ํ๋)
- Primary key(๊ธฐ๋ณธ ํค)
- ํ์ ๊ณ ์ ํ๊ฒ ์๋ณ
- ํ๋ ์ด์์ ์ด ์ด๋ฆ์ผ๋ก ๊ตฌ์ฑ
- Foreign key(์ธ๋ ํค)
- ํ ํ ์ด๋ธ์ ๋ค๋ฅธ ํ ์ด๋ธ์ ์์ฑ๊ณผ ์ฐ๊ฒฐ
- View(๋ทฐ), Virtual table(๊ฐ์ ํ
์ด๋ธ)
- ํ๋ ์ด์์ ํ ์ด๋ธ์์ ์ ํ๋ ํ๊ณผ ์ด์ ๋ฐํํ๋ query์ ๊ฒฐ๊ณผ
Structured Query Language (SQL)
- 1970๋ ๋ ์ค๋ฐ IBM์์ ์ฒ์ ๊ฐ๋ฐ๋จ.
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์, ์กฐ์ ๋ฐ queryํ๊ธฐ ์ํ ํ์คํ๋ ์ธ์ด
- ์ฌ๋ฌ ์ ์ฌํ ๋ฒ์ ์ ANSI/ISO ํ์ค ์กด์ฌ
- SQL ๋ฌธ์ ๋ค์์ ์ํด ์ฌ์ฉ๋ ์ ์์.
- ํ ์ด๋ธ ์์ฑ
- ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์ฝ์ ๋ฐ ์ญ์
- ๋ทฐ ์์ฑ
- query๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๊ฒ์
SQL: Standard Query Language
- SQL์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๊ณ ๊ด๋ฆฌ(query)ํ๊ฒ ํจ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ ์ํ ๊ฒ์ ๋ฐ ์กฐํ๋ฅผ ์ํด ํ๋์ ์ด์ด ์๋ ํ ์ด๋ธ๋ก ๊ตฌ์ฑ๋ ๋๊ท๋ชจ ๋ฐ์ดํฐ ๋ชจ์์.
- ์์ ํ
์ด๋ธ
CS166:- ํ๋/์ด:
First_Name,Last_Name,Code_ID - ๋ ์ฝ๋/ํ:
(Bernardo, Palazzi, 345)
- ํ๋/์ด:
SQL Syntax
SELECT๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋ ์ด์์ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ์ ํํ๋ ๋ฐ ์ฌ์ฉ๋จ.- ๊ฒฐ๊ณผ ์งํฉ์ ๊ฒฐ๊ณผ ํ ์ด๋ธ์ ์ ์ฅ๋จ.
WHERE์ ์ ๋ ์ฝ๋๋ฅผ ํํฐ๋งํ๋ ๋ฐ ์ฌ์ฉ๋จ.- ๊ธฐ๋ณธ ๊ตฌ๋ฌธ:
SELECT column_name(s) or * FROM table_name WHERE column_name operator value ORDER BY๋ ํ๋ ์ด์์ ํ๋(์ด)๋ฅผ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๋ ๋ฐ ์ฌ์ฉ๋จ.LIMIT๋ ํน์ ์์ ๋ ์ฝ๋(ํ)๋ง ๊ฒ์ํ๋๋ก ํ์ฉํจ.- ํ์ฅ ๊ตฌ๋ฌธ:
SELECT column_name(s) or * FROM table_name WHERE column_name operator value ORDER BY column_name ASC|DESC LIMIT starting row and number of lines
OWASP top 10
- 2013 OWASP Top 10 ๋ณด์ ์ทจ์ฝ์ ๋ชฉ๋ก
- ์ธ์ ์ (Injection)
- Broken Authentication and Session Management(์ธ์ฆ ๋ฐ ์ธ์ ๊ด๋ฆฌ ์ทจ์ฝ์ )
- ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ (Cross-Site Scripting, XSS)
- Insecure Direct Object References(์์ ํ์ง ์์ ์ง์ ๊ฐ์ฒด ์ฐธ์กฐ)
- Security Misconfiguration(๋ณด์ ์ค์ ์ค๋ฅ)
- Sensitive Data Exposure(๋ฏผ๊ฐํ ๋ฐ์ดํฐ ๋ ธ์ถ)
- Missing Function Level Access Control(๊ธฐ๋ฅ ์์ค access control ๋ถ์ฌ)
- ํฌ๋ก์ค ์ฌ์ดํธ ์์ฒญ ์์กฐ(Cross-Site Request Forgery, CSRF)
- Using Components with Known Vulnerabilities(์๋ ค์ง ์ทจ์ฝ์ ์ด ์๋ ๊ตฌ์ฑ์์ ์ฌ์ฉ)
- Unvalidated Redirects and Forwards(๊ฒ์ฆ๋์ง ์์ ๋ฆฌ๋ค์ด๋ ํธ ๋ฐ ํฌ์๋)
SQL Injection Attack
- ๋ง์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํผ์์ ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ฐ์.
- ์ข
์ข
์ด ์ฌ์ฉ์ ์
๋ ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ถ๋๋ SQL query๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ๋ฌธ์ ๊ทธ๋๋ก ์ฌ์ฉ๋จ. ์:
SELECT user FROM table WHERE name = 'user_input';
- SQL Injection Attack(์ธ์ ์ ๊ณต๊ฒฉ)์ ์ฌ์ฉ์ ์ ๋ ฅ์ SQL ๋ฌธ์ ์ฝ์ ํ๋ ๊ฒ์ ํฌํจํจ.
Login Authentication Query
- ์ฌ์ฉ์๋ฅผ ์ธ์ฆํ๊ธฐ ์ํ ํ์ค query:
select * from users where user='$usern' AND pwd='$password'
- ์ ํ์ ์ธ SQL ์ธ์ ์
๊ณต๊ฒฉ
- ์๋ฒ ์ธก ์ฝ๋๊ฐ ์น ํผ์ ์ฌ์ฉ์ ์
๋ ฅ์ผ๋ก๋ถํฐ ๋ณ์
$username๊ณผ$passwd๋ฅผ ์ค์ - ๋ณ์๊ฐ SQL query์ ์ ๋ฌ๋จ.
select * from users where user='$username' AND pwd='$passwd'
- ๊ณต๊ฒฉ์์ ์ํด ํน์ ๋ฌธ์์ด์ด ์
๋ ฅ๋ ์ ์์.
select * from users where user='M' OR 1=1 --' AND pwd='M' OR '1=1'
- ๊ฒฐ๊ณผ: ์ํธ ์์ด ์ ๊ทผ ๊ถํ ํ๋
- ์๋ฒ ์ธก ์ฝ๋๊ฐ ์น ํผ์ ์ฌ์ฉ์ ์
๋ ฅ์ผ๋ก๋ถํฐ ๋ณ์
Some improvements โฆ
- query ์์ :
select user,pwd from users where user='$usern'$usern="M' OR '1=1"- ๊ฒฐ๊ณผ: ์ ์ฒด ํ ์ด๋ธ
- ์ฐ๋ฆฌ๋ ํ์ธํ ์ ์์.
- ๋จ ํ๋์ ํํ ๊ฒฐ๊ณผ
- ๊ฒฐ๊ณผ์ ํ์์ ์ ํ์ฑ
$usern="M' ; drop table user;"์ ๊ฐ์ ๊ณต๊ฒฉ๋ ๊ฐ๋ฅํจ.
Correct Solution
- ๋ชจ๋ "์
์์ ์ธ" ๋ฌธ์๋ฅผ ๋ณ๊ฒฝํ๋ Escape(์ด์ค์ผ์ดํ) ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์.
Escape("t ' c")๋"t \' c"๋ฅผ ๊ฒฐ๊ณผ๋ก ์ ๊ณต
select user,pwd from users where user='$usern'์์$usern=escape("M' ;drop table user;")๋ฅผ ์ ์ฉํ๋ฉด,- ๊ฒฐ๊ณผ๋ ์์ ํ query๊ฐ ๋จ.
select user,pwd from users where user='M\' drop table user;\''
Database Access Control
- ๋ฐ์ดํฐ๋ฒ ์ด์ค access control ์์คํ
์ ๋ค์์ ๊ฒฐ์ ํจ.
- ์ฌ์ฉ์๊ฐ ์ ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ ์ ์๋์ง ๋๋ ์ผ๋ถ์๋ง ์ ๊ทผํ ์ ์๋์ง
- ์ฌ์ฉ์๊ฐ ์ด๋ค ์ ๊ทผ ๊ถํ(์์ฑ, ์ฝ์ , ์ญ์ , ์ ๋ฐ์ดํธ, ์ฝ๊ธฐ, ์ฐ๊ธฐ)์ ๊ฐ๋์ง
- ๋ค์ํ ๊ด๋ฆฌ ์ ์ฑ
์ ์ง์ํ ์ ์์.
- Centralized administration(์ค์ ์ง์ค์ ๊ด๋ฆฌ)
- ์์์ ๊ถํ ์๋ ์ฌ์ฉ์๊ฐ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ๊ณ ์ทจ์ํ ์ ์์.
- Ownership-based administration(์์ ๊ถ ๊ธฐ๋ฐ ๊ด๋ฆฌ)
- ํ ์ด๋ธ์ ์์ฑ์๊ฐ ํด๋น ํ ์ด๋ธ์ ๋ํ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ๊ณ ์ทจ์ํ ์ ์์.
- Decentralized administration(๋ถ์ฐ ๊ด๋ฆฌ)
- ํ ์ด๋ธ์ ์์ ์๊ฐ ๋ค๋ฅธ ์ฌ์ฉ์์๊ฒ ๊ถํ ๋ถ์ฌ ๊ถํ์ ๋ถ์ฌํ๊ณ ์ทจ์ํ ์ ์๊ฒ ํ์ฌ, ๊ทธ๋ค์ด ํ ์ด๋ธ์ ๋ํ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ๊ณ ์ทจ์ํ ์ ์๋๋ก ํจ.
- Centralized administration(์ค์ ์ง์ค์ ๊ด๋ฆฌ)
SQL Access Controls
- ์ ๊ทผ ๊ถํ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ ๊ฐ์ง ๋ช
๋ น:
GRANT: ํ๋ ์ด์์ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ๊ฑฐ๋ ์ฌ์ฉ์๋ฅผ ์ญํ ์ ํ ๋นํ๋ ๋ฐ ์ฌ์ฉREVOKE: ์ ๊ทผ ๊ถํ์ ์ทจ์
- ์ผ๋ฐ์ ์ธ ์ ๊ทผ ๊ถํ:
SELECT,INSERT,UPDATE,DELETE,REFERENCES
Cascading Authorizations
- ๊ถํ์ ์ฐ์์ ์ทจ์๋ฅผ ์๋ฏธํจ.
- ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์ A๊ฐ B์๊ฒ ๊ถํ์ ๋ถ์ฌํ๊ณ , B๊ฐ C์๊ฒ, C๊ฐ D์๊ฒ ๋์ผํ ๊ถํ์ ๋ถ์ฌํ์ ๋, A๊ฐ B์ ๊ถํ์ ์ทจ์(
REVOKE)ํ๋ฉด, B๋ก๋ถํฐ ๊ถํ์ ๋ถ์ฌ๋ฐ์ C์ D์ ๊ถํ๋ ์ฐ์์ ์ผ๋ก ์ทจ์๋จ.
Role-Based Access Control (RBAC)
- ์ญํ ๊ธฐ๋ฐ access control๋ ๊ด๋ฆฌ ๋ถ๋ด์ ์ค์ด๊ณ ๋ณด์์ ํฅ์์ํด.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค RBAC๋ ๋ค์ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ผ ํจ.
- ์ญํ ์์ฑ ๋ฐ ์ญ์
- ์ญํ ์ ๋ํ ๊ถํ ์ ์
- ์ฌ์ฉ์์ ์ญํ ํ ๋น ๋ฐ ์ทจ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ๋ฒ์ฃผ:
- Application owner(์ ํ๋ฆฌ์ผ์ด์ ์์ ์): ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๋ถ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ฅผ ์์ ํ๋ ์ต์ข ์ฌ์ฉ์
- End user(์ต์ข ์ฌ์ฉ์): ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ฅผ ์กฐ์ํ์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ฅผ ์์ ํ์ง ์๋ ์ต์ข ์ฌ์ฉ์
- Administrator(๊ด๋ฆฌ์): ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ๋ถ ๋๋ ์ ์ฒด์ ๋ํ ๊ด๋ฆฌ ์ฑ ์์ ๊ฐ์ง ์ฌ์ฉ์
Inference Attack
- query๋ฅผ ์ํํ๊ณ ์์ ๋ ํฉ๋ฒ์ ์ธ ์๋ต์ผ๋ก๋ถํฐ ์น์ธ๋์ง ์์ ์ ๋ณด๋ฅผ ์ถ๋ก ํ๋ ๊ณผ์
- Inference channel(์ถ๋ก ์ฑ๋)
- ์น์ธ๋์ง ์์ ๋ฐ์ดํฐ๊ฐ ํ๋๋๋ ์ ๋ณด ์ ์ก ๊ฒฝ๋ก
Inference Example
- ๊ณต๊ฒฉ์๋ ํฉ๋ฒ์ ์ธ ํต๊ณ query๋ฅผ ์กฐํฉํ์ฌ ๊ฐ์ธ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ถ๋ก ํ ์ ์์.
(์ ๊ณต='CS' AND ์ฑ๋ณ='๋จ')์ธ ์ฌ๋์ ์๋ฅผ queryํ์ฌ 1์ด๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์.(์ ๊ณต='CS' AND ์ฑ๋ณ='๋จ')์ธ ์ฌ๋์ ์ด๋ฆ์ queryํ์ฌJones๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์.- ์ด ๋ ๊ฒฐ๊ณผ๋ฅผ ํตํด, ๋จ์ฑ CS ์ ๊ณต์๊ฐ
Jonesํ ๋ช ๋ฟ์์ ์๊ฒ ๋จ. (์ ๊ณต='CS' AND ์ฑ๋ณ='๋จ')์ธ ์ฌ๋์ ํ๊ท ๊ธ์ฌ๋ฅผ queryํ์ฌ $50K๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์.- ๊ณต๊ฒฉ์๋
Jones์ ๊ธ์ฌ๊ฐ $50K๋ผ๊ณ ์ถ๋ก ํจ.
Inference Countermeasures
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ ์ ์ถ๋ก ํ์ง
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ access control ์ฒด์ ๋ฅผ ๋ณ๊ฒฝ
- query ์ ์ถ๋ก ํ์ง
- query๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ๋ณ๊ฒฝํ๊ฑฐ๋ ๊ฑฐ๋ถ
- ๋ ์ ๊ทผ ๋ฐฉ์ ๋ชจ๋ ์ถ๋ก ํ์ง ์๊ณ ๋ฆฌ์ฆ์ด ํ์ํจ.
- ์ด๋ ค์.
- ์ง์์ ์ธ ์ฐ๊ตฌ ์ฃผ์ ์.
Statistical Databases (SDB)
- ๊ฐ์ ๋ฐ ํ๊ท ๊ณผ ๊ฐ์ ํต๊ณ์ ์ฑ๊ฒฉ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณต
- ๋ ๊ฐ์ง ์ ํ:
- Pure statistical database(์์ ํต๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค)
- ํต๊ณ ๋ฐ์ดํฐ๋ง ์ ์ฅ
- Ordinary database with statistical access(ํต๊ณ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ ์ผ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค)
- ๊ฐ๋ณ ํญ๋ชฉ์ ํฌํจ
- DAC, MAC, RBAC๋ฅผ ์ฌ์ฉ
- Pure statistical database(์์ ํต๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค)
- access control ๋ชฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ฐ์ฑ์ ์์์ํค์ง ์์ผ๋ฉด์ ์ฌ์ฉ์์๊ฒ ํ์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๊ฒ์.
- ๋ณด์ ๋ฌธ์ ๋ ์ถ๋ก ์ ๋ฌธ์ ์.
Abstract Model of a Relational Database
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ ์ฝ๋ ์ ์งํฉ์ผ๋ก ๋ชจ๋ธ๋ง๋ ์ ์์ผ๋ฉฐ, ๊ฐ ๋ ์ฝ๋๋ M๊ฐ์ ์์ฑ ๊ฐ ์ ์ฐ๊ฒฐ๋ก ํํ๋จ
Statistical Database Security
- characteristic formula(ํน์ฑ ๊ณต์) C ์ฌ์ฉ
- ์์ฑ ๊ฐ์ ๋ํ ๋ ผ๋ฆฌ์
- ์:
(Sex=Male) AND ((Major=CS) OR (Major=EE)) - ํน์ฑ ๊ณต์ C์ query set(query ์งํฉ) ๋ C์ ์ผ์นํ๋ ๋ ์ฝ๋์ ์งํฉ์.
- ํต๊ณ์ query๋ query ์งํฉ์ ๋ํด ๊ณ์ฐ๋ ๊ฐ์ ์์ฑํ๋ query์.
Other Query Restrictions
- Query set overlap control(query ์งํฉ ์ค๋ณต ์ ์ด)
- ์๋ก์ด query์ ์ด์ query ๊ฐ์ ์ค๋ณต์ ์ ํ
- ์ฌ๋ฌ ๋ฌธ์ ์ ์ ๊ฐ์ง.
- Partitioning(ํํฐ์
๋)
- ๋ ์ฝ๋๋ฅผ ์ฌ๋ฌ ์ํธ ๋ฐฐํ์ ์ธ ๊ทธ๋ฃน์ผ๋ก ํด๋ฌ์คํฐ๋ง
- ๊ฐ ๊ทธ๋ฃน ์ ์ฒด์ ํต๊ณ์ ์์ฑ์ query
- Query denial and information leakage(query ๊ฑฐ๋ถ ๋ฐ ์ ๋ณด ์ ์ถ)
- ๊ฑฐ๋ถ๋ ์ ๋ณด๋ฅผ ์ ์ถํ ์ ์์.
- ๋์ํ๋ ค๋ฉด ์ฌ์ฉ์์ query๋ฅผ ์ถ์ ํด์ผ ํจ.
Protecting Against Inference
- ์ถ๋ก ๋ฐฉ์ง ๊ธฐ๋ฒ์ ํฌ๊ฒ Query Restriction(query ์ ํ)๊ณผ Perturbation(์ญ๋)์ผ๋ก ๋๋.
- query ์ ํ
- query ์งํฉ ํฌ๊ธฐ ์ ์ด
- query ์งํฉ ์ค๋ณต ์ ์ด
- ํํฐ์ ๋
- ์ญ๋
- Data perturbation(๋ฐ์ดํฐ ์ญ๋) (์: ๋ฐ์ดํฐ ์ค์ํ)
- Output perturbation(์ถ๋ ฅ ์ญ๋) (์: ์ก์ ์ถ๊ฐ, ๋ฌด์์ ํ๋ณธ)
Perturbation
- ์๋ณธ ๋ฐ์ดํฐ์์ ์์ฑ๋ ํต๊ณ์ ์ก์(noise)์ ์ถ๊ฐ
- Data perturbation(๋ฐ์ดํฐ ์ญ๋) ๊ธฐ๋ฒ
- ๊ฐ๋ณ ๋ ์ฝ๋์ ๊ฐ์ ์ถ๋ก ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ํต๊ณ๋ฅผ ์์ฑํ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์์ ํ ์ ์์.
- Output perturbation(์ถ๋ ฅ ์ญ๋) ๊ธฐ๋ฒ
- ์์คํ ์ด ์๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ๊ณตํ ํต๊ณ์๋ ๋ค๋ฅธ ์์ ๋ ํต๊ณ๋ฅผ ์์ฑํจ.
- Random-sample query(๋ฌด์์ ํ๋ณธ query)
- ๋ชฉํ๋ ์๋ณธ ๊ฒฐ๊ณผ์ ์ญ๋๋ ๊ฒฐ๊ณผ ๊ฐ์ ์ฐจ์ด๋ฅผ ์ต์ํํ๋ ๊ฒ์.
- ์ฃผ์ ๊ณผ์ ๋ ์ฌ์ฉํ ์ค๋ฅ์ ํ๊ท ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์.
Data Perturbation Techniques: Data Swapping
- Data swapping(๋ฐ์ดํฐ ์ค์ํ)์ ๋ฏผ๊ฐํ ์์ฑ๊ณผ ๋น๋ฏผ๊ฐ ์์ฑ ๊ฐ์ ์ฐ๊ด์ฑ์ ๋๊ธฐ ์ํด ๋ ์ฝ๋ ๊ฐ์ ๋น๋ฏผ๊ฐ ์์ฑ ๊ฐ์ ๊ตํํ๋ ๊ธฐ๋ฒ์.
- ์๋ฅผ ๋ค์ด, ํน์ ์ง๋ณ๊ณผ ๊ฑฐ์ฃผ ๋์ ๊ฐ์ ์ฐ๊ด์ฑ์ ์จ๊ธฐ๊ธฐ ์ํด, ๋ ๋ ์ฝ๋์ ๋์ ๊ฐ์ ์๋ก ๋ฐ๊ฟ.
- ์ด ๋ฐฉ๋ฒ์ ๊ฐ ์์ฑ์ ๋ํ 1์ฐจ ํต๊ณ(์: ๊ฐ ๋์์ ์ฌ๋ ์ฌ๋์ ์)๋ ๋ณด์กดํ๋ฉด์, ์์ฑ ๊ฐ์ ํต๊ณ์ ๊ด๊ณ๋ฅผ ์๊ณกํจ.
Database Encryption
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ ์กฐ์ง์์ ๊ฐ์ฅ ๊ฐ์น ์๋ ์ ๋ณด ์์
- ์ฌ๋ฌ ๋จ๊ณ, ๊ณ์ธต์ ๋ณด์์ผ๋ก ๋ณดํธ๋จ.
- ๋ฐฉํ๋ฒฝ, ์ธ์ฆ, OS access control ์์คํ , DB access control ์์คํ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฒด์ ๋ํ ์ํธํ
- ์ํธํ๋ ํนํ sensitiveํ ๋ฐ์ดํฐ์ ์ฃผ๋ก ๊ตฌํ๋จ. (๊ฐ์ธ์ ๋ณด๋ณดํธ๋ฒ์ ์ํด ๋ช ์)
- ์ ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋ ์ฝ๋ ์์ค, ์์ฑ ์์ค ๋๋ ๊ฐ๋ณ ํ๋ ์์ค ์ค ์ด๋ ์์ค์ ์ ์ฉํ ์ง ๊ฒฐ์ ํ์
- ์ํธํ์ ๋จ์ :
- Key management(ํค ๊ด๋ฆฌ)
- Inflexibility(์ ์ฐ์ฑ ๋ถ์กฑ)
- query ์ฒ๋ฆฌ ์
- Data owner(๋ฐ์ดํฐ ์์ ์): ํต์ ๋ release๋ฅผ ์ํด ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ์กฐ์ง
- User(์ฌ์ฉ์): ์์คํ ์ query๋ฅผ ์ ์ถํ๋ human entity
- Client(ํด๋ผ์ด์ธํธ): ์ฌ์ฉ์ query๋ฅผ ์๋ฒ์ ์ ์ฅ๋ ์ํธํ๋ ๋ฐ์ดํฐ์ ๋ํ query๋ก ๋ณํํ๋ ํ๋ก ํธ์๋
- Server(์๋ฒ): ๋ฐ์ดํฐ ์์ ์๋ก๋ถํฐ ์ํธํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ํด๋ผ์ด์ธํธ์ ๋ฐฐํฌํ ์ ์๋๋ก ํ๋ ์กฐ์ง
Abstract Model of a Relational Database
- ์ํธํ
- Query:
Salary <= $70K?- ์ฒ๋ฆฌ๊ฐ ๋ณต์กํด์ง ์ ์์
Encryption Scheme for Database
- index ๊ฐ์ ์ฐธ์กฐํด์ ํด๋น record๋ง ๋ณตํธํ
| eid | ename | salary | addr | did |
|---|---|---|---|---|
| 23 | Tom | 70K | Maple | 45 |
| 860 | Mary | 60K | Main | 83 |
| 320 | John | 50K | River | 50 |
| 875 | Jerry | 55K | Hopewell | 92 |
(a) Employee Table
| I(eid) | I(ename) | I(salary) | I(addr) | I(did) | |
|---|---|---|---|---|---|
| 1100110011001011... | 1 | 10 | 3 | 7 | 4 |
| 0111000111001010... | 5 | 7 | 2 | 7 | 8 |
| 1100010010001101... | 2 | 5 | 1 | 9 | 5 |
| 0011010011111101... | 5 | 5 | 2 | 4 | 9 |
(b) Encrypted Employee Table with Indexes
Cloud Security
- NIST๋ cloud computing(ํด๋ผ์ฐ๋ ์ปดํจํ
)์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํจ
MELL11: - "์ต์ํ์ ๊ด๋ฆฌ ๋ ธ๋ ฅ์ด๋ ์๋น์ค ์ ๊ณต์์์ ์ํธ์์ฉ์ผ๋ก ์ ์ํ๊ฒ ํ๋ก๋น์ ๋๋๊ณ ํด์ ๋ ์ ์๋ ๊ตฌ์ฑ ๊ฐ๋ฅํ ์ปดํจํ ์์(์: ๋คํธ์ํฌ, ์๋ฒ, ์คํ ๋ฆฌ์ง, ์ ํ๋ฆฌ์ผ์ด์ , ์๋น์ค)์ ๊ณต์ ํ์ ๋ํด ์ ๋น์ฟผํฐ์คํ๊ณ ํธ๋ฆฌํ๋ฉฐ ์ฃผ๋ฌธํ ๋คํธ์ํฌ ์ ๊ทผ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ชจ๋ธ. ์ด ํด๋ผ์ฐ๋ ๋ชจ๋ธ์ ๊ฐ์ฉ์ฑ์ ์ฆ์ง์ํค๋ฉฐ, 5๊ฐ์ง ํ์ ํน์ฑ, 3๊ฐ์ง ์๋น์ค ๋ชจ๋ธ, 4๊ฐ์ง ๋ฐฐํฌ ๋ชจ๋ธ๋ก ๊ตฌ์ฑ๋จ."
Cloud Computing Elements
- 5๊ฐ์ง ํ์ ํน์ฑ
- Broad Network Access
- Rapid Elasticity
- Measured Service
- On-Demand Self-Service
- Resource Pooling
- 3๊ฐ์ง service Models
- ์๋น์คํ ์ํํธ์จ์ด(SaaS, Software as a Service)
- ์๋น์คํ ํ๋ซํผ(PaaS, Platform as a Service)
- ์๋น์คํ ์ธํ๋ผ(IaaS, Infrastructure as a Service)
- 4๊ฐ์ง Deployment Models
- Public
- Private
- Hybrid
- Community
Cloud Computing Context
- Cloud service provider: end user๊ฐ resource๋ฅผ ํ์ํ ๋งํผ ์ฌ์ฉํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ์๋น์ค ์ ๊ณต
Cloud Security Risks
- CSA(Cloud Security Alliance)๋ ๋ค์๊ณผ ๊ฐ์ ํด๋ผ์ฐ๋ ๊ด๋ จ ์ฃผ์ ๋ณด์ ์ํ์ ๋์ดํจ.
- ํด๋ผ์ฐ๋ ์ปดํจํ ์ ๋จ์ฉ ๋ฐ ์ ์์ ์ฌ์ฉ
- ์์ ํ์ง ์์(insecure) interface ๋ฐ API
- ์ ์์ ์ธ ๋ด๋ถ์
- ๊ณต์ ๋ ๊ธฐ์ ๋ฌธ์
- ๋ฐ์ดํฐ ์์ค ๋๋ ์ ์ถ
- Account ๋๋ Service hijacking
- ์์ง ๋ฐ๊ฒฌ๋์ง ์์(unknown) risk profile
Data Protection in the Cloud
- ํด๋ผ์ฐ๋์์๋ ๋ฐ์ดํฐ ์ ์ถ ์ํ์ด ์ฆ๊ฐ
- ํด๋ผ์ฐ๋ ๊ณ ์ ์ ์ํ๊ณผ ๊ณผ์
- ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ์ํคํ ์ฒ ๋๋ ์ด์ ํน์ฑ
- Multi-instance model(๋ค์ค ์ธ์คํด์ค ๋ชจ๋ธ)
- ๊ฐ ํด๋ผ์ฐ๋ ๊ฐ์ ์์๊ฒ ๊ฐ์ ๋จธ์ ์ธ์คํด์ค์์ ์คํ๋๋ ๊ณ ์ ํ DBMS๋ฅผ ์ ๊ณต
- ๊ฐ์ ์์๊ฒ ๋ณด์ ๊ด๋ จ ๊ด๋ฆฌ ์์ ์ ๋ํ ์์ ํ ์ ์ด๊ถ์ ๋ถ์ฌ
- Multi-tenant model(๋ค์ค ํ
๋ํธ ๋ชจ๋ธ)
- ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ ์ ์๋ณ์๋ก ๋ฐ์ดํฐ๋ฅผ ํ๊ทธํ์ฌ ๋ค๋ฅธ ํ ๋ํธ์ ๊ณต์ ๋๋ ์ฌ์ ์ ์๋ ํ๊ฒฝ์ ํด๋ผ์ฐ๋ ๊ฐ์ ์์๊ฒ ์ ๊ณต
- ์ธ์คํด์ค๋ฅผ ๋ ์ ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง, ์์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๊ฒฝ์ ๊ตฌ์ถํ๊ณ ์ ์งํ๊ธฐ ์ํด ํด๋ผ์ฐ๋ ์ ๊ณต์์๊ฒ ์์กดํจ.
Summary
- Database(๋ฐ์ดํฐ๋ฒ ์ด์ค): ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ๋ชจ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (DBMS): ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ณ ์ ์งํ๊ธฐ ์ํ ํ๋ก๊ทธ๋จ
- SQL(Structured Query Language): ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์/์กฐ์/queryํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ธ์ด
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค: ํ(ํํ)๊ณผ ์ด(์์ฑ)์ผ๋ก ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ ํ ์ด๋ธ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค access control: ์ค์ ์ง์ค์/์์ ๊ถ ๊ธฐ๋ฐ/๋ถ์ฐ ๊ด๋ฆฌ
- ์ญํ ๊ธฐ๋ฐ access control(RBAC): ์ ํ๋ฆฌ์ผ์ด์ ์์ ์/์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ์ด์ธ์ ์ต์ข ์ฌ์ฉ์/๊ด๋ฆฌ์
- Inference channel(์ถ๋ก ์ฑ๋): ์น์ธ๋์ง ์์ ๋ฐ์ดํฐ๊ฐ ํ๋๋๋ ์ ๋ณด ์ ์ก ๊ฒฝ๋ก
- ํต๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค(SDB): query ์ ํ/์ญ๋/๋ฐ์ดํฐ ์ค์ํ/๋ฌด์์ ํ๋ณธ query
- Database Encryption(๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํธํ)
- ํด๋ผ์ฐ๋ ์ปดํจํ /๋ณด์/๋ฐ์ดํฐ ๋ณดํธ
- ๋ค์ค ์ธ์คํด์ค/๋ค์ค ํ ๋ํธ ๋ชจ๋ธ
