본문으로 건너뛰기

3. 보안 및 규정 준수

Go-Live 고려 사항 > 보안 및 규정 준수

📋 목차


개요

보안 및 규정 준수는 프로덕션 환경에서 운영하기 위한 필수 요구사항입니다. 데이터 보호, 인증, 그리고 법적 요구사항을 충족해야 합니다.


3.1 데이터 보안

인증/권한

적절한 사용자 인증 및 권한 관리를 구현합니다.

인증 방식 선택:

1. Microsoft Entra ID (Azure AD)

설정 → 보안 → 인증
- 인증 유형: Microsoft Entra ID
- 사용자 로그인 필요: 예
- 토큰 유효 기간: 60분

2. OAuth 2.0

필수 구성:
- Client ID: [애플리케이션 ID]
- Client Secret: [보안 암호]
- Scope: openid, profile, Files.Read.All, Sites.Read.All
- Redirect URI: https://token.botframework.com/.auth/web/redirect

3. 역할 기반 접근 제어 (RBAC)

# 토픽 내 권한 체크
- kind: ConditionGroup
condition: System.User.Role = "Manager"
actions:
- # 관리자만 접근 가능한 기능

- kind: ConditionGroup
condition: System.User.Role = "Employee"
actions:
- # 일반 직원 기능

데이터 암호화

민감한 데이터의 전송 및 저장 시 암호화를 보장합니다.

전송 중 암호화:

  • TLS 1.2 이상 사용
  • HTTPS 프로토콜 강제
  • API 호출 시 SSL 인증서 검증

저장 시 암호화:

Power Platform 환경:
- Customer-managed keys (CMK) 활성화
- Azure Key Vault 통합
- 데이터베이스 암호화 (TDE) 활성화

민감 데이터 처리:

# 민감 정보 마스킹 예시
- kind: SetVariable
variable: Topic.maskedSSN
value: |
= Replace(
Topic.ssn,
Mid(Topic.ssn, 4, 6),
"***-**-"
)

# 로깅에서 제외
additionalInstructions: |
절대 다음 정보를 로그에 남기지 마시오:
- 주민등록번호
- 비밀번호
- 신용카드 번호
- 계좌번호

개인정보 보호

GDPR, CCPA 등 관련 규정을 준수합니다.

GDPR 준수 체크리스트:

  • 동의 관리

    첫 대화 시 동의 획득:
    "개인정보 수집 및 이용에 동의하십니까?
    [자세히 보기] [동의] [거부]"
  • 데이터 최소화

    필요한 최소한의 정보만 수집:
    - 필수: 사용자 ID, 대화 내용
    - 선택: 이메일 (알림 목적)
    - 수집 안함: 불필요한 개인 정보
  • 열람 권리

    사용자가 자신의 데이터 조회 가능:
    "내 대화 기록 보기" 기능 제공
  • 삭제 권리 (Right to be Forgotten)

    Power Platform Admin Center:
    - 사용자 데이터 내보내기
    - 사용자 데이터 삭제
    - 삭제 요청 후 30일 내 처리
  • 데이터 이동권

    표준 형식으로 데이터 제공:
    - JSON, CSV 형식 지원
    - API를 통한 데이터 export

개인정보 보관 정책:

데이터 유형보관 기간삭제 방법
대화 로그90일자동 삭제
사용자 정보계정 유지 기간계정 삭제 시
분석 데이터익명화 후 2년자동 삭제
감사 로그7년 (법적 요구)수동 삭제

3.2 컴플라이언스

감사 로그

모든 상호작용에 대한 감사 추적을 가능하게 합니다.

로깅 전략:

1. Application Insights 연동

Copilot Studio → 설정 → 고급 → Application Insights
연결 문자열: [Azure Application Insights 연결 문자열]

2. 로그 항목

필수 로그 정보:
- 타임스탬프
- 사용자 ID (익명화 옵션)
- 세션 ID
- 질문/응답 내용
- 토픽/액션 경로
- 응답 시간
- 오류 발생 여부
- IP 주소 (선택적)

3. 감사 로그 조회 쿼리

// 특정 사용자의 모든 대화 기록
customEvents
| where customDimensions["userId"] == "user@company.com"
| where timestamp > ago(30d)
| project
timestamp,
sessionId = customDimensions["sessionId"],
message = customDimensions["message"],
topic = customDimensions["topicName"]
| order by timestamp desc

// 실패한 인증 시도
customEvents
| where name == "AuthenticationFailed"
| summarize FailedAttempts = count() by
UserId = tostring(customDimensions["userId"]),
bin(timestamp, 1h)
| where FailedAttempts > 5

데이터 보존

법적 요구사항에 따른 데이터 보존 정책을 수립합니다.

보존 정책 매트릭스:

데이터 유형보존 기간법적 근거보관 위치
대화 내용90일내부 정책Application Insights
감사 로그7년금융감독 규정Azure Storage (Archive)
인증 로그1년정보보호법Log Analytics
오류 로그180일운영 필요Application Insights
성능 메트릭2년내부 정책Azure Monitor
사용자 피드백3년품질 관리Dataverse

자동 보존 정책 구성:

# Azure CLI를 통한 보존 정책 설정
az monitor log-analytics workspace table update \
--resource-group "rg-copilot" \
--workspace-name "law-copilot" \
--name "customEvents" \
--retention-time 90

접근 제어

역할 기반 접근 제어(RBAC)를 구현합니다.

역할 정의:

역할권한
Copilot 관리자에이전트 설정 변경, 토픽 관리, 게시, 사용자 관리
Copilot 편집자토픽 수정, 테스트 환경 접근, 분석 읽기
Copilot 분석가분석 대시보드 읽기, 대화 기록 조회, 리포트 생성
Copilot 사용자에이전트와 대화, 자신의 대화 기록 조회

RBAC 구현:

# Power Platform 환경 역할 할당
Add-PowerAppsAccount

# 관리자 역할 부여
Set-AdminPowerAppRoleAssignment \
-EnvironmentName "env-prod" \
-PrincipalType "User" \
-PrincipalObjectId "user@company.com" \
-RoleName "Environment Admin"

접근 로그 모니터링:

// 비정상적인 접근 패턴 탐지
AuditLogs
| where ActivityDisplayName contains "modified"
or ActivityDisplayName contains "deleted"
| where TargetResources contains "Copilot"
| extend Actor = tostring(InitiatedBy.user.userPrincipalName)
| summarize
ModificationCount = count(),
Actions = make_set(ActivityDisplayName)
by Actor, bin(TimeGenerated, 1h)
| where ModificationCount > 10 // 1시간에 10회 이상 수정

다음 단계

보안 및 컴플라이언스 요구사항을 충족했다면, 성능 및 확장성 계획을 수립하세요:

➡️ 다음: 성능 및 확장성 - 성능 최적화 및 용량 계획


네비게이션

← 이전: 품질 관리📚 목차로다음: 성능 및 확장성 →

문서 정보

  • 버전: 1.0.0
  • 최종 업데이트: 2024-11-27
  • 다음 검토: 2025-02-27