GH GambleHub

역할 엔진

1) 승인 모델

RBAC (Role-Based Access Control): 대상은 역할을 수신하고 역할은 권한과 관련이 있습니다. 일반적인 업무에 적합합니다.
ABAC (속성 기반 액세스 제어) -솔루션은 주제의 속성, 리소스, 동작 및 환경 (시간, IP, 지역, 위험) 에 따라 다릅니다. 복잡한 규칙으로 유연하고 확장 가능합니다.
RBAC + ABAC 하이브리드: 역할은 "기본" 기능을 제공하며 속성은 좁아집니다 (조건).
(옵션) ReBAC/관계 기반: 관계 그래프 (소유자, 팀원, 대리인), 문서 및 조직에 유용합니다.

2) 아키텍처: PDP/PEP 및 흐름

PEP (Policy Enforcement Point): 솔루션이 적용되는 곳 (API 게이트웨이, 백엔드 방법, SQL 계층, UI).
PDP (Policy Decision Point): 정책 및 속성별로 'ALLOW/DENY' 를 계산하는 서비스/라이브러리.
PIP (정책 정보 포인트): 속성 소스 (IdP/프로파일, 리스크 메타 데이터, 위험률, 지리).
PAP (Policy Administration Point) - 관리 인터페이스/정책 저장소 (버전, 초안, 출판).

흐름: PEP → 요청은 컨텍스트를 형성합니다 → PDP가 누락 된 속성을 (PIP를 통해) 가져옵니다. → PEP가 적용되는 결정 (필드 활성화/비활성화/차단) → 감사.

3) 데이터 모델

엔터티 (최소):
  • '타이틀' (사용자/서비스) ★ атри차수, '테넌트 _ id', '역할', '부서', '위험 _ 레벨', 'mfa _ 확인', '스코프', '클레임'.
  • 유형 및 속성이있는 '자원': '유형', '소유자 _ id', '테넌트 _ id', '분류' (공개/기밀), '지역', '태그'.
  • '행동': '읽기', '쓰기', '삭제', '내보내기', '승인', '가장 한 사람'! п.
  • '환경': '시간', 'ip', '장치', '지오', '을 사용하십시오.
RBAC 부분:
  • '역할 (id, 세입자 _ id, 이름, 상속 [])' -계층 구조 및 패턴을 지원합니다.
  • '권한 (id, 자원 _ 유형, 동작, 제약?)'.
  • (PHP 3 = 3.0.6, PHP 4)
  • '할당 (주제 _ id, 역할 _ id, 범위)' - 범위: 글로벌/프로젝트 별/객체 별.
ABAC 부분 (정책):
  • '정책 (id, 효과 = 허용' 거부, 대상: {주제, 자원, 행동}, 조건: 설명, 우선 순위, 버전, 상태) '.

4) 의사 결정 원칙

거부 오버 라이드: 명시 적 금지는 권한의 우선 순위를 정합니다.
최소 특권 (PoLP): 최소 액세스 권한을 발행하고 조건을 통해 확장하십시오.
의무의 분리 (SoD): 역할/행동의 조합 금지 (예: "지불" ", 체포 됨").
상황 인식: 더 높은 위험에서 요구 사항 강화 (MFA 없음, 의심스러운 IP).
결정론: 같은 맥락 → 동일한 반응; 정책 버전을 기록하십시오.

5) 구현 패턴

5. 1 하이브리드 RBAC → ABAC (컨디셔닝)

역할은 "기본 권리" 를 제공하며 ABAC 조건은 다음을 제한합니다

yaml
Declarative Policy Example
- id: doc_read_own effect: allow target: { action: read, resource. type: document, subject. roles: ["editor","owner"] }
condition: resource. owner_id == subject. id

- id: doc_read_team effect: allow target: { action: read, resource. type: document, subject. roles: ["editor","viewer"] }
condition: subject. team_id in resource. shared_team_ids

- id: doc_read_confidential_external effect: deny target: { action: read, resource. type: document }
condition: resource. classification == "confidential" and subject. tenant_id!= resource. tenant_id priority: 100 # deny high priority

5. 2 행/필드 레벨 보안

데이터베이스 수준: RLS 정책 ('테넌트 _ id', 'owner _ id').

(PHP 3 = 3.0.6, PHP 4)

5. 3 단계 강화 솔루션

인증 강도 종속성:

allow if action == "export" and subject. mfa_verified == true else deny

5. 4 임시 공차

TTL을 가진 보조금: '할당. (PHP 3 = 3.0.6, PHP 4)

6) 성능과 캐싱

짧은 TTL로 키 '(주제 _ 해시, 자원 _ 키, 동작, 정책 _ 버전)' 에 의한 결정 캐시.
주제 속성의 에지 캐시 (토큰의 주장) + 게으른 가져오기 리소스 속성.
증분 무효: 사건에 의한 장애 (역할 변경, 정책 변경, "기밀" 로의 자원 이전).
배치 점검: 목록의 경우-PDP 라인을 한 줄씩 당기지 않도록 "필터" (정책 예측 푸시 다운) 로 평가하십시오.

7) 멀티 테넌트

각 테이블에서 - '테넌트 _ id'; 기본 정책은 임대 내에서의 액세스를 제한합

임대 관리자는 임대의 역할/권리 만 관리합니다.

임대 거부 액세스-명시 적 거부 재정의를 통한 명시 적 초대/공유를 통해서만 독점적으

8) 정책 관리 및 수명주기

검증: '정책. PDP 응답의 버전 '을 감사에 저장하십시오.
환경: 초안 → 카나리아 (교통/그림자 모드의 일부) → prod.
테스트 매트릭스: 주요 역할/속성 별 진실표 (계약 테스트).
관리 변경: 보안/규정 준수 검토를 통해 정책 요청을 병합합니다.

9) 감사 및 관찰

"decision _ id ',' 주제 ',' 동작 ',' resource _ ref ',' 결과 ',' matched _ policies ',' policy _ version ',' policy _ digest '.
지표: QPS PDP, p95 대기 시간, 적중률 캐시, 점유율 거부, 스텝 업 속도, SoD 사건.
추적: PDP 호출 당 스팬; API 요청과의 상관 관계.
재생: 새 버전의 정책에 대한 과거 결정을 "재생" 할 수있는 기능 (안전 점검).

10) 인증 및 토큰과의 통합

신원-IdP (OIDC/SAML). 토큰에는 최소한의 속성 인 'sub', 'tenit', 'alces', '자기 _ time', 'amr', 'scopes' 가 있습니다.
ABAC의 경우 토큰을 팽창시키지 않도록 서버 측 (PIP) 에서 "무거운" 표시를 가져옵니다.
엄격하게 제한된 대표단을 위해 서명 된 리소스 토큰 (기능/초대).

11) PDP 의사 코드 (단순화)

python def decide(subject, resource, action, env, policies):
matched = []
effect = "deny"
Explicit DENYs with priority for p in sorted (policies, key = lambda x: x.priority, reverse = True):
if target_matches(p. target, subject, resource, action):
if eval_condition(p. condition, subject, resource, env):
matched. append(p. id)
if p. effect == "deny":
return Decision("deny", matched, p. version)
Looking for ALLOW for p in policies:
if target_matches(p. target, subject, resource, action):
if eval_condition(p. condition, subject, resource, env):
matched. append(p. id)
effect = "allow"
break return Decision(effect, matched, max_version(matched, policies))

12) 반 패턴

"역할 = 페이지" (도메인 모델이없는 수백 개의 작은 역할).
버전/감사없이 코드로만 정책을 저장합니다.
거부 재정의 부족과 SoD → 사기 위험이 증가했습니다.
속성/관계 대신 'user _ id' in 규칙을 나열합니다.
UI 필터 만 사용하는 데이터 계층 필터링 (RLS) 이 없습니다.
이벤트 및 캐시 장애가없는 수동 스크립트를 통한 역할 동기화.

13) 사례와 요리법

13. 1 필드 레벨 마스킹:


allow read invoice when subject. roles includes "support"
mask fields ["card_last4", "billing_email"] unless subject. role == "finance"

13. 2 MFA 만 데이터 내보내기:


allow export if subject. mfa_verified and env. ip in cidr("203. 0. 113. 0/24")

13. 3 SoD:


deny approve_payment if subject. performed_actions includes ("create_payment" within last 24h)

13. 4 대표단 (제한된 토큰):

기능 토큰에는 '자원 _ id', '행동 = ["읽기"]', '만료', 'aud' 가 포함됩니다. PEP는 서명 및 마감일을 확인합니다.

14) 테스트

정책의 단위 테스트: 주요 조합별로 진실 테이블.
속성 기반: "구멍" 을 찾기위한 임의의 속성 생성.
골든 테스트: 중요한 종점에 대한 일련의 솔루션을 수정합니다.
카나리아/그림자: 불일치 로깅이있는 기존 및 새로운 버전의 정책에 대한 병렬 평가.

15) "아키텍처 및 프로토콜" 섹션의 관련 기능

인증 및 인증 (OIDC/OAuth2)

동의 관리

토큰 화 및 키 관리

관찰 가능성: 로그, 메트릭, 추적

지리 라우팅 및 현지화

휴식/대중 교통 암호화

16) 건축가 점검표

1. 주제 역할과 계층 구조가 정의되어 있습니까?
2. 속성에 대한 역할 + 조건이라는 하이브리드 모델이 있습니까?
3. 거부 오버 라이드, SoD 및 스텝 업으로 PDP 구현?
4. PEP는 어디에 있습니까? (게이트웨이, 백엔드, 데이터베이스, UI) -모든 곳에서 균일합니까?
5. 솔루션 캐시와 이벤트 장애가 구성되어 있습니까?
6. 정책은 프로세스별로 다양하고 테스트되며 배포됩니까?
7. 감사 결정, 지표 및 추적이 활성화되어 있습니까?
8. 멀티리스 및 RLS/필드 마스킹 지원?
9. 사건과 정책 회귀에 관한 런북이 있습니까?

결론

RBAC는 제어 성을 제공하고 ABAC는 컨텍스트와 정확성을 제공합니다. 역할을 속성 조건, PDP/PEP 공유, 캐싱, 감사 및 정책 테스트와 결합하여 제품 및 규제 요구 사항에 대해 예측 가능하고 검증 가능하며 확장 가능한 플랫폼 기능으로 권한을 구축합니다.

Contact

문의하기

질문이나 지원이 필요하시면 언제든지 연락하십시오.우리는 항상 도울 준비가 되어 있습니다!

Telegram
@Gamble_GC
통합 시작

Email — 필수. Telegram 또는 WhatsApp — 선택 사항.

이름 선택 사항
Email 선택 사항
제목 선택 사항
메시지 선택 사항
Telegram 선택 사항
@
Telegram을 입력하시면 Email과 함께 Telegram에서도 답변드립니다.
WhatsApp 선택 사항
형식: +국가 코드 + 번호 (예: +82XXXXXXXXX).

버튼을 클릭하면 데이터 처리에 동의하는 것으로 간주됩니다.