Skip to content

jhwkpdnpwanf/DevSecOps-hub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

63 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

DevSecOps-hub

๊ฐœ์š”

DevSecOps Hub๋Š” CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์ƒ์„ฑ๋˜๋Š” ์ •์  ๋ถ„์„(SAST), ๋™์  ๋ถ„์„(DAST), ์˜คํ”ˆ์†Œ์Šค ์ทจ์•ฝ์  ๋ถ„์„(SCA) ๊ฒฐ๊ณผ๋ฅผ ์ค‘์•™์—์„œ ์ˆ˜์ง‘ํ•˜๊ณ  ์ •๊ทœํ™”ํ•˜์—ฌ ์ €์žฅํ•˜๊ณ , ์ทจ์•ฝ์ ์˜ ์šฐ์„ ์ˆœ์œ„ํ™”, ์กฐ์น˜, ๊ฒ€์ฆ, ์žฌ๋ฐœ ๋ฐฉ์ง€, ๊ฐ์‚ฌ ๋Œ€์‘๊นŒ์ง€ ์ˆ˜ํ–‰ํ•˜๋Š” ํ†ตํ•ฉ ๋ณด์•ˆ ์šด์˜ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ณด์•ˆ๋„๊ตฌ๋ฅผ ๋„์ž…ํ•œ ๊ฐœ๋ฐœํ™˜๊ฒฝ์—์„œ ๋ณด์•ˆ ๋„๊ตฌ๊ฐ€ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋™์ž‘ํ•˜์—ฌ ๊ฒฐ๊ณผ๊ฐ€ ๋ถ„์‚ฐ๋˜๊ณ , ์ทจ์•ฝ์ ์ด ํƒ์ง€ ๋‹จ๊ณ„์—์„œ ๋ฉˆ์ถ”๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์šฐ์„ ์ˆœ์œ„ ํŒ๋‹จ์— ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ์กฐ์น˜๊ฐ€ ์ง€์—ฐ๋˜๊ณ  ์šด์˜์— ์ฐจ์งˆ์ด ์ƒ๊ธฐ๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

DevSecOps Hub๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ณด์•ˆ ์Šค์บ” ๊ฒฐ๊ณผ๋ฅผ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋กœ ํ†ตํ•ฉํ•˜๊ณ , ์ทจ์•ฝ์  ๋ผ์ดํ”„์‚ฌ์ดํด ๊ธฐ๋ฐ˜์˜ ์šด์˜ ์ฒด๊ณ„๋ฅผ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ์ทจ์•ฝ์ ์€ ๋ฐœ๊ฒฌ ํ›„,
๋ถ„์„ โ†’ ์šฐ์„ ์ˆœ์œ„ํ™” โ†’ ์กฐ์น˜ โ†’ ๊ฒ€์ฆ โ†’ ์ข…๋ฃŒ๊นŒ์ง€ ์ผ๊ด€๋œ ํ๋ฆ„์œผ๋กœ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ Policy Engine์„ ๋„์ž…ํ•˜์—ฌ ์„œ๋น„์Šค์—์„œ์˜ ์˜ํ–ฅ๋„๋ฅผ ๋ฐ˜์˜ํ•œ ์šฐ์„ ์ˆœ์œ„ํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง€๋ฉฐ, AI ๋ถ„์„ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์ทจ์•ฝ์  ์„ค๋ช…, ๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค, ์ˆ˜์ • ๊ฐ€์ด๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณด๋‹ค ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ๋ณด์•ˆ ์กฐ์น˜๋ฅผ ์ˆ˜ํ–‰ํ•  ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ €์žฅ ๊ตฌ์กฐ๋Š” ์šด์˜ ๋ฐ์ดํ„ฐ์™€ ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ, RDS(MySQL)์—๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , S3์—๋Š” ์›๋ณธ ๋ฆฌํฌํŠธ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„ฑ๋Šฅ, ํ™•์žฅ์„ฑ, ๋ณด์•ˆ์„ฑ์„ ๋™์‹œ์— ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค.

DevSecOps Hub๋Š” ์ทจ์•ฝ์ ์˜ ์ „ ์ƒ์• ์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ๋ณด์•ˆ ํ™œ๋™์„ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ†ตํ•ฉํ•˜๋Š” ์ค‘์•™ ์ง‘์ค‘ํ˜• DevSecOps ์šด์˜ ํ”Œ๋žซํผ์„ ์ง€ํ–ฅํ•ฉ๋‹ˆ๋‹ค.


๋ชฉ์ฐจ


์‚ฌ์šฉ ๋ฐฉ๋ฒ•


1. ๋ฌธ์ œ ์ •์˜

DevSecOps ํ™˜๊ฒฝ์—์„œ ๋ณด์•ˆ ๋„๊ตฌ๋ฅผ ๋„์ž…ํ•˜๋”๋ผ๋„, ์šด์˜ ๋‹จ๊ณ„์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ์  ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

1.1 ๋ณด์•ˆ ๊ฒฐ๊ณผ์˜ ๋ถ„์‚ฐ

  • CI ๋กœ๊ทธ์—๋งŒ ์กด์žฌํ•˜๊ฑฐ๋‚˜,
  • HTML ๋˜๋Š” JSON ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์ €์žฅ๋˜๊ฑฐ๋‚˜,
  • ๊ฐœ๋ณ„ ์‹คํ–‰ ๊ฒฐ๊ณผ๋กœ๋งŒ ์กด์žฌํ•˜๋Š” ๋“ฑ ๋ถ„์‚ฐ๋˜์–ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

1.2 ์กฐ์น˜ ์ฑ…์ž„ ๋ฐ ์šฐ์„ ์ˆœ์œ„ ๋ถ€์žฌ

  • ๋ˆ„๊ฐ€ ์–ด๋–ค ์ทจ์•ฝ์ ์„ ์–ธ์ œ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์‹ฌ๊ฐ๋„์™€ ์‹ค์ œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ˆ˜์ •์ด ์ง€์—ฐ๋˜๊ฑฐ๋‚˜ ๋ˆ„๋ฝ๋˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

1.3 ์šด์˜ ์ถ”์  ๋ถˆ๊ฐ€๋Šฅ

  • ์ƒํƒœ ๋ณ€๊ฒฝ ์ด๋ ฅ์ด ๊ธฐ๋ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๊ฒ€์ฆ ๋ฐ ์ข…๋ฃŒ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ๊ฐ์‚ฌ ๋Œ€์‘ ์‹œ ์ฆ๋น™ ํ™•๋ณด๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

1.4 ๊ฐœ๋ฐœ์ž ์ƒ์‚ฐ์„ฑ ์ €ํ•˜

  • ๋„๊ตฌ๋ณ„ ๊ฒฐ๊ณผ ํฌ๋งท์ด ์ƒ์ดํ•ฉ๋‹ˆ๋‹ค.
  • ์ทจ์•ฝ์  ์ดํ•ด์™€ ์ˆ˜์ •์— ์‹œ๊ฐ„์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.
  • ๋ณด์•ˆํŒ€ ์˜์กด๋„๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ๋†’์•„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ์‹œ์Šคํ…œ ๋ชฉํ‘œ

DevSecOps Hub๋Š” ์œ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ์ „๋žต์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์ค‘์•™ ์ˆ˜์ง‘: ๋‹ค์–‘ํ•œ ๋ณด์•ˆ ๋„๊ตฌ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ผ๊ด€๋œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋กœ ์ •๊ทœํ™”
  • ์šด์˜ ์ฒด๊ณ„ํ™”: ์ทจ์•ฝ์  Lifecycle ๊ด€๋ฆฌ, ์ด๋ ฅ ๊ด€๋ฆฌ ์ œ๊ณต
  • ๊ฐœ๋ฐœ์ž ์ง€์›: AI ๊ธฐ๋ฐ˜ ์„ค๋ช…, ์ˆ˜์ • ๊ฐ€์ด๋“œ, ์ฝ”๋“œ ์˜ˆ์‹œ ์ œ๊ณต
  • ๊ฐ์‚ฌ ๋Œ€์‘์„ฑ ํ™•๋ณด: ์ƒํƒœ ๋ณ€๊ฒฝ, ์‚ฌ์šฉ์ž ํ–‰์œ„, ์ €์žฅ ์œ„์น˜ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์›๋ณธ ์ถ”์ ์„ฑ ํ™•๋ณด

3. ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์š”

        [CI/CD ํŒŒ์ดํ”„๋ผ์ธ]
(GitHub Actions + ๋ณด์•ˆ ์Šค์บ” ๋„๊ตฌ)
               โ†“
        [๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ API]
     (FastAPI ์ˆ˜์ง‘ ์—”๋“œํฌ์ธํŠธ)
               โ†“
      [๋ฐ์ดํ„ฐ ํŒŒ์‹ฑ & ์ •๊ทœํ™”]
(Semgrep/ZAP/pip-audit ๊ฒฐ๊ณผ ํ†ตํ•ฉ)
               โ†“
          [๋ฐ์ดํ„ฐ ์ €์žฅ]
    (MySQL DB & AWS S3 ์›๋ณธ ์ €์žฅ)
               โ†“
      [๋ณด์•ˆ ๋ถ„์„ ๋ฐ ๊ฐ์‚ฌ ์„œ๋น„์Šค]
   (AI ์กฐ์น˜ ๊ฐ€์ด๋“œ ์ƒ์„ฑ & ๊ฐ์‚ฌ ๋กœ๊ทธ)
               โ†“
        [๋ณด์•ˆ ํ†ตํ•ฉ ๋Œ€์‹œ๋ณด๋“œ]
     (์ทจ์•ฝ์  ๊ด€๋ฆฌ ๋ฐ ์‹ค์‹œ๊ฐ„ ํ†ต๊ณ„)

4. ๋ฐ์ดํ„ฐ ํ๋ฆ„

4.1 ์Šค์บ” ์ˆ˜์ง‘

  • Shift-Left ๋ณด์•ˆ ์ ์šฉ: ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ Pushํ•˜๊ฑฐ๋‚˜ Pull Request๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์‹œ์ ์— CI/CD ํŒŒ์ดํ”„๋ผ์ธ์ด ์ž๋™์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • ๋ณด์•ˆ ๋„๊ตฌ ํ†ตํ•ฉ ์‹คํ–‰:
    • SAST: Semgrep
    • DAST: OWASP ZAP
    • SCA: pip-audit
  • ์ž๋™ํ™”๋œ ๋ณด์•ˆ ๊ฒ€์ฆ ๋‹จ๊ณ„๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ์ทจ์•ฝ์ ์„ ์กฐ๊ธฐ์— ํƒ์ง€ํ•ฉ๋‹ˆ๋‹ค.

4.2 ๋ฐ์ดํ„ฐ ์ˆ˜์‹ 

  • ๊ฒ€์‚ฌ ๊ฒฐ๊ณผ ์ „์†ก: ํŒŒ์ดํ”„๋ผ์ธ ์ข…๋ฃŒ ์‹œ์ ์— ์ƒ์„ฑ๋œ JSON ๊ฒฐ๊ณผ๋ฅผ DevSecOps Hub์˜ Ingestion API๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  • API ์ธ์ฆ: ์Šน์ธ๋œ CI/CD ํŒŒ์ดํ”„๋ผ์ธ๋งŒ ๊ฒฐ๊ณผ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ํ”„๋กœ์ ํŠธ๋ณ„ API Token ์ธ์ฆ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ํด๋ผ์šฐ๋“œ ์ ‘๊ทผ ์ธ์ฆ ๋ถ„๋ฆฌ: AWS S3 ์—…๋กœ๋“œ์™€ ๊ฐ™์€ ํด๋ผ์šฐ๋“œ ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ์€ GitHub Actions์˜ OIDC ๊ธฐ๋ฐ˜ IAM Role Assume ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ: ์ˆ˜์‹ ๋œ ๊ฒฐ๊ณผ๋Š” ์ฆ‰์‹œ ์ •๊ทœํ™” ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ์ „๋‹ฌ๋˜๋ฉฐ, ํ•„์š” ์‹œ ์•Œ๋ฆผ๊ณผ ํ›„์† ์กฐ์น˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐœ์†กํ•ฉ๋‹ˆ๋‹ค.

4.3 ์ •๊ทœํ™”

  • ๋ฐ์ดํ„ฐ ์ •์ œ:
    • ๋„๊ตฌ๋ณ„ ์ƒ์ดํ•œ ์ถœ๋ ฅ ํฌ๋งท(JSON ๊ตฌ์กฐ)์„ ๊ณตํ†ต ์Šคํ‚ค๋งˆ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์ค‘๋ณต ์ œ๊ฑฐ ๋ฐ ๊ทธ๋ฃนํ™”:
    • ๋™์ผ ์ทจ์•ฝ์ ์˜ ์ค‘๋ณต ๋ฐœ์ƒ์„ ์ œ๊ฑฐํ•˜๊ณ , ์ด๋ฅผ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ •๊ทœํ™” ๋ชฉ์ :
    • ๋‹ค์–‘ํ•œ ๋ณด์•ˆ ๋„๊ตฌ๋ฅผ ๋‹จ์ผ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋กœ ํ†ตํ•ฉํ•˜์—ฌ ์šด์˜ ํšจ์œจ์„ฑ์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค.

4.4 ์ €์žฅ

  • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ €์žฅ (MySQL):
    • ์Šค์บ” ์ •๋ณด, ์ทจ์•ฝ์  ์ •๋ณด, ์ƒํƒœ, ๋‹ด๋‹น์ž, ์ด๋ ฅ ๋“ฑ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์›๋ณธ ๋ฆฌํฌํŠธ ์ €์žฅ (AWS S3):
    • ์Šค์บ” ๊ฒฐ๊ณผ JSON ๋ฐ HTML ๋ฆฌํฌํŠธ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ๋ถ„๋ฆฌ ์ „๋žต:
    • DB์—๋Š” ์กฐํšŒ ์ค‘์‹ฌ ๋ฐ์ดํ„ฐ๋งŒ ์ €์žฅํ•˜๊ณ , ๋Œ€์šฉ๋Ÿ‰ ์›๋ณธ ๋ฐ์ดํ„ฐ๋Š” Object Storage์— ์ €์žฅํ•˜์—ฌ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.

4.5 ๋ถ„์„ ๋ฐ ์šด์˜

  • AI ๊ธฐ๋ฐ˜ ๋ถ„์„ ์ˆ˜ํ–‰:
    • ์ทจ์•ฝ์  ์„ค๋ช…, ๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค, ์˜ํ–ฅ ๋ฒ”์œ„, ์ˆ˜์ • ๊ฐ€์ด๋“œ๋ฅผ ์ž๋™ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์ •์ฑ… ๊ธฐ๋ฐ˜ ์šฐ์„ ์ˆœ์œ„ ์ ์šฉ:
    • Policy Engine์„ ํ†ตํ•ด Priority ๋ฐ SLA๊ฐ€ ์ž๋™์œผ๋กœ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค.
  • ์šด์˜ ์ƒํƒœ ๊ด€๋ฆฌ:
    • ์ทจ์•ฝ์  ์ƒํƒœ ๋ณ€๊ฒฝ, ๋‹ด๋‹น์ž ์ง€์ •, ์กฐ์น˜ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.
  • ์•Œ๋ฆผ ๋ฐ ์—ฐ๋™:
    • Slack, Jira, GitHub ๋“ฑ๊ณผ ์—ฐ๋™ํ•˜์—ฌ ์กฐ์น˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค.

5. Policy Engine

Policy Engine์€ ์„œ๋น„์Šค ๋งฅ๋ฝ๊ณผ ๋ณด์•ˆ ์œ„ํ—˜๋„๋ฅผ ์ข…ํ•ฉ์ ์œผ๋กœ ๊ณ ๋ คํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„์™€ ๋Œ€์‘ ์ „๋žต์„ ์ž๋™์œผ๋กœ ๊ฒฐ์ •ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์ž…๋ ฅ ์š”์†Œ

Policy Engine์€ ๋‹ค์Œ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ‰๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • Severity

    • Critical / High / Medium / Low
  • ์„œ๋น„์Šค ์ค‘์š”๋„

    • ํ•ต์‹ฌ ์„œ๋น„์Šค ์—ฌ๋ถ€
  • ๋…ธ์ถœ ๋ฒ”์œ„

    • Public (์™ธ๋ถ€ ๋…ธ์ถœ)
    • Internal (๋‚ด๋ถ€ ์‹œ์Šคํ…œ)
  • ์ทจ์•ฝ์  ํŠน์„ฑ

    • CWE (Common Weakness Enumeration)
    • CVE
  • ๋ฐœ์ƒ ์œ„์น˜

    • ์ธ์ฆ/์ธ๊ฐ€ ๋กœ์ง ์—ฌ๋ถ€
    • ๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ ์—ฌ๋ถ€
    • ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ฒ˜๋ฆฌ ์˜์—ญ ์—ฌ๋ถ€

์ฒ˜๋ฆฌ ๋กœ์ง

  • ์ •์  ๊ทœ์น™ ๊ธฐ๋ฐ˜ ์ •์ฑ… ํ‰๊ฐ€
  • ์กฐ๊ฑด ์กฐํ•ฉ์„ ํ†ตํ•œ ์œ„ํ—˜๋„ ์žฌ์‚ฐ์ •
  • ํŠน์ • ์กฐ๊ฑด์— ๋Œ€ํ•œ ๊ฐ€์ค‘์น˜ ์ ์šฉ

์ถœ๋ ฅ

  • Priority (P0 ~ P3)

    • P0: ์ฆ‰์‹œ ๋Œ€์‘
    • P1: ๋‹จ๊ธฐ ๋Œ€์‘
    • P2: ์ผ๋ฐ˜ ๋Œ€์‘
    • P3: ์žฅ๊ธฐ ๋Œ€์‘
  • SLA (์กฐ์น˜ ๊ธฐํ•œ)

    • P0: 24์‹œ๊ฐ„ ์ด๋‚ด
    • P1: 3์ผ ์ด๋‚ด
    • P2: 7์ผ ์ด๋‚ด
    • P3: 30์ผ ์ด๋‚ด
  • ์•Œ๋ฆผ ๋Œ€์ƒ

    • ๋‹ด๋‹น ๊ฐœ๋ฐœํŒ€
    • ๋ณด์•ˆํŒ€
    • ์šด์˜ํŒ€

์„ค๊ณ„ ๋ชฉ์ 

  • ๋ณด์•ˆ ํŒ๋‹จ์„ ์ž๋™ํ™”ํ•˜์—ฌ ์ผ๊ด€๋œ ์šด์˜ ์ฒด๊ณ„๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ์ทจ์•ฝ์ ์˜ ๊ธฐ์ˆ ์  ์‹ฌ๊ฐ๋„์™€ ์‹ค์ œ ์„œ๋น„์Šค์—์„œ ์˜ํ–ฅ๋„์˜ ์ฐจ์ด๋ฅผ ๋ณด์™„ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณด์•ˆ ๋Œ€์‘ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ž๋™ํ™”ํ•˜์—ฌ ์šด์˜ ๋ถ€๋‹ด ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค.

6. ์ทจ์•ฝ์  Lifecycle

DETECTED โ†’ TRIAGED โ†’ IN_PROGRESS โ†’ FIXED โ†’ VERIFIED โ†’ CLOSED

์ƒํƒœ ์ •์˜

  • DETECTED
    ๋ณด์•ˆ ์Šค์บ” ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์ทจ์•ฝ์ ์ด ์ตœ์ดˆ๋กœ ํƒ์ง€๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
    ์ด ๋‹จ๊ณ„์˜ ์ทจ์•ฝ์ ์€ ์•„์ง ๊ฒ€ํ† ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ๋‹จ์ˆœํžˆ ํƒ์ง€ ๊ฒฐ๊ณผ๋กœ๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

  • TRIAGED
    ๋ณด์•ˆ ๋‹ด๋‹น์ž ๋˜๋Š” ์ •์ฑ… ์—”์ง„์ด ์ทจ์•ฝ์ ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€ํ† ํ•˜๊ณ , ์šฐ์„ ์ˆœ์œ„์™€ ์ฒ˜๋ฆฌ ๋ฐฉํ–ฅ์„ ์ •๋ฆฌํ•œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
    ์ด ๋‹จ๊ณ„์—์„œ๋Š” False Positive ์—ฌ๋ถ€, ์œ„ํ—˜๋„ ์žฌํ‰๊ฐ€ ๋“ฑ์ด ํ•จ๊ป˜ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

  • IN_PROGRESS
    ์ทจ์•ฝ์ ์ด ์‹ค์ œ ์กฐ์น˜ ๋Œ€์ƒ์œผ๋กœ ํ™•์ •๋˜์–ด, ๊ฐœ๋ฐœ์ž ๋˜๋Š” ๋‹ด๋‹น์ž๊ฐ€ ์ˆ˜์ • ์ž‘์—…์„ ์ง„ํ–‰ ์ค‘์ธ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

  • FIXED
    ์ฝ”๋“œ ๋˜๋Š” ์„ค์ • ๋ณ€๊ฒฝ์„ ํ†ตํ•ด ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์ˆ˜์ •์ด ์™„๋ฃŒ๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
    ๋‹จ, ์‹ค์ œ๋กœ ์ทจ์•ฝ์ ์ด ์ œ๊ฑฐ๋˜์—ˆ๋Š”์ง€๋Š” ์•„์ง ํ™•์ธ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

  • VERIFIED
    ์ˆ˜์ •๋œ ๊ฒฐ๊ณผ์— ๋Œ€ํ•ด ์žฌ์Šค์บ” ๋˜๋Š” ์ˆ˜๋™ ๊ฒ€ํ† ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ, ์ทจ์•ฝ์ ์ด ์‹ค์ œ๋กœ ํ•ด์†Œ๋œ ๊ฒƒ์„ ํ™•์ธํ•œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

  • CLOSED
    ์ทจ์•ฝ์ ์ด ์ตœ์ข…์ ์œผ๋กœ ์ข…๋ฃŒ๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
    ์กฐ์น˜์™€ ๊ฒ€์ฆ์ด ๋ชจ๋‘ ์™„๋ฃŒ๋˜์—ˆ๊ฑฐ๋‚˜, ์ข…๋ฃŒ๊ฐ€ ์Šน์ธ๋œ ํ•ญ๋ชฉ์ด ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
    ์ด ๋‹จ๊ณ„์˜ ์ทจ์•ฝ์ ์€ ๋” ์ด์ƒ ํ™œ์„ฑ ์กฐ์น˜ ๋Œ€์ƒ์ด ์•„๋‹ˆ๋ฉฐ, ์ด๋ ฅ ๊ด€๋ฆฌ์™€ ๊ฐ์‚ฌ ์ถ”์  ๋ชฉ์ ์œผ๋กœ ๋ณด๊ด€๋ฉ๋‹ˆ๋‹ค.

์„ค๊ณ„ ์˜๋„

์ด Lifecycle์€ ํƒ์ง€ ์ดํ›„์˜ ๊ฒ€ํ† , ์ˆ˜์ •, ๊ฒ€์ฆ, ์ข…๋ฃŒ๊นŒ์ง€ ์ผ๊ด€๋œ ์šด์˜ ํ๋ฆ„์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

FIXED์™€ VERIFIED๋ฅผ ๋ถ„๋ฆฌํ•œ ์ด์œ ๋Š”, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜์ •ํ–ˆ๋‹ค๊ณ  ๋ณด๊ณ ํ•œ ์‹œ์ ๊ณผ ์‹ค์ œ๋กœ ์ทจ์•ฝ์ ์ด ํ•ด์†Œ๋œ ์‹œ์ ์„ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ์กฐ์น˜ ์™„๋ฃŒ ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ๊ฒ€์ฆ์„ ํ†ตํ•ด ๋†’์€ ์‹ ๋ขฐ๋„์˜ ์šด์˜ ์ฒด๊ณ„๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


7. ์Šคํ† ๋ฆฌ์ง€ ๋ฐ ์ธํ”„๋ผ ๊ตฌ์กฐ

AWS ์Šคํ† ๋ฆฌ์ง€ ๊ตฌ์„ฑ

๋ฐ์ดํ„ฐ์˜ ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ ์ €์žฅ์†Œ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Amazon S3 (Object Storage)

  • ์Šค์บ” ์›๋ณธ ๊ฒฐ๊ณผ(JSON, HTML ๋ฆฌํฌํŠธ) ์ €์žฅ
  • ์ทจ์•ฝ์  ๋ถ„์„์— ์‚ฌ์šฉ๋œ ์›๋ณธ ๋ฐ์ดํ„ฐ ๋ณด์กด

Amazon RDS (MySQL)

  • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ฐ ์šด์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ
  • ์ทจ์•ฝ์  ์ƒํƒœ, ์‚ฌ์šฉ์ž ์ •๋ณด, ์ด๋ ฅ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

์ €์žฅ์†Œ ๋ถ„๋ฆฌ ์„ค๊ณ„

์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ ์šด์˜ ๋ฐ์ดํ„ฐ์™€ ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ๋ถ„ ์ €์žฅ์†Œ ๋ฐ์ดํ„ฐ ์œ ํ˜•
๋ฉ”ํƒ€๋ฐ์ดํ„ฐ RDS (MySQL) ์ทจ์•ฝ์ , ์ƒํƒœ, ์‚ฌ์šฉ์ž, ์ด๋ ฅ
์›๋ณธ ๋ฐ์ดํ„ฐ S3 JSON ๋ฆฌํฌํŠธ, HTML ๋ฆฌํฌํŠธ

์ด ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์ ์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค.

S3 ์„ ํƒ ์ด์œ 

  • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์ตœ์ ํ™”
    ๋ณด์•ˆ ์Šค์บ” ๊ฒฐ๊ณผ๋Š” ํฌ๊ธฐ๊ฐ€ ํฌ๊ณ  ๊ตฌ์กฐ๊ฐ€ ๋‹ค์–‘ํ•˜์—ฌ, DB์— ์ €์žฅํ•  ๊ฒฝ์šฐ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์›๋ณธ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ
    ๋ถ„์„ ๋ฐ ๊ฐ์‚ฌ ๊ณผ์ •์—์„œ ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ ๋ณ€์กฐ ์—ฌ๋ถ€ ๊ฒ€์ฆ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • ํ™•์žฅ์„ฑ
    ์Šค์บ” ๋ฐ์ดํ„ฐ ์ฆ๊ฐ€์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ €์žฅ ์šฉ๋Ÿ‰์— ๋Œ€ํ•œ ์ œ์•ฝ์ด ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ๋น„์šฉ ํšจ์œจ์„ฑ
    Object Storage๋Š” RDB ๋Œ€๋น„ ๋น„์šฉ ํšจ์œจ์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

RDS ์„ ํƒ ์ด์œ 

  • ์ •ํ˜• ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ
    ์ทจ์•ฝ์  ์ƒํƒœ, ์‚ฌ์šฉ์ž, ๊ถŒํ•œ, ์ด๋ ฅ๊ณผ ๊ฐ™์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํŠธ๋žœ์žญ์…˜ ๋ณด์žฅ
    ์ƒํƒœ ๋ณ€๊ฒฝ ๋ฐ ์šด์˜ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฟผ๋ฆฌ ๊ธฐ๋ฐ˜ ์กฐํšŒ
    ๋Œ€์‹œ๋ณด๋“œ์™€ ํ†ต๊ณ„ ๊ธฐ๋Šฅ ๊ตฌํ˜„์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

S3 ์ €์žฅ ๊ตฌ์กฐ

s3://devsecops-hub/{project}/{scan_id}/report.json
  • project: ์„œ๋น„์Šค ๋‹จ์œ„ ์‹๋ณ„์ž
  • scan_id: ์Šค์บ” ์‹คํ–‰ ๋‹จ์œ„ ์‹๋ณ„์ž

8. ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ

DevSecOps Hub๋Š” ์—ญํ•  ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ์ œ์–ด(RBAC)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋ณด์•ˆ ์šด์˜ ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ ์˜ค๋‚จ์šฉ์„ ๋ฐฉ์ง€ํ•˜๊ณ , ์ฑ…์ž„ ๊ธฐ๋ฐ˜์˜ ์ž‘์—… ์ˆ˜ํ–‰์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ช…ํ™•ํ•œ ์—ญํ•  ๊ตฌ๋ถ„์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์—ญํ•  ์ •์˜

Admin

  • ์ „์ฒด ์‹œ์Šคํ…œ ๊ด€๋ฆฌ ๊ถŒํ•œ์„ ๋ณด์œ 
  • ์‚ฌ์šฉ์ž ์ƒ์„ฑ ๋ฐ ๊ถŒํ•œ ์„ค์ • ๊ฐ€๋Šฅ
  • Policy Engine ์ •์ฑ… ์ˆ˜์ • ๋ฐ ๊ด€๋ฆฌ
  • ๊ฐ์‚ฌ ๋กœ๊ทธ ์กฐํšŒ ๋ฐ ์‹œ์Šคํ…œ ์„ค์ • ๋ณ€๊ฒฝ

Security Analyst

  • ์ทจ์•ฝ์  ๋ถ„์„ ๋ฐ ์ƒํƒœ ๋ณ€๊ฒฝ ์ˆ˜ํ–‰
  • ์šฐ์„ ์ˆœ์œ„ ์กฐ์ • ๋ฐ ์ •์ฑ… ๊ธฐ๋ฐ˜ ํŒ๋‹จ ์ˆ˜ํ–‰
  • False Positive ๊ฒ€์ฆ ๋ฐ ๋ฆฌ์Šคํฌ ํ‰๊ฐ€ ์ˆ˜ํ–‰
  • ๋ณด์•ˆ ๋ฆฌํฌํŠธ ๊ฒ€ํ†  ๋ฐ ๊ด€๋ฆฌ

Developer

  • ํ• ๋‹น๋œ ์ทจ์•ฝ์  ์กฐํšŒ ๋ฐ ๋Œ€์‘
  • ์ทจ์•ฝ์  ์ƒํƒœ ๋ณ€๊ฒฝ (IN_PROGRESS, FIXED)
  • AI ๋ถ„์„ ๊ฒฐ๊ณผ ํ™•์ธ ๋ฐ ์ฝ”๋“œ ์ˆ˜์ • ์ˆ˜ํ–‰
  • ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ์˜ ๋ณด์•ˆ ์กฐ์น˜ ์ˆ˜ํ–‰

Viewer

  • ์ทจ์•ฝ์  ๋ฐ ํ†ต๊ณ„ ๋ฐ์ดํ„ฐ ์กฐํšŒ๋งŒ ๊ฐ€๋Šฅ
  • ์ƒํƒœ ๋ณ€๊ฒฝ ๋ฐ ์ˆ˜์ • ๊ถŒํ•œ ์—†์Œ

๊ถŒํ•œ ์„ค๊ณ„ ๊ธฐ์ค€

  • ์ตœ์†Œ ๊ถŒํ•œ ์›์น™: ๊ฐ ์—ญํ• ์€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

  • ์ฑ…์ž„ ๋ถ„๋ฆฌ: ๋ณด์•ˆ ํŒ๋‹จ๊ณผ ์ฝ”๋“œ ์ˆ˜์ • ์—ญํ• ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์šด์˜ ๋ฆฌ์Šคํฌ๋ฅผ ๊ฐ์†Œ์‹œํ‚ต๋‹ˆ๋‹ค.

  • ํ”„๋กœ์ ํŠธ ๋‹จ์œ„ ๊ถŒํ•œ ๊ด€๋ฆฌ: ํŠน์ • ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋ฉ๋‹ˆ๋‹ค.

์ธ์ฆ ๊ตฌ์กฐ

  • API ์ธ์ฆ: CI/CD ํŒŒ์ดํ”„๋ผ์ธ์€ API Token ๊ธฐ๋ฐ˜์œผ๋กœ ์ธ์ฆ๋ฉ๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ์ž ์ธ์ฆ: ์‚ฌ์šฉ์ž ์ธ์ฆ์€ OAuth 2.0 / OpenID Connect(OIDC) ๊ธฐ๋ฐ˜ ๋กœ๊ทธ์ธ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ธ์ฆ ์™„๋ฃŒ ํ›„์—๋Š” JWT๋ฅผ ์„ธ์…˜ ํ† ํฐ์œผ๋กœ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ํด๋ผ์šฐ๋“œ ์ ‘๊ทผ ์ธ์ฆ: GitHub Actions์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋Ÿฐํƒ€์ž„ ๋ชจ๋‘ OIDC ๊ธฐ๋ฐ˜ IAM Role Assume ๋ฐฉ์‹์„ ํ†ตํ•ด AWS ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.

  • ์ •์  ํ‚ค ๊ธˆ์ง€ ์ •์ฑ…: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY์™€ ๊ฐ™์€ ์žฅ๊ธฐ Access Key๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„์€ AWS_AUTH_MODE=oidc_only, AWS_ROLE_ARN, AWS_WEB_IDENTITY_TOKEN_FILE ๊ตฌ์„ฑ์„ ํ•„์ˆ˜๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •์‚ฌํ•ญ (Render & GitHub)

1) Render ํ™˜๊ฒฝ๋ณ€์ˆ˜

  • DATABASE_URL=<RDS MySQL ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด>
  • DEVSECOPS_PROJECT_NAME=devsecops-hub
  • DEVSECOPS_PROJECT_TOKEN=<ํ”„๋กœ์ ํŠธ API ํ† ํฐ>
  • SESSION_SECRET=<์„ธ์…˜ ์•”ํ˜ธํ™” ํ‚ค>
  • OPENAI_API_KEY=<OpenAI API Key>
  • GITHUB_OAUTH_CLIENT_ID=<GitHub OAuth App Client ID>
  • GITHUB_OAUTH_CLIENT_SECRET=<GitHub OAuth App Client Secret>
  • GITHUB_OAUTH_REDIRECT_URI=<์˜ˆ: https://<render-service>/auth/github/callback>
  • AUTH_ADMIN_USERS=<์‰ผํ‘œ๊ตฌ๋ถ„ GitHub username/email ๋ชฉ๋ก>
  • AUTH_SECURITY_USERS=<์‰ผํ‘œ๊ตฌ๋ถ„ GitHub username/email ๋ชฉ๋ก>
  • AUTH_VIEWER_USERS=<์‰ผํ‘œ๊ตฌ๋ถ„ GitHub username/email ๋ชฉ๋ก>

2) GitHub Actions ํ™˜๊ฒฝ๋ณ€์ˆ˜(Secrets)

.github/workflows/security_scan_and_s3_upload.yml ๊ธฐ์ค€์œผ๋กœ ์•„๋ž˜ GitHub Secrets๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • AWS_REGION
  • AWS_S3_REPORT_BUCKET
  • AWS_GITHUB_ROLE_ARN (OIDC๋กœ Assume ํ•  Role ARN)
  • DEVSECOPS_HUB_URL
  • DEVSECOPS_PROJECT_NAME
  • DEVSECOPS_PROJECT_TOKEN

id-token: write ๊ถŒํ•œ + aws-actions/configure-aws-credentials๋ฅผ ํ†ตํ•ด OIDC AssumeRole์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.


9. ๊ฐ์‚ฌ ๋กœ๊ทธ ์„ค๊ณ„

๋ชจ๋“  ์ฃผ์š” ํ–‰์œ„๋ฅผ Audit Log๋กœ ๊ธฐ๋กํ•˜์—ฌ, ๋ณด์•ˆ ์šด์˜์˜ ์ถ”์ ์„ฑ๊ณผ ๊ฐ์‚ฌ ๋Œ€์‘ ๋Šฅ๋ ฅ์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ก ๋Œ€์ƒ

  • ์ทจ์•ฝ์  ์ƒํƒœ ๋ณ€๊ฒฝ
  • ์‚ฌ์šฉ์ž ๊ถŒํ•œ ๋ณ€๊ฒฝ
  • Policy ๋ณ€๊ฒฝ
  • ๋กœ๊ทธ์ธ ๋ฐ ์ธ์ฆ ์ด๋ฒคํŠธ
  • ๋ฐ์ดํ„ฐ ์กฐํšŒ ๋ฐ ์ ‘๊ทผ ์ด๋ฒคํŠธ

๋กœ๊ทธ ๊ตฌ์กฐ

  • ์‚ฌ์šฉ์ž ID
  • ํ–‰์œ„ ์œ ํ˜• (Action)
  • ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค (Resource)
  • ๋ณ€๊ฒฝ ์ „ ์ƒํƒœ (Before)
  • ๋ณ€๊ฒฝ ํ›„ ์ƒํƒœ (After)
  • Timestamp
  • ์š”์ฒญ ์ถœ์ฒ˜ (IP ๋˜๋Š” ์‹œ์Šคํ…œ ์‹๋ณ„์ž)

๋กœ๊ทธ ์˜ˆ์‹œ (๊ฐœ๋…์  ๊ตฌ์กฐ)

user: developer_01  
action: UPDATE_STATUS  
resource: vulnerability_123  
before: IN_PROGRESS  
after: FIXED  
timestamp: 2026-03-26T12:00:00Z  

์ €์žฅ ๋ฐฉ์‹

  • ๋กœ๊ทธ๋Š” ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ์ผ์ • ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ณด๊ด€ ํ›„ ์•„์นด์ด๋น™ ์ •์ฑ…์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

10. ๋ณด์•ˆ ์„ค๊ณ„ ์›์น™

DevSecOps Hub๋Š” ์‹ค์ œ ์šด์˜ ํ™˜๊ฒฝ์—์„œ์˜ ๋ณด์•ˆ์„ฑ์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด
๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณด์•ˆ ์„ค๊ณ„ ์›์น™์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • 1. ์ตœ์†Œ ๊ถŒํ•œ ์›์น™: ๋ชจ๋“  ์‚ฌ์šฉ์ž์™€ ์‹œ์Šคํ…œ์€ ํ•„์š”ํ•œ ์ตœ์†Œ ๊ถŒํ•œ๋งŒ ๋ถ€์—ฌ๋ฐ›์Šต๋‹ˆ๋‹ค.

  • 2. ์ธ์ฆ๊ณผ ๊ถŒํ•œ์˜ ๋ถ„๋ฆฌ: Authentication๊ณผ Authorization์„ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌํ•˜์—ฌ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค.

  • 3. ๋ฐ์ดํ„ฐ ์ถ”์  ๊ฐ€๋Šฅ์„ฑ: ๋ชจ๋“  ํ–‰์œ„์™€ ์ƒํƒœ ๋ณ€ํ™”๋Š” ์ถ”์  ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • 4. ์›๋ณธ ๋ฐ์ดํ„ฐ ๋ณด์กด: ๋ชจ๋“  ๋ณด์•ˆ ์Šค์บ” ๊ฒฐ๊ณผ๋Š” ์›๋ณธ ํ˜•ํƒœ๋กœ ๋ณด์กด๋ฉ๋‹ˆ๋‹ค.

  • 5. ์ž…๋ ฅ ๊ฒ€์ฆ ๋ฐ ๋กœ๊น…: ์™ธ๋ถ€ ์ž…๋ ฅ์€ ๋ฐ˜๋“œ์‹œ ๊ฒ€์ฆ๋˜๋ฉฐ, ๋ชจ๋“  ์ฃผ์š” ์š”์ฒญ์€ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

  • 6. ๋ฏผ๊ฐ์ •๋ณด ๋ณดํ˜ธ: ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” ์ฝ”๋“œ์— ํฌํ•จ๋˜์ง€ ์•Š๋„๋ก ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors