모바일 개발의 건강 데이터 인증: 개념, 작동 방식 및 HealthKit 액세스

저자: IT Sectr 게시일: 2026-05-22 읽는 시간: 8 분

건강 데이터 인증은 모바일 플랫폼의 시스템 API를 통해 의료 및 피트니스 데이터를 읽고 쓰기 위해 사용자의 명시적 동의를 얻는 프로세스입니다. iOS에서는 HKHealthStore 및 HKObjectType 클래스를 통해 HealthKit으로 인증이 구현되고, Android에서는 OAuth 2.0 및 FitnessOptions를 통한 Google Fit API로 수행됩니다. Apple HealthKit 문서, 2025에 따르면 건강 데이터는 매우 민감한 정보 범주로 분류됩니다. 이러한 데이터를 다룰 때 의료적 정확성과 규정 준수는 핵심 요구사항입니다.

주요 포인트

  • 건강 데이터 인증은 사용자의 의료 데이터 접근에 대한 동의를 얻는 필수 프로세스입니다.
  • HealthKit은 HKHealthStore 및 HKObjectType을 포함한 건강 데이터 처리를 위한 Apple의 프레임워크입니다.
  • Google Fit API는 OAuth 2.0 및 FitnessOptions를 통해 피트니스 데이터에 접근하기 위한 Android 플랫폼입니다.
  • HKHealthStore는 권한 요청 및 건강 데이터 작업을 위한 중앙 iOS 클래스입니다.
  • 사용자 동의는 사용자가 특정 데이터 유형을 선택하여 접근을 허용하는 필수 단계입니다.

건강 데이터 인증이란?

건강 데이터 인증은 사용자의 의료 및 피트니스 지표에 접근하기 전에 명시적이고 문서화된 사용자 동의를 요구하는 메커니즘입니다. 표준 권한(연락처, 달력)과 달리 건강 데이터는 추가 법적 규정의 적용을 받습니다: 미국의 HIPAA, 유럽의 GDPR, 러시아의 연방법 152-FZ입니다.

iOS에서 건강 인증은 HealthKit을 통해 구현됩니다: 사용자는 앱이 요청하는 모든 데이터 유형을 나열하는 화면을 보고 접근을 허용할 특정 카테고리를 선택할 수 있습니다. Android에서는 OAuth 2.0 인증을 통한 Google Fit API가 사용되며, 각 데이터 유형마다 별도의 범위가 요청됩니다.

App Annie (2025)에 따르면 건강 및 피트니스 앱은 연간 28%의 성장률로 모바일 시장에서 가장 빠르게 성장하는 부문 중 하나입니다. 한편, 앱이 수집 목적에 대한 명확한 설명을 제공하지 않으면 사용자의 71%가 건강 데이터 접근을 거부합니다.

다른 권한과의 주요 차이점은 부분 접근을 허용할 수 있다는 것입니다. 사용자는 걸음 수 읽기를 허용하면서 심박수 데이터나 의료 기록에 대한 접근은 금지할 수 있습니다.

iOS에서 HealthKit 작동 방식

HealthKit은 iOS 8에서 도입된 Apple의 프레임워크로, 통합된 중앙 집중식 건강 데이터 저장소를 제공합니다. 앱은 HealthKit에 직접 접근할 수 없으며 HKHealthStore를 통해 권한을 요청하고 사용자가 제공할 데이터 유형을 결정합니다. 모든 데이터는 기기에서 암호화되고 종단간 암호화로 iCloud를 통해 동기화됩니다.

HealthKit 접근 요청

인증 프로세스는 HKHealthStore 인스턴스를 생성하고 requestAuthorization(toShare:read:) 메서드를 호출하는 것으로 시작됩니다. 앱은 읽기 유형(앱이 읽으려는 HKObjectType)과 쓰기 유형(앱이 저장하려는 HKSampleType)의 두 가지 유형 세트를 전달합니다. 시스템은 사용자가 각 유형을 개별적으로 활성화 또는 비활성화할 수 있는 동의 화면을 표시합니다.

중요한 기능: HealthKit은 동의 화면에서 사용자가 허용한 특정 유형을 개발자에게 표시하지 않습니다. requestAuthorization 호출 후 HKHealthStore.authorizationStatus(for:)를 통해 각 유형에 대한 접근을 개별적으로 확인해야 합니다. WWDC Session 11108 (2024)에 따르면 Apple은 읽기 또는 쓰기 작업 전에 권한 상태를 확인할 것을 권장합니다.

HKObjectType 데이터 유형

HealthKit은 수량(걸음 수, 심박수, 칼로리), 특성(키, 몸무게, 생년월일), 임상 기록(알레르기, 예방 접종, 검사 결과), 증상 및 월경 주기 등의 카테고리로 나뉜 수백 가지 데이터 유형을 지원합니다. 각 유형은 HKObjectType의 하위 클래스로 표현됩니다: 숫자 측정용 HKQuantityType 및 범주형 데이터용 HKCategoryType입니다.

iOS 18에서 Apple은 FHIR을 통해 의료 기관의 데이터를 지원하도록 HealthKit을 확장했습니다. 사용자가 병원이나 클리닉을 건강 앱에 연결한 경우 앱은 구조화된 의료 기록에 대한 접근을 요청할 수 있습니다.

Android에서 Google Fit API 작동 방식

Google Fit은 OAuth 2.0 인증을 사용하는 Android의 피트니스 데이터 플랫폼입니다. HealthKit과 달리 Google Fit은 OS 수준에서 시스템에 내장되어 있지 않습니다. 이는 Google Play Console을 통한 설정과 OAuth 2.0 자격 증명 생성이 필요한 별도의 Google Play Services 서비스입니다.

Google Fit 및 OAuth 2.0

Google Fit에 접근하려면 앱이 Google Cloud Console에 OAuth 2.0 클라이언트 ID를 등록해야 합니다. 인증은 GoogleSignInAccount 및 GoogleSignIn.requestPermissions()를 통해 요청됩니다. 사용자는 요청된 범위 목록이 포함된 표준 Google 동의 화면을 봅니다: fitness.activity.read, fitness.body.read, fitness.nutrition.write 등입니다.

Google Fit은 각 데이터 유형에 대한 권한을 읽기와 쓰기로 분리합니다. 앱은 쓰기 권한을 요청하지 않고 걸음 수 읽기 접근을 요청할 수 있습니다. Google Fit API v2부터 모든 인증 요청에는 데이터 사용 목적에 대한 설명이 포함되어야 하며, 그렇지 않으면 Google 검토에서 요청이 거부됩니다.

FitnessOptions 및 범위

FitnessOptions 클래스를 사용하면 선언적으로 어떤 데이터 유형에 접근이 필요한지 지정할 수 있습니다. 각 유형에 대해 ACCESS_READ, ACCESS_WRITE 또는 둘 다의 접근 수준을 설정할 수 있습니다. 권한 세트는 사용자 계정과 함께 GoogleSignin.requestPermissions()에 전달됩니다.

사용 가능한 유형에는 걸음 수(DataType.TYPE_STEP_COUNT_DELTA), 칼로리(TYPE_CALORIES_EXPENDED), 심박수(TYPE_HEART_RATE_BPM), 거리(TYPE_DISTANCE_DELTA), 활동(TYPE_ACTIVITY_SEGMENT) 및 수면(TYPE_SLEEP_SEGMENT)이 포함됩니다. 각 유형에는 자체 업데이트 빈도와 권한 요구사항이 있습니다.

건강 데이터 접근 코드 예제

건강 데이터 인증 요청의 구현은 iOS와 Android 간에 크게 다릅니다. 다음은 HealthKitGoogle Fit API의 실제 예제입니다.

Swift의 HealthKit

Swift에서 HealthKit 인증 요청은 읽기 및 쓰기 유형을 지정하여 HKHealthStore를 통해 수행됩니다. 예제는 걸음 수 및 심박수 데이터에 대한 접근 요청을 보여줍니다.

swift
import HealthKit

let healthStore = HKHealthStore()

let readTypes: Set<HKObjectType> = [
    HKObjectType.quantityType(forIdentifier: .stepCount)!,
    HKObjectType.quantityType(forIdentifier: .heartRate)!
]

let writeTypes: Set<HKSampleType> = [
    HKObjectType.quantityType(forIdentifier: .stepCount)!
]

guard HKHealthStore.isHealthDataAvailable() else {
    fatalError("HealthKit이 이 기기에서 사용불가")
}

healthStore.requestAuthorization(toShare: writeTypes, read: readTypes) { success, error in
    if success {
        // 각 유형별로 상태 확인
        let status = healthStore.authorizationStatus(for: readTypes.first!)
        print("HealthKit 인증: \(status.rawValue)")
    } else {
        print("HealthKit 인증 오류: \(error?.localizedDescription ?? "알 수 없음")")
    }
}

Kotlin의 Google Fit

Android에서 Google Fit 인증은 GoogleSignIn 및 FitnessOptions를 통해 수행됩니다. 예제는 걸음 수 및 칼로리 데이터에 대한 접근 요청을 보여줍니다.

kotlin
val fitnessOptions = FitnessOptions.builder()
    .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
    .addDataType(DataType.TYPE_CALORIES_EXPENDED, FitnessOptions.ACCESS_READ)
    .build()

val account = GoogleSignIn.getAccountForExtension(this, fitnessOptions)

if (!GoogleSignIn.hasPermissions(account, fitnessOptions)) {
    GoogleSignIn.requestPermissions(
        this,
        REQUEST_GOOGLE_FIT,
        account,
        fitnessOptions
    )
} else {
    // 권한 이미 부여됨
    readGoogleFitData(account)
}

// 권한 요청 결과 처리
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == REQUEST_GOOGLE_FIT && resultCode == RESULT_OK) {
        val account = GoogleSignIn.getSignedInAccountFromIntent(data)
        account?.let { readGoogleFitData(it) }
    }
}

보안 및 규정 준수

건강 데이터는 특히 민감한 개인 데이터 범주에 속합니다. HealthKit 또는 Google Fit으로 작업하는 앱 개발자는 사용자 지역의 규제 요구사항을 준수해야 합니다.

건강 데이터를 위한 HIPAA 및 GDPR

미국에서 건강 데이터는 의료 정보의 저장, 전송 및 처리를 위한 엄격한 요구사항을 설정하는 HIPAA의 적용을 받습니다. HealthKit으로 작업하는 앱은 데이터가 암호화된 형태로 서버에 전송되고 접근이 제한된 경우 HIPAA를 준수할 수 있습니다.

유럽 연합에서 건강 데이터는 GDPR(제9조)에 따라 특별한 범주의 개인 데이터로 간주됩니다. 이러한 데이터 처리는 사용자의 명시적 동의와 대부분의 경우 데이터 보호 영향 평가가 필요합니다. GDPR 요구사항 위반 시 최대 2천만 유로 또는 회사 연간 매출의 4%에 달하는 벌금이 부과될 수 있습니다.

러시아에서 건강 데이터 수집은 연방법 152-FZ “개인 데이터에 관한 법률”의 적용을 받습니다. 2025년부터 러시아 시민의 의료 데이터를 처리하는 모든 앱은 인증된 암호화 도구를 사용하고 Roskomnadzor의 요구사항에 따라 러시아 연방 영토 내에 위치한 서버에 데이터를 저장해야 합니다.

권고: 건강 데이터로 작업하는 앱을 출시하기 전에 법무 부서와 상담하여 현지 규정 준수 여부를 확인하십시오. Apple과 Google은 개인정보 보호정책이 요구사항을 충족하지 않는 경우 앱을 거부할 권리를 보유합니다.

자주 묻는 질문

HealthKit과 Google Fit의 차이점은 무엇인가요?

HealthKit은 로컬 암호화 건강 데이터 저장소가 있는 내장 iOS 프레임워크입니다. Google Fit은 OAuth 2.0을 사용하는 Google Play Services 기반 클라우드 서비스입니다. HealthKit은 오프라인에서 작동하며 Google Fit은 동기화를 위해 인터넷 연결이 필요합니다.

사용자가 건강 데이터에 대한 부분 접근을 허용할 수 있나요?

네, 두 플랫폼 모두에서 가능합니다. iOS에서 사용자는 HealthKit 동의 화면에서 특정 데이터 유형(걸음 수, 심박수, 수면)을 선택합니다. Android에서 사용자는 Google Fit 범위 목록을 보고 Google 계정 설정을 통해 개별 권한을 취소할 수 있습니다.

HKHealthStore란 무엇이며 왜 필요한가요?

HKHealthStore는 iOS에서 HealthKit 프레임워크의 중앙 클래스입니다. 모든 건강 데이터의 인증, 읽기 및 쓰기를 관리합니다. 앱은 HealthKit 저장소에 직접 접근할 수 없으며 모든 작업이 HKHealthStore를 통해 이루어져 통합된 접근 인터페이스와 사용자 접근 권한 준수를 보장합니다.

앱에 대한 Google Fit 접근을 취소하려면 어떻게 하나요?

사용자는 Google 설정 — 계정 관리 — 보안 — 접근 권한이 있는 타사 앱을 통해 접근을 취소할 수 있습니다. 앱을 선택하고 “접근 제거”를 클릭합니다. Google Play Console을 통해서도 접근을 취소할 수 있습니다: 연결된 서비스 — Google Fit — 앱 관리.

HealthKit을 사용하는 앱에 HIPAA 준수가 필수인가요?

앱이 미국 사용자의 건강 데이터를 처리하고 서버로 전송하는 경우 HIPAA 준수가 필수입니다. 모든 데이터가 기기에 로컬로 유지되고 제3자에게 전송되지 않는 경우 HIPAA 준수가 필요하지 않을 수 있지만 Apple은 관할권에 관계없이 보안 모범 사례를 따를 것을 권장합니다.

요약

  • 건강 데이터 인증은 의료 데이터 접근에 대한 명시적 동의를 얻는 필수 프로세스입니다.
  • HealthKit은 iOS에서 HKHealthStore를 통한 건강 데이터 처리를 위한 Apple 프레임워크입니다.
  • Google Fit API는 OAuth 2.0 및 FitnessOptions를 통한 피트니스 데이터 접근 Android 플랫폼입니다.
  • 데이터 유형 — HealthKit은 정량적, 범주형 및 임상 데이터를 지원하며 Google Fit은 걸음 수, 칼로리, 심박수, 활동 및 수면을 지원합니다.
  • 부분 접근 — 사용자는 두 플랫폼 모두에서 일부 데이터 유형에 대한 접근을 허용하고 다른 유형은 거부할 수 있습니다.
  • HIPAA 및 GDPR — 미국 및 유럽 연합에서 건강 데이터 처리 시 필수 규제 요구사항입니다.
  • 러시아 규정 — 152-FZ는 러시아 시민의 의료 데이터 처리 시 인증된 암호화 및 러시아 연방 내 서버 데이터 저장을 요구합니다.

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기