Secret Vault
Secret Vault
AI Provider API ν€μ μλνν° μλΉμ€ ν ν°(μ: SendGrid, Telegram, SMTP)μ AiTalk λ°μ΄ν°λ² μ΄μ€ λμ μ¬μ©μμ AWS Lambdaμ μ μ₯ν©λλ€. νμ±ννλ©΄ ν€μ ν ν°μ΄ λ°νμμ Lambdaμμ μ§μ κ°μ Έμ€λ©°, μ°λ¦¬ μλ²μλ μ무κ²λ μ μ₯λμ§ μμ΅λλ€.
μλ λ°©μ
μΌλ° λͺ¨λ:
AiTalk μλ² ββ(DBμμ API ν€ μ‘°ν)βββ OpenAI / Claude / λ±
Secret Vault λͺ¨λ:
AiTalk μλ² ββ(ν€ μμ²)βββ μ¬μ©μ AWS Lambda ββ(ν€ λ°ν)βββ AiTalkμ΄ 1ν μ¬μ© ν
λ©λͺ¨λ¦¬μμ μμ Secret Vault νμ±ν μ:
AI Provider API ν€μ μλνν° μλΉμ€ ν ν°(SendGrid, Telegram, SMTP λ±)μ μ¬μ©μμ AWS Lambda νκ²½λ³μμλ§ μ μ₯λ©λλ€
AiTalkμ λ°νμμ ν€μ ν ν°μ κ°μ Έμμ API νΈμΆμ μ¬μ©ν ν μ¦μ μμ ν©λλ€
Lambdaμ μ κ·Όν μ μμΌλ©΄ API νΈμΆμ΄ μ€ν¨ν©λλ€ β λ°μ΄ν°λ² μ΄μ€λ‘ ν΄λ°±νμ§ μμ΅λλ€ (보μ μ€κ³)
OAuth μ°κ²°(μ: Google Drive)μ νμ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©ν©λλ€ (μλ ν ν° κ°±μ νμ)
μ¬μ μꡬμ¬ν
AWS κ³μ (ν리 ν°μ΄λ‘ μΆ©λΆ)
AWS μ½μ κΈ°λ³Έ μ¬μ©λ² μμ§
λΉμ©: AWS Lambdaλ μ 100λ§ κ±΄ λ¬΄λ£ μμ²μ ν¬ν¨ν©λλ€ (μꡬ ν리 ν°μ΄). λλΆλΆμ μ¬μ©μλ Secret Vault λΉμ©μ΄ μ $0μ λλ€.
μ€μ κ°μ΄λ
1λ¨κ³: AWS Lambda ν¨μ μμ±
AWS Lambda μ½μμ λ‘κ·ΈμΈν©λλ€
ν¨μ μμ±μ ν΄λ¦ν©λλ€
μλ‘ μμ±μ μ νν©λλ€
μ€μ :
ν¨μ μ΄λ¦:
aitalk-secret-vault(μνλ μ΄λ¦ μ¬μ© κ°λ₯)λ°νμ: Node.js 20.x
μν€ν μ²: x86_64
ν¨μ μμ±μ ν΄λ¦ν©λλ€
2λ¨κ³: ν
νλ¦Ώ μ½λ λ°°ν¬
AiTalkμμ μ€μ > 보μμΌλ‘ μ΄λν©λλ€
Lambda ν νλ¦Ώ λ€μ΄λ‘λλ₯Ό ν΄λ¦νμ¬
secret-vault-lambda.jsνμΌμ λ°μ΅λλ€AWS Lambda μ½μμμ μ½λ νμΌλ‘ μ΄λν©λλ€
κΈ°λ³Έ μ½λλ₯Ό λ€μ΄λ‘λν ν νλ¦Ώμ λ΄μ©μΌλ‘ κ΅μ²΄ν©λλ€
Deployλ₯Ό ν΄λ¦ν©λλ€
3λ¨κ³: ν¨μ URL νμ±ν
κ΅¬μ± ν β ν¨μ URLλ‘ μ΄λν©λλ€
ν¨μ URL μμ±μ ν΄λ¦ν©λλ€
μΈμ¦ μ ν: NONE (μΈμ¦μ Bearer ν ν°μΌλ‘ μ²λ¦¬)
μ μ₯μ ν΄λ¦ν©λλ€
μ€μ: "κΆν λλ½" κ²½κ³
μ μ₯ ν λ€μκ³Ό κ°μ κ²½κ³ κ° λνλ μ μμ΅λλ€: "Your function URL auth type is NONE, but is missing permissions required for public access."
ν΄κ²° λ°©λ²:
ν¨μ URL νμ΄μ§μμ Edit ν΄λ¦
μλλ‘ μ€ν¬λ‘€νμ¬ View policy statement νμΈ β μ μ± μ
lambda:InvokeFunctionUrlκ³Όlambda:InvokeFunctionμ΄Principal: "*"λ‘ ν¬ν¨λμ΄ μλμ§ νμΈλ€μ Save ν΄λ¦
κ²½κ³ κ° λ€μμΌλ‘ λ³κ²½λμ΄μΌ ν©λλ€: "Your function URL is public. Anyone with the URL can access your function."
μ΄κ²μ μ μμ λλ€ β 보μμ AWS IAMμ΄ μλ Lambda μ½λμ Bearer ν ν°μΌλ‘ μ²λ¦¬λ©λλ€.
μμ±λ ν¨μ URLμ 볡μ¬ν©λλ€ (μ:
https://xxxxxxxxxx.lambda-url.eu-west-1.on.aws/)
4λ¨κ³: μν¬λ¦Ώμ νκ²½λ³μλ‘ μΆκ°
κ΅¬μ± ν β νκ²½ λ³μλ‘ μ΄λν©λλ€
νΈμ§μ ν΄λ¦ν©λλ€
AiTalk μ€μ μ Vault ν€ μ°Έμ‘° ν μ΄λΈμ νμλ μ νν ν€ μ΄λ¦μΌλ‘ μν¬λ¦Ώμ μΆκ°ν©λλ€:
AUTH_TOKEN
(5λ¨κ³μμ μμ±)
μΈμ¦ ν ν°
ai_provider_openai_api_key
sk-xxxxxxxx...
OpenAI API ν€
ai_provider_anthropic_api_key
sk-ant-xxxxxxxx...
Claude API ν€
ai_provider_google_api_key
AIzaxxxxxxxx...
Gemini API ν€
wf_conn_{connectionId}_token
(μ¬μ©μ ν ν°)
Workflow μ°κ²° ν ν°
bot_channel_{channelId}_token
(μ¬μ©μ ν ν°)
Bot μ±λ ν ν°
Workflow μ°κ²° λ° Bot μ±λμ μ νν ν€ μ΄λ¦μ μ€μ > 보μ > Vault ν€ μ°Έμ‘°μμ νμΈν μ μμ΅λλ€.
μ μ₯μ ν΄λ¦ν©λλ€
5λ¨κ³: AiTalkμ Lambdaμ μ°κ²°
AiTalkμμ μ€μ > 보μμΌλ‘ μ΄λν©λλ€
Lambda ν¨μ URLμ λΆμ¬λ£μ΅λλ€
μ ν ν° μμ±μ ν΄λ¦νκ³ ν ν°μ 볡μ¬ν©λλ€
Lambda νκ²½ λ³μλ‘ λμκ°μ
AUTH_TOKENμ μ΄ ν ν°μΌλ‘ μ€μ ν©λλ€μ°κ²° ν μ€νΈλ₯Ό ν΄λ¦νμ¬ νμΈν©λλ€
μ μ₯ λ° νμ±νλ₯Ό ν΄λ¦ν©λλ€
Vault ν€ μ°Έμ‘°
Lambda νκ²½λ³μμ μ¬μ©νλ ν€ μ΄λ¦μ μ νν μΌμΉν΄μΌ ν©λλ€. λͺ¨λ ν€ μ΄λ¦μ μ€μ > 보μ > Vault ν€ μ°Έμ‘°μμ νμΈν μ μμ΅λλ€.
AI Provider ν€
OpenAI
ai_provider_openai_api_key
Anthropic (Claude)
ai_provider_anthropic_api_key
Google (Gemini)
ai_provider_google_api_key
DeepSeek
ai_provider_deepseek_api_key
Grok
ai_provider_grok_api_key
Workflow μ°κ²° ν ν°
νμ: wf_conn_{connectionId}_token
μμ:
wf_conn_cm1abc123def_token(Telegram μ°κ²°)wf_conn_cm2xyz789ghi_token(SendGrid μ°κ²°)
Bot μ±λ ν ν°
νμ: bot_channel_{channelId}_token
Slack λ΄μ κ²½μ° λ κ°μ ν€κ° νμν©λλ€:
bot_channel_{channelId}_slack_bot_tokenbot_channel_{channelId}_slack_signing_secret
Secret Vault λΉνμ±ν
μ€μ > 보μμΌλ‘ μ΄λν©λλ€
λΉνμ±νλ₯Ό ν΄λ¦ν©λλ€
AiTalkμ΄ λ°μ΄ν°λ² μ΄μ€μ μ μ₯λ μνΈν ν€λ₯Ό λ€μ μ¬μ©ν©λλ€
Vault νμ±ν μ λ°μ΄ν°λ² μ΄μ€μ μ μ₯λ ν€λ μμ λμ§ μμΌλ―λ‘, μΈμ λ λ€μ μ νν μ μμ΅λλ€.
λ¬Έμ ν΄κ²°
ν μ€νΈ μ "μ°κ²° μ€ν¨"
Lambda ν¨μ URLμ΄ μ¬λ°λ₯΄κ³ ν¨μκ° λ°°ν¬λμλμ§ νμΈνμΈμ
"Unauthorized" μ€λ₯
Lambdaμ AUTH_TOKENμ΄ AiTalkμ ν ν°κ³Ό μΌμΉνλμ§ νμΈνμΈμ
"ν€λ₯Ό μ°Ύμ μ μμ" μ€λ₯
Lambda νκ²½λ³μμ ν€ μ΄λ¦μ΄ μ νν μΌμΉνλμ§ νμΈνμΈμ (λμλ¬Έμ ꡬλΆ)
νμ±ν ν AI μ±ν μ λ¨
Lambdaμ νμν λͺ¨λ API ν€ νκ²½λ³μκ° μ€μ λμλμ§ νμΈνμΈμ
νμ±ν ν Workflow μ€ν¨
Lambdaμ λͺ¨λ Workflow μ°κ²° ν ν°μ΄ μΆκ°λμλμ§ νμΈνμΈμ
보μ μ°Έκ³ μ¬ν
Bearer ν ν°μ΄ AiTalkκ³Ό Lambda κ°μ μμ²μ μΈμ¦ν©λλ€
μ¬μ©μμ AWS κ³μ λ§ Lambda νκ²½λ³μμ μ κ·Όν μ μμ΅λλ€
AiTalkμ Lambdaμμ κ°μ Έμ¨ μν¬λ¦Ώμ μ μ₯, κΈ°λ‘ λλ μΊμνμ§ μμ΅λλ€
μ΅λ 보μμ μν΄ AWS IAM μ μ± μΌλ‘ Lambda μ κ·Όμ μ ννμΈμ
Last updated