ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ PostgreSQL๋ก ์์ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ: ์ด๋ก ๊ณผ ์ค์ต - PostgreSQL ๋ณด์ ๋ฐ ์ ๊ทผ ์ ์ด
octo54 2025. 3. 9. 02:22๐ PostgreSQL๋ก ์์ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ: ์ด๋ก ๊ณผ ์ค์ต
3.2 PostgreSQL ๋ณด์ ๋ฐ ์ ๊ทผ ์ ์ด
PostgreSQL์ ์์ ํ๊ฒ ์ด์ํ๊ธฐ ์ํด์๋ ์ฌ์ฉ์ ์ ๊ทผ ์ ์ด, ์ธ์ฆ ๋ฐฉ์ ์ค์ , ๋ฐ์ดํฐ ์ํธํ ๋ฑ ๋ค์ํ ๋ณด์ ๊ธฐ๋ฅ์ ์ดํดํ๊ณ ์ ์ฉํด์ผ ํฉ๋๋ค.
์ด๋ฒ ๊ธ์์๋ PostgreSQL์ ๋ณด์ ๊ฐ๋
๊ณผ ์ฃผ์ ์ค์ ๋ฐฉ๋ฒ์ ๋ค๋ฃจ๊ฒ ์ต๋๋ค.
3.2.1 PostgreSQL ๋ณด์ ๊ฐ์
PostgreSQL์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ๋ ฅํ ๋ณด์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ,
โ
์ฌ์ฉ์ ์ธ์ฆ(Authentication)
โ
๊ถํ ๊ด๋ฆฌ(Role & Privileges)
โ
๋ฐ์ดํฐ ์ํธํ(Encryption)
โ
๋คํธ์ํฌ ๋ณด์(SSL/TLS)
โ
๋ก๊ทธ ๋ฐ ๊ฐ์ฌ ๊ธฐ๋ฅ(Logging & Auditing)
๋ฑ์ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ ํ๊ฒ ๋ณดํธํ ์ ์์ต๋๋ค.
3.2.2 PostgreSQL ์ฌ์ฉ์ ๋ฐ ์ญํ (Role) ๊ด๋ฆฌ
PostgreSQL์์๋ ์ฌ์ฉ์๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด Role(์ญํ ) ์์คํ
์ ์ฌ์ฉํฉ๋๋ค.
โ
CREATE ROLE์ ์ฌ์ฉํ์ฌ ์๋ก์ด ์ฌ์ฉ์๋ฅผ ์์ฑ
โ
GRANT ๋ช
๋ น์ด๋ก ํน์ ๊ถํ์ ๋ถ์ฌ
โ
REVOKE ๋ช
๋ น์ด๋ก ๊ถํ ์ ๊ฑฐ
๐น ์ฌ์ฉ์(Role) ์์ฑํ๊ธฐ
CREATE ROLE db_user WITH LOGIN PASSWORD 'securepassword';
โ
WITH LOGIN → ๋ก๊ทธ์ธ ๊ฐ๋ฅํ ์ฌ์ฉ์ ์์ฑ
โ
PASSWORD → ๋ณด์ ๊ฐํ๋ฅผ ์ํด ๊ฐ๋ ฅํ ๋น๋ฐ๋ฒํธ ์ฌ์ฉ
๐น ์ฌ์ฉ์(Role)์ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ๊ถํ ๋ถ์ฌ
GRANT CONNECT ON DATABASE mydb TO db_user;
โ mydb ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ ๊ถํ๋ง ๋ถ์ฌ
GRANT ALL PRIVILEGES ON DATABASE mydb TO db_user;
โ mydb ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ๊ถํ ๋ถ์ฌ
๐น ํ ์ด๋ธ ๋ฐ ๊ฐ๋ณ ๊ถํ ๋ถ์ฌ
GRANT SELECT, INSERT, UPDATE ON users TO db_user;
โ users ํ ์ด๋ธ์ ์ฝ๊ธฐ(SELECT), ์ฝ์ (INSERT), ์์ (UPDATE) ๊ถํ ๋ถ์ฌ
REVOKE INSERT ON users FROM db_user;
โ db_user์ INSERT ๊ถํ ์ ๊ฑฐ
3.2.3 PostgreSQL ์ธ์ฆ ๋ฐฉ์ ์ค์ (pg_hba.conf)
PostgreSQL์ ์ฌ์ฉ์ ์ธ์ฆ์ ๊ด๋ฆฌํ๊ธฐ ์ํด pg_hba.conf (Host-Based Authentication) ์ค์ ํ์ผ์ ์ฌ์ฉํฉ๋๋ค.
sudo nano /etc/postgresql/17/main/pg_hba.conf
โ ํ์ผ ์์น๋ OS ๋ฐ PostgreSQL ๋ฒ์ ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์
๐น pg_hba.conf ์ค์ ํ์
# TYPE DATABASE USER ADDRESS METHOD
local all all md5
host all all 192.168.1.0/24 scram-sha-256
host all all 127.0.0.1/32 trust
๐น ์ฃผ์ ์ธ์ฆ ๋ฐฉ์ ์ค๋ช
์ธ์ฆ ๋ฐฉ์ ์ค๋ช
trust | ์ธ์ฆ ์์ด ๋ก๊ทธ์ธ ํ์ฉ (๋น์ถ์ฒ) |
md5 | ๋น๋ฐ๋ฒํธ ๊ธฐ๋ฐ ์ธ์ฆ (SHA-256 ๋ฏธ์ง์) |
scram-sha-256 | ๋ณด์์ด ๊ฐํ๋ ๋น๋ฐ๋ฒํธ ์ธ์ฆ (๊ถ์ฅ) |
peer | OS ๊ณ์ ๊ณผ PostgreSQL ๊ณ์ ์ด ๋์ผํ๋ฉด ์ธ์ฆ ์๋ต |
ldap | LDAP ์๋ฒ๋ฅผ ์ด์ฉํ ์ธ๋ถ ์ธ์ฆ |
cert | SSL/TLS ์ธ์ฆ์ ๊ธฐ๋ฐ ์ธ์ฆ |
๐ก ์ด์ ํ๊ฒฝ์์๋ scram-sha-256 ๋๋ cert ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์์ ํฉ๋๋ค.
3.2.4 PostgreSQL ๋ฐ์ดํฐ ์ํธํ ๋ฐ ๋ณด์ ์ค์
๐น ๋น๋ฐ๋ฒํธ ์ํธํ ์ค์ (scram-sha-256)
PostgreSQL 10๋ถํฐ scram-sha-256 ์ธ์ฆ ๋ฐฉ์์ด ๊ธฐ๋ณธ ์ง์๋ฉ๋๋ค.
postgresql.conf์์ ๋น๋ฐ๋ฒํธ ์ํธํ ๋ฐฉ์์ ์ค์ ํฉ๋๋ค.
password_encryption = scram-sha-256
โ ๊ธฐ์กด ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ํธํ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ
ALTER ROLE db_user WITH ENCRYPTED PASSWORD 'securepassword';
๐น SSL/TLS๋ฅผ ์ด์ฉํ ๋คํธ์ํฌ ์ํธํ
PostgreSQL์ ๋คํธ์ํฌ ํธ๋ํฝ์ ๋ณดํธํ๊ธฐ ์ํด SSL/TLS ์ํธํ๋ฅผ ์ง์ํฉ๋๋ค.
postgresql.conf์์ ๋ค์๊ณผ ๊ฐ์ด SSL์ ํ์ฑํํ ์ ์์ต๋๋ค.
ssl = on
ssl_cert_file = '/etc/postgresql/server.crt'
ssl_key_file = '/etc/postgresql/server.key'
โ SSL์ ํ์ฑํํ๊ณ ์ธ์ฆ์(server.crt) ๋ฐ ๊ฐ์ธ ํค(server.key) ์ง์
3.2.5 PostgreSQL ๋ก๊ทธ ๋ฐ ๊ฐ์ฌ(Auditing) ์ค์
PostgreSQL์์๋ ๋ณด์ ๋ชจ๋ํฐ๋ง ๋ฐ ๊ฐ์ฌ ๋ก๊ทธ(Audit Log) ๋ฅผ ์ค์ ํ์ฌ ๋น์ ์์ ์ธ ์ ๊ทผ์ ๊ฐ์งํ ์ ์์ต๋๋ค.
๐น PostgreSQL ๋ก๊ทธ ํ์ฑํ (postgresql.conf)
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d.log'
log_statement = 'all'
โ ๋ชจ๋ SQL ์ฟผ๋ฆฌ๋ฅผ ๊ธฐ๋ก (log_statement = 'all')
๐น ํ์ฅ ๋ชจ๋ pgAudit ์ฌ์ฉ (๊ณ ๊ธ ๊ฐ์ฌ ๋ก๊น )
PostgreSQL์ pgAudit ํ์ฅ ๋ชจ๋์ ์ฌ์ฉํ๋ฉด ๋ ์ ๋ฐํ ๋ณด์ ๋ก๊ทธ๋ฅผ ๋จ๊ธธ ์ ์์ต๋๋ค.
CREATE EXTENSION pgaudit;
ALTER SYSTEM SET pgaudit.log = 'all';
โ pgAudit๋ฅผ ํ์ฑํํ์ฌ ๋ชจ๋ SQL ํ๋์ ๋ก๊น
3.2.6 PostgreSQL ๋ณด์ ์ฒดํฌ๋ฆฌ์คํธ
์ด์ ํ๊ฒฝ์์ PostgreSQL์ ์์ ํ๊ฒ ์ ์งํ๊ธฐ ์ํด ๋ณด์ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ํ์ฉํ์ธ์.
โ
์ต์ PostgreSQL ๋ฒ์ ์ฌ์ฉ (SELECT version(); ๋ก ํ์ธ)
โ
scram-sha-256 ๋๋ SSL ์ธ์ฆ ๋ฐฉ์ ์ฌ์ฉ (pg_hba.conf ์ค์ ํ์ธ)
โ
๊ธฐ๋ณธ postgres ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ
โ
pgAudit๋ฅผ ํ์ฑํํ์ฌ ๊ฐ์ฌ ๋ก๊ทธ ๊ธฐ๋ก
โ
๋ถํ์ํ ์ ๊ทผ ์ฐจ๋จ (pg_hba.conf์์ ์ ๊ทผ IP ์ ํ)
โ
์ ๊ธฐ์ ์ธ ๋ฐฑ์
๋ฐ ๋ณด์ ์
๋ฐ์ดํธ ์ํ
3.2.7 ๊ฒฐ๋ก : PostgreSQL ๋ณด์ ์ต์ ํ ์ ๋ต
โ
์ฌ์ฉ์(Role) ๊ด๋ฆฌ๋ฅผ ํตํด ์ต์ ๊ถํ ์์น ์ ์ฉ
โ
๊ฐ๋ ฅํ ์ธ์ฆ ๋ฐฉ์(scram-sha-256, SSL/TLS) ์ ํ์ฉํ์ฌ ๋ณด์ ๊ฐํ
โ
๋ฐ์ดํฐ ์ํธํ ๋ฐ ๋คํธ์ํฌ ๋ณด์ ์ค์ ํ์
โ
๋ก๊ทธ ๋ฐ ๊ฐ์ฌ(Auditing) ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์ด์ ์งํ ๊ฐ์ง
โ
๋ณด์ ์
๋ฐ์ดํธ ๋ฐ ํจ์น ์ ์ฉ์ ์ ๊ธฐ์ ์ผ๋ก ์ํ
์ด์ PostgreSQL์ ๋ณด์ ๋ฐ ์ ๊ทผ ์ ์ด์ ๋ํ ๊ธฐ๋ณธ ๊ฐ๋
์ ์ตํ์ต๋๋ค!
๋ค์ ๊ธ์์๋ PostgreSQL ์ฑ๋ฅ ์ต์ ํ ๋ฐ ๋ชจ๋ํฐ๋ง์ ๋ค๋ฃจ๊ฒ ์ต๋๋ค. ๐
๐ ๋ค์ ๊ธ ์๊ณ : PostgreSQL ์ฑ๋ฅ ์ต์ ํ ๋ฐ ๋ชจ๋ํฐ๋ง
๐ ๋ค์ ํธ: 3.3 PostgreSQL ์ฑ๋ฅ ์ต์ ํ ๋ฐ ๋ชจ๋ํฐ๋ง
์ด์ PostgreSQL์ ๋ณด์ ๋ฐ ์ ๊ทผ ์ ์ด์ ๋ํ ๊ธ์ด ์์ฑ๋์์ต๋๋ค!
๋ค์ ๊ธ์์๋ PostgreSQL ์ฑ๋ฅ ์ต์ ํ ๋ฐ ๋ชจ๋ํฐ๋ง์ ๋ค๋ฃจ๊ฒ ์ต๋๋ค. ๐๐
'study > postgresql' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
- Total
- Today
- Yesterday
- Webpack
- AI์ฑ๋ด
- ํ๋ก ํธ์๋
- REACT
- Docker
- Next.js
- Ktor
- fastapi
- nextJS
- ๊ฐ๋ฐ๋ธ๋ก๊ทธ
- ๋ก์ปฌLLM
- LangChain
- kotlin
- Python
- ๋ฐฑ์๋
- llm
- ๋ฐฑ์๋๊ฐ๋ฐ
- Page
- Project
- ํ์ด์ง
- ์น๊ฐ๋ฐ
- ๊ด๋ฆฌ์
- github
- ๋ฆฌ์กํธ
- PostgreSQL
- nodejs
- til
- ์ฑ๋ด๊ฐ๋ฐ
- rag
- babel
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |