보안 정책
API 키 관리, IP ACL 설정, HTTPS 강제, 웹훅 서명 검증 등 비즈고 API를 안전하게 사용하기 위한 보안 정책을 안내합니다.
API 키 보안
- API 키를 코드에 하드코딩하지 마세요. 환경 변수 또는 시크릿 관리 서비스를 사용하세요.
- 키가 유출된 경우 즉시 콘솔에서 재발급하세요.
- 개발용·운영용 API 키를 분리해 관리하세요.
# 잘못된 예
BIZGO_API_KEY = "your_actual_key_here" # 코드에 직접 삽입 금지
# 올바른 예 (.env 파일 또는 시크릿 매니저)
BIZGO_API_KEY = os.environ.get("BIZGO_API_KEY")
// 잘못된 예
const apiKey = "your_actual_key_here"; // ✗
// 올바른 예
const apiKey = process.env.BIZGO_API_KEY; // ✓
IP ACL
비즈고 API는 등록된 IP에서만 요청을 허용합니다.
- 서버 IP 변경 시 반드시 콘솔에서 ACL을 업데이트하세요.
- 개발용/운영용 API 키를 분리해 각각 다른 IP 범위를 등록하세요.
- CIDR 표기로 IP 대역을 등록할 수 있습니다:
203.0.113.0/24
IP ACL 미등록 상태에서 요청하면
authCode: A050(IP 차단) 응답이 반환됩니다.
HTTPS 강제
모든 API 요청은 HTTPS를 사용해야 합니다.
HTTP 요청은 거부됩니다.
웹훅 서명 검증
비즈고는 웹훅 요청 헤더에 HMAC-SHA256 서명값을 포함합니다.
위변조 방지를 위해 반드시 서명을 검증하세요.
수신된 헤더:
x-bizgo-signature: sha256={HMAC-SHA256 서명값}
검증 예제 (Node.js)
const crypto = require('crypto');
function verifySignature(payload, signature, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return `sha256=${expected}` === signature;
}
app.post('/webhook', express.raw({ type: 'application/json' }), (req, res) => {
const signature = req.headers['x-bizgo-signature'];
const isValid = verifySignature(req.body, signature, process.env.WEBHOOK_SECRET);
if (!isValid) return res.status(401).send('Unauthorized');
// 이벤트 처리
res.status(200).send('OK');
});
에러 로그 민감정보 마스킹
전화번호, 인증번호 등 민감정보는 로그에 마스킹 처리하세요.
function maskPhone(phone) {
return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
}
console.log(`발송 대상: ${maskPhone('01012345678')}`); // 010****5678
다음 단계
- API 요청 한도 → Rate Limit
- 환경 설정 → 환경 설정하기