GDPR 대상국의 iOS 어플리케이션에 대한 판정 고려

11061 단어 SwiftgdpriOS

개시하다


배경.


2018년 5월 25일부터 EEA 가맹국를 대상으로 개인정보 보호 관련 규칙GDPR-EU 일반 데이터 보호 규칙이 시행됐다.많은 사람들이 각종 응용 프로그램에서 온 알림을 알고 있을 것이다.(최근 개인 프라이버시 정책 수정 등에 많은 연락이 왔다.)
본 보호규칙을 시행할 때 서버 측, DB 측 등 각 층이 대응해야 하며, 본 보도는 iOS 애플리케이션에서 보호대상국이 현재 잘 진행되고 있는지 어떻게 판단하는지를 살펴본다.

전제 조건

  • 본 글의 견해는 필자 개인의 것으로 필자가 속한 조직의 어떠한 공식적인 견해도 포함하지 않는다
  • 필자의 법률이 전문적이지 않기 때문에 법률 해석에 오류가 있을 수 있다
  • 법률상의 해석과 구체적인 대응 내용에 관하여 아래의 자료를 참고할 수 있다.
  • Jetro에 대한 특별 집합 - EU 일반 데이터 보호 규칙(GDPR)
  • 개인정보보호위원회 - GDPR
  • 유럽 연합
  • 사용 환경


    다음 환경을 사용합니다.
  • Xcode9.3
  • Firebase iOS SDK 4.9.0
  • Firebase RemoteConfig
  • 목표를 달성하다


    다음은 본 보도의 목표 달성이다.
  • 어플리케이션 내 GDPR 대상국 판정
  • 구체적인 대응은 다음과 같다.
    GDPR 대상국(EEA 가맹국 31개국)에서 앱을 사용할 때 체류 여부를 판정한다.응용 프로그램을 사용할 때는 GDPR의 규칙에 다음과 같은 내용이 기재되어 있기 때문입니다.
    GDPR의 대상 개인데이터는 EU 가맹국 등 31개국의 유럽경제분야(EEA) 권역 내 개인 관련 개인데이터(GDPR 제2조)다.국적과 거주지를 불문하고 EEA 구역 내에서 단기 체류하는 출장자와 여행자의 정보도 대상이다.
    이에 따라 일본 국적을 가진 사용자라도 EEA 가맹국을 여행하면 여행 기간 정보가 GDPR 대상이 될 수 있다.

    방법1 TimeZone 사용


    이것은 애플리케이션 TimeZone을 사용하여 판정하는 방법입니다.iOS 설정 앱에서 특정 국가가 아닌 자동 설정이 되면 현재 소재지에서 적절한 TimeZone을 확보할 수 있어 지연 없이 판정할 수 있다.문제는 사용자가 TimeZone을 고정할 때 현재 위치에 있는 정보가 제대로 반영되지 않는다는 점입니다.

    현재 TimeZone은 다음과 같은 방법으로 사용할 수 있습니다.
    let currentTimeZone = TimeZone.current.identifier
    
    앞으로 목표국을 추가·감축하겠다는 점을 고려하면 목표국 명단은 앱 내부에만 있는 게 아니라 외부에서 추가·삭제하는 게 낫지 않겠나.예를 들어 Firebase의 RemoteConfig를 통해 대상국의 TimeZone 목록을 만들고 응용 프로그램을 통해 현재의 TimeZone이 이 TimeZone에 포함되었는지 판단하는 것이 좋지 않겠는가.
    예를 들어 다음과 같은 방법을 만들면 판정할 수 있다.
    // RemoteConfigから対象国のTimeZoneのStringを取得し、配列化します
    // 例えば、該当国のTimeZoneを ','区切りで設定していた場合
    // なおRemoteConfigからの値取得処理は割愛します、参考文献をご参照ください
    let targetCountryTineZones = targetCountryTineZonesString.components(separatedBy: ",")
    
    if isGDPRTargetCountry(targetCountryTimeZones: targetCountryTineZones) {
        // GDPR対象国用の処理
    }
    
    func isGDPRTargetCountry(targetCountryTimeZones: [String]) -> Bool {
        let currentTimeZone = TimeZone.current.identifier
        return targetCountryTimeZones.contains(currentTimeZone)
    }
    
    또한, iOS에서 정한 TimeZone 일람표는 다음과 같은 방법으로 얻을 수 있다고 덧붙였다.
    TimeZone.knownTimeZoneIdentifiers
    

    메서드2 GeoCoder 사용


    이것은 응용 프로그램에서 위도와 경도를 얻을 때 사용할 수 있는 방법이다.
    위도 및 경도를 가져올 수 있는 경우 iOS의 CLGeoCoder를 사용하여 다음 국가 코드를 가져올 수 있습니다.
    ※ 시료에서 획득한 코드는 2자리 국가 코드입니다.(예: 일본 - JS)
    그러나 국가 코드를 얻는 것은 비동기적이기 때문에 얻는 시기와 방법을 논의할 필요가 있다.
    예를 들어 프로그램이 시작될 때 국가 코드를 가져와서 UserDefaults에 저장하고 판정할 때 UserDefaults로 정보를 저장하는 방법이 더 좋지 않겠습니까?
    final class GeoCoderWrapper {
        static private var countryCode: String? {
            get { return UserDefaults.standard.string(forKey: #function) }
            set { UserDefaults.standard.set(newValue, forKey: #function) }
        }
    
        // 緯度・経度情報からCountryコードを取得し、UserDefaultsに保存
        // locationはCLLocationManagerで取得済みとする
        static func updateCountryCode(location: CLLocation) {
            let geoCoder = CLGeocoder()
            geoCoder.reverseGeocodeLocation(location) { (placeMarks, error) in
                // placeMarkは複数返却されるため、1番目を取得
                GeoCoderWrapper.lastISOCountryCode = placeMarks?.first?.isoCountryCode
            }
        }
    }
    
    이전 TimeZone과 마찬가지로 Firebase와 서버 측은 대상국 코드를 대상국에 포함할지 여부를 판정하기 위해 대상국 목록을 미리 생성했다.
    func isGDPRTargetCountry(targetCountryCodes: [String]) -> Bool {
        guard let currentCountryCode = GeoCoderWrapper.countryCode else { return true }
        return targetCountryCodes.contains(currentCountryCode)
    }
    
    또 대상국 31개국의 국가 코드 목록은 다음과 같다.
    LI,IS,NO,AT,BE,BG,HR,CY,CZ,DK,EE,FI,FR,DE,GR,HU,IE,IT,LV,LT,LU,MT,NL,PL,PT,RO,SK,SI,ES,SE,GB

    외국 편


    Firebase 조건(지역, 언어)


    Firebase의 RemoteConfig을 설정할 때 해당 속성에 대한 조건을 설정하여 반환 값을 조건별로 나눌 수 있습니다.다만, Firebase의 해당 속성은 애플리케이션이 설정된 지역과 언어에 따라 결정됩니다.사용자가 영역과 언어 설정을 명확하게 변경하지 않으면 변경되지 않습니다.이 때문에 일본에서 EU권으로 이동해도 지역·언어가 달라지지 않아 GDPR 대응 대상을 식별할 수 없어 요건을 충족할 수 없다.
    Firebase 콘솔에서 직감적으로 대상을 끌어당기기 때문에 생각해 봤지만 이 방법은 사용할 수 없을 것 같다.


    최후


    GDPR사는 벌칙 규정이 연 매출의 4% 또는 2천만 유로 중 한 명이 높은 것으로 보고 있으며, 유로존을 대상으로 서비스를 제공하는 앱에 대해서는 그에 상응하는 대응이 필요하다고 주장한다.이 정보가 누구에게 도움이 된다면 다행입니다.이런 방법이 있나요? 이런 메시지가 있으면 메시지를 남겨주세요.

    참고 자료


    iOS

  • Firebase iOS RemoteConfig

  • GeoCoder 정보
  • GeoCoder-Apple 공식 문서
  • iPhone

  • TimeZone 설정
  • 언어 설정 - apple document
  • 국가 코드

  • 국명과 국가 코드의 대응표 마이크로소프트
  • ISO-366-1 국가 코드 - 위키백과
  • GDPR

  • Jetro에 대한 특별 집합 - EU 일반 데이터 보호 규칙(GDPR)
  • 개인정보보호위원회 - GDPR
  • 유럽 연합
  • 좋은 웹페이지 즐겨찾기