API 키, 토큰 및 자격 증명-보안 인증
전체 기사
1) 왜이 모든 것: iGaming의 위협 모델
돈과 PII: 주요 타협 → 사기, 누출, 벌금.
네트워크 통합: 수십 개의 외부 제공 업체, 다른 지역/라이센스.
높은 SLA 요금: 단순 또는 이중 지불-평판 및 법적 위험.
결론: 인증 및 인증은 최소한의 권한과 엄격한 관찰 성으로 "기본적으로 안전" 해야합니다.
2) 도구: 우리가 무기고에 가지고있는 것
API 키: 정적 클라이언트 ID. 통합이 용이하고 누출 위험이 높습니다.
OAuth2 (클라이언트 자격 증명): 범위/청중이있는 단기 베어러 토큰.
mTLS: 상호 TLS 확인, 클라이언트를 채널에 강력하게 바인딩합니다.
HMAC/EdUSA 서명: 요청 본문의 암호화 무결성 및 재생 방지 (타임 스탬프 + nonce).
소유권 증명: MTLS 바운드 토큰 또는 DPoP (클라이언트 키로 HTP 요청 서명).
JWT/PASETO: 자체 설명 토큰 (바람직하게는 짧은 TTL).
RBAC/ABAC: 역할/속성 기반 승인 (OPA/정책 결정).
대표단/STS: 특정 시나리오에 대해 발행 된 시간 및 목적 제한 티켓.
3) 기본 원칙 ("정지 신호")
1. 최소 특권: 각 키/토큰은 가능한 가장 낮은 권리를 갖습니다.
2. 기본적으로 짧은 수명: 며칠이 아닌 TTL 분. 회전은 자동입니다.
3. 채널 바인드: 유출 될 때 토큰을 mSL/DPoP에 바인딩하는 것은 쓸모가 없습니다.
4. 브랜드 당/지역: 브랜드/라이센스/지역에 대한 키/인증서 및 권한.
5. Vault/HSM/KMS 또는 Git/logs를 통해서만 비밀이 공유되지 않습니다.
6. WORM 감사: 모든 운영/문제/회전의 변경되지 않은 로그.
7. 쓰기 입력에 대한 이데올로기: 같은 키를 가진 반복은 두 번째로 돈을 바꾸지 않습니다.
4) 사용시기 (iGaming 컨텍스트)
5) 액세스 티켓 설계 (스코프, 잠재 고객, 조건)
범위 (예):- '베팅: 쓰기', '결산: 쓰기', '지갑: 신용', '지갑: 직불', 'rg: 읽기', 'rg: 시행', '잭팟: 트리거'.
청중: 토큰이 누구에게 전달되는지 (예: 'aud: 지갑. api ').
구속 조건 (세밀한):- 'brand _ id', 'region', 'ip/cidr', 'time _ of _ day', 'rate _ limited', 'max _ amount'.
- 토큰 (JWT 청구) 또는 Vault/STS의 서면 "위임" 에 보관됩니다.
6) 참조 흐름
6. 1 RGS 화폐 플랫폼: RPC 머니
1. mSL 핸드 셰이크 (브랜드/지역 인증서당).
2. OAuth2 CC: RGS는 '액세스 _ 토큰' (TTL 2-5 분, 'aud = 지갑) 을 얻습니다. api ',' scope = 베팅: 합의 작성: 쓰기 ').
3. 헤더로 'POST/v1/bets/ranize를 요청하십시오':- '승인: 무기명 <토큰>', 'X-Idempotency-Key', 'X-Trace-ID'.
- 4. 답 + WORM 감사 (누가/무엇을/언제/어디서) 에 쓰십시오.
- 5. 토큰의 회전은 만료 후 완벽합니다-CC 반복.
6. 2 Webhooks 플랫폼 → 공급자
제목 'X-Signature: eddsa = 
공급자 확인: 유효성 창 (λ5 분), nonce, 본문 서명.
사용할 수없는 경우-백오프로 다시 트레이하고 '이벤트 _ id' 로 디드 업하십시오.
6. 3 대표단 (잭팟 서비스 → 지갑)
JP는 STS에 전화합니다. "'player _ id = p _...' 에 대한 '지갑: 크레딧' 에 일시적인 토큰을 제공하십시오.
STS는 정책/제한 → 티켓을 발행합니다 (좁은 토큰).
JP는이 토큰으로 지갑을 인정합니다. 짧은 TTL, 좁은 권리, mTLS에 대한 구속력 등 이러한 토큰을 타협하는 것은 무의미합니다.
7) 쿼리 구성
7. 1 이념성 (필요)
POST/v1/베팅/정착
승인: 베어러 <MTLS 바운드>
X-Idempotency-Key: settle _ r _ 8c12 _ 1
X-Trace-ID: tr _ a1b2
{
"bet _ id": "b _ 001", "round _ id": "r _ 8c12", "win": {"릴리스": 1460, "통화": "EUR"}
}
→ 200 {"상태": "크레딧", "redited _ id": "st _ 77"}
(동일한 키 → 동일한 답변으로 반복)7. 2 웹 후크 시그니처 (HMAC)
X- 서명: sha256 = BASE64 (HMAC (비밀, 타임 스탬프 + "." "+ nonce +". "+ body))
X- 타임 스탬프: 173000000
X-Nonce: 1f7a...8) 비밀과 키 관리
Vault/HSM/KMS: 생성, 저장, 회전, 리콜.
환경당: 샌드 박스/프로드-다른 신뢰의 뿌리.
브랜드 당/지역: 개별 키 및 인증서.
자동 회전: 크론/알림; 완벽한 교체를 위해 기간이 겹칩니다.
코드/로그의 금지: 비밀은 표준으로 작성되지 않으며 충돌 보고서에 들어 가지 않습니다.
장치/워크로드 아이덴티티: SPIFFE/SPIRE, 수동 비밀이없는 K8s ServiceAccount → mTLS.
9) 승인 정책 (RBAC/ABAC) 및 OPA
RBAC: ро찌꺼기 "rgs", "wallet", "jackpot", "reporting".
ABAC: "만약 'region = EU' and 'brand = A' 규칙 → 허용 '지갑: 신용'
OPA/REGO 또는 유사체: 중앙 집중식 의사 결정, 정책 버전 지정, 건식 테스트.
10) 관찰 및 감사
각 요청/이벤트에서 엔드-투-엔드 트레이스 _ id 및 클라이언트 _ id.
측정 항목: 엔드 포인트 별 p50/p95/p99 대기 시간, 코드 별 오류율 ('지정 _ FAILED', 'SCOPE _ DENIED', 'IDEMPOTENCY _ MISMATCH'), 회전율, 만료 된 토큰 공유.
WORM 로그: 토큰 발행/리콜, 주요 변경, 정책 변경.
경고: 'λH _ FAILED' 스파이크, 지리/ASN 이상, '연체/철회' 성장> 임계 값.
11) 지역 거주 및 세분화
토큰/인증서는 지역별 (EU/UK/BR/...) 입니다.
'지역' 브랜드에서 플랫폼 게이트웨이는 지역 간 통화를 금지합니다.
지역당 별도의 KMS 및 Vault 클러스터; 키는 영역간에 "구동" 되지 않습니다.
12) 사건과 회상
타협 플레이 북: 인스턴트 키/토큰 취소, 네트워크 블록/ASN, 범위 폐쇄.
게이트웨이 레벨에서 킬 스위치: "새로운 세션/펀드 없음".
사후: "로그/저장소에 들어갔을 때", "DLP/비밀 스캐너가 작동하지 않은 이유".
13) 점검표
A. 플랫폼
- 모든 쓰기 경로: mSL + OAuth2 CC (TTL λ5 분), 'X-Idempotency-Key', 'X-Trace-ID'.
- 웹 후크: HMAC/EdUSA + 타임 스탬프 + nonce, '이벤트 _ id'.
- Keistor: Vault/HSM/KMS, 회전 및 리콜, 브랜드/지역별로 분할.
- OPA/정책: RBAC/ABAC, 로그 변경, 테스트.
- WORM 감사 및 SLO 대시 보드 (대기 시간, 오류, 철회/회전).
- DR/xaoc 교육: 만료 된 토큰, 서명 스푸핑, mTLS가없는 MITM.
B. 공급자 (RGS/live/JP)
- 나는 코드에 비밀을 유지하지 않습니다. 환경 변수를 통한 Vault/대체 사용.
- 토큰의 자동 회전; 업데이트로 401/403을 처리하십시오.
- 웹 후크/확인 유효성 창 및 일회용으로 서명하십시오.
- 주요 활동을 감사하고 우울증/일몰 헤드 라인에 응답하십시오.
- 모든 쓰기 호출에 대한 이념성, 'Idempotency-Key' 에 의한 결정.
14) 반 패턴 (적기)
판매 날짜가 만료되지 않은 정적 API 키.
채널에 바인딩되지 않은 베어러 토큰 (MSL/DPoP 없음).
Git/CI 로그/프론트 엔드 설정에 비밀을 저장합니다.
여러 브랜드/지역에 대한 공유 키/인증서
서명이없는 웹 후크 및 시간 창 → 재생.
중앙 집중식 피드백 및 WORM 로그 부족.
dempotency → 중복 차단/크레딧 부족.
15) 미니 정책 템플릿 (예: 사람 읽기)
티켓 'rgs → wallet' (EU, 브랜드 A):- 'aud = 지갑. api ',' scope = ["베팅: 쓰기", "결제: 쓰기"] '
- '구속 조건: region = EU, 브랜드 = A, ip in 타:...}, max _ amount = 5000 EUR, ttl = 300'
- '바인딩: mSL (cert _ hash = sha256:...)'
- 'alg = Ed25519', 창 'λ30s', 'nonce' 고유, 할아버지 '이벤트 _ id' 24 시간.
iGaming의 보안 인증은 단기 위임, 채널 바인딩 (mSL/DPoP), 좁은 범위/청중, 엄격한 dempotency, Vault/HSM 및 WORM 감사, 지역 세분화 및 관찰 가능성의 관행의 조합입니다. 이러한 스택은 통합 속도를 방해하지 않지만 누출 및 재무 사고의 위험을 근본적으로 줄입니다. 돈과 데이터는 여전히 통제되고 업그레이드는 예측 가능하며 규정 준수는 상자 밖에서 수행됩니다.
