App Check를 사용하여 API 키 보호
Firebase 앱 체크는 합법적인 앱 이외의 소스에서 발생하는 트래픽을 차단하여 앱에서 Google Maps Platform으로의 호출을 보호합니다. App Attest와 같은 증명 제공업체의 토큰을 확인하여 이를 실행합니다. 앱을 앱 체크와 통합하면 악의적인 요청으로부터 보호할 수 있으므로 승인되지 않은 API 호출에 대한 요금이 청구되지 않습니다.
앱 체크가 나에게 적합한가요?
대부분의 경우 앱 체크를 사용하는 것이 좋지만 다음 경우에는 앱 체크가 필요하지 않거나 지원되지 않습니다.
- 원래 Places SDK를 사용하고 있습니다. App Check는 Places SDK (신규)에서만 지원됩니다.
- 비공개 또는 실험용 앱 앱에 공개적으로 액세스할 수 없는 경우 앱 체크는 필요하지 않습니다.
- 앱이 서버 간 전용으로 사용되는 경우 앱 체크는 필요하지 않습니다. 하지만 GMP와 통신하는 서버가 공개 클라이언트 (예: 모바일 앱)에서 사용되는 경우 GMP 대신 App Check를 사용하여 해당 서버를 보호하는 것이 좋습니다.
- 앱 체크에서 권장하는 증명 제공자는 증명 제공자가 손상되었거나 신뢰할 수 없다고 간주하는 기기에서 작동하지 않습니다. 이러한 기기를 지원해야 하는 경우 맞춤 증명 서비스를 배포할 수 있습니다. 자세한 내용은 안내를 참고하세요.
구현 단계 개요
앱을 App Check와 통합하는 단계는 대략 다음과 같습니다.
- 앱에 Firebase를 추가합니다.
- 앱 체크 라이브러리를 추가하고 초기화합니다.
- 앱에 토큰 제공자를 추가합니다.
- Places 및 앱 체크 API를 초기화합니다.
- 디버깅을 사용 설정합니다.
- 앱 요청을 모니터링하고 시정 조치를 결정합니다.
App Check와 통합하면 Firebase Console에서 백엔드 트래픽 측정항목을 확인할 수 있습니다. 이 측정항목은 유효한 앱 체크 토큰이 있는지 여부에 따라 요청을 분류하여 보여줍니다. 자세한 내용은 Firebase 앱 체크 문서를 참고하세요.
대부분의 요청이 합법적인 소스에서 발생하고 사용자가 앱 체크 구현이 포함된 앱의 최신 버전으로 업데이트했음을 확신할 수 있으면 시행을 사용 설정할 수 있습니다. 적용을 사용 설정하면 앱 체크에서 유효한 앱 체크 토큰이 없는 모든 트래픽을 거부합니다.
앱 체크 통합을 계획할 때의 고려사항
통합을 계획할 때 고려해야 할 사항은 다음과 같습니다.
권장되는 증명 제공자인 Device Check 또는 App Attest에는 Apple에서 설정한 할당량과 제한이 적용됩니다.
맞춤 증명 제공업체를 사용할 수도 있지만 이는 고급 사용 사례입니다. 자세한 내용은 Firebase 앱 체크 문서를 참고하세요.
-
앱 사용자는 시작 시 약간의 지연을 경험하게 됩니다. 하지만 그 후에는 주기적인 재증명이 백그라운드에서 발생하므로 사용자는 더 이상 지연을 경험하지 않아도 됩니다. 시작 시 정확한 지연 시간은 선택한 증명 제공업체에 따라 다릅니다.
앱 체크 토큰이 유효한 시간 (수명 또는 TTL)에 따라 재증명 빈도가 결정됩니다. 이 기간은 Firebase Console에서 구성할 수 있습니다. 재증명은 TTL의 약 절반이 경과하면 발생합니다. 자세한 내용은 증명 기관의 Firebase 문서를 참고하세요.
앱을 앱 체크와 통합
기본 요건
- Places SDK 버전 9.2 이상이 설치된 앱
- 앱의 번들 ID
- Apple Member Center의 'Membership(멤버십)'에서 팀 ID를 확인합니다.
- 기기 확인을 사용하려는 경우 비공개 키 파일 및 키 ID
- Cloud 콘솔에서 앱의 소유자여야 합니다.
- Cloud 콘솔의 앱 프로젝트 ID가 필요합니다.
1단계: 앱에 Firebase 추가
Firebase 개발자 문서의 안내에 따라 앱에 Firebase를 추가합니다.
앱을 등록하면 구성 파일 GoogleService-Info.plist
이 생성됩니다. 수정하지 않은 이 파일을 앱의 루트 수준에 추가합니다.
Swift
import FirebaseCore import FirebaseAppCheck import GooglePlaces
Objective-C
@import FirebaseCore; @import FirebaseAppCheck; @import GooglePlaces;
2단계: 앱 체크 라이브러리 추가 및 앱 체크 초기화
Firebase에서는 각 기본 증명 공급자에 대한 안내를 제공합니다. 이 안내에서는 Firebase 프로젝트를 설정하고 앱에 App Check 라이브러리를 추가하는 방법을 설명합니다. 제공된 코드 샘플에 따라 App Check를 초기화합니다.
- Firebase 안내에 따라 앱 체크 라이브러리를 추가합니다.
- 앱 체크를 초기화합니다.
- App Attest를 사용하는 경우 App Attest에 관한 Firebase 개발자 문서를 따르세요.
Firebase App Check 안내에 따라
AppCheckProviderFactory
구현을 만들고AppDelegate
파일에 추가합니다.Swift
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory)
Objective-C
YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- 기기 확인을 사용하는 경우
AppDelegate
에 다음을 추가합니다.Swift
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
Objective-C
[FIRAppCheck setAppCheckProviderFactory:providerFactory];
- App Attest를 사용하는 경우 App Attest에 관한 Firebase 개발자 문서를 따르세요.
3단계: 토큰 제공업체 추가
앱의 루트 수준에서 AppCheckTokenProvider
라는 파일 (또는 Objective-C를 사용하는 경우 AppCheckTokenProvider.h
및 AppCheckTokenProvider.m
라는 두 파일)을 만듭니다.
다음 가져오기 문과 클래스 정의를 추가합니다.
Swift
// AppCheckTokenProvider.swift import FirebaseAppCheck import Foundation import GooglePlaces class AppCheckTokenProvider: NSObject, GMSPlacesAppCheckTokenProvider { func fetchAppCheckToken() async throws -> String { return try await AppCheck.appCheck().token(forcingRefresh: false).token } }
Objective-C
// AppCheckTokenProvider.h @import Foundation; @import GooglePlaces; @interface AppCheckTokenProvider : NSObject <GMSPlacesAppCheckTokenProvider> @end // AppCheckTokenProvider.m #import "AppCheckTokenProvider.h" @import FirebaseAppCheck; @implementation AppCheckTokenProvider - (void)fetchAppCheckTokenWithCompletion:(nonnull GMSAppCheckTokenCompletion)completion { [[FIRAppCheck appCheck] tokenForcingRefresh:NO completion:^(FIRAppCheckToken *_Nullable token, NSError *_Nullable error) { if (token) { completion(token.token, nil); } else { completion(nil, error); } }]; } @end
4단계: 장소 및 앱 확인 API 초기화
AppDelegate
파일에서 Places API를 초기화합니다.Swift
GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
Objective-C
[GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
- 그런 다음 앱 체크 API를 초기화합니다.
Swift
GMSPlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())
Objective-C
[GMSPlacesClient setAppCheckTokenProvider:[[AppCheckTokenProvider alloc] init]];
5단계: 디버깅 사용 설정 (선택사항)
로컬에서 앱을 개발 및 테스트하거나 지속적 통합 (CI) 환경에서 실행하려면 디버그 비밀을 사용하여 유효한 앱 체크 토큰을 가져오는 앱의 디버그 빌드를 만들면 됩니다. 이렇게 하면 디버그 빌드에서 실제 증명 제공업체를 사용하지 않아도 됩니다.
시뮬레이터 또는 테스트 기기에서 앱을 테스트하려면 다음 단계를 따르세요.
앱 체크 디버그 제공자 팩토리를 만들고 설정합니다.
이 코드 샘플은 디버깅 및 프로덕션 시나리오를 모두 처리합니다.Swift
#if targetEnvironment(simulator) let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif
Objective-C
if (targetEnvironment == simulator){ FIRAppCheckDebugProviderFactory *providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; } else { YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; }
- Xcode 프로젝트에서 로깅을 사용 설정하고 앱을 실행한 다음 로그에서 로컬 디버그 토큰을 찾습니다.
- 이 토큰을 Firebase Console에 추가합니다.
- 자세한 내용과 안내는 앱 체크 문서를 참고하세요.
CI 환경에서 앱을 실행하려면 다음 안내를 따르세요.
- Firebase Console에서 디버그 토큰을 만들고 CI 시스템의 보안 키 저장소에 추가합니다.
- Xcode에서 이름이
FIRAAppCheckDebugToken
이며$(APP_CHECK_DEBUG_TOKEN)
(또는 유사한 값)으로 환경 변수를 테스트 스키마에 추가합니다. - CI 테스트 스크립트에서 디버그 토큰을 환경으로 전달
앱 체크 디버그 제공자 팩토리를 만들고 설정합니다.
이 코드 샘플은 디버깅 및 프로덕션 시나리오를 모두 처리합니다.Swift
#if targetEnvironment(ci) let providerFactory = AppCheckDebugProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) #else let providerFactory = YourAppCheckProviderFactory() #endif
Objective-C
if (targetEnvironment == ci) { FIRAppCheckDebugProviderFactory *providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; } else { YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; }
- 자세한 내용과 안내는 앱 체크 문서를 참고하세요.
6단계: 앱 요청 모니터링 및 시정 조치 결정
시정 조치를 시작하기 전에 앱의 적법한 사용자가 방해받지 않도록 해야 합니다. 이렇게 하려면 앱 체크 측정항목 화면으로 이동하여 앱 트래픽 중 확인된 트래픽, 오래된 트래픽, 잘못된 트래픽의 비율을 확인하세요. 트래픽의 대부분이 인증되면 시행을 사용 설정할 수 있습니다.
자세한 내용과 안내는 Firebase 앱 체크 문서를 참고하세요.