giip
SES Proposal
2 min read

์‹œ์Šคํ…œ ๊ด€๋ฆฌ API ๋ ˆํผ๋Ÿฐ์Šค

์„œ๋ฒ„์— ๋ช…๋ น์„ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ์—์ด์ „ํŠธ ์ƒํƒœ๋ฅผ ์ œ์–ดํ•˜๋Š” ์‹œ์Šคํ…œ ์ˆ˜์ค€์˜ ์ž๋™ํ™” API๋ฅผ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“‹ ๊ฐœ์š”

์ด API ๋ชจ๋“ˆ์€ GIIP ์—์ด์ „ํŠธ๋ฅผ ํ†ตํ•ด ๊ฐœ๋ณ„ ์„œ๋ฒ„์— ์ง์ ‘ ๋ช…๋ น์„ ๋‚ด๋ฆฌ๊ฑฐ๋‚˜, ์„œ๋ฒ„์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(ํƒœ๊ทธ ๋“ฑ)๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ” ์ธ์ฆ ๋ฐ ํ—ค๋”

๋ชจ๋“  ์š”์ฒญ์€ ๊ณตํ†ต ์ธ์ฆ ํ—ค๋”๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Header: x-giip-ak: [Your Access Key]
  • Header: x-giip-sk: [Your Secret Key]

๐Ÿš€ ์ฃผ์š” API ์—”๋“œํฌ์ธํŠธ

1. ์›๊ฒฉ ๋ช…๋ น ์‹คํ–‰ (Run Remote Command)

  • URL: POST /api/system/command/run
  • ์„ค๋ช…: ์ง€์ •๋œ ์„œ๋ฒ„์—์„œ ํŠน์ • Shell ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • Request Body:
{
  "serverIsn": 456,
  "command": "ls -al /var/log",
  "timeout": 30
}

2. ์—์ด์ „ํŠธ ์ œ์–ด (Agent Control)

  • URL: POST /api/system/agent/control
  • ์„ค๋ช…: ์„œ๋ฒ„์— ์„ค์น˜๋œ GIIP ์—์ด์ „ํŠธ๋ฅผ ์›๊ฒฉ์œผ๋กœ ์žฌ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์„ค์ •์„ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • Request Body:
{
  "serverIsn": 456,
  "action": "restart"
}

3. ์„œ๋ฒ„ ํƒœ๊ทธ ๊ด€๋ฆฌ (Manage Server Tags)

  • URL: POST /api/system/server/tags
  • ์„ค๋ช…: ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฅ˜ํ•˜๊ธฐ ์œ„ํ•œ ํƒœ๊ทธ ๋ชฉ๋ก์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  • Request Body:
{
  "serverIsn": 456,
  "tags": ["Production", "Web", "Region-KR"]
}

๐Ÿ” ์‘๋‹ต ๋ฐ์ดํ„ฐ ์˜ˆ์‹œ (Command Run)

{
  "RstVal": 0,
  "RstMsg": "Success",
  "Data": {
    "jobId": "JOB-10293",
    "output": "total 1024\ndrwxr-xr-x 2 root root ...",
    "exitCode": 0
  }
}

๐Ÿ’ก ํ™œ์šฉ ์‚ฌ๋ก€

  • ์ž๋™ ํŒจ์น˜ ๊ด€๋ฆฌ: ์ทจ์•ฝ์ ์ด ๋ฐœ๊ฒฌ๋œ ํŒจํ‚ค์ง€์— ๋Œ€ํ•ด ์ „์ฒด ์„œ๋ฒ„์— ์ผ๊ด„ ์—…๋ฐ์ดํŠธ ๋ช…๋ น์„ ๋‚ด๋ฆฝ๋‹ˆ๋‹ค.
  • ๋™์  ์ž์› ํ• ๋‹น: ํƒœ๊ทธ ๊ด€๋ฆฌ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋œ VM์˜ ์šฉ๋„๋ฅผ ์ž๋™์œผ๋กœ ์ง€์ •ํ•˜๊ณ  ์ •์ฑ…์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ›ก๏ธ Sk3(๊ณ ์„ฑ๋Šฅ ๋กœ๊น…) ํ™œ์šฉ

์›๊ฒฉ ๋ช…๋ น ์‹คํ–‰(Run Remote Command)์ด๋‚˜ ์—์ด์ „ํŠธ ์ œ์–ด์™€ ๊ฐ™์€ ๋ฏผ๊ฐํ•œ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ ์ž‘์—… ์‹œ, ์กฐ์ž‘์˜ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ๊ณผ ์ƒ์„ธํ•œ ์‹คํ–‰ ์ด๋ ฅ ์ถ”์ ์„ ์œ„ํ•ด giipApiSk3 ์—”๋“œํฌ์ธํŠธ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

  • ์—”๋“œํฌ์ธํŠธ: https://giipfaw.azurewebsites.net/api/giipApiSk3
  • ์žฅ์ : ๋ช…๋ น ์‹คํ–‰ ์‹คํŒจ ์‹œ ํ˜ธ์ถœ์ž์˜ ์ƒ์„ธ ํ™˜๊ฒฝ ์ •๋ณด(IP, UA)์™€ StackTrace๋ฅผ ์ฆ‰์‹œ ๊ธฐ๋กํ•˜์—ฌ ๋น„์ธ๊ฐ€ ์š”์ฒญ์ด๋‚˜ ๋„คํŠธ์›Œํฌ ์žฅ์•  ์ƒํ™ฉ์„ ์‹ ์†ํ•˜๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.
  • ํ™œ์šฉ ํŒ: jsondata ์น˜ํ™˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ Shell ๋ช…๋ น์–ด ๋ฌธ์ž์—ด์ด๋‚˜ ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ ํƒœ๊ทธ ์ •๋ณด๋ฅผ ์ „์†กํ•  ๋•Œ ๋ฐ์ดํ„ฐ ์œ ์‹ค ์—†์ด ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ฆ์ƒ์›์ธํ•ด๊ฒฐ
์š”์ฒญ์ด ์ธ์ฆ ์˜ค๋ฅ˜๋กœ ๊ฑฐ๋ถ€๋จx-giip-ak / x-giip-sk ํ—ค๋”๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ํ‚ค์œ ํšจํ•œ Access Key์™€ Secret Key๋ฅผ ๋‘ ํ—ค๋”์— ๋ชจ๋‘ ํฌํ•จํ•˜์—ฌ ์žฌ์š”์ฒญ
์›๊ฒฉ ๋ช…๋ น์ด ์‹คํ–‰๋˜์ง€ ์•Š์ŒserverIsn์ด ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜ ๋Œ€์ƒ ์„œ๋ฒ„์˜ ์—์ด์ „ํŠธ๊ฐ€ ์˜คํ”„๋ผ์ธ์„œ๋ฒ„ ์‹๋ณ„์ž๋ฅผ ํ™•์ธํ•˜๊ณ , ์—์ด์ „ํŠธ ์ œ์–ด API(action: restart)๋กœ ์—์ด์ „ํŠธ๋ฅผ ์žฌ์‹œ์ž‘
์‘๋‹ต์˜ RstVal์ด 0์ด ์•„๋‹˜๋ช…๋ น ์‹คํ–‰ ์‹คํŒจ ๋˜๋Š” timeout ์ดˆ๊ณผRstMsg์™€ Data.exitCode๋ฅผ ํ™•์ธํ•˜๊ณ , ํ•„์š” ์‹œ timeout ๊ฐ’์„ ์ƒํ–ฅ ์กฐ์ •
ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ ํƒœ๊ทธ ์ „์†ก ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋จjsondata ์น˜ํ™˜ ๊ธฐ๋Šฅ ๋ฏธ์‚ฌ์šฉgiipApiSk3 ์—”๋“œํฌ์ธํŠธ์˜ jsondata ํ•„๋“œ๋กœ ์ „์†กํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์†์‹ค ๋ฐฉ์ง€

๋ฒ„์ „: 1.1 ์ตœ์ข… ์—…๋ฐ์ดํŠธ: 2026-04-10 ์†Œ์Šค ํŒŒ์ผ: giipv3/public/help/api-system.ko.md


๊ด€๋ จ ๋ฌธ์„œ: