프록시 환경(사내 등) 에서 openai, anthropic api 사용하기

프록시 환경(예: 사내 네트워크)에서 OpenAI 또는 Anthropic API를 안전하고 효율적으로 사용하는 방법을 단계별로 안내합니다. 이 가이드는 API 키 보안, 사내망 내에서의 API 연결 방법, 실무 적용 예시 등을 포함합니다.
1. 프록시 환경에서 API 사용의 일반적 이슈
- 외부 API(예: OpenAI, Anthropic)와 사내 네트워크 사이에 방화벽이나 프록시 서버가 있어 직접적인 통신이 불가하거나 제한됩니다.
- API 키를 클라이언트(프론트엔드, PC)에서 직접 사용하면 보안 위험이 큽니다.
- OpenAI/Anthropic API 서버와 직접 통신이 안 되는 경우, 중간에 요청을 중계하는 프록시 서버를 사내에 별도로 구축해 사용해야 합니다[1][3].
2. 보안 강화 방법: 백엔드 프록시 서버 구성
- API 키 보안: 회사 내부 서버에만 API 키를 저장하여 외부 유출을 원천 차단합니다. 프론트엔드는 프록시 서버에만 요청하고, 프록시 서버가 외부 API로 대리 요청합니다[1].
구현 예시 (Node.js Express 기반):
// .env 파일에 OPENAI_API_KEY, ANTHROPIC_API_KEY 등 저장
require('dotenv').config();
const express = require('express');
const axios = require('axios');
const app = express();
app.use(express.json());
app.post('/api/openai', async (req, res) => {
try {
const response = await axios.post(
'https://api.openai.com/v1/chat/completions',
req.body,
{
headers: {
'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`,
'Content-Type': 'application/json'
}
}
);
res.json(response.data);
} catch (error) {
res.status(500).json({error: error.toString()});
}
});
app.post('/api/anthropic', async (req, res) => {
try {
const response = await axios.post(
'https://api.anthropic.com/v1/messages',
req.body,
{
headers: {
'x-api-key': process.env.ANTHROPIC_API_KEY,
'Content-Type': 'application/json'
}
}
);
res.json(response.data);
} catch (error) {
res.status(500).json({error: error.toString()});
}
});
app.listen(3000, () => console.log('프록시 서버 실행 중!'));
- 위 코드는 프록시 서버가 OpenAI와 Anthropic API로 요청을 중계해 주는 구조입니다.
3. 사내 프록시, 방화벽 설정
- 회사 네트워크에서 외부 API 서버(예: api.openai.com, api.anthropic.com)로 직접 나가는 트래픽이 차단될 수 있습니다.
- 이럴 경우, 사내 프록시 서버 주소/포트를 환경 변수(예:
HTTP_PROXY
,HTTPS_PROXY
)로 지정해야 합니다.
환경 변수 설정 예시:
export HTTP_PROXY=http://사내프록시주소:포트
export HTTPS_PROXY=http://사내프록시주소:포트
- 또는, axios/requests 등 라이브러리에서 별도 프록시 지정 옵션을 사용할 수 있습니다.
4. API Gateway 도입 (고도화 방법)
- 단순 프록시 서버 외에, API Gateway(예: IBM API Connect, Kong, NGINX API Gateway)를 이용해 트래픽 제어, 응답 캐싱, 경로 허용, 인증 관리 등 보안/통제 기능을 확장할 수 있습니다[3].
- API Gateway에서 OpenAI/Anthropic API 경로만 열어주고, 불필요한 경로는 차단하여 보안을 강화할 수 있습니다.
- 응답 캐싱을 통해 트래픽 비용도 절감할 수 있습니다.
5. Anthropic (Claude) API 활용 예시
- Python 환경에서
anthropic
패키지를 사용하며, API 키를 코드에 직접 노출하지 않고 환경변수로 관리하는 것이 권장됩니다. - 예시 코드(프록시 환경에서도 동일하게 적용):
import os
import anthropic
os.environ["ANTHROPIC_API_KEY"] = "여기에_안쓰고_환경변수_혹은_프록시에서_설정"
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1000,
temperature=0.0,
system="당신은 똑똑 AI 비서입니다",
messages=[{"role": "user", "content": "클로드3 설명해줘."}]
)
print(message.content[0].text)
- 서버에서 환경변수로 키를 관리하거나, 사내 프록시를 통해 요청을 중계해주는 방식을 사용합니다[2][4].
6. 체크리스트
- API 키는 백엔드 또는 프록시 서버에만 보관
- 사내망 방화벽/프록시 서버의 외부 API 허용 정책 확인
- 프록시 서버 또는 API Gateway 사용 시 예외 처리, 캐시 활용 등 세부 설정 필요
- SDK/라이브러리에서 프록시 환경 변수 지원 여부 확인
프록시 환경에서 OpenAI, Anthropic API를 안전하게 사용하려면 반드시 중계 서버(프록시 또는 API Gateway)를 활용한 요청 보안과 사내 네트워크 정책에 맞춘 프록시 설정이 필요합니다. 각 환경에 맞게 위 방법을 조합해 구축하면 됩니다.
https://pageservice.tistory.com/entry/4,https://hyeong9647.tistory.com/entry/%EB%AA%A8%EB%8D%B8-%EB%A6%AC%EB%B7%B0-anthropic%EC%9D%98-Claude-3-%EC%82%AC%EC%9A%A9-%EB%B0%8F-API-%EC%82%AC%EC%9A%A9%EB%B2%95,https://www.ibm.com/docs/ko/api-connect/10.0.8?topic=definition-creating-rest-proxy-openai-ai-gateway,https://www.youtube.com/watch?v=EAlKDBRWVY0,https://learn.microsoft.com/ko-kr/microsoft-cloud/dev/dev-proxy/how-to/simulate-openai