Stop Giving Your AI Agents API Keys - Kim Maida, Keycard & Mason Egger, Temporal
ํ ์ค ํต์ฌ
์์ด์ ํธ์ API ํค๋ฅผ ์ง์ ์ฃผ๋ ๋์ token exchange๋ก ์ฌ์ฉ์ยท์์ด์ ํธยท๋๊ตฌ์ ์ ์์ ๋ถ๋ฆฌํ๊ณ , Temporal๋ก ๊ทธ ์คํ์ ์ค๋จ ์์ด ๋ณต๊ตฌ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด์ผ ์์ ํ๊ณ ์ ๋ขฐํ ์ ์๋ค.
์๊ฐ๋ณ ์์ฝ
-
0:00
์๊ฐ Keycard๋ ์์ด์ ํธ์ ๋ฐํ์ ์ ๊ทผ ์ ์๊ณผ ๊ถํ ๊ด๋ฆฌ๋ฅผ, Temporal์ ์์ด์ ํธ๊น์ง ํฌํจํ ์ ํ๋ฆฌ์ผ์ด์ ์ durable execution์ ์ ๊ณตํ๋ค. ์ํฌ์์ ๊ณต์ ์กฐ์ง๊ณผ ์๋๋ฐ์ค ํ๊ฒฝ์์ ์งํ๋๋ฉฐ, ์ฌ์ ๊ฐ์ ์์ด ๋ฐ๋ผ๊ฐ ์ ์๋ค.
-
1:17
์์ด์ ํธ์ API ํค๋ฅผ ์ฃผ๋ ๋ฌธ์ API ํค๋ฅผ ์์ด์ ํธ์ ์ง์ ์ฃผ๋ฉด ์ฌ์ฉ์๋ ์์ด์ ํธ์ ์ ์์ ๊ตฌ๋ถํ ์ ์๊ณ , ํค๊ฐ ๊ฐ์ง ๋ชจ๋ ๊ถํ์ด ๊ทธ๋๋ก ๋ ธ์ถ๋๋ค. ๋ํ ์ฌ๋์ ๊ฐ์ ์๋ง ์์กดํ ์ ์๊ธฐ ๋๋ฌธ์ ์์จ ์คํ ์์ด์ ํธ์๋ ๋ ์ ๊ตํ ์ ๊ทผ ํต์ ๊ฐ ํ์ํ๋ค.
-
1:59
token exchange ์ค๋ช token exchange๋ OAuth 2 ์์์ ์ฌ์ฉ์ ์ ์๊ณผ ์์ ๋ฒ์๋ฅผ ๋จ๊ณ์ ์ผ๋ก ์ ๋ฌํ๋ ํ์ค์ด๋ค. ์ฌ์ฉ์๊ฐ ๋จผ์ ๋ก๊ทธ์ธํ๊ณ , ๋์ํ scope๋ง ์์ด์ ํธ์ ์์๋๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ ์ฌ์ฉ์์ ๊ถํ ์์ค์ด ํฌํจ๋ ํ ํฐ์ด ๋ฐ๊ธ๋๋ค.
-
3:10
์์ด์ ํธ ๋ฃจํ๋ฅผ ๋ฐ๋ผ๊ฐ๊ธฐ ์์ด์ ํธ๋ LLM ํธ์ถ๊ณผ ๋๊ตฌ ํธ์ถ์ ๋ฐ๋ณตํ๋ ์ ์ด ๋ฃจํ์ด๋ฉฐ, ์ฌ๊ธฐ์๋ expense desk agent๊ฐ ์์๋ค. ์ฌ์ฉ์ ์์ฒญ์ ๋ฐํ์, MCP client/server, ledger API๋ฅผ ๊ฑฐ์น๋ฉฐ, ๊ฐ ๋จ๊ณ์์ ํ ํฐ์ด ๋ค์ ํ์ผ๋ก ๊ตํ๋์ด ์ ๋ฌ๋๋ค.
-
5:41
๋๊ตฌ ํธ์ถ๋ง๋ค ๋ณ๋ ํ ํฐ ๋ฐ๊ธ ๊ฐ tool call๋ง๋ค ํ์ํ ๋ฒ์๋ก๋ง ์ ํ๋ ํ ํฐ์ ์๋ก ๋ฐ๊ธ๋ฐ์์ผ ํ๋ค. ์์ด์ ํธ์ ์ฌ์ฉ์์ ์ ์, ์์ ์ฒด์ธ์ด ์ ์ฑ ์ ๋ถํฉํ ๋๋ง MCP ์๋ฒ์ฉ ํ ํฐ๊ณผ ๊ทธ ๋ค์ ledger API์ฉ ํ ํฐ์ด ์์ฐจ์ ์ผ๋ก ๋ฐ๊ธ๋๊ณ , ์ฌ์ฉ ํ ์ฆ์ ํ๊ธฐ๋๋ค.
-
8:49
์ํฌ์ ํ๊ฒฝ ์ค์ : expense desk agent ์ค์ต์ ๋ก๊ทธ์ธ ์์ด ์์๋๋ expense desk agent๋ฅผ ๊ธฐ์ค์ผ๋ก ์งํ๋๋ฉฐ, ๋ชจ๋ ์ฐธ๊ฐ์๊ฐ ๊ฐ์ Keycard ์กฐ์ง์ ๊ณต์ ํ๋ค. ํ์ ์ ๊ด๋ฆฌ ๊ถํ์ ๋ถ์ฌ๋ฐ์ ์ฝ์์์ ์ง์ ์ค์ ๊ณผ ์ค์ต์ ๋ฐ๋ผ๊ฐ๊ฒ ๋๋ค.
-
10:28
๋ณ๊ฒฝ ์ : ๋ชจ๋๊ฐ API ํค๋ฅผ ๊ณต์ ์ด๊ธฐ ์ํ์์๋ ๋๊ฐ ์์ฒญํ๋์ง ์ ์ ์๊ณ , ๋ชจ๋ ์์ ์ด ๊ฐ์ MCP ์๋ฒ์ API ํค๋ฅผ ํตํด ์ฒ๋ฆฌ๋๋ค. ์ง์ถ ์์ฑยท์น์ธ ๊ธฐ๋ก์๋ ์ฌ๋์ด๋ ์์ด์ ํธ์ ์ ์ฒด์ฑ์ด ๋จ์ง ์์ ๊ฐ์ฌ ์ถ์ ์ด ๋ถ๊ฐ๋ฅํ๋ค.
-
12:51
์์ด์ ํธ์ ๊ณ ์ ํ ์ ์ ๋ถ์ฌ Keycard์์ application๊ณผ resource๋ฅผ ๋ฑ๋กํด ์์ด์ ํธ๊ฐ ํ ํฐ์ ์์ฒญํ๊ณ ๋์์ ํ ํฐ์ ์์ ๋์์ด ๋๋๋ก ๊ตฌ์ฑํ๋ค. ์ดํ dependencies์ MCP ์๋ฒ, LLM API, user info endpoint๋ฅผ ์ฐ๊ฒฐํ๊ณ , client ID์ secret์ผ๋ก ์์ด์ ํธ๊ฐ ์๊ธฐ ์์ ์ ์ธ์ฆํ๊ฒ ๋ง๋ ๋ค.
-
21:47
์ฝ๋์ token exchange ์ฐ๊ฒฐ ์ค์ ๋ง์ผ๋ก๋ ๋ถ์กฑํ๊ณ , ์ค์ ์์ด์ ํธ ์ฝ๋๊ฐ ํ ํฐ ๊ตํ์ ์ํํ๋๋ก ์ฐ๊ฒฐํด์ผ ํ๋ค. MCP tool set๊ณผ mint ํจ์๊ฐ ๋๊ตฌ ํธ์ถ๋ง๋ค ์ ์ ํ ํ ํฐ์ ๋ฐ๊ธํ๋ฉฐ, ๋ก๊ทธ์ธํ ์ฌ์ฉ์๊ฐ ์์ผ๋ฉด client credentials grant๋ก ์์ด์ ํธ ์์ ์ด ์ธ์ฆํ๋ค.
-
26:05
์์ด์ ํธ๊ฐ ์๊ธฐ ์์ ์ผ๋ก ๋์ํ๊ธฐ ๋ก๊ทธ์ธ ์ฌ์ฉ์๊ฐ ์์ ๋๋ ์์ด์ ํธ๊ฐ ์๊ธฐ ์ ์์ผ๋ก ์คํ๋๋ฉฐ, approval limit ๊ฐ์ ๊ถํ๋ ๊ทธ ์์ด์ ํธ ๊ณ์ ๊ธฐ์ค์ผ๋ก ์ ์ฉ๋๋ค. ์ง์ถ์ ์ฌ์ฉ์ ์ง์๋ฅผ ๋ฐํ์ผ๋ก ์์ฑ๋์ง๋ง, ์ค์ ๊ธฐ๋ก์์ผ๋ก๋ ์์ด์ ํธ ์์ ์ ํ์๋ก ๋จ๋๋ค.
-
28:00
๊ฐ์ฌ ๋ก๊ทธ ์ฝ๊ธฐ Keycloak์ ํ๋ ๊ธฐ๋ก์์ ์ด๋ค ์ฃผ์ฒด๊ฐ ์ด๋ค ์์์ ์ ๊ทผํ๋์ง ํ์ธํ ์ ์๋ค. ์ฌ๊ธฐ์๋ agent application์ด MCP ์์์ ์ ๊ทผํ ๊ธฐ๋ก๊ณผ, ๊ทธ ๋ค MCP ์๋ฒ๊ฐ ledger API๋ก ํ ํฐ์ ๊ตํํ ํ์ ์ด ๋จ์ delegation chain์ผ๋ก ๋ณด์ธ๋ค.
-
31:22
์ํผ์๋ค์ด์ ์์ด ์ธ๊ฐ ์ฌ์ฉ์ ์ถ๊ฐ ์ด์ ์์ด์ ํธ๊ฐ ์ฌ๋์ ๊ฐ์ฅํ์ง ์๊ณ , ์ค์ ์ธ๊ฐ ์ฌ์ฉ์์ ์ ์์ ํฌํจํ ์ํ๋ก ๋์ํ๊ฒ ๋ง๋ ๋ค. ๋ก๊ทธ์ธํ ์ฌ์ฉ์์ ์ด๋ฉ์ผ๊ณผ approval limit์ด ์๋ณ๋๋ฉฐ, ๊ณผ๊ฑฐ์ ์์ฑ๋ ํญ๋ชฉ์ ๊ทธ๋๋ก ๋จ์ ์๊ณ ์ดํ๋ถํฐ๋ง ์ธ๊ฐ ์ฌ์ฉ์ ๋งฅ๋ฝ์ด ๋ฐ์๋๋ค.
-
34:01
์น์ธ ํ๋์ ์น์ธ ์ฃผ์ฒด ์์ด์ ํธ๋ ์ผ์ ๊ธ์ก ์ดํ์ ์ง์ถ์ ์์ฒด์ ์ผ๋ก ์น์ธํ ์ ์์ง๋ง, ํ๋๋ฅผ ๋์ผ๋ฉด ์ฌ๋์ ๊ฒํ ๊ฐ ํ์ํ๋ค. ๊ธฐ๋ก์๋ ๋๊ฐ ์์ฑํ๊ณ ๋๊ฐ ์น์ธ ๋๋ ๊ฑฐ์ ํ๋์ง๊ฐ ๋ช ํํ ๋จ์, ์์ด์ ํธ๊ฐ ์๊ธฐ ์์ ์ ๋น์ฉ์ ์น์ธํ์ง ๋ชปํ๊ฒ ๋๋ค.
-
38:09
์์ ์ฒด์ธ ์ถ์ ์ฒซ ๋ฒ์งธ ํ์์๋ ์ฌ์ฉ์์ sign-in token์ด MCP ์๋ฒ์ฉ ํ ํฐ์ผ๋ก ๊ตํ๋๊ณ , ๋ ๋ฒ์งธ ํ์์๋ MCP ์๋ฒ๊ฐ ๊ทธ ํ ํฐ์ ๊ฐ์ง๊ณ ledger API์ฉ ํ ํฐ์ ๋ฐ๊ธ๋ฐ๋๋ค. session ๋ฒํธ๋ฅผ ํตํด ๊ฐ ํ์ ์ด์ด์ ์ถ์ ํ ์ ์์ด, ๋๊ฐ ๋๊ตฌ๋ฅผ ๋์ ํด ์ด๋ค ์์์ ์ ๊ทผํ๋์ง ๋๊น์ง ๋ฐ๋ผ๊ฐ ์ ์๋ค.
-
41:26
์์ด์ ํธ๋ฅผ ์ํ Temporal์ durable execution Temporal์ ์ํฌํ๋ก์ activity๋ก ๋ถ๋ฆฌ๋ ์คํ ์ํ๋ฅผ ์ ์งํด, ์ค๊ฐ ์คํจ๊ฐ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณต๊ตฌํ๊ณ ์ด์ด์ ์คํํ๋ค. ์์ด์ ํธ ๋ฃจํ๋ ๊ฒฐ๊ตญ ๋ถ์ฐ ์์คํ ์ ๋ฐ๋ณต ์คํ์ด๋ฏ๋ก, ์คํจ ๋ณต๊ตฌ์ ์ฌ์๋๊ฐ ๊ฐ๋ฅํ ์คํ ๊ณ์ธต์ด ํ์ํ๋ค.
-
46:01
์์ ์ ๊ฐ์ ์ข ๋ฃ ํ ๋ณต๊ตฌ ์์ ์๋ฅผ ์คํ ์ค๊ฐ์ ๊ฐ์ ๋ก ์ข ๋ฃํด๋ Temporal์ ์ด๋ฏธ ์ ์ฅ๋ ์ํ๋ฅผ ๋ฐํ์ผ๋ก ์ํฌํ๋ก๋ฅผ ์ฌ๊ฐํ๋ค. LLM ํธ์ถ์ด๋ ์ด์ activity๋ฅผ ๋ค์ ์ํํ์ง ์๊ณ ๋ ๋ง์ง๋ง ์ง์ ๋ถํฐ ์ด์ด์ ์ฒ๋ฆฌํ๋ฉฐ, ์ฌ์ฉ์ ์ ์ฅ์์๋ ์ฅ์ ๋ฅผ ๊ฑฐ์ ๋๋ผ์ง ์์ ์ ์๋ค.
-
48:07
์์ด์ ํธ์์ ๋ด๊ตฌ์ฑ์ด ์ค์ํ ์ด์ ์์ด์ ํธ๋ ๊ธด ๋ฃจํ์ ๋ง์ ์ธ๋ถ ํธ์ถ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๊ทธ ๊ณผ์ ์์ ์ํ ์์ค์ ๋น์ฉ๊ณผ ์คํจ๋ฅผ ํฌ๊ฒ ํค์ด๋ค. durable execution์ ์ฐ๋ฉด LLM ์ ๊ณต์ ์ฅ์ , ์ง์ญ ์ฅ์ , ํ๋ก์ธ์ค ์คํจ๊ฐ ๋๋ ๋ง์ง๋ง ์ง์ ์์ ๋ฐ๋ก ์ฌ๊ฐํ ์ ์๋ค.
-
49:28
์ด๋ฒคํธ ํ์คํ ๋ฆฌ์์ ๋น๋ฐ์ ๋ณด ์จ๊ธฐ๊ธฐ Temporal์ ์ด๋ฒคํธ ํ์คํ ๋ฆฌ์๋ ๋ฏผ๊ฐํ JWT๋ ๋น๋ฐ๊ฐ์ด ๋จ์ง ์๋๋ก ํด์ผ ํ๋ค. ์ด๋ฅผ ์ํด interceptor๋ก just-in-time ์ฃผ์ ์ ํ๊ฑฐ๋, payload encoder๋ก ์ ์ฅ ๋ฐ์ดํฐ๋ฅผ ์ํธํํด ์คํ ๊ธฐ๋ก๊ณผ ๋น๋ฐ์ ๋ณด๋ฅผ ๋ถ๋ฆฌํ ์ ์๋ค.
์ค๋ฌด ์ธ์ฌ์ดํธ
- ์์ด์ ํธ ๊ถํ์ API ํค ํ๋๋ก ๋ฌถ์ง ๋ง๊ณ , ์ฌ์ฉ์ยท์์ด์ ํธยท์์๋ณ๋ก ๋ถ๋ฆฌ๋ token exchange ์ฒด์ธ์ผ๋ก ๊ด๋ฆฌํด์ผ ๊ฐ์ฌ์ ์ต์๊ถํ ์์น์ ๋์์ ๋ง์กฑํ๋ค.
- ๋๊ตฌ ํธ์ถ๋ง๋ค ์งง๊ฒ ์ด์ ์๋ scoped token์ ๋ฐ๊ธํ๊ณ ์ฆ์ ํ๊ธฐํ๋ฉด, MCP ์๋ฒ์ ํ์ API๊น์ง ๊ถํ ํ์ฐ์ ํฌ๊ฒ ์ค์ผ ์ ์๋ค.
- ์์ด์ ํธ ์ด์์์๋ ๋ณด์๋งํผ์ด๋ ์คํ ๋ณต๊ตฌ๊ฐ ์ค์ํ๋ฏ๋ก, durable execution๊ณผ ๋น๋ฐ์ ๋ณด ๋น๋ ธ์ถ ์ค๊ณ๋ฅผ ํจ๊ป ์ ์ฉํด์ผ ์ค์ ์๋น์ค ํ์ง์ด ๋์จ๋ค.