1. ์๋ก : DevSecOps๋ฅผ ๋์ด์๋ AgentSecOps์ ํ์์ฑ
AI ์์ด์ ํธ ๊ธฐ๋ฐ์ ์๋ํ ์์คํ ์ด ํ์ฐ๋๋ฉด์, ์กฐ์ง ๋ด ์์ฐ๊ณผ API์ ๋ํ ์ ๊ทผ ๋ฐฉ์์ด ๊ทผ๋ณธ์ ์ผ๋ก ๋ณํํ๊ณ ์์ต๋๋ค. LangChain, CrewAI, AutoGPT์ ๊ฐ์ ํ๋ ์์ํฌ๋ ๋จ์ํ ์๋ํ ์์ค์ ๋์ด, ์คํ ์ฃผ์ฒด(agent)๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์์ฌ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ณ ์ธ๋ถ ์์คํ ์ ํธ์ถํ๋ ๊ตฌ์กฐ๋ฅผ ํ์คํํ๊ณ ์์ต๋๋ค. ์ด๋ฌํ ์์คํ ์ ํฌ๊ด์ ์ผ๋ก ์ด์ํ๋ ๊ฐ๋ ์ด AgentOps์ ๋๋ค. AgentOps๋ LLM ๊ธฐ๋ฐ ์ํฌํ๋ก์ฐ ์ต์ ํ, ๋๊ตฌ ํธ์ถ ์ค์ผ์ค๋ง, ๊ฒฐ๊ณผ ํด์ ๋ฐ ๋ฆฌํฌํ ์๋ํ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ํฌํจํฉ๋๋ค[1].
AgentOps๋ ๋จ์ผ ๊ฐ๋ ์ด ์๋๋ผ, ์์ด์ ํธ ์คํ ๊ตฌ์กฐ์ ๋ฐ๋ผ ๋ช ํํ ๊ตฌ๋ถ๋๋ ์คํ ์ ํ์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ค์ ์กฐ์ง ํ๊ฒฝ์์ AI ์์ด์ ํธ๊ฐ ์ ๋ฌด๋ฅผ ์๋ํํ๋ ๋ฐฉ์์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋๋ฉฐ, ์ด ์คํ ๊ตฌ์กฐ์ ๋ฐ๋ผ ๋ณด์ ๊ฐ์ ์ง์ , ๊ฐ์ฌ ํ๋ฆ, ์ ์ฑ ํ๊ฐ ๋ฐฉ์๋ ๋ฌ๋ผ์ง๋๋ค.
์ฒซ์งธ๋ ์์ฐจ ์คํํ AgentOps์ ๋๋ค. ์ด๋ ํ๋์ ์์ด์ ํธ๊ฐ ์ฌ์ฉ์ ์์ฒญ์ ๋ฐ์ ์ฌ๋ฌ ๋๊ตฌ๋ API๋ฅผ ๋จ๊ณ๋ณ๋ก ์ง๋ ฌ ์คํํ๋ ๊ตฌ์กฐ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ โ๋ค์ ์ฃผ ๋์ฟ ์ถ์ฅ ์ค๋นํด์คโ๋ผ๊ณ ์ง์ํ๋ฉด, ์์ด์ ํธ๋ ๋ค์ ์์๋ก ์คํํฉ๋๋ค:
์ด ํ๋ฆ์ ํ๋์ ์ปจํ ์คํธ ์์์ ์ฒ๋ฆฌ๋๋ฉฐ, ๋จ์ผ ์คํ ํ๋ฆ์ ๋ํด ์ฌ์๋, ์ ์ฑ ๊ฒํ , ๋ก๊น , ์น์ธ ์ฝ์ ๋ฑ์ ํต์ ๊ฐ ํ์ํฉ๋๋ค[1].
๋์งธ๋ ์์ด์ ํธ ๊ฐ ํธ์ถํ AgentOps, ์ฆ Agent-to-Agent ๊ตฌ์กฐ์ ๋๋ค. ์ด ๊ตฌ์กฐ๋ ํ๋์ ์์ด์ ํธ๊ฐ ์ง์ ๋ชจ๋ ์์ ์ ์ํํ์ง ์๊ณ , ์ญํ ์ ๋ถ์ฐํ์ฌ ๋ค๋ฅธ ์์ด์ ํธ๋ฅผ ํธ์ถํ๋ ๋ค๋จ๊ณ ์คํ ํ๋ฆ์ ๊ตฌ์ฑํฉ๋๋ค. ์๋ฅผ ๋ค์ด, โ๋ง์ผํ ๋ณด๊ณ ์๋ฅผ ์์ฑํด์คโ๋ผ๋ ์์ฒญ์ด ๋ค์ด์ค๋ฉด:
๊ฐ ํธ์ถ ๊ฐ์๋ ์ปจํ ์คํธ ์ ๋ฌ, ์ญํ ์์ ๊ฒ์ฆ, ์ ์ฑ ์ถฉ๋ ํ์ง, ์คํ ๊ถํ ๊ฒํ ๊ฐ ํ์ํ๋ฉฐ, ๊ฐ ์์ด์ ํธ๋ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์ฑ ํ๊ฐ(PDP), ์คํ ํต์ (PEP), ๊ฐ์ฌ ๋ก๊น ์ด ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค[3].
์ด ๋ ๊ฐ์ง ๊ตฌ์กฐ๋ AgentOps๋ฅผ ์ดํดํ๊ณ ๋ณด์ ํต์ ๋ฅผ ์ค๊ณํ๋ ๋ฐ ๋งค์ฐ ์ค์ํ ๊ธฐ์ค์ด ๋ฉ๋๋ค. ๋ณด์ ์ ์ฑ ์ฝ์ ์์น, ํต์ ์ฃผ์ฒด, ์คํ ํ๋ฆ์ ์์ธก ๊ฐ๋ฅ์ฑ์ด ๊ตฌ์กฐ๋ง๋ค ๋ค๋ฅด๊ธฐ ๋๋ฌธ์, ์ด๋ฅผ ๋ช ํํ ๊ตฌ๋ถํ์ง ์์ผ๋ฉด ์ ์ฑ ์ด ๋ฌด๋ ฅํ๋๊ฑฐ๋ ๋ก๊น ์ด ๋๋ฝ๋๋ ๋ฑ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค[4][5].
![[๊ทธ๋ฆผ 1] AgentOps ์คํ ๊ตฌ์กฐ ์ ํ ๋น๊ต](/whitepapers/21/wp21-1-comparison-of-agentops-execution-models.png)
| ๊ตฌ๋ถ ํญ๋ชฉ | ์์ฐจ ์คํํ AgentOps | Agent-to-Agent ๊ตฌ์กฐ (A2A) |
|---|---|---|
| ์คํ ๋ฐฉ์ | ๋จ์ผ ์์ด์ ํธ๊ฐ ์ง๋ ฌ API ํธ์ถ | ๋ค์์ ์์ด์ ํธ๊ฐ ์ญํ ๊ธฐ๋ฐ์ผ๋ก ๋ถ์ฐ ์คํ |
| ์คํ ํ๋ฆ | ๊ณ ์ ๋ ์์, ์์ธก ๊ฐ๋ฅ | ๋์ ํธ์ถ ๊ฒฝ๋ก, ํ๋ฆ ๋ถ๊ธฐ ๊ฐ๋ฅ |
| ์ ์ฑ ์ฝ์ ์์น | ๋จ์ผ ํ๋ฆ ๋ด๋ถ์ ์์ฐจ ์ฝ์ | ๊ฐ ํธ์ถ ๊ฐ ์ธํฐํ์ด์ค๋ง๋ค ๊ฐ๋ณ ์ฝ์ ํ์ |
| PDF ํ๊ฐ ๋ฒ์ | ์ ์ฒด ํ๋ฆ์ ๋ํด 1ํ ์ ์ฑ ํ๊ฐ | ํธ์ถ๋ง๋ค ๋ณ๋ PDP ํ๊ฐ ํ์ |
| ์์ ๊ฒ์ฆ ํ์ ์ฌ๋ถ | ๋ถํ์ (๋จ์ผ ์ฃผ์ฒด) | ํ์ (์ฃผ์ฒด ๊ฐ ์์ ๊ด๊ณ ๊ฒ์ฆ ํ์) |
| ์คํจ ๋ณต๊ตฌ ์ ๋ต | ์คํจ โ ์ฌ์๋ ๋๋ ์ค๋จ | ์คํจ ์ ๊ฐ๋ณ ์์ด์ ํธ์์ ๊ฐ์ง ๋ฐ ๋ ๋ฆฝ ๋ณต๊ตฌ ํ์ |
| ๊ฐ์ฌ ๋ก๊น ๊ตฌ์กฐ | ๋จ์ผ ์ธ์ ๊ธฐ๋ฐ ๋ก๊ทธ | ๋ค๋จ๊ณ ์ธ์ ๋ฐ ํธ์ถ ์ฐ๊ณ ๋ก๊น ํ์ |
| ์์ | ์ถ์ฅ ์์ฝ, ๋ฉ์ผ ๋ฐ์ก, ํ์ ์์ฑ ๋ฑ | ๋ณด๊ณ ์ ์์ฑ, ์ํฌํ๋ก์ฐ ์๋ํ, ๋ฉํฐ SaaS ํตํฉ |
์ด๋ฌํ AgentOps ์คํ ๊ตฌ์กฐ๋ ๊ธฐ์กด DevSecOps ์ฒด๊ณ์์ ์ ์๋ ๋ฆด๋ฆฌ์ฆ ์ค์ฌ ๋ณด์ ๋ชจ๋ธ๋ก๋ ํต์ ํ ์ ์์ต๋๋ค. ์ฝ๋ ์ปค๋ฐ์ด๋ ๋ฐฐํฌ ์์ด ์คํ์ด ๊ฐ๋ฅํ๊ณ , ์คํ ์ฃผ์ฒด๊ฐ ์ฌ๋์ธ์ง ์์ด์ ํธ์ธ์ง ๋ช ํํ์ง ์์ผ๋ฉฐ, ์คํ ๋ชฉ์ ์กฐ์ฐจ ๋ช ์๋์ง ์์ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. AgentSecOps๋ ์ด๋ฌํ ์คํ ํ๋ฆ์ ์ ์ฑ ๊ธฐ๋ฐ ์ ์ด๋ฅผ ์ฝ์ ํ๊ณ , ๊ฐ ์คํ ๋จ์์ ๋ํด ์น์ธ, ๊ถํ ํ๊ฐ, ๋ก๊ทธ ๊ธฐ๋ก์ ์ค์๊ฐ์ผ๋ก ์ํํ๋ ๊ตฌ์กฐ๋ก ์ค๊ณ๋์ด์ผ ํ๋ฉฐ, ์ด ์ญํ ์ AgentOps ์ํคํ ์ฒ ์์์๋ง ๊ฐ๋ฅํด์ง๋๋ค[16][17].
๊ธฐ์กด DevSecOps๋ ์ ์ ๋ถ์(SAST), ๋์ ๋ถ์(DAST), IaC ๋ณด์ ๊ฒ์ฌ, ์ด๋ฏธ์ง ์ค์บ๋, SCA(Software Composition Analysis), ๋น๋ฐํค ๋ ธ์ถ ํ์ง ๋ฑ ๋ค์ํ ๋ณด์ ๋ชจ๋์ CI/CD ํ์ดํ๋ผ์ธ์ ํตํฉํจ์ผ๋ก์จ, ์ฝ๋ ์์ค์ ์ํ์ ์ฌ์ ์ ์๋ณํ๊ณ ์ ๊ฑฐํ๋ ์ฒด๊ณ๋ฅผ ๊ฐ์ถ๊ณ ์์ต๋๋ค. SCA๋ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์ข ์์ฑ ๋ด ํฌํจ๋ ๋ณด์ ์ทจ์ฝ์ , ๋ผ์ด์ ์ค ์๋ฐ, ์ ์ง๊ด๋ฆฌ ์ํ ๋ฑ์ ๋ถ์ํ๋ฉฐ, ์ต๊ทผ์ GitHub Advanced Security, Snyk, WhiteSource์ ๊ฐ์ ๋๊ตฌ๊ฐ ์ด๋ฅผ ์๋ํํ๊ณ ์์ต๋๋ค[2].
๋ค์ ๋ค์ด์ด๊ทธ๋จ์ GitHub ์ค์ฌ์ ์ฝ๋ ์์ฑ ์ดํ, Jenkins๋ GitHub Actions์์ ์ด๋ฏธ์ง ๋น๋๊ฐ ์ด๋ฃจ์ด์ง๊ณ , Harbor์์ ์ด๋ฏธ์ง ์ทจ์ฝ์ ์ ๊ฒ์ฌํ๋ฉฐ, ๋ฌธ์ ๊ฐ ์์ ๊ฒฝ์ฐ AWS ECR์ ๋ฐฐํฌ๋๋ ํ๋ฆ์ ๋ณด์ฌ์ค๋๋ค. ์ดํ ArgoCD๋ฅผ ํตํด Kubernetes ํด๋ฌ์คํฐ์ ๋ฐฐํฌ๋๊ณ , ์ด ๊ณผ์ ์์ Vault๋ฅผ ํตํ ์ํฌ๋ฆฟ ๊ด๋ฆฌ, ZAP์ ํตํ DAST ๋ณด์ ํ ์คํธ, Helm๊ณผ Terraform์ ํตํ ์ธํ๋ผ ๊ตฌ์ฑ ๊ฒ์ฆ๊น์ง ํฌํจ๋ฉ๋๋ค.
![[๊ทธ๋ฆผ 2] DevSecOps Pipeline](/whitepapers/21/wp21-2-example-of-devsecops-pipeline.png)
์ด์ ๊ฐ์ ํ๋์ ์ธ DevSecOps ํ์ดํ๋ผ์ธ์ ๋ค์ํ ๋ณด์ ๊ธฐ๋ฅ์ ํตํฉํ์ฌ, ๋ฐฐํฌ ์ ๊ณผ ๋ฐฐํฌ ํ์ ์ ์ ๋ฐ ๋์ ์ํ์ ํฌ๊ด์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ฝ๋ ๋ถ์, ์ด๋ฏธ์ง ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฆ, ์คํ์์ค ์ข ์์ฑ ์ทจ์ฝ์ ํ์ง(SCA), IaC ์ ์ฑ ์๋ฐ ํ์ง, ๋ฐํ์ ์ํฌ๋ก๋ ๋ณดํธ, ํด๋ผ์ฐ๋ ๊ตฌ์ฑ ๋ถ์(CSPM), ๊ถํ ๋ถ์(CIEM), ํตํฉ CNAPP ๊ธฐ๋ฐ ํต์ ๊น์ง ํฌํจ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด ์ ์ฒด ๊ตฌ์กฐ๋ ์ธ๊ฐ ์ฃผ์ฒด๊ฐ ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ๋ช ์์ ์ธ ๋ฆด๋ฆฌ์ฆ ํ๋ฆ์ ๋ฐ๋ผ์ผ๋ง ํต์ ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
AI ๊ธฐ๋ฐ AgentOps๋ ์ด์๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค. ์์ด์ ํธ๋ GitHub ์ ์ฅ์์ ์ง์ API๋ฅผ ํธ์ถํ๊ฑฐ๋, Slack์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ , AWS Lambda๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ๋ฑ ์ฌ์ ์ ์ ์๋์ง ์์ ์คํ ํ๋ฆ์ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์คํ ํ๋ฆ์ CI/CD์ ํตํฉ๋์ง ์์ผ๋ฉฐ, Git ์ปค๋ฐ์ด๋ Jenkins ๋ก๊ทธ ์์ด๋ ๋ฐ์ํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก, ๊ธฐ์กด์ DevSecOps ์ฒด๊ณ์์ ์ ์๋ ๋ณด์ ํต์ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ฅด์ง ์๋ ์คํ์ด ๋น๋ฒํ๊ฒ ๋ํ๋๊ฒ ๋ฉ๋๋ค[3].
์ด๋ฐ ์คํ ํ๋ฆ์ ๋ํด์๋ DevSecOps์ ๋ชจ๋ ๋ณด์ ์ ์ด๊ฐ ์ ์ฉ๋์ง ์๊ฑฐ๋, ์์ ํ์ ๋์ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅํด์ง ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํด๋น ์คํ์ ์ด๋ฏธ์ง ์ค์บ๋์ด๋ IaC ๊ฒํ , ๋ฐฐํฌ ์น์ธ ๊ฐ์ ์ฌ์ ๋ณด์ ๊ฒ์ฌ๋ฅผ ์ฐํํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฌํ ๊ตฌ์กฐ์ ๊ณต๋ฐฑ์ ๋์ํ๊ธฐ ์ํด ๋ฑ์ฅํ ๊ฒ์ด AgentSecOps์ ๋๋ค.
AgentSecOps๋ AI ์์ด์ ํธ์ ์คํ ์์ฒญ์ ์์งํ๊ณ , ์ ์ฑ ๊ธฐ๋ฐ์ผ๋ก ํด๋น ์์ฒญ์ ํ๊ฐํ๋ฉฐ, ์น์ธ ์ฌ๋ถ๋ฅผ ์ค์๊ฐ์ผ๋ก ํ๋จํ๋ ๋ณด์ ๊ณ์ธต์ ๋๋ค. ์ด ๊ตฌ์กฐ๋ DevSecOps์ ๋ณ๋ ฌ์ ์ผ๋ก ์กด์ฌํ๋ ๊ฒ์ด ์๋๋ผ, ์คํ ์์ ์์ ๊ฐ์ ํ ์ ์๋ ๋ณ๋์ ์ ์ฑ ํต์ ์์ญ์ ํด๋นํฉ๋๋ค.
2. DevSecOps์ AgentSecOps์ ๊ตฌ์กฐ ๋น๊ต
DevSecOps๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ์ดํ๋ผ์ธ์์ ๋ณด์์ ์๋ํํ๋ ์ฒด๊ณ๋ก, ์ฝ๋ ์์ฑ ๋จ๊ณ๋ถํฐ ์ด์ ํ๊ฒฝ๊น์ง ์ฐ์์ ์ผ๋ก ๋ณด์ ํ๋์ ๋จ๊ณ๋ณ๋ก ๊ตฌํํ๋ ๊ฒ์ด ํต์ฌ์ ๋๋ค. ์ด๊ธฐ์๋ ์ ์ ๋ถ์(SAST)๊ณผ ์ทจ์ฝ์ ์ค์บ๋ ์ ๋์ ๋จธ๋ฌผ๋ ์ง๋ง, ์ต๊ทผ์๋ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ตฌ์ฑ ๋ฐ ์ทจ์ฝ์ ํ๊ฐ(SCA), ์ธํ๋ผ ๊ตฌ์ฑ ์ฝ๋(IaC)์ ์ ์ฑ ์๋ฐ ํ์ง, ์ด๋ฏธ์ง ์ทจ์ฝ์ ๊ฒ์ฌ, ์ํฌ๋ฆฟ ๋ ธ์ถ ๋ฐฉ์ง ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ด ํตํฉ๋์์ต๋๋ค.
![[๊ทธ๋ฆผ 3] ํด๋ผ์ฐ๋ ํ๊ฒฝ์์์ DevSecOps Pipeline ์ทจ์ฝ์ ๊ด๋ฆฌ](/whitepapers/21/wp21-3-vulnerability-management-across-the-cloud-devsecops-pipeline.png)
ํด๋ผ์ฐ๋ ํ๊ฒฝ์์๋ CSPM(Cloud Security Posture Management), CIEM(Cloud Infrastructure Entitlement Management), CWPP(Cloud Workload Protection Platform) ๋ฑ๊ณผ ๊ฐ์ ํ๋ซํผ๋ ํฌํจ๋์ด DevSecOps๋ ํ๋์ ๋ณด์ ์ํ๊ณ๋ก ์งํํ์์ต๋๋ค[4].
![[๊ทธ๋ฆผ 4] ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ๋ง๋ ์ทจ์ฝ์ ๊ด๋ฆฌ ๋ฐฉ๋ฒ](/whitepapers/21/wp21-4-application-vulnerability-management.png)
DevSecOps๋ ์ฝ๋ ๊ธฐ๋ฐ์ผ๋ก ์ ์๋ ์์ฐ์ ๊ธฐ์ค์ผ๋ก ๋ณด์์ ์ํํฉ๋๋ค. GitHub, GitLab๊ณผ ๊ฐ์ ์์ค ์ ์ฅ์์์ ์ฝ๋๊ฐ ์ปค๋ฐ๋๋ฉด, CI/CD ๋๊ตฌ(Jenkins, GitHub Actions ๋ฑ)๊ฐ ์ด๋ฅผ ๋น๋ํ๊ณ ํ ์คํธํฉ๋๋ค. ์ด ๊ณผ์ ์์ SCA ๋๊ตฌ๋ ์คํ์์ค ์ทจ์ฝ์ ์ ์๋ณํ๊ณ , ์ด๋ฏธ์ง ๋ถ์ ๋๊ตฌ๋ ์ปจํ ์ด๋ ๋ณด์ ์ํ์ ํ๊ฐํ๋ฉฐ, IaC ํ ํ๋ฆฟ์ ๊ท์ ์ค์ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํฉ๋๋ค. ๋ฐฐํฌ ๋จ๊ณ์์๋ CSPM์ด๋ CWPP๊ฐ ๊ตฌ์ฑ ์ค๋ฅ์ ๋ฐํ์ ํ์๋ฅผ ๋ชจ๋ํฐ๋งํฉ๋๋ค[5].
ํ์ง๋ง ์ด๋ฌํ ์ ์ฒด ๊ตฌ์กฐ๋ ์ฝ๋๊ฐ ๋ช ์์ ์ผ๋ก ์กด์ฌํ๊ณ , ์ฌ๋์ด ์ ์ํ ํ์ดํ๋ผ์ธ ๋ด์์๋ง ์ ํจํฉ๋๋ค. LLM ๊ธฐ๋ฐ ์์ด์ ํธ๋ ๊ฐ๋ฐ์๊ฐ ์์ฑํ์ง ์์ ์ฝ๋๋ฅผ ์คํํ๋ฉฐ, ์คํฌ๋ฆฝํธ ์์ด API ํธ์ถ์ ํ๊ฑฐ๋, ๋ด๋ถ ์์คํ ์ ์ง์ ์ ๊ทผํฉ๋๋ค. Git ์ปค๋ฐ ์์ด๋ Slack์ ๋ฉ์์ง๋ฅผ ์ ์กํ๊ณ , Jenkins ๋ก๊ทธ ์์ด๋ AWS Lambda๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ฉฐ, ์ฌ์ ์ ์ ์๋์ง ์์ ๋ชฉ์ ์ ๋ฐ๋ผ ์คํ๋ฉ๋๋ค. ์ด์ ๊ฐ์ ์คํ์ DevSecOps์์ ์ ์ํ ๋ณด์ ์ ์ด ์ง์ ์ ์ฐํํ๊ฒ ๋ฉ๋๋ค[6].
AgentSecOps๋ ์ด๋ฌํ ๋์ ์คํ ์์ฒญ์ ๊ฐ์ ํ๋ ๊ตฌ์กฐ๋ก, ์คํ ์์ ์์ ์ ์ฑ (PDP: Policy Decision Point)์ ํ๊ฐํ๊ณ , ์คํ ๋ชฉ์ (PBAC: Purpose-Based Access Control)์ ๊ธฐ์ค์ผ๋ก ๊ถํ์ ๊ฒ์ฆํ๋ฉฐ, ์น์ธ ํ๋ฆ๊ณผ ๊ฐ์ฌ ๋ก๊น ์ ํตํฉํฉ๋๋ค. ์ด ๊ตฌ์กฐ๋ ๋จ์ผ ์คํ ๋จ์์ ๋ํ ์ค์๊ฐ ํต์ ๋ฅผ ๋ชฉ์ ์ผ๋ก ํ๋ฉฐ, DevSecOps์ ์ ์ ๋ถ์์ด๋ ์ฌ์ ๋ฐฉ์ด ๋ชจ๋ธ๊ณผ๋ ์ ํ ๋ค๋ฅธ ํต์ ์์น๋ฅผ ๊ฐ์ง๋๋ค.
๋ค์ ๋ค์ด์ด๊ทธ๋จ์ ์๊ฐ ํ๋ฆ์ ๊ธฐ์ค์ผ๋ก DevSecOps์ AgentSecOps์ ๊ฐ์ ์ง์ ์ ๋น๊ตํ ๊ฒ์ ๋๋ค.
![[๊ทธ๋ฆผ 5] DevSecOps vs AgentSecOps Control Flow](/whitepapers/21/wp21-5-timeline-based-comparison-of-control-flow.png)
DevSecOps๋ ์คํ ์ ์ฝ๋์ ์์ฐ ์ํ๋ฅผ ํ๊ฐํ๊ณ , AgentSecOps๋ ์คํ ์์ ์ ํ์์ ์ ์ฑ ์ถฉ๋ ์ฌ๋ถ๋ฅผ ํ๋จํฉ๋๋ค. AgentSecOps๋ ๋ค์๊ณผ ๊ฐ์ ๋ณด์ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๊ธฐ ์ํด ์ค๊ณ๋ฉ๋๋ค.
- ์คํ ์์ฒญ์ ์ฃผ์ฒด ์๋ณ
- ์คํ ๋ชฉ์ ๊ณผ ๋ฆฌ์์ค ๊ฐ ์ ์ฑ ์ถฉ๋ ์ฌ๋ถ ํ์ธ
- ์น์ธ ์์ฒญ ํ๋ฆ ๊ธฐ๋ฐ์ ์ฌ์ ์ ์ด ์ฝ์
- ์คํ ๋ก๊ทธ ๋ฐ ๊ฐ์ฌ ๊ธฐ๋ก์ ์ธ์ ๋จ์ ์ถ์
AgentSecOps๋ ๋จ์ํ DevSecOps๋ฅผ ๋ณด์ํ๋ ๊ฐ๋ ์ด ์๋๋ผ, ์คํ ํ๋ฆ์ ์ค์๊ฐ ํต์ ๋ผ๋ ๋ ๋ฆฝ๋ ๋ณด์ ๊ณ์ธต์ผ๋ก ์ดํด๋์ด์ผ ํฉ๋๋ค. ํนํ AI ์์ด์ ํธ๊ฐ ์์ฌ๊ฒฐ์ ๊ณผ ์คํ์ ๋์์ ์ํํ๋ ํ๊ฒฝ์์๋, ์ ์ฑ ๊ธฐ๋ฐ์ ๋์ ์น์ธ ์ฒด๊ณ ์์ด๋ ๋ณด์ ์ฑ ์ ์ถ์ ์ด ๋ถ๊ฐ๋ฅํด์ง ์ ์์ต๋๋ค[7].
3. ๊ตฌ์กฐ ๋ถ์: AgentSecOps๋ฅผ ๊ตฌ์ฑํ๋ ์คํ ํต์ ์ํคํ ์ฒ
AgentSecOps๋ ๋จ์ํ ์คํ ๋ชจ๋ํฐ๋ง ์ฒด๊ณ๊ฐ ์๋๋ผ, ์คํ ์์ฒญ์ ์ค์ฌ์ผ๋ก ๋ณด์ ์ ์ฑ ์ ์ ์ฉํ๊ณ , ๊ทธ ํ๋ฆ์ ๋์ ์ผ๋ก ํ๊ฐํ๋ ์ค์๊ฐ ํต์ ์ํคํ ์ฒ์ ๋๋ค. DevSecOps๊ฐ ์ฝ๋, ์ด๋ฏธ์ง, ๊ตฌ์ฑ ํ์ผ์ ๊ธฐ์ค์ผ๋ก ์ ์ ๋๋ ์ฌ์ ์ ์๋ ๊ฒ์ฌ๋ฅผ ์ํํ๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ, AgentSecOps๋ ์คํ ์ฃผ์ฒด์ ์คํ ๋งฅ๋ฝ์ ์ค์ฌ์ผ๋ก ์ ์ฑ ์ ๋์ ์ผ๋ก ํ๊ฐํฉ๋๋ค[8].
์ด ์ํคํ ์ฒ๋ ๋ค์๊ณผ ๊ฐ์ ํต์ฌ ๊ตฌ์ฑ ์์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
3.1 ์ ์ฑ ๊ฒฐ์ ์ง์ (PDP: Policy Decision Point)
PDP๋ ์คํ ์์ฒญ์ ์์ ํ ํ, ํด๋น ์์ฒญ์ด ํ์ฉ ๊ฐ๋ฅํ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ์ค์ ์ ์ฑ ์์ง์ ๋๋ค. ์ด ์์ง์ YAML ๋๋ Rego(Cedar ๋ฑ) ํ์์ ์ ์ฑ ์ ์ ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ์คํ ์ฃผ์ฒด, ๋ฆฌ์์ค, ๋ชฉ์ , ์์ ๋ฑ์ ์กฐ๊ฑด์ ํ๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ์ ์ฑ ์ด ์ ์ฉ๋ ์ ์์ต๋๋ค.
์ ์ฑ ์ ๋ณดํต Open Policy Agent(OPA), Cedar, Kyverno ๋ฑ์ ๋๊ตฌ๋ก ๊ตฌํ๋ฉ๋๋ค[9].
3.2 ๋ชฉ์ ๊ธฐ๋ฐ ๊ถํ ๊ฒ์ฆ (PBAC: Purpose-Based Access Control)
PBAC(Purpose-Based Access Control)๋ ์คํ์ โ๋ชฉ์ โ์ ๊ธฐ๋ฐ์ผ๋ก ์ ๊ทผ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ ๊ถํ ์ ์ด ๋ชจ๋ธ์ ๋๋ค. RBAC(์ญํ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด)๋ ์ฌ์ฉ์๋ ์์ด์ ํธ์ ์ญํ (role)์, ABAC(์์ฑ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด)๋ ์ฌ์ฉ์์ ๋ฆฌ์์ค์ ์์ฑ(attribute)์ ๊ธฐ์ค์ผ๋ก ์ ์ฑ ์ ์ ์ฉํฉ๋๋ค. ๋ฐ๋ฉด PBAC๋ ์คํ ์์ฒญ ์ ํจ๊ป ๋ช ์๋๋ ์๋(purpose)๋ฅผ ์ค์ฌ์ผ๋ก ์ ์ฑ ํ๋จ์ ์ํํฉ๋๋ค.
์ด ์ ๊ทผ์ ๋ค์๊ณผ ๊ฐ์ ์คํ ์์ ๋ณด์ ์๋๋ฆฌ์ค์์ ํนํ ํจ๊ณผ์ ์ ๋๋ค:
์์: Google Drive ํ์ผ ๊ณต์
AI ์์ด์ ํธ๊ฐ ํ์ฌ ๋ฌธ์๋ฅผ ์๋์ผ๋ก Google Drive์์ ๊ณต์ ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๋ ๋ชฉ์ ์ด โ๋ด๋ถ ํ ๊ฐ ํ์ โ์ผ ๊ฒฝ์ฐ์๋ Slack, Notion ๋ฑ ์กฐ์ง ๋ด ๊ณต์ ํ๋ซํผ์ ํตํด ํ์ฉ๋ ์ ์์ต๋๋ค. ๋ฐ๋ฉด, ๋ชฉ์ ์ด โ์ธ๋ถ ํํธ๋ ๊ฒํ ์ฉโ์ธ ๊ฒฝ์ฐ์๋ ๋ณด์ ์ ์ฑ ์ ์ถ๊ฐ ๊ฒํ ๋ ์น์ธ ์ ์ฐจ๊ฐ ํ์ํฉ๋๋ค. PBAC๋ฅผ ํ์ฉํ๋ฉด ๋์ผํ ๊ณต์ API ์์ฒญ์ ๋ํด์๋ ์คํ ๋ชฉ์ ์ ๋ฐ๋ผ ์ ์ฑ ๊ฒฐ๊ณผ๋ฅผ ๋ค๋ฅด๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค.
์์ ์ ์ฑ
allow {
input.purpose == "internal_collab"
input.user.role == "ai_assistant"
input.resource.type == "gdrive.document"
input.resource.sharing == "organization"
}
์ด ์ ์ฑ ์ ๋ค์ ์กฐ๊ฑด์ ๋ง์กฑํ ๊ฒฝ์ฐ ๋ฌธ์ ๊ณต์ ๋ฅผ ํ์ฉํฉ๋๋ค:
- ์คํ ๋ชฉ์ ์ด "internal_collab" (๋ด๋ถ ํ์ ์ฉ ๊ณต์ )
- ์์ฒญ ์ฃผ์ฒด์ ์ญํ ์ด "ai_assistant"
- ๋ฆฌ์์ค๊ฐ Google Drive ๋ฌธ์์ด๋ฉฐ, ๊ณต์ ๋ฒ์๊ฐ ์กฐ์ง ๋ด๋ถ(organization)๋ก ์ ํ๋จ
๊ฐ์ API ํธ์ถ์ด๋๋ผ๋, ๋ชฉ์ ์ด "external_partner_review" ๋ผ๋ฉด
input.context.approval == true ์ ๊ฐ์ ์ถ๊ฐ ์กฐ๊ฑด์ด ์์ ๊ฒฝ์ฐ ๊ณต์ ๊ฐ ์ฐจ๋จ๋ฉ๋๋ค.
ํ์ฉ ์๋๋ฆฌ์ค ๋น๊ต
| ์คํ ๋ชฉ์ | ํ์ฉ ์ฌ๋ถ | ํ์ ์ ์ฑ ์กฐ๊ฑด |
|---|---|---|
internal_collab (๋ด๋ถ ํ์
) | ํ์ฉ | ์กฐ์ง ๋ด๋ถ ๊ณต์ , ์์ด์ ํธ ์ญํ ํ์ธ |
external_partner_review (์ธ๋ถ ๊ณต์ ) | ์กฐ๊ฑด๋ถ ํ์ฉ | NDA ํ์ธ, ์น์ธ ํ๋๊ทธ ์กด์ฌ (approval == true) |
public_share (๊ณต๊ฐ ๋งํฌ ๊ณต์ ) | ์ฐจ๋จ | ํ์ฌ ์ ์ฑ ์ ์ ์ฒด ๊ณต๊ฐ๋ ํ์ฉํ์ง ์์ |
PBAC vs RBAC vs ABAC ๋น๊ต ํ ์ด๋ธ
| ํญ๋ชฉ | RBAC | ABAC | PBAC (Purpose-Based) |
|---|---|---|---|
| ๊ธฐ์ค ์์ | ์ญํ (Role) | ์์ฑ(Attribute) | ๋ชฉ์ (Purpose) |
| ์คํ ์๋ ๋ฐ์ | ๋ถ๊ฐ๋ฅ | ์ ํ์ (์์ฑ์ผ๋ก ์ฐํ ๊ฐ๋ฅ) | ๊ฐ๋ฅ (๋ช ์์ ๋ชฉ์ ๊ธฐ๋ฐ ํ๋จ) |
| ๋ณตํฉ ์กฐ๊ฑด ํํ๋ ฅ | ๋ฎ์ | ๋์ | ์ค๊ฐ (์์ฑ๊ณผ ๊ฒฐํฉ ๊ฐ๋ฅ) |
| ์ ์ฑ ์ค๊ณ ๋์ด๋ | ๋ฎ์ | ๋์ | ์ค๊ฐ |
| ์ฃผ ์ฌ์ฉ ์๋๋ฆฌ์ค | ๋ด๋ถ ์ฌ์ฉ์ ๊ถํ ๊ตฌ๋ถ | ์ ๋ฐ ๋ฆฌ์์ค ์ ๊ทผ ์ ์ด | AI, RPA, ์์ด์ ํธ ๊ธฐ๋ฐ ์๋ํ |
| ์์ | "admin๋ง ์ ๊ทผ ๊ฐ๋ฅ" | "๋ถ์=์ฌ๋ฌด AND ๋ฑ๊ธ=5 ์ด์" | "๋ชฉ์ =์๋ฆผ ์ ํ์ธ ๊ฒฝ์ฐ๋ง ํ์ฉ" |
| ์คํ ์์ ์ ์ด ์ ํฉ์ฑ | ๋ฎ์ | ์กฐ๊ฑด๋ถ ๊ฐ๋ฅ | ๋์ (์คํ ์ง์ ๋ชฉ์ ํ๊ฐ ๊ฐ๋ฅ) |
PBAC๋ ์คํ ํ๋ฆ์ ์ ๋น์ฑ๊ณผ ๋งฅ๋ฝ์ ํฉ๋ฆฌ์ฑ์ ๋ชฉ์ ๋จ์๋ก ๋ถ๊ธฐ ํ๊ฐํ ์ ์๊ธฐ ๋๋ฌธ์, AgentSecOps ๊ตฌ์กฐ ๋ด์์ ์คํ ์์ ์ ์ฑ ์ ํต์ฌ ํ๊ฐ ๊ธฐ์ค์ผ๋ก ํ์ฉ๋ ์ ์์ต๋๋ค. ์ด๋ ํนํ ์์ด์ ํธ๊ฐ ์์จ์ ์ผ๋ก SaaS API๋ฅผ ํธ์ถํ๊ณ , ๋ด๋ถ/์ธ๋ถ ๊ฒฝ๊ณ๋ฅผ ๋๋๋๋ ์๋ํ๋ฅผ ์ํํ ๋, ๊ธฐ์กด ๊ถํ ๋ชจ๋ธ๋ง์ผ๋ก๋ ํต์ ๋ถ๊ฐ๋ฅํ ์คํ ์๋ ๊ธฐ๋ฐ ๋ณด์ ํ๋จ์ ํด๋ฒ์ด ๋ฉ๋๋ค[10].
3.3 ์ ์ฑ ์งํ ์ง์ (PEP: Policy Enforcement Point)
PEP๋ PDP์ ํ๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ์ค์ ์คํ์ ํ์ฉํ๊ฑฐ๋ ์ฐจ๋จํ๋ ๋ชจ๋์ ๋๋ค. ์์ด์ ํธ๊ฐ ์ธ๋ถ API ํธ์ถ์ ์๋ํ ๋, ํด๋น ์์ฒญ์ ๋จผ์ PEP๋ฅผ ๊ฑฐ์น๋ฉฐ, ํ๊ฐ๋์ง ์์ ์์ฒญ์ ์ฆ์ ์ค๋จ๋ฉ๋๋ค. PEP๋ ๋ด๋ถ ํ๋ก์, ๋ฏธ๋ค์จ์ด API, ์์ด์ ํธ ๋ฐํ์ ์คํฌ๋ฆฝํธ ๋ฑ ๋ค์ํ ์์น์ ์ฝ์ ๋ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, Slack API ํธ์ถ ๋ฏธ๋ค์จ์ด์ ์ฝ์ ๋ PEP๋ ๋ฉ์์ง ๋ฐ์ ์ PDP์ ์ ์ฑ ํ๊ฐ ์์ฒญ์ ์ ๋ฌํ๊ณ , ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋ฉ์์ง๋ฅผ ์ฐจ๋จํ๊ฑฐ๋ ์น์ธํฉ๋๋ค. ์ด๋ฅผ ํตํด ์์ด์ ํธ์ ๋ฌด๋จ ์คํ์ ์ฌ์ ์ ์ฐจ๋จํ ์ ์์ต๋๋ค.
3.4 ์ ์ฑ ์ ๋ณด ์ ๊ณต์(PIP: Policy Information Point)
PIP๋ PDP๊ฐ ์ ์ฑ ํ๊ฐ ์ ์ฐธ์กฐํ๋ ์ธ๋ถ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฌ์ฉ์ ์ญํ , ์ธ์ฆ ์ํ, ํ์ฌ ์๊ฐ, ์์ด์ ํธ ์ปจํ ์คํธ, ์์ ๊ฒฝ๋ก, ์ต๊ทผ ์คํ ๋ด์ญ ๋ฑ์ PIP๋ก๋ถํฐ ์์ง๋ฉ๋๋ค. ์ด ์ ๋ณด๋ ์คํ ์์ฒญ์ ์ปจํ ์คํธ๋ฅผ ๊ตฌ์ฑํ๋ฉฐ, ์ ์ฑ ํ๋จ์ ์ ๋ฐ๋๋ฅผ ๋์ ๋๋ค.
3.5 ๊ฐ์ฌ ๊ธฐ๋ก ๋ฐ ์ธ์ ๊ธฐ๋ฐ ๋ก๊น
์คํ ์์ฒญ์ด ํ์ฉ๋๋ ๊ฑฐ๋ถ๋๋ , ๋ชจ๋ ์ ์ฑ ํ๊ฐ ๋ฐ ์คํ ๋ด์ญ์ ์ธ์ ๊ธฐ๋ฐ์ผ๋ก ์ ์ฅ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ด๋ฆฌ์๋ ๊ฐ๋ณ ์คํ ํ๋ฆ์ ๋ณต์ํ๊ณ , ํน์ AI ์์ด์ ํธ๊ฐ ์ด๋ค ์์ฒญ์ ์ํํ๋์ง ์๊ฐ์ ์ผ๋ก ๋ถ์ํ ์ ์์ต๋๋ค. ์ด ๊ตฌ์กฐ๋ ์ถํ ํฌ๋ ์, ๋ณด์ ๊ฐ์ฌ, ๊ท์ ๋์์ ๋งค์ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
๋ค์์ AgentSecOps ๊ตฌ์กฐ์ ํต์ฌ ์ปดํฌ๋ํธ ๊ด๊ณ๋ฅผ ๋ํ๋ธ ๋ค์ด์ด๊ทธ๋จ์ ๋๋ค.
![[๊ทธ๋ฆผ 6] AgentSecOps Component Architecture](/whitepapers/21/wp21-6-agentsecops-component-architecture.png)
์ด ๊ตฌ์กฐ๋ฅผ ํตํด AgentSecOps๋ ์คํ ์ฃผ์ฒด์ ๋งฅ๋ฝ์ ์ดํดํ๊ณ , ์ค์๊ฐ์ผ๋ก ์ ์ฑ ์ ์ ์ฉํ๋ฉฐ, ์คํ ๊ฒฝ๋ก๋ฅผ ์ถ์ ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค. ์ด๋ ๋จ์ ๋ชจ๋ํฐ๋ง์ด ์๋๋ผ ์คํ ์ ์ด๋ฅผ ํ๋ ํตํฉ ๋ณด์ ์ํคํ ์ฒ๋ก ์ ์ํ ์ ์์ต๋๋ค[11].
4. ์ํ ์๋๋ฆฌ์ค ๋ถ์: AgentSecOps๋ก ๋์ ๊ฐ๋ฅํ ์คํ ์ํ ์ ํ
AI ๊ธฐ๋ฐ ์์ด์ ํธ๋ ์ฌ๋์ ๊ฐ์ ์์ด API ํธ์ถ, ๋ฌธ์ ์์ฑ, ๋ฉ์์ง ๋ฐ์ก, ํด๋ผ์ฐ๋ ์์ฐ ๋ณ๊ฒฝ ๋ฑ์ ์ํํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์์จ ์คํ ํ๊ฒฝ์์๋ ์ธ์ฆ, ์น์ธ, ๊ธฐ๋ก, ์ฑ ์ ์ถ์ ์ด ๋ถ๋ช ํํ ์คํ์ด ๋ฐ๋ณต์ ์ผ๋ก ๋ฐ์ํ๊ฒ ๋๋ฉฐ, ์ด๋ก ์ธํด ์ ํต์ ์ธ ๋ณด์ ๋ชจ๋ธ์ด ํต์ ํ์ง ๋ชปํ๋ ์๋ก์ด ์ํ ์ ํ์ด ๋ํ๋ฉ๋๋ค. AgentSecOps๋ ์ด๋ฌํ ์คํ ์์ ์ํ์ ์ฌ์ ์ ํ์งํ๊ณ ์ฐจ๋จํ๊ธฐ ์ํ ๊ตฌ์กฐ๋ก ์ค๊ณ๋์ด ์์ต๋๋ค[12].
๋ค์์ AI ์์ด์ ํธ ํ๊ฒฝ์์ ๋ฐ์ ๊ฐ๋ฅํ ์ฃผ์ ์ํ ์๋๋ฆฌ์ค ๋ค์ฏ ๊ฐ์ง์, ์ด์ ๋ํ AgentSecOps ์ํคํ ์ฒ์ ๋์ ๊ตฌ์กฐ์ ๋๋ค.
4.1 ์ญํ ์ธ ์คํ ๋ฐ์ (Privilege Escalation via Agent Context)
AI ์์ด์ ํธ๊ฐ ํน์ ์ฌ์ฉ์์ ์๊ฒฉ ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์คํ๋์ง๋ง, ์ค์ ๋ก๋ ํด๋น ์ฌ์ฉ์๊ฐ ํ์ฉ๋ฐ์ง ์์ ๋ฆฌ์์ค์ ์ ๊ทผํ๊ฑฐ๋ ์คํ ๋ช ๋ น์ ์ ๋ฌํ๋ ์ํฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์กฐ์ง ๋ด โ์ผ๋ฐ ์ง์โ์ธ ์ฌ์ฉ์ A๊ฐ ํน์ Google Drive ๋ฌธ์์ ๋ํ ์์ฝ์ ์์ฒญํ์๊ณ , ์ด์ ๋ฐ๋ผ ์์ด์ ํธ๊ฐ API๋ฅผ ํตํด ๋ฌธ์์ ์ ๊ทผํ๋ ๊ณผ์ ์์, ๋ด๋ถ ์ธ์ฌ์ ๋ณด๊ฐ ํฌํจ๋ ๊ธฐ๋ฐ ๋ฌธ์(tag: confidential)์๊น์ง ์ ๊ทผํ ํ ์ด๋ฅผ ์ธ๋ถ ์ฑ๋์ด๋ ํ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๋ ๋ฐฉ์์ ๋๋ค. ์ด๋ ์ฌ์ฉ์ A์ ์ญํ ๋ก๋ ๋ช ๋ฐฑํ ์ ๊ทผ์ด ์ ํ๋ ๋ฆฌ์์ค์ ๋ํด, ์์ด์ ํธ๊ฐ ์คํ ๋ชฉ์ ์ ์ค์ฉํ๊ฑฐ๋ ์ปจํ ์คํธ๋ฅผ ์ฐํํ์ฌ ๊ถํ ์์น(Privilege Escalation)์ ์ผ์ผํจ ์๋๋ฆฌ์ค์ ๋๋ค.
AgentSecOps๋ ์ด๋ฌํ ์คํ ์์ฒญ์ ๋ํด ์คํ ์ฃผ์ฒด(user.role), ์คํ ๋ชฉ์ (purpose), ์์ ์์ฑ(resource.tag)์ ํตํฉ์ ์ผ๋ก ํ๊ฐํ๋ฉฐ, ์คํ ์์ ์์ ๋์ ์ผ๋ก ์ ๊ทผ์ ์ ์ดํฉ๋๋ค. ํนํ ์ญํ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด(RBAC)๋ง์ผ๋ก๋ ์คํ ์๋์ ๋ถ๋ฆฌ๊ฐ ์ด๋ ค์ด ํ๊ฒฝ์์๋, ๋ชฉ์ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด(PBAC)๋ฅผ ํตํด ์ ๋ฐํ ํต์ ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ค์์ ํด๋น ์๋๋ฆฌ์ค์ ๋์ํ๋ ์ ์ฑ ์ ์ ์์์ ๋๋ค.
default allow = false
allow {
input.user.role == "employee"
input.resource.type == "gdrive.document"
input.resource.tag != "confidential"
input.purpose == "summary"
}
์ด ์ ์ฑ ์ ๋ค์ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๋ ๊ฒฝ์ฐ์๋ง ์คํ์ ํ์ฉํฉ๋๋ค.
- ์์ฒญ ์ฃผ์ฒด์ ์ญํ ์ด employee์ ๋๋ค.
- ์์ฒญ ๋์ ๋ฆฌ์์ค๋ Google Drive ๋ฌธ์(gdrive.document)์ ๋๋ค.
- ๋ฌธ์์ ๋ณด์ ํ๊ทธ๊ฐ confidential์ด ์๋๋๋ค.
- ์คํ ๋ชฉ์ ์ด "summary"๋ก ๋ช ์๋์ด ์์ต๋๋ค.
์ ์ฑ ํ๊ฐ์ ๋ฐ๋ฅธ ์คํ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ถ๊ธฐ๋ฉ๋๋ค.
| ์คํ ์กฐ๊ฑด | ์คํ ์ฌ๋ถ | ํ๋จ ๊ทผ๊ฑฐ |
|---|---|---|
| ์ผ๋ฐ ์ง์์ด ์ผ๋ฐ ๋ฌธ์๋ฅผ ์์ฝ ๋ชฉ์ ์ผ๋ก ์์ฒญ | ํ์ฉ | ๋ชจ๋ ์กฐ๊ฑด์ ์ถฉ์กฑํจ |
| ์ผ๋ฐ ์ง์์ด confidential ๋ฌธ์๋ฅผ ์์ฝ ์์ฒญ | ์ฐจ๋จ | ๋ฌธ์์ ๋ณด์ ํ๊ทธ ์กฐ๊ฑด ๋ถ์ถฉ์กฑ |
| ์ผ๋ฐ ์ง์์ด ์์ฝ ์ธ ๋ชฉ์ (์: translate) ์์ฒญ | ์ฐจ๋จ | ์คํ ๋ชฉ์ ์ด ๋ถ์ผ์นํจ |
| ๊ด๋ฆฌ์๊ฐ confidential ๋ฌธ์์ ์ ๊ทผ ์์ฒญ | ์ ์ฑ ์ธ๋ถ | ๋ณ๋ ๊ด๋ฆฌ์ ๊ถํ ์ ์ฑ ์ ์ ํ์ |
PBAC๋ ์คํ ๋ชฉ์ ์ ์ ์ฑ ํ๊ฐ ๊ธฐ์ค์ ๋ช ์ํจ์ผ๋ก์จ, ์คํ ์์ ์์ ๋ฐ์ํ ์ ์๋ ๋ค์ํ ์ปจํ ์คํธ ๋ถ๊ธฐ๋ฅผ ํต์ ํ ์ ์์ต๋๋ค. ํนํ AI ๊ธฐ๋ฐ ์๋ํ ๊ตฌ์กฐ์์๋ ์ฌ์ฉ์์ ์คํ ์ฃผ์ฒด๊ฐ ๋ถ๋ฆฌ๋๋ฏ๋ก, ์คํ ๋ชฉ์ ์ ์ค์ฌ์ผ๋ก ํ ์ ์ฑ ๋ชจ๋ธ์ด AgentSecOps ๋ด์์ ํต์ฌ ์ญํ ์ ์ํํฉ๋๋ค.
4.2 ์์ ๋ฒ์ ์ค๋จ์ฉ (Delegation Misuse and Overscope Execution)
AI ์์ด์ ํธ๊ฐ ๋ค๋ฅธ ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ ๊ถํ์ ์์๋ฐ์ ์คํํ๋ ๊ตฌ์กฐ๋, ์กฐ์ง ๋ด ์๋ํ ์์คํ ์์ ์์ฃผ ๋ฐ์ํ๋ ํจํด์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด ๊ฒฝ์ฐ, ์์ด์ ํธ๊ฐ ์์๋ ๋ฒ์๋ฅผ ๋ฒ์ด๋๊ฑฐ๋ ์๋ํ์ง ์์ API ํธ์ถ์ ์ํํ๊ฒ ๋๋ฉด, ์คํ ์ฃผ์ฒด์ ๊ถํ ์ฑ ์ ๊ฐ์ ๋ถ์ผ์น๋ก ์ธํด ๋ณด์ ์ฌ๊ณ ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ํ๋ก์ ํธ ๊ด๋ฆฌ์๊ฐ Jira ํ๋ก์ ํธ์ ํน์ ์ด์ ๋ฑ๋ก ๊ถํ์ ์์ด์ ํธ์๊ฒ ์์ํ์์ผ๋, ํด๋น ์์ด์ ํธ๊ฐ ์น์ธ๋ฐ์ง ์์ ์ธ๋ถ ํ๋ก์ ํธ ๋ณด๋์๊น์ง ์ด์๋ฅผ ์์ฑํ๊ฑฐ๋, Epic ๋จ์์ ๊ณ ์ํ ํญ๋ชฉ๊น์ง ์๋์ผ๋ก ๋ฑ๋กํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ์น์ธํ ๋ฒ์๋ฅผ ๋์ด์ ์คํ์ด๋ฏ๋ก, ์์ ๋ฒ์ ์ค๋จ์ฉ์ ํด๋นํฉ๋๋ค.
AgentSecOps๋ ์์ ์คํ ๊ตฌ์กฐ์ ๋ํด delegated_by, resource.id, purpose์ ๊ฐ์ ์คํ ์ปจํ
์คํธ ์ ๋ณด๋ฅผ ํจ๊ป ํ๊ฐํ๋ฉฐ, ์์ ๋ฒ์์ ์ ์ ์ฑ ์ฌ๋ถ๋ฅผ ๋์ ์ผ๋ก ํ๋จํ ์ ์์ต๋๋ค. ๋ค์์ ํด๋น ์๋๋ฆฌ์ค์ ๋์ํ๋ ์ ์ฑ
์์์
๋๋ค.
default allow = false
allow {
input.delegated_by == "user_123"
input.user.role == "ai_issue_creator"
input.resource.id == "jira-project-X"
input.purpose == "task_registration"
}
์ด ์ ์ฑ ์ ๋ค์ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํด์ผ ์คํ์ ํ์ฉํฉ๋๋ค.
- ์คํ์ด ์ฌ์ฉ์ ID "user_123"๋ก๋ถํฐ ์์๋์์์ ๋ช ์ํด์ผ ํฉ๋๋ค.
- ์คํ ์ฃผ์ฒด์ ์ญํ ์ด ai_issue_creator์ฌ์ผ ํฉ๋๋ค.
- Jira ํ๋ก์ ํธ ๋ณด๋๋ "jira-project-X"๋ก ์ ํ๋์ด์ผ ํฉ๋๋ค.
- ์คํ ๋ชฉ์ ์ด "task_registration"์ผ๋ก ์ ์๋์ด ์์ด์ผ ํฉ๋๋ค.
์ ์ฑ ์ ๋ฐ๋ฅธ ์คํ ๋ถ๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| ์คํ ์กฐ๊ฑด | ์คํ ์ฌ๋ถ | ํ๋จ ๊ทผ๊ฑฐ |
|---|---|---|
์์์๊ฐ user_123์ด๊ณ , jira-project-X์ ์ด์ ๋ฑ๋ก | ํ์ฉ | ์์ ์กฐ๊ฑด๊ณผ ์์ ๋ฒ์ ๋ชจ๋ ์ถฉ์กฑ |
์์์๋ ๋์ผํ๋, ๋ค๋ฅธ ํ๋ก์ ํธ(jira-project-Y)์ ๋ฑ๋ก | ์ฐจ๋จ | ์์ ๋ฒ์ ์ด๊ณผ |
์คํ ์ฃผ์ฒด ์ญํ ์ด ai_issue_creator๊ฐ ์๋ ๊ฒฝ์ฐ | ์ฐจ๋จ | ์์ ์คํ ์ฃผ์ฒด ์กฐ๊ฑด ๋ถ์ถฉ์กฑ |
์คํ ๋ชฉ์ ์ด "task_registration"์ด ์๋ ๊ฒฝ์ฐ | ์ฐจ๋จ | ํ์ฉ๋ ์คํ ๋ชฉ์ ์กฐ๊ฑด ๋ถ์ถฉ์กฑ |
์์ ๊ธฐ๋ฐ ์๋ํ ํ๊ฒฝ์์๋ ์์์์ ์น์ธ๊ณผ ์คํ ์ฃผ์ฒด์ ๊ถํ์ด ๋ถ๋ฆฌ๋์ด ๋ฐ์ํ๋ ๋ณด์ ์ทจ์ฝ์ ์ด ์กด์ฌํฉ๋๋ค. AgentSecOps๋ ์คํ ์์ ์์ ์ด์ ๊ฐ์ ์์ ๊ด๊ณ๋ฅผ ์ปจํ ์คํธ ๊ธฐ๋ฐ ์ ์ฑ ์ผ๋ก ๊ฒ์ฆํ ์ ์์ผ๋ฉฐ, ์์ ๋ฒ์์ ๋ํ ์ ์ฑ ๋ช ์ธ๋ฅผ ํตํด ์คํ ํ๋ฆ์ ์์ ํ๊ฒ ์ ํํ ์ ์์ต๋๋ค.
4.3 ํธ๋ฆฌ๊ฑฐ ์ค์ฉ์ ํตํ ์ธ๋ถ API ํ์ฅ (Trigger Abuse and External API Expansion)
AI ์์ด์ ํธ๋ ์ธ๋ถ ์์คํ ์์ ๋ฐ์ํ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์คํ๋๋ ๊ตฌ์กฐ๋ฅผ ์์ฃผ ์ฌ์ฉํฉ๋๋ค. ๋ํ์ ์ธ ์๋ก GitHub์ webhook ์ด๋ฒคํธ๊ฐ ์์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ฒ๋ผ ์ธ๋ถ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๋ ์์ด์ ํธ๋, ์ฌ์ ์ ์ ์๋์ง ์์ ์ธ๋ถ ์์คํ ์ด๋ ๋ด๋ถ ๊ณ ์ํ ๋ฆฌ์์ค๊น์ง ํ์ฅ ์คํ์ ์๋ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ์คํ์ ์ถ์ฒ์ ๋ชฉ์ ์ด ๋ถ์ผ์นํ๊ฒ ๋๋ฉฐ, ํธ๋ฆฌ๊ฑฐ ์ค์ฉ์ ํด๋นํฉ๋๋ค.
์๋ฅผ ๋ค์ด, GitHub ์ ์ฅ์์ ์ฝ๋๊ฐ ํธ์๋์์ ๋ ์์ด์ ํธ๊ฐ ๋น๋ ์๋ํ๋ฅผ ์ํํ๋ ๊ฒ์ ํ์ฉ๋ ๋ชฉ์ ์ผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํด๋น ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ด์ฉํด AWS ํ๊ฒฝ์ ์๋ก์ด EC2 ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ฑฐ๋, GitLab์ ๋ณ๋ ฌ ์์ ์ ์์ฑํ๋ ๋ฑ, ์ฌ์ ์ ๋ช ์๋์ง ์์ ์คํ ํ์ฅ๊น์ง ์งํ๋ ๊ฒฝ์ฐ ์ด๋ ๋ณด์ ์๋ฐ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
AgentSecOps๋ ํธ๋ฆฌ๊ฑฐ์ ์ถ์ฒ(trigger.source)์ ํธ์ถ ๋์ ๋ฆฌ์์ค(resource.domain)๊ฐ ์ฌ์ ์ ์ ์๋ ์กฐ๊ฑด๊ณผ ์ผ์นํ๋์ง ํ์ธํ๊ณ , ์คํ ๋ชฉ์ (purpose)๊ณผ๋ ๋น๊ตํ์ฌ ๋์์ ์ ํํฉ๋๋ค. ๋ค์์ ์ด ์๋๋ฆฌ์ค์ ๋ํ ์ ์ฑ
์ ์ ์์์
๋๋ค.
default allow = false
allow {
input.trigger.source == "github"
input.resource.domain == "github.com"
input.purpose == "ci_pipeline"
}
ํด๋น ์ ์ฑ ์ ๋ค์ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๋ ๊ฒฝ์ฐ์๋ง ์คํ์ ํ์ฉํฉ๋๋ค.
- ํธ๋ฆฌ๊ฑฐ๋ GitHub webhook์์ ๋ฐ์ํด์ผ ํฉ๋๋ค.
- ๋ฆฌ์์ค์ ๋๋ฉ์ธ์ github.com์ ์ํด์ผ ํฉ๋๋ค.
- ์คํ ๋ชฉ์ ์ "ci_pipeline"์ผ๋ก ๋ช ์๋์ด์ผ ํฉ๋๋ค.
์ ์ฑ ํ๊ฐ์ ๋ฐ๋ฅธ ์คํ ๋ถ๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| ์คํ ์กฐ๊ฑด | ์คํ ์ฌ๋ถ | ํ๋จ ๊ทผ๊ฑฐ |
|---|---|---|
| GitHub ์ด๋ฒคํธ ๊ธฐ๋ฐ, GitHub ๋ด ๋น๋ ์๋ํ ์คํ ์์ฒญ | ํ์ฉ | ์ถ์ฒ์ ๋ฆฌ์์ค ๋๋ฉ์ธ์ด ์ผ์นํจ |
| GitHub ์ด๋ฒคํธ ๊ธฐ๋ฐ, AWS EC2 ์คํ ์์ฒญ | ์ฐจ๋จ | ํธ๋ฆฌ๊ฑฐ ์ถ์ฒ์ ๋ฆฌ์์ค ๋๋ฉ์ธ์ด ๋ถ์ผ์น |
| GitLab ์ด๋ฒคํธ ๊ธฐ๋ฐ, GitHub ์์ ์์ฒญ | ์ฐจ๋จ | ํธ๋ฆฌ๊ฑฐ ์ถ์ฒ ๋ถ์ผ์น |
GitHub ์ด๋ฒคํธ ๊ธฐ๋ฐ, ๋ชฉ์ ์ด "deployment"๋ก ๋ช
์๋ ์คํ ์์ฒญ | ์ฐจ๋จ | ํ์ฉ๋ ์คํ ๋ชฉ์ ์กฐ๊ฑด ๋ถ์ผ์น |
AgentSecOps๋ ์ธ๋ถ ์ด๋ฒคํธ ๊ธฐ๋ฐ ํธ๋ฆฌ๊ฑฐ์ ์ถ์ฒ์ ์คํ ๋ชฉ์ ๊ฐ์ ์ ์ฑ ์ ์ผ๊ด์ฑ์ ํ๊ฐํจ์ผ๋ก์จ, ์ฌ์ ์ ์ ์๋์ง ์์ ์คํ ํ์ฅ์ ์ฌ์ ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ์ด ๊ตฌ์กฐ๋ ํนํ ๋ค์ค SaaS ํ๊ฒฝ์์ ๋ฐ์ํ ์ ์๋ ๋ฌด๋ถ๋ณํ API ์ฐ๊ฒฐ ์๋๋ฅผ ์ ์ดํ๋ ๋ฐ ํจ๊ณผ์ ์ ๋๋ค.
4.4 ์คํ ๊ฒฝ๋ก ๋ถํฌ๋ช ์ฑ (Execution Path Obfuscation)
AI ์์ด์ ํธ๊ฐ ๋ค์ํ ์์คํ ๊ณผ ์ฐ๋๋์ด ์์จ์ ์ผ๋ก ์คํ ์์ฒญ์ ์ํํ๋ ํ๊ฒฝ์์๋, ์คํ ๊ฒฐ๊ณผ๋ง ๊ธฐ๋ก๋๊ณ ๊ทธ ์์ฒญ์ด ๋๊ฐ, ์ธ์ , ์ด๋ค ์กฐ๊ฑด์์ ์ํ๋์๋์ง ์ถ์ ์ด ์ด๋ ค์ด ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ ๋ณด์ ์ฌ๊ณ ๋ฐ์ ์ ํ์ ์ฃผ์ฒด๋ฅผ ์๋ณํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ค๋ฉฐ, ํฌ๋ ์๊ณผ ์ปดํ๋ผ์ด์ธ์ค ๋์์ ์ฌ๊ฐํ ๋ฌธ์ ๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์์ด์ ํธ๊ฐ Google Calendar API๋ฅผ ํธ์ถํ์ฌ ์กฐ์ง ์ ์ฒด ํ์๋ฅผ ์๋ ์์ฑํ์ผ๋, ํด๋น ์์ฒญ์ด ์ด๋ค ์ฌ์ฉ์ ๋๋ ์์ด์ ํธ ID๋ก ์ํ๋์๋์ง, ์คํ ๋ชฉ์ ์ด ๋ฌด์์ด์๋์ง, ์ด๋ค ์กฐ๊ฑด ํ์์ ํธ์ถ๋์๋์ง๊ฐ ์คํ ๋ก๊ทธ์ ๋จ์ ์์ง ์์ ๊ฒฝ์ฐ์ ๋๋ค. ์ด๋ฌํ ์ํฉ์ ์คํ ๊ฒฐ๊ณผ๋ ์กด์ฌํ์ง๋ง ๊ฒฝ๋ก๊ฐ ์๋ณ๋์ง ์๋ ๊ฐ์์ฑ ์๋ณ์ด ์ด๋ ค์ด ์คํ ํ๋ฆ์ด๋ฉฐ, ๊ณต๊ฒฉ์๊ฐ ๋ก๊ทธ ์กฐ์์ด๋ ์๋์ ์ฐํ๋ฅผ ์๋ํ ๊ฒฝ์ฐ ๋ณด์์ ์ฌ๊ฐ์ง๋๊ฐ ๋ ์ ์์ต๋๋ค.
AgentSecOps๋ ๋ชจ๋ ์คํ ์์ฒญ์ ๋ํด ์ฌ์ ์ ์ ์๋ ์ปจํ ์คํธ ํ์ ํญ๋ชฉ์ ์๊ตฌํฉ๋๋ค. PDP๋ ์ ์ฑ ํ๊ฐ ์ ์ด๋ฌํ ํญ๋ชฉ์ด ์กด์ฌํ์ง ์๊ฑฐ๋ ๋๋ฝ๋ ๊ฒฝ์ฐ ํด๋น ์์ฒญ์ ์ฐจ๋จํ ์ ์์ผ๋ฉฐ, ๋ชจ๋ ์คํ ํ๋ฆ์ ์ธ์ ๋จ์๋ก ๊ฐ์ฌ ๋ก๊ทธ์ ์ ์ฅ๋์ด์ผ ํฉ๋๋ค.
๋ค์์ ํด๋น ์๋๋ฆฌ์ค์ ๋ํ ์ ์ฑ ์ ์ ์์์ ๋๋ค.
default allow = false
allow {
input.user.id
input.session.id
input.resource.id
input.purpose
}
์ด ์ ์ฑ ์ ๋ค์ ํ์ ํญ๋ชฉ์ด ๋ชจ๋ ์กด์ฌํ ๋๋ง ์คํ์ ํ์ฉํฉ๋๋ค:
- ์ฌ์ฉ์ ์๋ณ์(user.id)
- ์ธ์ ID(session.id)
- ์์ ์๋ณ์(resource.id)
- ์คํ ๋ชฉ์ (purpose)
์ด๋ฌํ ์ ์ฑ ์ ์ค์ ํ๊ฐ ๋ก์ง์ด๋ผ๊ธฐ๋ณด๋ค๋, ์คํ ์์ฒญ ํฌ๋งท์ ์ ํฉ์ฑ์ ๊ฒ์ฆํ๋ ์ญํ ์ ์ํํฉ๋๋ค. ํ์ ํญ๋ชฉ์ด ๋๋ฝ๋ ์์ฒญ์ ์คํ ์ ๋จ๊ณ์์ ์ฐจ๋จ๋๋ฉฐ, ์ ์ ์คํ์ ๊ฒฝ์ฐ์๋ ๋ชจ๋ ์ปจํ ์คํธ๋ ์ธ์ ๋ก๊ทธ์ ํจ๊ป ๊ธฐ๋ก๋ฉ๋๋ค.
์ ์ฑ ์ ๋ฐ๋ฅธ ์คํ ๋ถ๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| ์คํ ์กฐ๊ฑด | ์คํ ์ฌ๋ถ | ํ๋จ ๊ทผ๊ฑฐ |
|---|---|---|
| ๋ชจ๋ ํ์ ํญ๋ชฉ(user, session, resource, purpose)์ด ํฌํจ๋ ์์ฒญ | ํ์ฉ | ์์ฒญ ๊ตฌ์กฐ ์์ ํจ |
| session.id๊ฐ ๋๋ฝ๋ ์์ฒญ | ์ฐจ๋จ | ์คํ ๊ฒฝ๋ก ์ถ์ ๋ถ๊ฐ |
| purpose ํ๋๊ฐ ์๋ ์๋ํ ์์ฒญ | ์ฐจ๋จ | ์คํ ๋ชฉ์ ๋ถ๋ช ํ, ์ ์ฑ ํ๊ฐ ๋ถ๊ฐ๋ฅ |
| ์์ด์ ํธ๊ฐ ๋น์๋ณ ์ํ๋ก ์์ฒญํ ๊ฒฝ์ฐ | ์ฐจ๋จ | user.id ๋ฏธํ์ , ์คํ ์ฑ ์ ์ถ์ ๋ถ๊ฐ |
AgentSecOps๋ ์คํ ์์ฒญ์ด ๋จ์ํ ์ฑ๊ณตํ๋์ง๋ฅผ ๋์ด์, ๊ทธ ์์ฒญ์ด ์ด๋ค ๋งฅ๋ฝ๊ณผ ์กฐ๊ฑด์์ ์ํ๋์๋์ง๋ฅผ ํฌํจํ์ฌ ํ๋จํฉ๋๋ค. ์ด๋ฌํ ์คํ ๋งฅ๋ฝ์ ์ ํฉ์ฑ์ ๋จ์ํ ๋ณด์ ํ๊ฐ๋ฟ ์๋๋ผ, ์ฌ๊ณ ๋์, ํ์ ๊ฐ์ฌ, ์ ์ฑ ๊ฐ์ ์ ์ํ ํต์ฌ ๊ธฐ๋ฐ ์ ๋ณด๊ฐ ๋ฉ๋๋ค.
4.5 AI ์ถ๋ ฅ ๊ธฐ๋ฐ ์๋ ์คํ ์ ๋ (Prompt-to-Execution Abuse via LLM Output)
AI ์์ด์ ํธ๊ฐ ๋ํ ์ธ์ด ๋ชจ๋ธ(LLM)์ ์๋ต์ ๊ธฐ๋ฐ์ผ๋ก ์ธ๋ถ ์์คํ ์ ํธ์ถํ๋ ๊ตฌ์กฐ์์๋, ํ๋กฌํํธ ์ ๋ ฅ ๊ฒฐ๊ณผ๋ก ์์ฑ๋ ์๋ต์ด ์๋ํ์ง ์์ ์คํ์ ์ ๋ฐํ ๊ฐ๋ฅ์ฑ์ด ์กด์ฌํฉ๋๋ค. ํนํ LLM์ ์๋ต์ด API ํธ์ถ๊ณผ ์ง์ ์ฐ๊ฒฐ๋๋ ๊ตฌ์กฐ์ผ ๊ฒฝ์ฐ, ์ ์์ ๋๋ ๋ถ๋ช ํํ ์ ๋ ฅ์ผ๋ก ์ธํด ๊ณ ์ํ ๋ช ๋ น์ด ์๋ ์คํ๋ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ โํ
์คํธ ์๋ฒ ์ ๋ฆฌํด์คโ๋ผ๊ณ ์์ฐ์ด๋ก ์์ฒญํ ๊ฒฝ์ฐ, LLM์ด ์ด๋ฅผ aws ec2 terminate-instances --all๊ณผ ๊ฐ์ด ํด์ํ๊ณ , ์์ด์ ํธ๊ฐ ์ด๋ฅผ ์ค์ ๋ก ์คํํ๋ค๋ฉด ์ด๋ ๋ช
๋ฐฑํ Prompt Injection ๊ธฐ๋ฐ ์คํ ์ฌ๊ณ ์ ํด๋นํฉ๋๋ค.
์ด๋ฌํ ์ํฉ์์๋ ์คํ ์์ฒญ์ด ์๋๋ ๋ชฉ์ ๊ณผ ์ ์ฑ ์กฐ๊ฑด์ ๋ง์กฑํ๋์ง๋ฅผ ๋ช ํํ ํ๋จํด์ผ ํ๋ฉฐ, ํน์ ๊ณ ์ํ ํค์๋๊ฐ ํฌํจ๋ ์๋ต์ ๋ํด์๋ ์ถ๊ฐ ์น์ธ์ ์๊ตฌํ๊ฑฐ๋ ์๋ ์คํ์ ์ฐจ๋จํด์ผ ํฉ๋๋ค.
๋ค์์ ํด๋น ์๋๋ฆฌ์ค์ ๋์ํ๋ ์ ์ฑ ์ ์ ์์์ ๋๋ค.
default allow = false
allow {
not contains(input.llm_response, "terminate")
not contains(input.llm_response, "delete")
not contains(input.llm_response, "format")
input.purpose == "maintenance"
input.context.approved == true
}
์ด ์ ์ฑ ์ ๋ค์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฒฝ์ฐ์๋ง ์คํ์ ํ์ฉํฉ๋๋ค.
- LLM ์๋ต ๋ด์ terminate, delete, format ๋ฑ์ ๊ณ ์ํ ํค์๋๊ฐ ์์ด์ผ ํฉ๋๋ค.
- ์คํ ๋ชฉ์ ์ "maintenance"๋ก ๋ช ์๋์ด์ผ ํฉ๋๋ค.
- ์คํ ์์ฒญ์ ์ฌ์ ์ ๊ด๋ฆฌ์ ๋๋ ์ ์ฑ ์์คํ ์ ์ํด approved == true๋ก ์น์ธ๋์ด์ผ ํฉ๋๋ค.
์ ์ฑ ํ๊ฐ์ ๋ฐ๋ฅธ ์คํ ๋ถ๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| ์คํ ์กฐ๊ฑด | ์คํ ์ฌ๋ถ | ํ๋จ ๊ทผ๊ฑฐ |
|---|---|---|
| LLM ์๋ต์ ์ํ ๋ช ๋ น ์๊ณ , ์น์ธ๋ ์ ์ง๋ณด์ ์์ฒญ | ํ์ฉ | ๋ชฉ์ ๋ฐ ์น์ธ์ด ๋ชจ๋ ๋ง์กฑ๋จ |
์๋ต์ "terminate" ํฌํจ๋จ | ์ฐจ๋จ | ๊ณ ์ํ ํค์๋ ํฌํจ |
์น์ธ๋์ง ์์ ์์ฒญ(approved == false) | ์ฐจ๋จ | ์ด์ค ์น์ธ ์กฐ๊ฑด ๋ถ์ถฉ์กฑ |
์คํ ๋ชฉ์ ์ด "cleanup" ๋ฑ ๋ถ๋ช
ํํ ํ
์คํธ๋ก ์ ๋ฌ๋จ | ์ฐจ๋จ | ์ ์ฑ ๋ด ๋ช ์๋ ๋ชฉ์ ๊ณผ ๋ถ์ผ์น |
AgentSecOps๋ ์คํ ์์ฒญ์ ๋ฌธ๋งฅ๋ฟ ์๋๋ผ, ์ค์ ์คํ ๋ฌธ์ฅ์ ๋ด๋ถ ๋ด์ฉ๊น์ง๋ ํ๊ฐ ์กฐ๊ฑด์ ํฌํจ์ํฌ ์ ์์ต๋๋ค. ์ด๋ LLM๊ณผ ์๋ํ๋ ์คํ ๊ณ์ธต์ด ์ฐ๊ฒฐ๋ ๋ ํ์ฐ์ ์ผ๋ก ์๊ตฌ๋๋ ๋ณด์ ๊ตฌ์กฐ์ด๋ฉฐ, Prompt-to-Execution ๊ฒฝ๋ก์ ์์ ์ฑ์ ํ๋ณดํ๊ธฐ ์ํด ์ด์ค ์น์ธ ํ๋ฆ๊ณผ ํค์๋ ๊ธฐ๋ฐ ํํฐ๋ง์ ๋ณํ ์ ์ฉํด์ผ ํฉ๋๋ค.
๋ค์์ ์ํ ์๋๋ฆฌ์ค์ AgentSecOps์ ๋์ ์ปดํฌ๋ํธ ๊ฐ ๊ด๊ณ๋ฅผ ์ ๋ฆฌํ ๋งคํ ๋ค์ด์ด๊ทธ๋จ์ ๋๋ค.
์ํ ์๋๋ฆฌ์ค์ AgentSecOps ๋์ ์ปดํฌ๋ํธ ๋งคํ ํ
| ์ํ ์๋๋ฆฌ์ค | ๋์ ์ปดํฌ๋ํธ ๋ฐ ๋งค์ปค๋์ฆ |
|---|---|
| Privilege Escalation via Agent Context | PDP + PBAC ๋ชฉ์ ๊ธฐ๋ฐ ์ ์ฑ ํ๊ฐ |
| Delegation Misuse and Overscope Execution | ์์ ๋ฉํ๋ฐ์ดํฐ ํ์ธ(PIP) + ์ ์ฑ ๋ด ์์ ๋ฒ์ ์ ํ(PDP) |
| Trigger Abuse and External API Expansion | ํธ๋ฆฌ๊ฑฐ ์ถ์ฒ ๊ฒ์ฆ(PDP) + ๋ฆฌ์์ค ๋๋ฉ์ธ ๋ถ์ผ์น ์ ์คํ ์ฐจ๋จ(PEP) |
| Execution Path Obfuscation | ์ฌ์ฉ์ ID, ์ธ์ ID, ์คํ ๋ชฉ์ ํ๋ ์กด์ฌ ์ฌ๋ถ ๊ฒ์ฆ(PDP) + ๊ฐ์ฌ ๋ก๊ทธ ๊ธฐ๋ก |
| Prompt-to-Execution Abuse via LLM Output | LLM ์๋ต ํค์๋ ํํฐ๋ง(PDP) + ์น์ธ ํ๋๊ทธ ์กด์ฌ ํ์ธ + ๋ชฉ์ ๊ฒ์ฆ(PDP) |
AgentSecOps๋ DevSecOps์ ๋ณด์ ๊ด๊ณ์ ์์ผ๋ฉฐ, DevSecOps๊ฐ ์คํ ์ ยท์คยทํ์ ๊ฑธ์ณ ๋ค์ํ ๋ณด์ ์๋ํ๋ฅผ ํฌํจํ๋ ๊ตฌ์กฐ๋ก ํ์ฅ๋์์์๋ ๋ถ๊ตฌํ๊ณ , ์คํ ์์ฒญ ๋จ์์ ์ ์ฑ ํ๋จ๊ณผ ๋ชฉ์ ๊ธฐ๋ฐ ํต์ ๋ผ๋ ์ธก๋ฉด์์๋ ์ฌ์ ํ ๋ณด์์ด ํ์ํ ์ง์ ์ด ์กด์ฌํฉ๋๋ค. ํนํ ์์ด์ ํธ ๊ธฐ๋ฐ์ ์์จ ์คํ ํ๊ฒฝ์์๋ DevSecOps๊ฐ ํฌ์ฐฉํ์ง ๋ชปํ๋ ์คํ ๋ชฉ์ , ์์ ๋ฒ์, ํธ๋ฆฌ๊ฑฐ ์ถ์ฒ ๋ฑ์ ๋งฅ๋ฝ์ AgentSecOps๊ฐ ์ ์ฑ ์ ์ผ๋ก ํต์ ํจ์ผ๋ก์จ, ์คํ ์์ ๋ณด์์ ๊ณต๋ฐฑ์ ๋ฉ์ธ ์ ์์ต๋๋ค[13].
5. ์ ๋ต ์ ์ธ: AgentSecOps ์ค๊ณ ๋ฐ ๋์ ์ ์ํ ๊ธฐ์ ์ ๋ต
AgentSecOps๋ ๊ธฐ์กด ๋ณด์ ์ฒด๊ณ์๋ ์ ํ ๋ค๋ฅธ ๊ฐ์ ์ง์ ๊ณผ ์ ์ฑ ํ๊ฐ ๊ธฐ์ค์ ์๊ตฌํฉ๋๋ค. ๋ฐ๋ผ์ ์ด ์ํคํ ์ฒ๋ฅผ ์กฐ์ง์ ์ค์ง์ ์ผ๋ก ์ ์ฉํ๊ธฐ ์ํด์๋ ์ค๊ณ ๋ฐฉ์๋ฟ ์๋๋ผ ์ ์ฑ ๊ตฌ์ฑ, ์คํ ํ๋ฆ ํตํฉ, ๊ฐ์ฌ ์ฒด๊ณ ์ค๊ณ๊น์ง ํฌํจํ๋ ๊ตฌ์กฐ์ ์ ๋ต์ด ํ์ํฉ๋๋ค[14].
5.1 ์คํ ํ๋ฆ ํตํฉ์ ์ํ ์ํคํ ์ฒ ์ ๋ต
AgentSecOps๋ ์์ด์ ํธ ์คํ ์์ฒญ์ด ๋ฐ์ํ๋ ์์ ์ ๊ฐ์ ํ์ฌ, ํด๋น ์์ฒญ์ ์คํ์ ์ฐจ๋จํ๊ฑฐ๋ ํ์ฉํ๋ ๊ตฌ์กฐ์ ๋๋ค. ๋ฐ๋ผ์ ์์ด์ ํธ๊ฐ ํธ์ถํ๋ ์ธ๋ถ ์์คํ (API, SaaS ๋ฑ) ๋๋ ๋ด๋ถ ์๋น์ค์ ๋ํด ์ค๊ฐ์์ ์ ์ฑ ํ๊ฐ ์์ฒญ์ ์ฝ์ ํ ์ ์๋ ๊ตฌ์กฐ๊ฐ ํ์ํฉ๋๋ค.
- ๋ฏธ๋ค์จ์ด ๊ธฐ๋ฐ ๊ตฌ์กฐ: API ํธ์ถ ์ ์ ์ ์ฑ ๊ฒ์ฆ ๋ ์ด์ด๋ฅผ ์ฝ์ ํ์ฌ ์์ฒญ์ ํ๊ฐํฉ๋๋ค.
- ํ๋ก์ ๊ธฐ๋ฐ ๊ตฌ์กฐ: ๋ชจ๋ ์์ด์ ํธ ํธ์ถ์ MCP(Model Context Protocol) Proxy ๋๋ API Gateway๋ฅผ ํตํด ์ค๊ณํฉ๋๋ค.
- Webhook Wrapper ๊ตฌ์กฐ: GitHub, Slack, Jira์ ๊ฐ์ ์ด๋ฒคํธ ๊ธฐ๋ฐ ํธ์ถ ์ ํ์ ์ ์ฑ ํ์ธ ๋จ๊ณ๋ฅผ ์ฝ์ ํฉ๋๋ค.
![[๊ทธ๋ฆผ 7] Architecture with MCP PAM](/whitepapers/21/wp21-7-architecture-with-mcp-pam.png)
์ด๋ฌํ ์ํคํ ์ฒ๋ ๊ธฐ์กด ์์คํ ์ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ์ฝ์ ๊ฐ๋ฅํ๋ฉฐ, API ํ๋ก์ ๊ธฐ๋ฐ ์ ์ฑ ์ฝ์ ๋ฐฉ์์ ํนํ SaaS ๊ธฐ๋ฐ ํธ์ถ์ ์ ์ฉํ๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค.
ํ์ฌ ๋๋ถ๋ถ์ ์กฐ์ง์ Terraform, CloudFormation, Pulumi์ ๊ฐ์ IaC ๋๊ตฌ๋ฅผ ํตํด AWS ๊ธฐ๋ฐ์ ์ธํ๋ผ ๋ฆฌ์์ค๋ฅผ ๋งค์ฐ ์ ๊ตํ๊ฒ ์ ์ธ์ ์ผ๋ก ์ ์ดํ๊ณ ์์ต๋๋ค. ์ด๋ฌํ ํ๊ฒฝ์์๋ ์คํ ์ฃผ์ฒด๊ฐ ์ฌ๋์ผ ๋์๋ ์น์ธ์ ๋๋ฐํ ๋ฆด๋ฆฌ์ฆ ์ ์ฐจ๋ฅผ ์๊ตฌํ๋ฉฐ, ์๋ํ ๋ํ ํต์ ๋ ํํ๋ก ์ ํ๋ฉ๋๋ค. ๋ฐ๋ผ์ AI Agent๊ฐ ์ง์ ์ ์ผ๋ก AWS ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ฑฐ๋ ์กฐ์ํ๋ ๋ฐฉ์์ ํ์ค์ ์ผ๋ก ๋ถ๊ฐ๋ฅํฉ๋๋ค.
![[๊ทธ๋ฆผ 8] IaC Security Flow](/whitepapers/21/wp21-8-iac-security-flow.png)
๊ทธ๋ฌ๋ ์ต๊ทผ LLM ๊ธฐ๋ฐ ์์ด์ ํธ๊ฐ IaC ํ ํ๋ฆฟ์ ์์ฑํ๊ฑฐ๋ GitOps ๊ธฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ์๋ ํธ๋ฆฌ๊ฑฐํ๋ ๋ฐฉ์์ผ๋ก IaC ์๋จ์ ์ค๊ณ ํ๋ฆ์ ๊ฐ์ ํ ๊ฐ๋ฅ์ฑ์ด ์ฆ๊ฐํ๊ณ ์์ผ๋ฉฐ, ์ค์ ๋ก ์ผ๋ถ ๊ฐ๋ฐํ ์์ด์ ํธ๋ ์ด๋ฌํ ํ๋ฆ์ ์คํ์ ์ผ๋ก ๊ตฌํํ๊ณ ์์ต๋๋ค. ์ด๋ฌํ ์ ํ์ด ๊ฐ์ํ๋๋ ์ํฉ์์, ๋ณด์ ์ ์ฑ ์ด ์๋ ์ํ๋ก ์์ด์ ํธ๊ฐ IaC์ ์ฐ๊ฒฐ๋๋ค๋ฉด, ๋ฆฌ์์ค ์์ฑ๊ณผ ๊ถํ ๋ถ๋ฐฐ์ ์ฑ ์ ์ถ์ ์ด ๋ถ๊ฐ๋ฅํด์ง ์ ์์ต๋๋ค. ์คํ ํ๋ฆ ๋ด ํต์ ๊ณ์ธต์ด ๋ฐ๋์ ์ ํ๋์ด์ผ ํ๋ ์ด์ ์ ๋๋ค.
5.2 ์ ์ฑ ๊ตฌ์ฑ ๋ฐ ๊ฐ์ฌ ์ ๋ต
์คํ ์์ฒญ์ ๋จ์ํ ํธ์ถ์ด ์๋๋ผ, ์ฃผ์ฒด, ๋ชฉ์ , ์์ , ์ปจํ ์คํธ๋ฅผ ๋ชจ๋ ํฌํจํ ๋ณตํฉ ์กฐ๊ฑด์ผ๋ก ํ๋จ๋์ด์ผ ํ๋ฉฐ, ์ด์ ๋ฐ๋ผ ์ ์ฑ ๊ตฌ์ฑ๋ 3๋จ๊ณ๋ก ๋๋์ด์ผ ํฉ๋๋ค.
- ์ฃผ์ฒด ์๋ณ (Who): ์คํ ์์ฒญ์๊ฐ ๋๊ตฌ์ธ๊ฐ (user_id, agent_id, group ๋ฑ)
- ๋ชฉ์ ๋ช ์ (Why): ํด๋น ์์ฒญ์ ๋ช ์์ ๋ชฉ์ ์ ๋ฌด์์ธ๊ฐ (์: aws.ec2.start)
- ๋งฅ๋ฝ ํ๋จ (When/Where): ์์ฒญ ์๊ฐ, ์์น, ์น์ธ ์ด๋ ฅ, ์ธ์ ์ฐ๊ฒฐ ๋ฑ
๋ค์์ AWS EC2 ์ธ์คํด์ค ์์ ์์ฒญ์ ๋ํด ์ ์ฑ ์ ์ ์ฉํ ์์์ ๋๋ค.
# ์คํ ์์ฒญ์ ํ์ฉํ ๊ธฐ๋ณธ ์กฐ๊ฑด์ false๋ก ์ค์
default allow = false
# ์ ์ฑ
ํ์ฉ ์กฐ๊ฑด ์ ์
allow {
# ์คํ ๋ชฉ์ ์ด EC2 ์ธ์คํด์ค ์์์ผ ๊ฒฝ์ฐ
input.purpose == "aws.ec2.start"
# ์์ฒญ์์ ์ญํ ์ด 'ai_provisioner'์ผ ๊ฒฝ์ฐ (AI ๊ธฐ๋ฐ ์์ ํ ๋น ์ ์ฉ ์ญํ )
input.user.role == "ai_provisioner"
# ๋ฆฌ์์ค ํ์
์ด EC2 ์ธ์คํด์ค์ผ ๊ฒฝ์ฐ
input.resource.type == "aws.ec2.instance"
# ์คํ ์์ฒญ์ด ์ค์ 9์๋ถํฐ ์คํ 6์ ์ฌ์ด์ผ ๊ฒฝ์ฐ์๋ง ํ์ฉ
input.context.time_hour >= 9
input.context.time_hour < 18
}
์ด ์ ์ฑ ์ ์คํ ๋ชฉ์ , ์ฌ์ฉ์ ์ญํ , ์์ ์ ํ, ์คํ ์์ ์ ํจ๊ป ๊ณ ๋ คํ์ฌ, ๋ณด์ ์ ์ฑ ์ ์ ๋ฐ์ฑ๊ณผ ์คํ ํต์ ๊ฐ๋ฅ์ฑ์ ๋์ ๋๋ค[15].
5.3 ์คํ ๊ธฐ๋ก ๋ฐ ๊ฐ์ฌ ์ฒด๊ณ ์ค๊ณ
AgentSecOps๋ ์ ์ฑ ํ๋จ์ ํตํด ์คํ์ ํ์ฉํ๊ฑฐ๋ ์ฐจ๋จํ ๋ฟ ์๋๋ผ, ๊ทธ ์คํ์ด ์ด๋ค ๋งฅ๋ฝ์์ ๋ฐ์ํ๋์ง๋ฅผ ์ ํํ๊ฒ ๊ธฐ๋กํ๋ ๊ธฐ๋ฅ์ด ํ์์ ์ผ๋ก ์๊ตฌ๋ฉ๋๋ค. ํนํ AI ์์ด์ ํธ๊ฐ ๋ค์ํ ๊ถํ์ ์์๋ฐ์ ์์จ์ ์ผ๋ก ํ๋ํ๋ ๊ตฌ์กฐ์์๋, ๋จ์ ํ์ฉ/๊ฑฐ๋ถ ๊ฒฐ๊ณผ๋ง์ผ๋ก๋ ์ฑ ์ ์ถ์ ์ด ์ด๋ ต์ต๋๋ค. ๋ฐ๋ผ์ ์คํ์ ์ฌ์ฉ๋ ๋ชจ๋ ๋งฅ๋ฝ ์ ๋ณด์ ์ ์ฑ ํ๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์ธ์ ๋จ์๋ก ๊ฐ์ฌ ๋ก๊ทธ์ ๊ธฐ๋กํ๋ ์ฒด๊ณ๊ฐ ํ์์ ๋๋ค.
์ด๋ฌํ ๊ธฐ๋ก์ ํต์ฌ์ ์ ์ฑ ํ๊ฐ ์ง์ (PDP)์ด ์๋๋ผ, ์ ์ฑ ํ๊ฐ ์ ์ฐธ์กฐ๋๋ ์ปจํ ์คํธ ์ ๋ณด(PIP)์์ ์์๋ฉ๋๋ค. PIP๋ ์คํ ์์ฒญ์ ํฌํจ๋๊ฑฐ๋ ์ธ๋ถ์์ ์์ง๋ ์ฌ์ฉ์ ์ ๋ณด, ์ธ์ ์ ๋ณด, ๋ฆฌ์์ค ํน์ฑ, ์คํ ๋ชฉ์ , ํธ๋ฆฌ๊ฑฐ ์ ๋ณด, ์๊ฐยท์์น ๋ฑ์ ๋งฅ๋ฝ ๋ฐ์ดํฐ๋ฅผ PDP์ ์ ๊ณตํ๋ฉฐ, ์ด ๋ฐ์ดํฐ๋ ์ ์ฑ ํ๊ฐ์ ํจ๊ป ์ต์ข ์ ์ผ๋ก ๊ฐ์ฌ ๋ก๊ทธ์ ํจ๊ป ๊ธฐ๋ก๋ฉ๋๋ค.
PIP๊ฐ ์ ๊ณตํ๋ ์คํ ์ปจํ ์คํธ ์์ (JSON ํ์)
{
"user": {
"id": "user_1024", // ์คํ ์์ฒญ์ ๊ณ ์ ์๋ณ์
"role": "ai_assistant" // ์ญํ ์ ๋ณด: AI ๊ธฐ๋ฐ ์์ด์ ํธ
},
"session": {
"id": "sess-abc-789", // ์ธ์
ID (์คํ ๋จ์ ์๋ณ)
"start_time": "2024-06-01T14:12:30Z", // ์ธ์
์์ ์๊ฐ
"ip": "192.168.10.14" // ํธ์ถ ๋ฐ์ IP ์ฃผ์
},
"resource": {
"id": "doc-456", // ์ ๊ทผ ๋์ ๋ฆฌ์์ค ์๋ณ์
"type": "gdrive.document", // ๋ฆฌ์์ค ์ ํ (Google Drive ๋ฌธ์)
"tag": "confidential" // ๋ฏผ๊ฐ๋ ํ๊ทธ
},
"purpose": "summary", // ์คํ ๋ชฉ์ (์์ฝ ์์ฒญ)
"trigger": {
"source": "google_workspace", // ์คํ ํธ๋ฆฌ๊ฑฐ์ ์ถ์ฒ
"method": "voice_command" // ์คํ ๋ฐฉ์ (์: ์์ฑ ํธ์ถ)
},
"context": {
"location": "KR", // ์คํ ์์น
"weekday": "Monday", // ์คํ ์์ผ
"time_hour": 14 // ์คํ ์๊ฐ๋ (24์๊ฐ ๊ธฐ์ค)
}
}
์ด ์ ๋ณด๋ ์ ์ฑ ํ๊ฐ ์กฐ๊ฑด์ ๊ตฌ์ฑํ ๋ฟ ์๋๋ผ, ์คํ ์ธ์ ๋จ์์ ๊ฐ์ฌ ๋ก๊ทธ์๋ ํจ๊ป ์ ์ฅ๋์ด์ผ ํฉ๋๋ค.
Rego ๊ธฐ๋ฐ ์ ์ฑ ๋ด PIP ํ์ฉ ์์ ๋ฐ ์ค๋ช
default allow = false
โ ๋ชจ๋ ์์ฒญ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฑฐ๋ถํฉ๋๋ค. ๋ช ์๋ ์กฐ๊ฑด์ ๋ง์กฑํด์ผ๋ง ํ์ฉ๋ฉ๋๋ค.
allow {
input.user.role == "ai_assistant"
}
โ ์คํ ์์ฒญ์์ ์ญํ ์ด ai_assistant์ผ ๊ฒฝ์ฐ์๋ง ๊ฒํ ๋ฅผ ๊ณ์ํฉ๋๋ค.
allow {
input.resource.type == "gdrive.document"
}
โ ์์ฒญ ๋์ ๋ฆฌ์์ค๋ Google Drive ๋ฌธ์ ์ ํ์ด์ด์ผ ํฉ๋๋ค.
allow {
input.resource.tag != "confidential"
}
โ ๋ฏผ๊ฐ ํ๊ทธ(confidential)๊ฐ ๋ถ์ด ์๋ ๋ฌธ์๋ ์ ๊ทผ์ ์ฐจ๋จํฉ๋๋ค.
allow {
input.purpose == "summary"
}
โ ์คํ ๋ชฉ์ ์ด ๋ฌธ์ ์์ฝ(summary)์ธ ๊ฒฝ์ฐ์๋ง ํ์ฉํฉ๋๋ค.
allow {
input.session.id
input.trigger.source == "google_workspace"
}
โ ์ธ์ ID๊ฐ ์กด์ฌํ๊ณ , ์คํ ํธ๋ฆฌ๊ฑฐ ์ถ์ฒ๊ฐ Google Workspace์ด์ด์ผ ํฉ๋๋ค.
allow {
input.context.time_hour >= 9
input.context.time_hour < 18
}
โ ์คํ ์๊ฐ์ ์ค์ 9์๋ถํฐ ์คํ 6์ ์ฌ์ด(์ ๋ฌด ์๊ฐ๋)์ด์ด์ผ ํฉ๋๋ค.
์ธ์ ๊ธฐ๋ฐ ๊ฐ์ฌ ๋ก๊ทธ ์คํค๋ง ์์ (JSON ํ ํ๋ฆฟ + ์ค๋ช )
{
"session_id": "sess-abc-789", // ์คํ ๋จ์ ์ธ์
ID
"timestamp": "2024-06-01T14:12:32Z", // ์คํ์ด ์ด๋ฃจ์ด์ง ์ ํํ ์์
"user": {
"id": "user_1024", // ์์ฒญ์ ID
"role": "ai_assistant" // ์ญํ ์ ๋ณด
},
"resource": {
"id": "doc-456", // ๋์ ๋ฆฌ์์ค ID
"type": "gdrive.document" // ๋ฆฌ์์ค ์ ํ
},
"purpose": "summary", // ์คํ ๋ชฉ์
"trigger": {
"source": "google_workspace", // ํธ๋ฆฌ๊ฑฐ๋ ์์คํ
์ถ์ฒ
"method": "voice_command" // ์คํ ๋ฐฉ์
},
"policy_evaluation": {
"policy_id": "gdrive-doc-summary-policy-v2", // ์ ์ฑ
์๋ณ์
"result": "deny", // ํ๊ฐ ๊ฒฐ๊ณผ (ํ์ฉ/๊ฑฐ๋ถ)
"reason": "resource.tag == confidential" // ๊ฑฐ๋ถ ์ฌ์
},
"execution": {
"status": "blocked", // ์คํ ๊ฒฐ๊ณผ
"executor": "MCP(Model Context Protocol)-agent-pam-01" // ์คํ์ ํต์ ํ MCP(Model Context Protocol) PAM ์ธ์คํด์ค
}
}
์ด์ ๊ฐ์ ๋ก๊ทธ ๊ตฌ์ฑ์ ์ ์ฑ ํ๊ฐ ์กฐ๊ฑด๊ณผ ์คํ ๊ฒฐ๊ณผ์ ์ผ์น ์ฌ๋ถ๋ฅผ ๊ฒ์ฆํ ์ ์๋๋ก ํ๋ฉฐ, ์ ์ฑ ์ฐํ ์๋, ์น์ธ ํ๋ฆ ๋๋ฝ, ์คํ ๊ณผ์ ์์ฒญ์ ๋ํ ์ฌํ ๋ถ์์ ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค. AgentSecOps๋ ์คํ ํ๋ฆ์ ๋ณด์์ฑ๊ณผ ๊ฐ์ฌ ๊ฐ๋ฅ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ ์ฑ ํ๊ฐ ๋จ๊ณ์ ์คํ ๋ก๊น ๋จ๊ณ๋ฅผ ์ผ๊ด๋๊ฒ ์ฐ๊ฒฐํด์ผ ํ๋ฉฐ, PIP๋ ๊ทธ ์ฐ๊ฒฐ์ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ์ ๋ณด ์ ๊ณต ๊ด๋ฌธ(Policy Context Broker)์ผ๋ก ๊ธฐ๋ฅํฉ๋๋ค.
5.4 ํ์ค์ ์ด์ ํ๊ณ์ ์์ฉํ ์ ๋ต
AgentSecOps ์ํคํ ์ฒ๋ ๊ธฐ์ ์ ์ผ๋ก ์์ฑ๋ ๋์ ์คํ ํต์ ๋ชจ๋ธ์ ์ ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ถ๋ถ์ ์กฐ์ง์ ์ด ๊ตฌ์กฐ๋ฅผ ์์ฒด์ ์ผ๋ก ์ค๊ณํ๊ณ ์ด์ํ๋ ๋ฐ ํ์ค์ ์ธ ์ ์ฝ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ก ์ธํด AgentSecOps๋ ์ค๊ณ ์์น๋ง์ผ๋ก๋ ์คํจ์ ์ธ ํต์ ์ฒด๊ณ๊ฐ ๋๊ธฐ ์ด๋ ต๊ณ , ์ ์ฑ ์คํ ๊ณ์ธต์ ์์ฉํํ์ฌ ๊ตฌํํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค.
๋จผ์ , ์ ์ฑ ๊ฒฐ์ ์ง์ (PDP)์ ์คํ ์ฃผ์ฒด์ ๋ฆฌ์์ค, ๋ชฉ์ , ์์ , ์น์ธ ์ฌ๋ถ ๋ฑ์ ์ค์๊ฐ์ผ๋ก ํ๊ฐํด์ผ ํ๋ฉฐ, ์ด๋ฅผ ์ํด ๋ณต์กํ ์ ์ฑ ํ ํ๋ฆฟ ์ค๊ณ, ๋ฒ์ ๊ด๋ฆฌ, ์ ์ฑ ์ถฉ๋ ๊ฒ์ฆ, ๊ณ ๊ฐ์ฉ์ฑ ์ฒ๋ฆฌ ๊ตฌ์กฐ๊ฐ ์๊ตฌ๋ฉ๋๋ค.
์ ์ฑ ์งํ ์ง์ (PEP)์ API ํธ์ถ ํ๋ฆ์ ์๋จ ๋๋ ์ค๊ฐ์์ ๋์ํด์ผ ํ๋ฉฐ, ์์ญ ๊ฐ์ SaaS ํด ๋๋ ํด๋ผ์ฐ๋ API์์ ํตํฉ์ด ์ ์ ๋์ด์ผ ํฉ๋๋ค. ์ด๋ฅผ ๊ฐ ์์คํ ๋ณ๋ก ์ง์ ์ฝ์ ํ๋ ๊ฒ์ ์ธ์ฆ ์ฒ๋ฆฌ, ์ธํฐํ์ด์ค ์ถฉ๋, ๋คํธ์ํฌ ๊ตฌ์ฑ ๋ณ๊ฒฝ ๋ฑ์ ๋ฌธ์ ๋ฅผ ์๋ฐํฉ๋๋ค.
์ ์ฑ ์ ๋ณด ์ ๊ณต ์ง์ (PIP)์ ์ฌ์ฉ์ ์ญํ , ์ธ์ฆ ์ํ, ์ธ์ ์ ๋ณด, ์์ฒญ ํธ๋ฆฌ๊ฑฐ ๋ฑ ๋ค์ํ ๋น์ ํ ์ ๋ณด๋ฅผ ์์งยท์ ๊ทํํ์ฌ ์ ์ฑ ํ๊ฐ์ ์ ๊ณตํด์ผ ํ๋ฉฐ, ์ด๋ ๋ก๊ทธ ํตํฉ ์์คํ ๋๋ ์ ์ฉ ๋ธ๋ก์ปค ์์ด๋ ๊ตฌํ์ด ์ด๋ ต์ต๋๋ค.
์ด๋ฌํ ์ ์ฝ ์์์ AgentSecOps๋ ์คํ๋ ค ์ ์ฉ ํต์ ํ๋ซํผ์ ํตํ ์์ฉํ ๊ตฌ์กฐ๋ก ์คํ ๊ฐ๋ฅ์ฑ์ด ๋์ฑ ๋์์ง๋๋ค. ๋ํ์ ์ธ ์๋ก QueryPie MCP(Model Context Protocol) Agent PAM์ ์คํ ์์ ์ ์ฑ ํ๊ฐ(PDP), API ํ๋ก์ ์งํ(PEP), ์ปจํ ์คํธ ์์ง(PIP) ๊ธฐ๋ฅ์ ํตํฉํ ๊ตฌ์กฐ๋ก, ํด๋ผ์ฐ๋ ๋ฐ SaaS ๊ธฐ๋ฐ ์์ด์ ํธ ํธ์ถ ํ๋ฆ์ ๋์ ๊ฐ๋ฅํ ํต์ ๊ณ์ธต์ ์ ๊ณตํฉ๋๋ค [16].
MCP(Model Context Protocol) ๊ธฐ๋ฐ PAM ๊ตฌ์กฐ๋ ๊ธฐ์กด IAM์ด๋ DevSecOps์ ์ธ์ฆ ๊ธฐ๋ฐ ํต์ ๋ฅผ ๋ณด์ํ๋ฉฐ, ์คํ ํ์ ์์ฒด์ ๋ํ ์ ์ฑ ์ฝ์ ์ด ๊ฐ๋ฅํ๋๋ก ์ค๊ณ๋์ด ์์ต๋๋ค. ๋ํ ์คํ ๋ชฉ์ ํ๊น , ๊ด๋ฆฌ์ ์น์ธ ํ๋ฆ ์ฝ์ , ์ ์ฑ ์ถฉ๋ ํ์ง, ๊ฐ์ฌ ๋ก๊ทธ ๋ด๋ณด๋ด๊ธฐ ๋ฑ ์ค๋ฌด ์ ์ฉ์ ํ์ํ ๊ธฐ๋ฅ์ ๋จ์ผ ํ๋ซํผ์์ ์ ๊ณตํฉ๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก AgentSecOps๋ ์ด๋ก ์ ๋ชจ๋ธ๋ก์์ ์์ฑ๋๋ฟ ์๋๋ผ, MCP(Model Context Protocol) PAM๊ณผ ๊ฐ์ ์์ฉ ํ๋ซํผ์ ์ง์ ์์ด๋ ๊ธฐ์ ๋ด ์ค์ ๋์ ๊ณผ ์ด์์ด ๋ถ๊ฐ๋ฅ์ ๊ฐ๊น์ด ๊ตฌ์กฐ์ ๋๋ค. ๋ฐ๋ผ์ ๋ณด์ ์ค๊ณ์๋ ๊ธฐ์ ์์น๊ณผ ํจ๊ป ์์ฉ ์คํ ํต์ ๊ตฌ์กฐ์์ ํตํฉ ์ ๋ต์ ์๋ฆฝํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค [17].
6. ๊ฒฐ๋ก ๋ฐ ๊ถ๊ณ ์
๋ณธ ๋ฐฑ์๋ AI ๊ธฐ๋ฐ ์์ด์ ํธ ์คํ ํ๋ฆ์ด ๊ธฐ์กด ๋ณด์ ์ฒด๊ณ์ ๋ฏธ์น๋ ๊ตฌ์กฐ์ ์ถฉ๊ฒฉ์ ๋ถ์ํ๊ณ , ์ด๋ฅผ ํต์ ํ๊ธฐ ์ํ ์คํ ์ค์ฌ ๋ณด์ ๋ชจ๋ธ๋ก์ AgentSecOps ์ํคํ ์ฒ๋ฅผ ์ ์ํ์์ต๋๋ค. ํนํ AgentOps์ DevSecOps์ ํ๊ณ, ์คํ ์ฃผ์ฒด์ ๋น์ธ๊ฐํ, ์์ด์ ํธ ์ค์ฌ ํ๋ฆ์์์ ์ ์ฑ ํ๊ฐ ํ์์ฑ์ ์ฒด๊ณ์ ์ผ๋ก ์กฐ๋ช ํ์์ต๋๋ค.
AgentSecOps๋ ๋จ์ํ ์๋ํ ๋ณดํธ ์ฅ์น๊ฐ ์๋๋ผ, ์คํ ํ๋ฆ์ ๋ชฉ์ , ์์ , ์์, ๊ถํ์ ์ค์๊ฐ์ผ๋ก ํ๊ฐํ๊ณ ๊ธฐ๋กํ ์ ์๋ ์คํ ์ค์ฌ ๋ณด์ ํต์ ๊ณ์ธต์ ๋๋ค. ์ด๋ ๊ธฐ์กด์ ์ฝ๋ ์ค์ฌ, ๋ฆด๋ฆฌ์ฆ ์ ์ค์ฌ์ DevSecOps ํ๋ ์์ํฌ๋ก๋ ๋์ํ ์ ์๋ ์์ญ์ด๋ฉฐ, ์ ์ฑ ๊ธฐ๋ฐ ์คํ ์ฐจ๋จ, ์น์ธ ํ๋ฆ ์ฝ์ , ๊ฐ์ฌ ์ถ์ ์ด๋ผ๋ ์ ํ ๋ค๋ฅธ ํต์ ๋ฉ์ปค๋์ฆ์ ์๊ตฌํฉ๋๋ค [18].
ํนํ AI ์์ด์ ํธ๊ฐ ๋จ๋ ์คํ์ ์ํํ๋ ํ๊ฒฝ์ด ์๋๋ผ, Agent-to-Agent ์คํ ํ๋ฆ์ด ์ฐ์์ ์ผ๋ก ์ด์ด์ง๋ ๊ตฌ์กฐ์์๋ ์ํฉ์ ๋์ฑ ๋ณต์กํด์ง๋๋ค. ์์ด์ ํธ ๊ฐ ํธ์ถ๋ง๋ค ๋ณ๋์ ์ ์ฑ ํ๊ฐ(PDP), ์คํ ํต์ (PEP), ์ ๋ณด ์ฐธ์กฐ(PIP)๊ฐ ๊ฐ์ ๋์ด์ผ ํ๋ฉฐ, ์ด ๊ณผ์ ์์ ๋ฐ์ํ๋ ๋ชจ๋ ์คํ ํ๊ฐ ๊ฒฐ๊ณผ๋ ์ค์ ์คํ ๋ถ์ ์์คํ ์์ ํตํฉ์ ์ผ๋ก ์ง๊ณ๋์ด์ผ ํฉ๋๋ค.
๋ค์์ ์ด ๊ตฌ์กฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ํ๋ธ ๋ค์ด์ด๊ทธ๋จ์ ๋๋ค.
![[๊ทธ๋ฆผ 9] Distributed Agent Execution and Centralized Policy Analysis](/whitepapers/21/wp21-9-distributed-agent-execution-and-centralized-policy-analysis.png)
์ด๋ฌํ ๊ตฌ์กฐ๋ ๊ฐ AgentOps ๋ง๋ค ๊ฐ๋ณ ์ ์ฉํ๋ ๊ฑด ๊ธฐ์ ์ ์ผ๋ก ๊ฐ๋ฅํ์ง๋ง, ์ด์์ ์ผ๋ก๋ ๋งค์ฐ ๋ณต์กํ๋ฉฐ ๊ตฌ์ถ ๋ฐ ์ ์ง ๋น์ฉ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค. ๊ธฐ์ ๋ด๋ถ์์ ์์ญ ๊ฐ์ ์์ด์ ํธ ํ๋ฆ์ ๋ชจ๋ํฐ๋งํ๊ณ , ๊ฐ ํ๋ฆ์ ๋ํด PDP ์ ์ฑ ์ ์ค๊ณํ๊ณ , ํ๊ฐ ๊ฒฐ๊ณผ๋ฅผ ํตํฉ ๋ถ์ํ๋ ๊ตฌ์กฐ๋ฅผ ์ง์ ์ด์ํ๊ธฐ๋ ํ์ค์ ์ผ๋ก ๋ถ๊ฐ๋ฅ์ ๊ฐ๊น์ต๋๋ค.
๋ฐ๋ผ์ AgentSecOps๋ ์ค๋ฌด์ ์ผ๋ก๋ MCP(Model Context Protocol) ๊ธฐ๋ฐ ์คํ ๋ณด์ ์๋ฃจ์ (MCP(Model Context Protocol) Agent PAM)์ ํํ๋ก ๊ตฌํ๋์ด์ผ ํ๋ฉฐ, ์ด๋ ๋จ์ ๊ธฐ๋ฅ์ด ์๋๋ผ ์ด์ ์ ๋ต์ ํ์ ์ธํ๋ผ์ ๋๋ค. QueryPie MCP(Model Context Protocol) PAM์ ์คํ ํ๋ฆ์ ์ ์ฑ ํ๊ฐ๋ฅผ ์ฝ์ ํ๊ณ , ๊ฐ๋ณ ์คํ์ ์ฐจ๋จํ๊ฑฐ๋ ์น์ธ ํ๋ฆ์ ์ฐ๋์ํค๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํตํฉ์ ์ผ๋ก ๋ถ์ํ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํฉ๋๋ค[19].
๋ค์๊ณผ ๊ฐ์ ํ๊ฒฝ์์๋ MCP(Model Context Protocol) PAM ๊ธฐ๋ฐ์ AgentSecOps ๋์ ์ด ํนํ ์๊ตฌ๋ฉ๋๋ค:
AgentSecOps๋ ์คํ ํ๋ฆ ๊ทธ ์์ฒด์ ๋ํ ์ ์ฑ ํต์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ฉฐ, ์ด๋ ํฅํ AI ๊ธฐ๋ฐ ์ด์ ์ฒด๊ณ์์์ ๋ณด์ ํต์ ์ ํ์ ์ด ๋ ๊ฒ์ ๋๋ค. ์กฐ์ง์ ์ด ๋ชจ๋ธ์ ๋จ์ํ ๊ธฐ์ ์ถ์ธ๋ก ๋ฐ์๋ค์ผ ๊ฒ์ด ์๋๋ผ, ๋ณด์ ์ด์ ๋ชจ๋ธ์ ๊ตฌ์กฐ์ ํ์ ์ผ๋ก ์ธ์ํด์ผ ํ๋ฉฐ, ์ด๋ฅผ ์ํ ์คํ ์ ์ฑ ์ค๊ณ ๋ฌธํ์ ํตํฉ ํ๋ซํผ ๋์ ์ ๋ต์ ๋์์ ์๋ฆฝํด์ผ ํฉ๋๋ค.
๐ AI Hub๋ก ์์ ํ MCP์ AI Agent ์ด์, ์ง๊ธ ์ง์ ์ฒดํํด๋ณด์ธ์.
References
[1] I. Belcic, โWhat is AutoGPT?,โ IBM, 2023.
[2] GitHub Docs, โWebhooks,โ GitHub Developer Guide, 2023.
[3] I. Belcic, โWhat is AutoGPT?,โ IBM, 2023.
[4] GitHub Docs, โWebhooks,โ GitHub Developer Guide, 2023.
[5] Anthropic, โResponsible AI Agents and Oversight,โ Anthropic Research, 2024.
[6] Google Cloud, โIntroducing the DevSecOps Toolkit,โ Google Cloud Blog, 2023.
[9] T. Priebe et al., โSupporting Attribute-based Access Control in Authorization and Authentication Infrastructures with SAML,โ in Proc. IFIP TC11 WG11.5, 2004.
[10] T. Moses, โXACML 3.0 Core Specification,โ OASIS Standard, 2017.
[11] Open Policy Agent, โRego Language Guide,โ OPA Official Documentation, 2023.
[12] S. Rizvi and A. Ghafoor, โA Purpose-Based Access Control Model for Privacy Protection,โ Computer Networks, vol. 43, no. 1, pp. 593โ611, 2005.
[13] Kyverno Project, โPolicy Engine for Kubernetes,โ Kyverno Documentation, 2023.
[14] OWASP, โTop 10 for LLM Applications,โ OWASP Foundation, 2023.
[15] GitLab Docs, โCI/CD Security Patterns,โ GitLab Documentation, 2023.
[16] Microsoft, โAI Trust and Risk Framework,โ Microsoft Responsible AI Practices, 2024.
[18] QueryPie, โUncovering MCP Security,โ QueryPie White Paper, 2025.
[19] QueryPie, โRedefining PAM for the MCP Era,โ QueryPie White Paper, 2025.
[20] D. Kozen and J. Millen, โPolicy Composition in Access Control,โ IEEE Security & Privacy, vol. 14, no. 3, pp. 36โ43, 2016.
[21] QueryPie, โNext-Step MCP PAM Architecture,โ QueryPie Resource Center, 2025.
