giip
SES Proposal
5 min read

๋ณด์•ˆ ์ ๊ฒ€ ๋ชจ๋‹ˆํ„ฐ(secwatch) ๊ฐ€์ด๋“œ

์กฐ์ง(csn)์œผ๋กœ ๋ผ์šฐํŒ…๋œ SQL ์ธ์ ์…˜ 2์ฐจ ํŒ์ • ๊ฒฐ๊ณผ(ํ†ต์ง€/๊ฒ€ํ† /๊ธฐ๋ก)๋ฅผ ํ™”๋ฉด์—์„œ ๋ณด๊ณ , ๋™์ผํ•œ ๋‚ด์šฉ์„ ์กฐ์ง SK๋กœ ์ฝ๋Š” ์ฝ๊ธฐ ์ „์šฉ API๋กœ ์กฐํšŒํ•ด AI๊ฐ€ ์ด์ƒ์ง•ํ›„๋ฅผ ์ •๊ธฐ ์ ๊ฒ€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ›ก๏ธ ๋ณด์•ˆ ์ ๊ฒ€ ๋ชจ๋‹ˆํ„ฐ ํŽ˜์ด์ง€๋กœ ์ด๋™ โ†’

๐Ÿ“‹ ๊ฐœ์š”

GIIP์˜ secwatch(Jev ๊ธฐ๋ฐ˜ SQL ์ธ์ ์…˜ 2์ฐจ ํŒ์ •)๋Š” ์ˆ˜์ง‘๊ธฐ(lssn)๊ฐ€ ๋ณด๋‚ธ ์˜์‹ฌ ์‚ฌ๊ฑด์„ ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ 1์ฐจ ๊ฒฐ์ •๋ก  ๋ฃฐ + 2์ฐจ AI ํŒ์ •์œผ๋กœ ๋ถ„๋ฅ˜ํ•ด tKVSSecurityCheck์— ์ ์žฌํ•˜๊ณ , ๊ฐ ํŒ์ •์„ ๋ผ์šฐํŒ… ๋Œ€์ƒ์œผ๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.

๋ผ์šฐํŒ…(kscRoutedTo)ํ™”๋ฉด ํ‘œ๊ธฐ์˜๋ฏธ
alertํ†ต์ง€์œ ์ถœ/์“ฐ๊ธฐ ์‹œ๋„ ์˜์‹ฌ ๋˜๋Š” ๊ณ ์‹ ๋ขฐ ๊ณต๊ฒฉ โ€” ์ฆ‰์‹œ ํ†ต์ง€ ๋Œ€์ƒ
review๊ฒ€ํ† ๊ณต๊ฒฉ ๊ฐ€๋Šฅ์„ฑ์€ ์žˆ์œผ๋‚˜ ์ž๋™ ํ†ต์ง€ ์ž„๊ณ„๊ฐ’ ๋ฏธ๋งŒ โ€” ์‚ฌ๋žŒ ๊ฒ€ํ†  ๋Œ€์ƒ
log๊ธฐ๋ก์ •์ƒ/๋…ธ์ด์ฆˆ๋กœ ํŒ์ • โ€” ํ†ต์ง€ํ•˜์ง€ ์•Š๊ณ  ๊ฑด์ˆ˜๋งŒ ๊ธฐ๋ก

ํ™”๋ฉด(/ko/admin/secwatch-monitor)์€ ์ด ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๊ฐ„(์ตœ๊ทผ 1์‹œ๊ฐ„/6์‹œ๊ฐ„/24์‹œ๊ฐ„/7์ผ)๊ณผ ๋ผ์šฐํŒ… ๋Œ€์ƒ(์ „์ฒด/ํ†ต์ง€/๊ฒ€ํ† /๊ธฐ๋ก)์œผ๋กœ ํ•„ํ„ฐํ•ด ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด ํ™”๋ฉด์€ ๋กœ๊ทธ์ธ ์œ ์ €์—๊ฒŒ ๊ณต๊ฐœ๋˜๋ฉฐ, ์ž๊ธฐ ์กฐ์ง(csn)์œผ๋กœ ๋ผ์šฐํŒ…๋œ ๊ฒฐ๊ณผ๋งŒ ๋ณด์ž…๋‹ˆ๋‹ค(์„œ๋ฒ„ SP๊ฐ€ ๋ณด์žฅ).

๐Ÿ”Ž ํ™”๋ฉด ์ฝ๋Š” ๋ฒ•

ํ™”๋ฉด์€ ๋‘ ์˜์—ญ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  1. ์ˆ˜์ง‘ ์ปค๋ฒ„๋ฆฌ์ง€ ํŒจ๋„ โ€” "๋ฌด์—‡์„ ๊ฒ€์‚ฌํ•˜๊ณ  ์žˆ๊ณ , ์–ด๋””๋งŒ ์ด์ƒ์ด์—ˆ๋‚˜". ์†Œ์Šค๋ณ„๋กœ ๊ฒ€์‚ฌ ๊ฑด์ˆ˜(scanned)ยทํƒ์ง€ ๊ฑด์ˆ˜(flagged)ยท๋งˆ์ง€๋ง‰ ๊ฒ€์‚ฌ ์‹œ๊ฐ์„ ๋ณด์—ฌ์ฃผ๋ฉฐ, flagged๊ฐ€ 0์ด๋ฉด ๐ŸŸข ์ •์ƒ, 1๊ฑด ์ด์ƒ์ด๋ฉด ๐Ÿ”ด ์ด์ƒ์ž…๋‹ˆ๋‹ค. ํƒ์ง€๊ฐ€ ์—†์–ด๋„ "๊ฒ€์‚ฌ๋Š” ๋Œ๊ณ  ์žˆ๋‹ค"๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ํŒ์ • ๊ฒฐ๊ณผ ์นด๋“œ โ€” ๊ฐ ํŒ์ • 1๊ฑด์ด ์นด๋“œ 1์žฅ. ํ‘œ์‹œ ํ•ญ๋ชฉ:
ํ™”๋ฉด ํ•ญ๋ชฉํ•„๋“œ์˜๋ฏธ
์‹œ๊ฐkscRegdtํŒ์ • ์ ์žฌ ์‹œ๊ฐ
๋ผ์šฐํŒ… ๋ฐฐ์ง€kscRoutedToํ†ต์ง€(alert)/๊ฒ€ํ† (review)/๊ธฐ๋ก(log)
์ด๋ฒคํŠธ ์œ ํ˜•kscFactor์‚ฌ๊ฑด ์ข…๋ฅ˜(secevt_*)
์ฃผ์ž… ํ™•๋ฅ kscIsInjectionSQL ์ธ์ ์…˜/๊ณต๊ฒฉ ์ค€๋น„ ํ™•๋ฅ (0~1, ํ™”๋ฉด์€ %)
์‹ฌ๊ฐ๋„kscSeverity0 ๋…ธ์ด์ฆˆ ยท 1 ์ •์ฐฐ ยท 2 ์—ด๊ฑฐยท์ฝ๊ธฐ ยท 3 ์ธ์ฆ์ •๋ณดยท๊ฐœ์ธ์ •๋ณด ์ฝ๊ธฐ ยท 4 ์“ฐ๊ธฐยท๊ถŒํ•œ ์กฐ์ž‘
๊ณต๊ฒฉ ์œ ํ˜•kscAttackType๋ถ„๋ฅ˜๋œ ๊ณต๊ฒฉ ์ข…๋ณ„
ํŒจํ„ดkscPatternNo๊ฐ™์€ ๋ฐฉ๋ฒ•(csn ๋‚ด ํŒจํ„ด ์ผ๋ จ๋ฒˆํ˜ธ) โ€” ๋ฐ˜๋ณต ๊ณต๊ฒฉ ์ถ”์ ์šฉ
๊ณต๊ฒฉ์ž IPkscActorIp๊ณต๊ฒฉ ์ถœ์ฒ˜ IP(์ถ”์ ยท์ฐจ๋‹จ์šฉ)
ํ”Œ๋ž˜๊ทธkscIsInjection/kscDataExtracted/kscWriteAttempt๊ฐ ํ™•๋ฅ  0.7 ์ด์ƒ์ด๋ฉด ์ฃผ์ž…/๋ฐ์ดํ„ฐ์œ ์ถœ/์“ฐ๊ธฐ์‹œ๋„ ๋ฐฐ์ง€
์‹ ๋ขฐ๋„kscConfidence๋ถ„๋ฅ˜/์‹ฌ๊ฐ๋„ ํŒ์ • ์‹ ๋ขฐ๋„(0~1)
์—”์ง„kscEngineํŒ์ • ์—”์ง„
์ˆ˜์ง‘๊ธฐkscKey๊ฒฐ๊ณผ๋ฅผ ์˜ฌ๋ฆฐ ์ˆ˜์ง‘๊ธฐ(lssn)
๋ผ์šฐํŒ… ์ด์œ kscWhy๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ๋‚จ๊ธด ๋ผ์šฐํŒ… ์‚ฌ์œ 

์ฃผ์ž… ํ™•๋ฅ ยท๋ฐ์ดํ„ฐ์œ ์ถœยท์“ฐ๊ธฐ์‹œ๋„๋Š” 0~1 ํ™•๋ฅ ๊ฐ’์ด๋ฉฐ, ํ™”๋ฉด์€ 0.7 ์ด์ƒ์„ "์„ฑ๋ฆฝ"์œผ๋กœ ๋ณด๊ณ  ๋ฐฐ์ง€๋ฅผ ๋„์›๋‹ˆ๋‹ค.

๐Ÿ”Œ API ์ฐธ์กฐ (์ฝ๊ธฐ ์ „์šฉ โ€” AI/์™ธ๋ถ€ ํด๋ผ์ด์–ธํŠธ์šฉ)

ํ™”๋ฉด๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ์กฐ์ง ์‹๋ณ„๊ฐ’(csn)๊ณผ ๊ทธ ์กฐ์ง์˜ ๋น„๋ฐ€ ํ‚ค(SK)๋กœ ์ฝ๋Š” ์ฝ๊ธฐ ์ „์šฉ API์ž…๋‹ˆ๋‹ค. ๋ฒ”์šฉ ๋””์ŠคํŒจ์ฒ˜ giipApiSk4๋ฅผ ํ†ตํ•ด ๋‘ ๊ฐœ์˜ SP๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ ์žฌยทํŒ์ •ยท์ฐจ๋‹จ ๊ธฐ๋Šฅ์€ ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ณตํ†ต ํ˜ธ์ถœ ๊ทœ์•ฝ

ํ•ญ๋ชฉ๊ฐ’
๋ฉ”์„œ๋“œPOST (๋˜๋Š” GET)
URLhttps://giipfaw.azurewebsites.net/api/giipApiSk4
๋ณธ๋ฌธ(form-urlencoded) ๋˜๋Š” ์ฟผ๋ฆฌtext=<๋ช…๋ น>, token=<SK>, jsondata=<JSON>
  • text์˜ ์ฒซ ํ† ํฐ์ด ๋ช…๋ น ์ด๋ฆ„์ด๊ณ , ์ดํ›„ ํ† ํฐ์€ jsondata์˜ ํ‚ค์™€ 1:1๋กœ ๋งค์นญ๋˜๋Š” ํ•„๋“œ๋ช…์ž…๋‹ˆ๋‹ค. ํ† ํฐ์„ ์ ์ง€ ์•Š์œผ๋ฉด ๊ทธ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” SP ๊ธฐ๋ณธ๊ฐ’์„ ์”๋‹ˆ๋‹ค(์•„๋ž˜ ์˜ˆ์‹œ๊ฐ€ ๊ฐ€์žฅ ์•ˆ์ „ํ•œ ํ˜•ํƒœ).
  • token์—๋Š” ์กฐ์ง์˜ SK๋ฅผ ๋„ฃ์Šต๋‹ˆ๋‹ค. SK๋Š” ๊ทธ SK๊ฐ€ ์†ํ•œ ์กฐ์ง(csn)์˜ ๊ฒฐ๊ณผ๋งŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค(csn์„ ๋”ฐ๋กœ ๋„˜๊ธฐ์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ ๊ทธ ์กฐ์ง์œผ๋กœ ์Šค์ฝ”ํ”„).
  • ์‘๋‹ต์€ ํ•ญ์ƒ HTTP 200์ด๋ฉฐ ๋ณธ๋ฌธ์€ { "data": [ ... ], "debug": { ... } } ํ˜•์‹์ž…๋‹ˆ๋‹ค. ์ธ์ฆ/ํŒŒ๋ผ๋ฏธํ„ฐ ์˜ค๋ฅ˜๋„ HTTP 200์œผ๋กœ ์˜ค๊ณ , data[0]์— { "RstVal": 401|403, "RstMsg": "..." }๊ฐ€ ๋‹ด๊น๋‹ˆ๋‹ค โ€” AI๋Š” data[0].RstVal์„ ๋จผ์ € ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

(1) ํŒ์ • ๊ฒฐ๊ณผ ์กฐํšŒ โ€” KVSSecurityCheckWindow

ํ•„๋“œ(jsondata)ํ•„์ˆ˜์˜๋ฏธ
minutes์„ ํƒ์กฐํšŒ ์‹œ๊ฐ„์ฐฝ(๋ถ„). ๊ธฐ๋ณธ 60, ์ตœ๋Œ€ 10080(7์ผ). 1์‹œ๊ฐ„=60 / 6์‹œ๊ฐ„=360 / 24์‹œ๊ฐ„=1440 / 7์ผ=10080
routedTo์„ ํƒalert/review/log ์ค‘ ํ•˜๋‚˜. ์ƒ๋žตํ•˜๋ฉด ์ „์ฒด

์š”์ฒญ ์˜ˆ์‹œ (์ตœ๊ทผ 24์‹œ๊ฐ„ ์ „์ฒด โ€” ๊ฐ€์žฅ ์•ˆ์ „ํ•œ ๊ธฐ๋ณธํ˜•)

export GIIP_API_BASE_URL="https://giipfaw.azurewebsites.net"
export GIIP_SK="๋Ÿฐํƒ€์ž„์—๋งŒ_์„ค์ •"

curl --fail-with-body -X POST "${GIIP_API_BASE_URL}/api/giipApiSk4" \
  --data-urlencode "text=KVSSecurityCheckWindow minutes" \
  --data-urlencode "token=${GIIP_SK}" \
  --data-urlencode 'jsondata={"minutes":1440}'

์š”์ฒญ ์˜ˆ์‹œ (์ตœ๊ทผ 24์‹œ๊ฐ„ ์ค‘ ํ†ต์ง€ ๋Œ€์ƒ๋งŒ)

curl --fail-with-body -X POST "${GIIP_API_BASE_URL}/api/giipApiSk4" \
  --data-urlencode "text=KVSSecurityCheckWindow minutes routedTo" \
  --data-urlencode "token=${GIIP_SK}" \
  --data-urlencode 'jsondata={"minutes":1440,"routedTo":"alert"}'

์„ฑ๊ณต ์‘๋‹ต (ํŒ์ • 1๊ฑด๋‹น data[] ํ•œ ํ–‰)

{
  "data": [
    {
      "kscsn": 0, "kscKey": "12345", "kscFactor": "secevt_...",
      "kscIsInjection": 0.97, "kscAttackType": "...", "kscSeverity": 4,
      "kscDataExtracted": 0.10, "kscWriteAttempt": 0.95, "kscConfidence": 0.9,
      "kscEngine": "...", "kscRoutedTo": "alert", "kscActorIp": "...",
      "kscPatternNo": 1, "kscStatus": "...", "kscRegdt": "...", "kscWhy": "..."
    }
  ],
  "debug": { }
}
  • ๊ฐ ํ–‰์€ ํ™”๋ฉด ์นด๋“œ์˜ ํ•ญ๋ชฉ๊ณผ ๊ทธ๋Œ€๋กœ ๋Œ€์‘ํ•ฉ๋‹ˆ๋‹ค(์œ„ "ํ™”๋ฉด ์ฝ๋Š” ๋ฒ•" ํ‘œ ์ฐธ์กฐ).
  • SK/AK/ํ‚ค/DB ์—ฐ๊ฒฐ์ •๋ณด๋Š” ์–ด๋–ค ์‘๋‹ต์—๋„ ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

(2) ์ˆ˜์ง‘ ์ปค๋ฒ„๋ฆฌ์ง€ ์กฐํšŒ โ€” KVSSecurityCoverageWindow

"๊ฒ€์‚ฌํ–ˆ์ง€๋งŒ ์•ˆ ๋ณด๋‚ธ(์ •์ƒ ํฌํ•จ)" ์†Œ์Šค๋ณ„ ์ง‘๊ณ„์ž…๋‹ˆ๋‹ค. ํ™”๋ฉด ์ƒ๋‹จ ์ปค๋ฒ„๋ฆฌ์ง€ ํŒจ๋„๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

ํ•„๋“œ(jsondata)ํ•„์ˆ˜์˜๋ฏธ
minutes์„ ํƒ์กฐํšŒ ์‹œ๊ฐ„์ฐฝ(๋ถ„). ๊ธฐ๋ณธ 1440, ์ตœ๋Œ€ 10080

์š”์ฒญ ์˜ˆ์‹œ

curl --fail-with-body -X POST "${GIIP_API_BASE_URL}/api/giipApiSk4" \
  --data-urlencode "text=KVSSecurityCoverageWindow minutes" \
  --data-urlencode "token=${GIIP_SK}" \
  --data-urlencode 'jsondata={"minutes":1440}'

์„ฑ๊ณต ์‘๋‹ต

{
  "data": [
    { "ksvSource": "...", "ksvSystem": "...", "scanned": 1200, "flagged": 0, "lastTs": "...", "status": "normal" }
  ],
  "debug": { }
}
  • status๋Š” flagged๊ฐ€ 0์ด๋ฉด normal, 1๊ฑด ์ด์ƒ์ด๋ฉด anomaly์ž…๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ์‘๋‹ต(๋‘ API ๊ณตํ†ต)

data[0]์— ๋‹ด๊ฒจ ์˜ต๋‹ˆ๋‹ค(HTTP ์ƒํƒœ์ฝ”๋“œ๋Š” ํ•ญ์ƒ 200).

์กฐ๊ฑดRstValRstMsg
SK ๋ˆ„๋ฝ ๋˜๋Š” ์œ ํšจํ•˜์ง€ ์•Š์Œ401Invalid sk
์š”์ฒญ csn์ด SK์˜ csn๊ณผ ๋‹ค๋ฆ„(๊ต์ฐจ csn ์ฐจ๋‹จ)403csn mismatch (sk ์˜ csn ๊ณผ ๋‹ค๋ฆ„)

โš ๏ธ ๋ณด์•ˆ: SK๋ฅผ URL, ์ด์Šˆ, ์ €์žฅ์†Œ, ํ”„๋กฌํ”„ํŠธ ๋ณธ๋ฌธ, ๋กœ๊ทธ์— ๋„ฃ์ง€ ๋งˆ์„ธ์š”. ์‹คํ–‰ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋˜๋Š” ๋น„๋ฐ€ ์ €์žฅ์†Œ์—์„œ๋งŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿค– AI ํ˜ธ์ถœ ๊ณ ์ • ์ ˆ์ฐจ (์ด์ƒ์ง•ํ›„ ํŒ์ •)

  1. ์กฐ์ง๋ณ„ ์กฐํšŒ: ์ ๊ฒ€ํ•  ๊ฐ ์กฐ์ง์˜ SK๋กœ KVSSecurityCheckWindow๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ์‹œ๊ฐ„์ฐฝ์€ ์ ๊ฒ€ ์ฃผ๊ธฐ์— ๋งž์ถ˜๋‹ค(์˜ˆ: ๋งค์‹œ ์ ๊ฒ€์ด๋ฉด minutes=60, ํ•˜๋ฃจ 1ํšŒ๋ฉด minutes=1440).
  2. ์ธ์ฆ ํ™•์ธ: ์‘๋‹ต data[0].RstVal์ด 401/403์ด๋ฉด ๊ทธ ์กฐ์ง์€ SK๊ฐ€ ์ž˜๋ชป๋๊ฑฐ๋‚˜ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋กœ ๋ณด๊ณ ํ•˜๊ณ  ๋‹ค์Œ ์กฐ์ง์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.
  3. ์ด์ƒ์ง•ํ›„ ํŒ์ •: data[]์—์„œ kscRoutedTo๊ฐ€ alert(ํ†ต์ง€) ๋˜๋Š” review(๊ฒ€ํ† )์ธ ํ–‰์ด ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด ์ด์ƒ์ง•ํ›„๋กœ ๋ณด๊ณ ํ•œ๋‹ค. log(๊ธฐ๋ก)๋งŒ ์žˆ์œผ๋ฉด ์ •์ƒ ๊ธฐ๋ก์œผ๋กœ ๋ณธ๋‹ค.
  4. ์šฐ์„ ์ˆœ์œ„ํ™”: ๋ณด๊ณ  ์‹œ kscSeverity(์‹ฌ๊ฐ๋„ 0~4)์™€ kscIsInjection(์ฃผ์ž… ํ™•๋ฅ )์ด ๋†’์€ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ , kscActorIpยทkscPatternNo๋กœ ๊ฐ™์€ ๊ณต๊ฒฉ์ž/๊ฐ™์€ ๋ฐฉ๋ฒ•์˜ ๋ฐ˜๋ณต ์—ฌ๋ถ€๋ฅผ ํ•จ๊ป˜ ์ ๋Š”๋‹ค.
  5. ์ปค๋ฒ„๋ฆฌ์ง€ ๊ต์ฐจ ํ™•์ธ: KVSSecurityCoverageWindow๋กœ ๊ฐ ์†Œ์Šค๊ฐ€ ์‹ค์ œ๋กœ ๊ฒ€์‚ฌ๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์–ด๋–ค ์†Œ์Šค์˜ status๊ฐ€ anomaly๋ฉด ๊ทธ ์†Œ์Šค๋ฅผ ์šฐ์„  ์ ๊ฒ€ํ•˜๊ณ , ๊ธฐ๋Œ€ํ•œ ์†Œ์Šค๊ฐ€ ์ปค๋ฒ„๋ฆฌ์ง€์— ์•„์˜ˆ ์—†์œผ๋ฉด "์ˆ˜์ง‘ ๋ˆ„๋ฝ ๊ฐ€๋Šฅ"์œผ๋กœ ํ•จ๊ป˜ ๋ณด๊ณ ํ•œ๋‹ค.
  6. ์ „ ์กฐ์ง ์Šค์œ•: ๊ณ„์ •์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๊ฐ ์กฐ์ง(csn)์— ๋Œ€ํ•ด 1~5๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค. SK๋Š” ์กฐ์ง ๋‹จ์œ„์ด๋ฏ€๋กœ, ์—ฌ๋Ÿฌ ์กฐ์ง์„ ์ ๊ฒ€ํ•˜๋ ค๋ฉด ๊ฐ ์กฐ์ง์˜ SK๋กœ ๊ฐ๊ฐ ํ˜ธ์ถœํ•œ๋‹ค.

๐Ÿ›  ๋ฌธ์ œ ํ•ด๊ฒฐ

์ฆ์ƒ์›์ธํ•ด๊ฒฐ
ํ™”๋ฉด์— "์ ‘๊ทผ ๊ฑฐ๋ถ€"๋กœ๊ทธ์ธํ–ˆ์ง€๋งŒ ๊ทธ ์กฐ์ง(csn) ์ปจํ…์ŠคํŠธ/์†Œ์†์ด ์—†์Œํ•ด๋‹น ์กฐ์ง ์†Œ์† ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ. API๋กœ๋Š” ๊ทธ ์กฐ์ง SK๋ฅผ ์“ฐ๋ฉด ํ™”๋ฉด ์—†์ด๋„ ์กฐํšŒ ๊ฐ€๋Šฅ
API data[0].RstVal=401SK ๋ˆ„๋ฝ ๋˜๋Š” ๋ฌดํšจtoken์— ์˜ฌ๋ฐ”๋ฅธ ์กฐ์ง SK ์ „๋‹ฌ(ํ™˜๊ฒฝ๋ณ€์ˆ˜)
API data[0].RstVal=403์š”์ฒญ csn์ด SK์˜ csn๊ณผ ๋‹ค๋ฆ„csn์„ ๋”ฐ๋กœ ๋„˜๊ธฐ์ง€ ๋ง๊ณ  ๊ทธ ์กฐ์ง SK๋งŒ ์‚ฌ์šฉ(SK๊ฐ€ csn์„ ๊ฒฐ์ •)
data๊ฐ€ ๋นˆ ๋ฐฐ์—ด๊ทธ ์‹œ๊ฐ„์ฐฝ์— ํ•ด๋‹น ์กฐ์ง ํŒ์ • ๊ฒฐ๊ณผ๊ฐ€ ์—†์Œ์ •์ƒ(์ด์ƒ์ง•ํ›„ ์—†์Œ)์œผ๋กœ ๋ณธ๋‹ค. minutes๋ฅผ ๋Š˜๋ ค ์žฌ์กฐํšŒ ๊ฐ€๋Šฅ
์ปค๋ฒ„๋ฆฌ์ง€๊ฐ€ ๋น„์–ด ์žˆ์Œ๊ทธ ์‹œ๊ฐ„์ฐฝ์— ์ˆ˜์ง‘ ์ปค๋ฒ„๋ฆฌ์ง€ ์ง‘๊ณ„๊ฐ€ ์—†์Œ์ˆ˜์ง‘๊ธฐ๊ฐ€ ๋„๋Š”์ง€ ํ™•์ธํ•˜๊ณ  minutes๋ฅผ ๋Š˜๋ ค ์žฌ์กฐํšŒ

API ์ฐธ์กฐ

์ด ๊ฐ€์ด๋“œ๋Š” API ์ƒ์„ธ(์—”๋“œํฌ์ธํŠธยทํŒŒ๋ผ๋ฏธํ„ฐยท์‘๋‹ตยท์˜ค๋ฅ˜)๋ฅผ ์œ„ "๐Ÿ”Œ API ์ฐธ์กฐ" ์ ˆ์— ์ž์ฒด ์™„๊ฒฐ์ ์œผ๋กœ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋ณ„๋„ API ๊ฐ€์ด๋“œ๋Š” ์—†์Šต๋‹ˆ๋‹ค.


๋ฒ„์ „: 1.0 ์ตœ์ข… ์—…๋ฐ์ดํŠธ: 2026-10-30 ๋ณ€๊ฒฝ ์ด๋ ฅ: giip 4314 โ€” secwatch ๋ณด์•ˆ ์ ๊ฒ€ ๋ชจ๋‹ˆํ„ฐ ์œ ์ € ๊ฐ€์ด๋“œ ์‹ ๊ทœ ์ž‘์„ฑ. ํŒ์ • ๊ฒฐ๊ณผ(KVSSecurityCheckWindow)ยท์ˆ˜์ง‘ ์ปค๋ฒ„๋ฆฌ์ง€(KVSSecurityCoverageWindow) SK ์ฝ๊ธฐ ์ „์šฉ API ๋ฌธ์„œํ™”, AI ์ด์ƒ์ง•ํ›„ ํŒ์ • ๊ณ ์ • ์ ˆ์ฐจ ํฌํ•จ. ์†Œ์Šค ํŒŒ์ผ: giipv3/public/help/secwatch.ko.md

๊ด€๋ จ ์‚ฌ๋ก€