개발자/운영 전환
보안
API 키가 있으면 지갑의 돈을 쓰고 카드 코드를 조회할 수 있습니다. API 키와 받은 코드는 은행 정보나 현금처럼 보호하세요.
#비밀 정보
| 비밀 정보 | 중요한 이유 | 보관 위치 |
|---|---|---|
API 키(cvb2b_...) | 이 키만 있으면 누구나 주문하고 코드를 조회할 수 있습니다. | 서버에만, 시크릿 관리 도구에 보관 |
Webhook 시크릿(whsec_...) | Webhook이 정말 CardV에서 왔는지 증명합니다. | Webhook 수신 서버에만 보관 |
| 포털 비밀번호 | Owner는 API 키를 만들고 확인할 수 있습니다. | 비밀번호 관리 도구에 보관, 2FA 사용 |
- API 키는 서버에만 두세요. 앱, 브라우저, URL, 코드 저장소, 티켓, 메신저, 이메일에는 절대 넣지 마세요.
- 시스템마다 키를 따로 쓰세요. 그래야 하나를 비활성화해도 다른 시스템은 멈추지 않습니다.
- 키를 볼 수 있는 사람을 최소화하고, 접근 권한이 있던 사람이 퇴사하면 키를 교체하세요.
- 키가 유출됐을 수 있다면 포털에서 즉시 비활성화하세요. 그다음 새 키를 만들고 CardV 고객지원에 알려 주세요.
- 모든 포털 Owner 계정에 2단계 인증(2FA)을 켜세요.
#코드와 고객 정보
API 키로 GET/orders/{order_id}를 호출하면 바로 사용할 수 있는 전체 코드가 반환됩니다.
코드에는 카드 번호, PIN, 보안 코드, QR 데이터, 사용 링크가 포함됩니다.
주문에는 고객의 충전 정보(inputs)도 그대로 들어 있습니다.
- 주문 응답, 코드, 사용 링크, 고객
inputs는 로그에 남기지 마세요. 대신order_id,external_order_id,sku_id, HTTP 상태 코드 같은 ID를 남기세요. X-Api-Key,X-Signature,X-CardV-Signature헤더도 로그에 남기지 마세요.- 코드는 암호화해서 저장하고, 고객에게 코드를 전달하는 프로세스만 읽을 수 있게 하세요. 보관 기간이 지나면 삭제하세요.
- 주문 응답을 공유 캐시, CDN, 모니터링 도구에 저장하지 마세요. CardV 호출에 대해서는 본문 수집 기능을 끄세요.
redeem_url은 그 자체가 코드입니다. PIN처럼 보호하세요.
#네트워크
b2b.cardv.net과sandbox.cardv.net만 HTTPS로 호출하세요. 인증서 검증은 절대 끄지 마세요.- 운영 환경에서는 IP 허용 목록을 쓰세요. 키가 유출돼도 피해를 줄일 수 있습니다. 서버가 바뀌면 목록도 갱신하세요.
- 모든 Webhook의 서명을 검증하고, 오래된 타임스탬프는 거부하고, 중복 알림은 무시하세요. Webhook URL에 로그인을 걸지 마세요. 서명이 곧 증명입니다.
#사용자와 권한
- 포털 사용자에게는 필요한 최소한의 역할만 주세요. 조회만 하면 Viewer, 주문과 충전은 Manager, 보안 관리는 Owner입니다.
- 퇴사자는 Live와 Sandbox 양쪽 포털에서 모두 삭제하세요.
#감사 로그
포털의 감사 로그(Owner)에는 보안 관련 작업이 기록됩니다. 키 생성, 키 확인, IP 허용 목록 변경, Webhook 시크릿 변경 등이 여기에 해당합니다. CardV도 차단된 IP, 서명 실패, 요청 한도 초과를 기록하며, 이상 징후가 있으면 담당 팀에 알림이 갑니다.
감사 로그를 정기적으로 확인하세요. 예상하지 못한 키 확인 기록이 있으면 유출 가능성이 있다고 보고 대응하세요.
#문제 신고
키 유출, 부정 주문, CardV의 보안 문제가 의심되면즉시 [email protected]으로 이메일을 보내 주세요. Merchant ID와 주문 ID를 함께 적어 주세요.
비밀 정보 자체는 절대 보내지 마세요.
연동 관련 문의는 Merchant ID와 주문 ID 또는 요청 ID를 포함해 [email protected]로 보내 주세요.