플랫폼 선택: Android iOS JavaScript

App Check를 사용하여 API 키 보호

Firebase 앱 체크는 정상적인 앱 이외의 소스에서 발생하는 트래픽을 차단하여 앱에서 Google Maps Platform으로의 호출을 보호합니다. Play Integrity와 같은 증명 제공업체의 토큰을 확인하여 이를 수행합니다. 앱을 앱 체크와 통합하면 악의적인 요청을 방지하여 승인되지 않은 API 호출에 대한 요금이 청구되지 않습니다.

앱 체크가 나에게 적합한가요?

대부분의 경우 App Check가 권장되지만 다음 경우에는 App Check가 필요하지 않거나 지원되지 않습니다.

  • 원본 Places SDK를 사용하고 있습니다. App Check는 Places SDK (신규)에서만 지원됩니다.
  • 비공개 또는 실험용 앱 앱에 공개적으로 액세스할 수 없는 경우 App Check는 필요하지 않습니다.
  • 앱이 서버 간으로만 사용되는 경우 앱 확인이 필요하지 않습니다. 하지만 GMP와 통신하는 서버가 모바일 앱과 같은 공개 클라이언트에서 사용되는 경우 GMP 대신 App Check를 사용하여 해당 서버를 보호하는 것이 좋습니다.
  • 앱 체크의 권장 증명 제공자는 증명 제공자가 보안이 취약하거나 신뢰할 수 없는 것으로 간주하는 기기에서는 작동하지 않습니다. 이러한 기기를 지원해야 하는 경우 맞춤 증명 서비스를 배포하면 됩니다. 자세한 내용은 안내를 참고하세요.

구현 단계 개요

대략적으로 앱을 앱 확인과 통합하는 단계는 다음과 같습니다.

  1. 앱에 Firebase를 추가합니다.
  2. 앱 체크 라이브러리를 추가하고 초기화합니다.
  3. 토큰 제공업체를 추가합니다.
  4. 디버깅을 사용 설정합니다.
  5. 앱 요청을 모니터링하고 시행 여부를 결정합니다.

App Check와 통합하면 Firebase 콘솔에서 백엔드 트래픽 측정항목을 확인할 수 있습니다. 이러한 측정항목은 유효한 앱 체크 토큰이 포함되었는지 여부에 따라 요청을 분류합니다. 자세한 내용은 Firebase 앱 체크 문서를 참고하세요.

대부분의 요청이 합법적인 소스에서 발생하고 사용자가 앱 체크 구현이 포함된 최신 버전의 앱으로 업데이트한 것이 확실하면 시행을 사용 설정할 수 있습니다. 적용이 사용 설정되면 앱 체크에서 유효한 앱 체크 토큰이 없는 모든 트래픽을 거부합니다.

앱 체크 통합 계획 시 고려사항

통합을 계획할 때 고려해야 할 사항은 다음과 같습니다.

  • Google에서 권장하는 증명 제공업체인 Play Integrity에는 표준 API 사용 등급의 일일 호출 한도가 있습니다. 호출 한도에 관한 자세한 내용은 Google Play Integrity 개발자 문서의 설정 페이지를 참고하세요.

    맞춤 증명 제공업체를 사용할 수도 있지만 이는 고급 사용 사례입니다. 자세한 내용은 맞춤 앱 체크 제공자 구현을 참고하세요.

  • 앱 사용자는 시작 시 약간의 지연을 경험하게 됩니다. 하지만 이후에는 주기적인 재증명이 백그라운드에서 이루어지므로 사용자에게 더 이상 지연 시간이 발생하지 않습니다. 시작 시 정확한 지연 시간은 선택한 증명 제공업체에 따라 달라집니다.

    앱 체크 토큰이 유효한 시간 (수명 또는 TTL)에 따라 재증명의 빈도가 결정됩니다. 이 기간은 Firebase Console에서 구성할 수 있습니다. 재증명은 TTL의 약 절반이 경과하면 발생합니다. 자세한 내용은 증명 제공업체의 Firebase 문서를 참고하세요.

앱을 앱 체크와 통합

기본 요건 및 요구사항

  • 버전 4.1 이상의 Places SDK가 통합된 앱
  • 앱의 SHA-256 지문입니다.
  • 앱의 패키지 이름입니다.
  • Cloud Console에서 앱의 소유자여야 합니다.
  • Cloud 콘솔의 앱 프로젝트 ID가 필요합니다.

1단계: 앱에 Firebase 추가

Firebase 개발자 문서의 안내에 따라 앱에 Firebase를 추가합니다.

2단계: 앱 체크 라이브러리 추가 및 앱 체크 초기화

기본 증명 제공자인 Play Integrity 사용에 관한 자세한 내용은 Android에서 Play Integrity로 앱 체크 사용 시작하기를 참고하세요.

  1. 아직 하지 않았다면 Places SDK를 앱에 통합합니다.
  2. 다음으로 App CheckPlaces 클라이언트를 초기화합니다.

    // Initialize App Check
    FirebaseApp.initializeApp(/* context= */ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            PlayIntegrityAppCheckProviderFactory.getInstance());
      
    // Initialize Places SDK
    Places.initializeWithNewPlacesApiEnabled(context, API_KEY);
    PlacesClient client = Places.createClient(context);.

3단계: 토큰 제공자 추가

Places API를 초기화한 후 setPlacesAppCheckTokenProvider()를 호출하여 PlacesAppCheckTokenProvider를 설정합니다.

Places.initializeWithNewPlacesApiEnabled(context, API_KEY);
Places.setPlacesAppCheckTokenProvider(new TokenProvider());
PlacesClient client = Places.createClient(context);.

다음은 토큰 가져오기 프로그램 인터페이스의 샘플 구현입니다.

  /** Sample client implementation of App Check token fetcher interface. */
  static class TokenProvider implements PlacesAppCheckTokenProvider {
    @Override
    public ListenableFuture<String> fetchAppCheckToken() {
      SettableFuture<String> future = SettableFuture.create();
      FirebaseAppCheck.getInstance()
          .getAppCheckToken(false)
          .addOnSuccessListener(
              appCheckToken -> {
                future.set(appCheckToken.getToken());
              })
          .addOnFailureListener(
              ex -> {
                future.setException(ex);
              });

      return future;
    }
  }

4단계: 디버깅 사용 설정 (선택사항)

로컬에서 앱을 개발 및 테스트하거나 지속적 통합 (CI) 환경에서 앱을 실행하려면 디버그 비밀을 사용하여 유효한 앱 체크 토큰을 획득하는 앱의 디버그 빌드를 만들면 됩니다. 이렇게 하면 디버그 빌드에서 실제 증명 제공자를 사용하지 않아도 됩니다.

에뮬레이터 또는 테스트 기기에서 앱을 실행하려면 다음 단계를 따르세요.

  • build.gradle 파일에 앱 체크 라이브러리를 추가합니다.
  • 디버그 빌드에서 디버그 제공자 팩토리를 사용하도록 앱 체크를 구성합니다.
  • 앱을 실행하면 로컬 디버그 토큰이 생성됩니다. 이 토큰을 Firebase Console에 추가합니다.
  • 자세한 내용과 안내는 앱 체크 문서를 참고하세요.

CI 환경에서 앱을 실행하려면 다음 단계를 따르세요.

  • Firebase Console에서 디버그 토큰을 만들고 CI 시스템의 보안 키 저장소에 추가합니다.
  • build.gradle 파일에 앱 체크 라이브러리를 추가합니다.
  • 디버그 토큰을 사용하도록 CI 빌드 변형을 구성합니다.
  • 테스트 클래스에서 앱 체크 토큰이 필요한 코드를 DebugAppCheckTestHelper로 래핑합니다.
  • 자세한 내용과 안내는 앱 체크 문서를 참고하세요.

5단계: 앱 요청 모니터링 및 시정 조치 결정

시행을 시작하기 전에 앱의 적법한 사용자를 방해하지 않는지 확인해야 합니다. 이렇게 하려면 앱 체크 측정항목 화면을 방문하여 앱 트래픽 중 인증된 트래픽, 오래된 트래픽, 불법 트래픽의 비율을 확인하세요. 대부분의 트래픽이 인증된 것으로 확인되면 시행을 사용 설정할 수 있습니다.

자세한 내용과 안내는 Firebase 앱 체크 문서를 참고하세요.