giip
SES Proposal
4 min read

ํ”„๋กœ์ ํŠธ ๋ฉ”๋ชจ ๋ชฉ๋ก ๊ฐ€์ด๋“œ

ํ”„๋กœ์ ํŠธ(CSN)์™€ ์„œ๋ฒ„(lssn) ๋‹จ์œ„๋กœ ์ž์œ  ํ˜•์‹ ๋ฉ”๋ชจ(ํ‚คยท๊ฐ’ยท๋ฉ”๋ชจ)๋ฅผ ์กฐํšŒยท์ถ”๊ฐ€ยท์ˆ˜์ •ยท์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•œ ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.

๐Ÿš€ ํ”„๋กœ์ ํŠธ ๋ฉ”๋ชจ ํŽ˜์ด์ง€๋กœ ์ด๋™ โ†’


๐Ÿ“‹ ๊ฐœ์š”

ํ”„๋กœ์ ํŠธ ๋ฉ”๋ชจ๋Š” ํŠน์ • ํ”„๋กœ์ ํŠธ(CSN)์™€ ๋…ผ๋ฆฌ ์„œ๋ฒ„(lssn)์— ์—ฐ๊ฒฐ๋œ ๋ฉ”๋ชจ๋ฅผ ํ•œ ํ™”๋ฉด์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ณ„ ์ ‘์† ์ •๋ณดยท์ฒดํฌ๋ฆฌ์ŠคํŠธยท์ฐธ๊ณ  URL ๋“ฑ ์šด์˜์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฅผ ์ž์œ  ํ˜•์‹(ํ‚ค / ๊ฐ’ / ์ƒ์„ธ ๋ฉ”๋ชจ)์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ ๋ฉ”๋ชจ๋Š” ๋‹ค์Œ ํ•„๋“œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

ํ•„๋“œ์˜๋ฏธ
lcSn๋ฉ”๋ชจ ์ผ๋ จ๋ฒˆํ˜ธ(PK). ์ˆ˜์ •ยท์‚ญ์ œ ์‹œ ์‚ฌ์šฉ
csnํ”„๋กœ์ ํŠธ ์ฝ”๋“œ
lssn์—ฐ๊ฒฐ๋œ ๋…ผ๋ฆฌ ์„œ๋ฒ„ ๋ฒˆํ˜ธ(์„ ํƒ)
lcKey๋ฉ”๋ชจ ํ‚ค(์˜ˆ: ssh-port, admin-url)
lcVal๋ฉ”๋ชจ ๊ฐ’(์˜ˆ: 2222, https://...)
lcMemo์ž์œ  ์„œ์ˆ  ๋ฉ”๋ชจ

๐Ÿ” ์ฃผ์š” ๊ธฐ๋Šฅ ์„ค๋ช…

1. ์„œ๋ฒ„(lssn) ์ง€์ • ยท LSVR ์„ ํƒ

์ƒ๋‹จ lssn ์ž…๋ ฅ๋ž€์— ์„œ๋ฒ„ ๋ฒˆํ˜ธ๋ฅผ ์ง์ ‘ ๋„ฃ๊ฑฐ๋‚˜, [LSVR ์„ ํƒ] ๋ฒ„ํŠผ์œผ๋กœ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์˜ ์„œ๋ฒ„ ๋ชฉ๋ก์—์„œ ๊ณจ๋ผ ์ฑ„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ํƒํ•œ ์„œ๋ฒ„ ๋ฒˆํ˜ธ๋Š” ์ดํ›„ ๋ฉ”๋ชจ ์ถ”๊ฐ€ ์‹œ ์ž๋™์œผ๋กœ ํ•จ๊ป˜ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

2. ํ”„๋กœ์ ํŠธ(CSN) ์—ฐ๋™

CSN์€ URL์˜ ?csn= ํŒŒ๋ผ๋ฏธํ„ฐ ๋˜๋Š” ํ˜„์žฌ ๋กœ๊ทธ์ธ ์„ธ์…˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ์ž๋™์œผ๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค. ์ƒ๋‹จ ๊ณตํ†ต ์˜์—ญ์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐ”๊พธ๋ฉด ๋ชฉ๋ก๋„ ์ƒˆ ํ”„๋กœ์ ํŠธ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์‹œ ์กฐํšŒ๋ฉ๋‹ˆ๋‹ค.

3. ์กฐํšŒ (Fetch)

[Fetch] ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ง€์ •ํ•œ ํ”„๋กœ์ ํŠธ์˜ ๋ฉ”๋ชจ๊ฐ€ ์กฐํšŒ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” ๋ฐ์Šคํฌํ†ฑ์—์„œ๋Š” ํ‘œ(ํ…Œ์ด๋ธ”), ๋ชจ๋ฐ”์ผ์—์„œ๋Š” ์นด๋“œ ํ˜•ํƒœ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  • URL ์ž๋™ ๋งํฌ: ๊ฐ’(lcVal)์ด http(s)://๋กœ ์‹œ์ž‘ํ•˜๋ฉด ์ƒˆ ํƒญ์—์„œ ์—ด๋ฆฌ๋Š” ๋งํฌ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„ ๋งํฌ: ์„œ๋ฒ„(lssn) ์ปฌ๋Ÿผ์€ ํ•ด๋‹น ์„œ๋ฒ„ ์ƒ์„ธ(lsvrdetail)๋กœ ์ด๋™ํ•˜๋Š” ๋งํฌ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

4. ๋ฉ”๋ชจ ์ถ”๊ฐ€ / ์ˆ˜์ • / ์‚ญ์ œ

  • ์ถ”๊ฐ€: [๋ฉ”๋ชจ ์ถ”๊ฐ€] ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ˜„์žฌ CSNยทlssn์„ ๊ฐ€์ง€๊ณ  ๋ฉ”๋ชจ ์ถ”๊ฐ€ ํŽ˜์ด์ง€(prjMemoPut)๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ํ‘œ ์•ˆ์˜ ํŽธ์ง‘ ๋ชจ๋‹ฌ์—์„œ ๋ฐ”๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ˆ˜์ •: ๊ฐ ํ–‰์˜ [Edit] ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ•ด๋‹น ๋ฉ”๋ชจ(lcKey / lcVal / lcMemo)๋ฅผ ๋ถˆ๋Ÿฌ์˜จ ํŽธ์ง‘ ๋ชจ๋‹ฌ์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค. ์ €์žฅ ์‹œ lcSn์ด ํ•จ๊ป˜ ์ „๋‹ฌ๋˜์–ด ๊ธฐ์กด ๋ฉ”๋ชจ๊ฐ€ ๊ฐฑ์‹ ๋ฉ๋‹ˆ๋‹ค.
  • ์‚ญ์ œ: ๊ฐ ํ–‰์˜ [Delete] ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ™•์ธ์ฐฝ์ด ๋œจ๊ณ , ํ™•์ธ ์‹œ ๋ฉ”๋ชจ๊ฐ€ ์‚ญ์ œ๋œ ๋’ค ๋ชฉ๋ก์ด ๋‹ค์‹œ ์กฐํšŒ๋ฉ๋‹ˆ๋‹ค. ์‚ญ์ œ๋Š” ๋˜๋Œ๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

5. ๋จธ์‹  ์ƒ์„ธ๋กœ ์ด๋™

[๋จธ์‹ ์ƒ์„ธ] ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ž…๋ ฅํ•œ lssn์˜ ์„œ๋ฒ„ ์ƒ์„ธ ํŽ˜์ด์ง€(lsvrdetail)๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ› ๏ธ ์‚ฌ์šฉ ์ˆœ์„œ (์š”์•ฝ)

  1. ์ƒ๋‹จ์—์„œ lssn์„ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ **[LSVR ์„ ํƒ]**์œผ๋กœ ์„œ๋ฒ„๋ฅผ ๊ณ ๋ฅธ๋‹ค.
  2. **[Fetch]**๋กœ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์˜ ๋ฉ”๋ชจ๋ฅผ ์กฐํšŒํ•œ๋‹ค.
  3. [๋ฉ”๋ชจ ์ถ”๊ฐ€] ๋˜๋Š” ํ–‰์˜ **[Edit]**๋กœ ๋ฉ”๋ชจ๋ฅผ ์ž‘์„ฑ/์ˆ˜์ •ํ•˜๊ณ  ์ €์žฅํ•œ๋‹ค.
  4. ๋ถˆํ•„์š”ํ•œ ๋ฉ”๋ชจ๋Š” ํ–‰์˜ **[Delete]**๋กœ ์‚ญ์ œํ•œ๋‹ค(ํ™•์ธ ํ›„ ์ฆ‰์‹œ ๋ฐ˜์˜).

๐Ÿ”Œ API ์‚ฌ์šฉ ๊ฐ€์ด๋“œ

์ด ํ™”๋ฉด์€ GIIP ๊ณต์šฉ API ์—”๋“œํฌ์ธํŠธ(/api/giipApi)์— ์„ธ ๊ฐ€์ง€ ์ปค๋งจ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ๋กœ๊ทธ์ธ ์„ธ์…˜ ํ† ํฐ์ด ์ž๋™์œผ๋กœ ์ „๋‹ฌ๋˜๋ฉฐ, ์™ธ๋ถ€์—์„œ ์ง์ ‘ ํ˜ธ์ถœํ•  ๋•Œ๋Š” AK(์•ก์„ธ์Šค ํ† ํฐ) ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ์˜ˆ์‹œ๋Š” ์‹ค์ œ ๋ผ์ด๋ธŒ ํ™˜๊ฒฝ(CSN 47)์—์„œ ์กฐํšŒโ†’์ถ”๊ฐ€โ†’์‚ญ์ œ ๋ผ์šด๋“œํŠธ๋ฆฝ์œผ๋กœ ๋™์ž‘์„ ๊ฒ€์ฆํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ํ˜ธ์ถœ์ž…๋‹ˆ๋‹ค.

๊ณตํ†ต ๊ทœ๊ฒฉ

  • ์—”๋“œํฌ์ธํŠธ: POST https://giipfaw.azurewebsites.net/api/giipApi
  • Content-Type: application/x-www-form-urlencoded
  • ์ธ์ฆ: ํผ ํ•„๋“œ token / usertoken ์— AK(๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž ์•ก์„ธ์Šค ํ† ํฐ)๋ฅผ ๋„ฃ์Šต๋‹ˆ๋‹ค.
  • ํ˜ธ์ถœ ํ˜•์‹: ํผ ํ•„๋“œ text ์— ์ปค๋งจ๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ช…โ€ฆ(๊ฐ’์ด ์•„๋‹ˆ๋ผ ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„)์„, ํผ ํ•„๋“œ jsondata ์— ์‹ค์ œ ๊ฐ’์„ JSON์œผ๋กœ ๋„ฃ์Šต๋‹ˆ๋‹ค.
    • ์ด ๋ฐฉ์‹์€ corpMemo ๋“ฑ ๋‹ค๋ฅธ ๋ฉ”๋ชจ ํ™”๋ฉด๊ณผ ๋™์ผํ•œ ๊ทœ์•ฝ์ž…๋‹ˆ๋‹ค.
์ปค๋งจ๋“œ์—ญํ• textjsondata ํ•„๋“œ
prjMemoListํ”„๋กœ์ ํŠธ ๋ฉ”๋ชจ ๋ชฉ๋ก ์กฐํšŒprjMemoList csncsn
prjMemoPut๋ฉ”๋ชจ ์ถ”๊ฐ€/์ˆ˜์ •(upsert)prjMemoPut csn lssn lcKey lcVal lcMemo (์ˆ˜์ • ์‹œ ๋์— lcSn)csn, lssn, lcKey, lcVal, lcMemo, lcSn?
prjMemoDel๋ฉ”๋ชจ ์‚ญ์ œprjMemoDel csn lcSncsn, lcSn

๊ถŒํ•œ: AK ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น csn(ํ”„๋กœ์ ํŠธ)์˜ ๋ฉค๋ฒ„(tCorpUserRel)์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด 403 Forbidden์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. AK๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์œผ๋ฉด 401 Unauthorized.

1) ๋ชฉ๋ก ์กฐํšŒ โ€” prjMemoList

curl -X POST "https://giipfaw.azurewebsites.net/api/giipApi" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "token=YOUR_AK" \
  --data-urlencode "usertoken=YOUR_AK" \
  --data-urlencode "text=prjMemoList csn" \
  --data-urlencode 'jsondata={"csn":47}'

์‘๋‹ต(์˜ˆ) โ€” ๊ฐ ํ–‰์— ๋ฉ”๋ชจ ํ•„๋“œ์™€ tags(ํƒœ๊ทธ JSON ๋ฐฐ์—ด, ์—†์œผ๋ฉด null)๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

[
  { "lcSn": 12, "csn": 47, "lssn": 71198, "lcKey": "ssh-port", "lcVal": "2222", "lcMemo": "์ ๊ฒ€์šฉ ํฌํŠธ", "tags": null }
]

๋ฉ”๋ชจ๊ฐ€ ์—†์œผ๋ฉด ๊ฒฐ๊ณผ ์—†์Œ(๋นˆ ์‘๋‹ต)์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

2) ์ถ”๊ฐ€ / ์ˆ˜์ • โ€” prjMemoPut

lcSn์„ ์ƒ๋žตํ•˜๋ฉด ์ƒˆ ๋ฉ”๋ชจ ์ถ”๊ฐ€, lcSn์„ ํ•จ๊ป˜ ๋ณด๋‚ด๋ฉด ํ•ด๋‹น ๋ฉ”๋ชจ ์ˆ˜์ •์ž…๋‹ˆ๋‹ค(upsert). ์ˆ˜์ • ์‹œ์—๋Š” text ๋์— lcSn์„ ๋ง๋ถ™์ž…๋‹ˆ๋‹ค.

# ์ถ”๊ฐ€(insert)
curl -X POST "https://giipfaw.azurewebsites.net/api/giipApi" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "token=YOUR_AK" \
  --data-urlencode "usertoken=YOUR_AK" \
  --data-urlencode "text=prjMemoPut csn lssn lcKey lcVal lcMemo" \
  --data-urlencode 'jsondata={"csn":47,"lssn":71198,"lcKey":"admin-url","lcVal":"https://portal.example.com","lcMemo":"๊ด€๋ฆฌ์ž ์ฝ˜์†”"}'
# ์ˆ˜์ •(update) โ€” lcSn ํฌํ•จ
$body = @{
  token     = "YOUR_AK"
  usertoken = "YOUR_AK"
  text      = "prjMemoPut csn lssn lcKey lcVal lcMemo lcSn"
  jsondata  = '{"csn":47,"lssn":71198,"lcKey":"admin-url","lcVal":"https://portal2.example.com","lcMemo":"URL ๋ณ€๊ฒฝ","lcSn":12}'
}
Invoke-RestMethod -Method Post -Uri "https://giipfaw.azurewebsites.net/api/giipApi" `
  -ContentType "application/x-www-form-urlencoded" -Body $body

์‘๋‹ต(์˜ˆ) โ€” ์ €์žฅ ํ›„ ๊ฐฑ์‹ ๋œ ๋ชฉ๋ก๊ณผ ์ƒ์„ฑ/์ˆ˜์ •๋œ lcSn์„ ๋Œ๋ ค์ค๋‹ˆ๋‹ค.

[ [ { "lcSn": 12, "csn": 47, "lcKey": "admin-url", "lcVal": "https://portal.example.com", "tags": null } ], [ { "lcSn": 12 } ] ]

3) ์‚ญ์ œ โ€” prjMemoDel

curl -X POST "https://giipfaw.azurewebsites.net/api/giipApi" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "token=YOUR_AK" \
  --data-urlencode "usertoken=YOUR_AK" \
  --data-urlencode "text=prjMemoDel csn lcSn" \
  --data-urlencode 'jsondata={"csn":47,"lcSn":12}'

์‘๋‹ต(์˜ˆ)

{ "status": "Success", "lcSn": 12 }

๊ฒฐ๊ณผ ์ฝ”๋“œ(RstVal)

RstVal์˜๋ฏธ์กฐ์น˜
(์ •์ƒ)์„ฑ๊ณต. ๋ฐ์ดํ„ฐ ํ–‰ ๋˜๋Š” status:"Success" ๋ฐ˜ํ™˜โ€”
401Unauthorized โ€” AK ์—†์Œ/๋ฌดํšจtoken/usertoken์— ์˜ฌ๋ฐ”๋ฅธ AK๋ฅผ ๋„ฃ์Šต๋‹ˆ๋‹ค
403Forbidden โ€” ํ•ด๋‹น CSN ๊ถŒํ•œ ์—†์ŒAK ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ ํ”„๋กœ์ ํŠธ ๋ฉค๋ฒ„์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค

์ „์ฒด ๊ฒฐ๊ณผ ์ฝ”๋“œ ์ •์˜๋Š” API ๊ฒฐ๊ณผ ์ฝ”๋“œ ๊ฐ€์ด๋“œ(RstVal)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.


๐Ÿ’ก ์œ ์˜ ์‚ฌํ•ญ

  • CSN์ด ๋น„์–ด ์žˆ์œผ๋ฉด ์กฐํšŒ ๊ฒฐ๊ณผ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ๋จผ์ € ์ง€์ •ํ•˜์„ธ์š”.
  • ์‚ญ์ œ๋Š” ํ™•์ธ ํ›„ ์ฆ‰์‹œ ๋ฐ˜์˜๋˜๋ฉฐ ๋ณต๊ตฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • lcVal์— URL์„ ๋„ฃ์œผ๋ฉด ๋ชฉ๋ก์—์„œ ๋ฐ”๋กœ ํด๋ฆญํ•  ์ˆ˜ ์žˆ์–ด ๋งํฌ ์ €์žฅ์†Œ์ฒ˜๋Ÿผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ฆ์ƒ์›์ธํ•ด๊ฒฐ
๋ฉ”๋ชจ๊ฐ€ ์กฐํšŒ๋˜์ง€ ์•Š์ŒCSN์ด ๋น„์—ˆ๊ฑฐ๋‚˜ ์ž˜๋ชป๋จ์ƒ๋‹จ์—์„œ ์˜ฌ๋ฐ”๋ฅธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง€์ •ํ•˜๊ณ  [Fetch]
API๊ฐ€ 401 ๋ฐ˜ํ™˜AK ๋ˆ„๋ฝ/๋ฌดํšจtoken/usertoken์— ์œ ํšจํ•œ AK ์ „๋‹ฌ
API๊ฐ€ 403 ๋ฐ˜ํ™˜AK ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น CSN ๋ฉค๋ฒ„ ์•„๋‹˜ํ”„๋กœ์ ํŠธ ๋ฉค๋ฒ„์‹ญ(tCorpUserRel) ํ™•์ธ
์ˆ˜์ •์ด ์ƒˆ ๋ฉ”๋ชจ๋กœ ์ €์žฅ๋จ์š”์ฒญ์— lcSn ๋ˆ„๋ฝ์ˆ˜์ • ์‹œ text ๋์— lcSn์„ ๋„ฃ๊ณ  jsondata์— lcSn ํฌํ•จ
์‚ญ์ œ๊ฐ€ ์‹คํŒจํ•จ๊ฒฐ๊ณผ์— lcSn์ด ์—†๊ฑฐ๋‚˜ ์„ธ์…˜ ๋งŒ๋ฃŒ๋ชฉ๋ก์„ ๋‹ค์‹œ ์กฐํšŒํ•˜๊ฑฐ๋‚˜ ์žฌ๋กœ๊ทธ์ธ ํ›„ ์žฌ์‹œ๋„

๋ฒ„์ „: 1.0 ์ตœ์ข… ์—…๋ฐ์ดํŠธ: 2026-07-24 ์†Œ์Šค ํŒŒ์ผ: giipv3/public/help/prjmemolist.ko.md