HR 의사결정 지원 시스템 - Data Classification & Access Matrix v1

HR 의사결정 지원 시스템 - Data Classification & Access Matrix v1

작성일: 2025-01-23 | 버전: 1.0


1. 개요

이 문서는 데이터의 민감도 분류와 접근 권한 매트릭스를 정의합니다.


2. 데이터 분류 체계

2.1 민감도 등급

등급코드설명예시
PublicL1공개 가능 데이터조직 구조, 프로젝트명
InternalL2내부 공유 가능 데이터프로젝트 일정, 배치 현황
ConfidentialL3제한된 접근 필요급여, 평가 결과
RestrictedL4최소 접근 원칙 적용개인 식별 정보, 민감 인사 정보

2.2 데이터 유형별 분류

유형설명기본 등급
PII개인 식별 정보L4
HR Sensitive민감 인사 정보L4
Financial재무 정보L3
Operational운영 정보L2
Public공개 정보L1

3. 엔터티별 데이터 분류

3.1 Employee (직원)

필드분류등급마스킹비고
employeeIdPIIL4부분 마스킹EMP-***001
namePIIL4전체 마스킹홍**
emailPIIL4부분 마스킹h***@company.com
gradeHR SensitiveL3-
statusOperationalL2-
hireDateHR SensitiveL3연도만2020년
orgUnitIdOperationalL2-
jobRoleIdOperationalL2-
managerIdOperationalL2부분 마스킹

3.2 OrgUnit (조직)

필드분류등급마스킹비고
orgUnitIdPublicL1-
namePublicL1-
typePublicL1-
headEmployeeIdOperationalL2부분 마스킹
costCenterFinancialL3-

3.3 Project (프로젝트)

필드분류등급마스킹비고
projectIdOperationalL2-
nameOperationalL2-
statusOperationalL2-
startDateOperationalL2-
endDateOperationalL2-
priorityOperationalL2-
pmEmployeeIdOperationalL2부분 마스킹
budgetAmountFinancialL3범위 표시10-50억
actualCostFinancialL3범위 표시

3.4 Opportunity (영업 기회)

필드분류등급마스킹비고
opportunityIdOperationalL2-
nameOperationalL2-
clientNameOperationalL2-
stageOperationalL2-
dealValueFinancialL3범위 표시
closeProbabilityOperationalL2-
ownerEmployeeIdOperationalL2부분 마스킹

3.5 Assignment (배치)

필드분류등급마스킹비고
assignmentIdOperationalL2-
employeeIdPIIL4부분 마스킹
projectIdOperationalL2-
allocationFTEOperationalL2-
startDateOperationalL2-
endDateOperationalL2-
roleOperationalL2-

3.6 CompetencyEvidence (역량 증거)

필드분류등급마스킹비고
evidenceIdOperationalL2-
employeeIdPIIL4부분 마스킹
competencyIdOperationalL2-
levelHR SensitiveL3-
assessedAtHR SensitiveL3-
sourceTypeHR SensitiveL3-

4. 접근 권한 매트릭스

4.1 역할 정의

역할코드설명
System AdminSA시스템 관리자
HR AdminHA인사 관리자
HR AnalystHN인사 분석가
Line ManagerLM라인 매니저
Project ManagerPM프로젝트 매니저
EmployeeEE일반 직원
AI AgentAIAI 에이전트

4.2 역할-등급 접근 매트릭스

역할L1 (Public)L2 (Internal)L3 (Confidential)L4 (Restricted)
SA✅ Full✅ Full✅ Full✅ Full
HA✅ Full✅ Full✅ Full✅ Full (담당 범위)
HN✅ Full✅ Full✅ Read⚠️ Masked
LM✅ Full✅ Full✅ Read (팀원)⚠️ Masked
PM✅ Full✅ Read⚠️ Masked❌ No Access
EE✅ Full⚠️ Limited❌ No Access❌ No Access
AI✅ Full✅ Full⚠️ Masked⚠️ Masked

4.3 엔터티-역할 접근 매트릭스

엔터티SAHAHNLMPMEEAI
Employee (PII)⚠️⚠️⚠️⚠️
Employee (기본)⚠️
OrgUnit
Project⚠️
Opportunity⚠️⚠️⚠️
Assignment⚠️
CompetencyEvidence⚠️⚠️⚠️

범례:

  • ✅ Full Access
  • ⚠️ Masked/Limited Access
  • ❌ No Access

5. 마스킹 규칙

5.1 마스킹 함수

def mask_employee_id(employee_id: str) -> str:
    """사번 마스킹: EMP-000001 -> EMP-***001"""
    return f"{employee_id[:4]}***{employee_id[-3:]}"

def mask_name(name: str) -> str:
    """이름 마스킹: 홍길동 -> 홍**"""
    if len(name) <= 1:
        return "*"
    return f"{name[0]}{'*' * (len(name) - 1)}"

def mask_email(email: str) -> str:
    """이메일 마스킹: hong@company.com -> h***@company.com"""
    local, domain = email.split('@')
    return f"{local[0]}***@{domain}"

def mask_amount(amount: int) -> str:
    """금액 범위 표시: 1500000000 -> 10-20억"""
    billions = amount / 1_000_000_000
    if billions < 1:
        return "1억 미만"
    elif billions < 10:
        lower = int(billions // 5) * 5
        upper = lower + 5
        return f"{lower}-{upper}억"
    else:
        lower = int(billions // 10) * 10
        upper = lower + 10
        return f"{lower}-{upper}억"

5.2 마스킹 적용 예시

원본 데이터마스킹 결과적용 역할
EMP-000001EMP-***001HN, LM, PM, AI
홍길동홍**HN, LM, PM, AI
hong@company.comh***@company.comHN, LM, PM, AI
1,500,000,000원10-20억PM, AI

6. PoC 데이터 정책

6.1 Mock 데이터 원칙

원칙설명
익명화모든 PII는 가상 데이터로 대체
현실성실제 데이터 분포와 유사하게 생성
일관성Key 참조 무결성 유지
다양성다양한 케이스 커버

6.2 Mock 데이터 생성 규칙

# 가상 이름 생성
LAST_NAMES = ["김", "이", "박", "최", "정", "강", "조", "윤", "장", "임"]
FIRST_NAMES = ["민준", "서연", "예준", "서윤", "도윤", "지우", "시우", "하은", "주원", "하윤"]

def generate_mock_name():
    return f"{random.choice(LAST_NAMES)}{random.choice(FIRST_NAMES)}"

# 가상 이메일 생성
def generate_mock_email(name: str, seq: int):
    romanized = romanize(name)  # 이름 로마자 변환
    return f"{romanized}{seq}@mock-company.com"

# 가상 사번 생성
def generate_mock_employee_id(seq: int):
    return f"EMP-{str(seq).zfill(6)}"

6.3 AI Agent 데이터 접근 정책

정책내용
목적 제한의사결정 지원 목적으로만 사용
최소 권한분석에 필요한 최소 데이터만 접근
마스킹 적용PII는 항상 마스킹 상태로 처리
로깅모든 데이터 접근 기록
집계 우선개별 데이터보다 집계 데이터 활용

7. 감사 로깅

7.1 로그 항목

필드설명
timestamp접근 일시
userId접근자 ID
userRole접근자 역할
action액션 (READ/WRITE/DELETE)
entityType엔터티 유형
entityId엔터티 ID
dataLevel데이터 민감도 등급
masked마스킹 적용 여부
purpose접근 목적

7.2 로그 예시

{
  "timestamp": "2025-01-23T10:30:00Z",
  "userId": "AI-AGENT-001",
  "userRole": "AI",
  "action": "READ",
  "entityType": "Employee",
  "entityId": "EMP-000001",
  "dataLevel": "L4",
  "masked": true,
  "purpose": "capacity-forecast-analysis"
}

8. 규정 준수

8.1 관련 규정

규정설명적용 범위
개인정보보호법국내 개인정보 보호PII 전체
GDPREU 개인정보 보호EU 직원 데이터
내부 보안 정책회사 내부 정책전체 데이터

8.2 PoC 규정 준수 체크리스트

  • Mock 데이터 사용 (실제 PII 미사용)
  • 데이터 분류 체계 수립
  • 접근 권한 매트릭스 정의
  • 마스킹 규칙 정의
  • 감사 로깅 구현
  • 접근 제어 구현

9. 버전 이력

버전날짜변경 내용
1.02025-01-23초기 버전 작성

이 문서는 PoC 진행 중 정책이 변경될 수 있습니다.