모바일 또는 웹 앱에서 직접 API를 호출하면 (예: 생성형 AI 모델에 액세스할 수 있는 API) API가 승인되지 않은 클라이언트의 악용에 취약해집니다. 이러한 API를 악용으로부터 보호하려면 Firebase App Check를 사용하여 모든 수신 API 호출 이 실제 앱과 변조되지 않은 기기에서 비롯되는지 확인할 수 있습니다.
Firebase AI Logic는 Firebase App Check와 통합하고 모바일 및 웹 앱에서 호출하는 생성형 AI 모델 API를 보호할 수 있는 프록시 게이트웨이를 제공합니다. App Check와 함께 Firebase AI Logic SDK를 사용하면 모든 구성을 지원합니다.
Gemini API" 제공자: Gemini Developer API 및 Vertex AI Gemini API를 모두 보호합니다.
Gemini 모델과 Imagen 모델을 비롯한 모든 지원되는 모델을 보호합니다.
App Check은(는) 재생 보호도 지원합니다. 즉, App Check 토큰은 한 번만 사용할 수 있습니다.
App Check 작동 방식에 관한 대략적인 요약
App Check를 사용하면 앱을 실행하는 기기는 다음 중 하나 또는 둘 모두를 확인하는 앱 또는 기기 증명 프로바이더를 사용합니다.
- 요청이 인증된 앱에서 발생함
- 요청이 변조되지 않은 인증된 기기에서 발생함
이 증명은 Firebase AI Logic SDK를 사용하여 앱에서 수행하는 모든 요청에 연결됩니다. App Check이(가) 적용되면 유효한 증명이 없는 클라이언트의 요청이 거부되며 승인하지 않은 앱이나 플랫폼에서 발생한 요청도 거부됩니다.
App Check을 설정할 때 App Check 토큰을 일회성으로만 사용할 수 있도록 하는 재생 보호를 추가하는 것이 좋습니다. 이 옵션은 기본 보호 이상의 향상된 보호를 제공하며 앱과 사용 사례에 적절한 수준의 보호를 설정할 수 있도록 합니다.
할당량 및 한도를 비롯한 에 관한 App Check 자세한 내용은 문서를 참고하세요.
App Check 설정
App Check 문서에서는 증명 제공자와 자세한 구현 안내를 제공합니다.
증명 제공자를 선택하고 다음 링크의 구현 안내를 따르세요.
- Apple 플랫폼: DeviceCheck 또는 App Attest
- Android: Play Integrity
- 웹: reCAPTCHA Enterprise
- Flutter: 위의 모든 기본 제공자를 지원합니다.
이전 플러그인 버전을 사용하는 경우 아래의 특수 인스턴스화에 관한 참고사항을 참고하세요. Flutter 및 App Check의 경우. - Unity: 위의 모든 기본 제공자를 지원합니다.
이러한 증명 제공자 중 어느 것도 요구사항을 충족하지 않는 경우 서드 파티 증명 제공자 또는 자체 증명 기법을 사용하는 커스텀 제공자를 구현할 수 있습니다.
(필수) App Check 적용을 사용 설정 앱을 공개적으로 사용 가능한 소스 코드 관리 시스템에 커밋하거나 앱을 공유하거나 앱을 공개적으로 사용 가능하게 만들기 전에
(권장) 앱 체크 토큰을 한 번만 사용할 수 있는 재생 보호를 추가하여 보호를 강화하세요.App Check
App Check가 적용될 때 로컬 개발의 경우 App Check 적용을 유지하면서 증명을 우회하도록 디버그 제공자를 구성합니다.App Check 플랫폼별 설정 안내( iOS+ | Android | 웹 | Flutter | Unity)를 참고하세요.
재생 보호를 추가하여 보호 강화
|
최신 SDK 버전을 사용하는 것이 좋지만
재생 보호를 사용하려면 최소한 다음 버전 중 하나를 사용해야 합니다. Apple 플랫폼 v12.2.0 이상 | Android BoM v34.14.0 이상 (App Check v19.1.0 이상) | 웹 v12.14.0 이상 | Flutter v4.15.0 이상 (App Check v4.10.0 이상) | Unity v13.12.0 이상 |
기본적으로 App Check는 세션 토큰을 사용하며, 이 토큰은
하지만 대신 제한된 사용 토큰을 사용하는 재생 보호를 적용하여 이 기본 보호 이상의 보호를 강화할 수 있습니다. 재생 보호가 적용되면 다음이 발생합니다.
App Check은(는) Firebase AI Logic을(를) 사용하는 요청을 차단합니다. 세션 토큰 대신 App Check은 새로 생성된 제한된 사용 토큰을 사용하는 경우에만 allow에 대한 요청을 Firebase AI Logic 합니다.
제한된 사용 토큰이 확인되면 토큰이 한 번만 사용될 수 있도록 소비되므로 재생 공격을 방지할 수 있습니다.
App Check SDK는 각 요청에 대해 새로운 제한된 사용 토큰을 생성합니다. 이 프로세스는 일부 지연 시간과 경우에 따라 비용 (증명 제공자에 따라 다름)을 추가하여 요청에 영향을 미칠 수 있습니다.
재생 보호 설정 및 적용
|
Gemini API 제공자를 클릭하여 이 페이지에서 제공업체별 콘텐츠 및 코드를 확인합니다. |
재생 보호를 설정하고 적용하는 방법은 다음과 같습니다.
아직 구현하지 않았다면 구현하고 App Check 앱에 적용을 사용 설정App Check 하세요.
제한된 사용 토큰 사용을 사용 설정합니다.
인스턴스화 중에 앱에서
useLimitedUseAppCheckTokens매개변수를true로 설정합니다.Swift
// ... // During instantiation, enable usage of limited-use tokens let ai = FirebaseAI.firebaseAI( backend: .googleAI(), useLimitedUseAppCheckTokens: true ) // ...Kotlin
// ... // During instantiation, enable usage of limited-use tokens val ai = Firebase.ai( backend = GenerativeBackend.googleAI(), useLimitedUseAppCheckTokens = true ) // ...Java
// ... // During instantiation, enable usage of limited-use tokens FirebaseAI ai = FirebaseAI.getInstance( /* backend: */ GenerativeBackend.googleAI(), /* useLimitedUseAppCheckTokens: */ true ); // ...Web
// ... // During instantiation, enable usage of limited-use tokens const ai = getAI(firebaseApp, { backend: new GoogleAIBackend(), useLimitedUseAppCheckTokens: true }); // ...Dart
// ... // During instantiation, enable usage of limited-use tokens final ai = await FirebaseAI.googleAI( useLimitedUseAppCheckTokens: true, ); // ...Unity
// ... // During instantiation, enable usage of limited-use tokens var ai = FirebaseAI.GetInstance( useLimitedUseAppCheckTokens: true ); // ...재생 보호를 적용합니다.
앱의 코드베이스에서 제한된 사용 토큰 사용을 사용 설정했는지 확인합니다 (이전 단계 참고).
Firebase Console에서 보안 > 앱 체크로 이동합니다.
Firebase AI Logic의 측정항목 뷰를 펼칩니다.
기본 보호 가 적용됨 으로 설정되어 있는지 확인한 후 계속 을 클릭합니다.
재생 보호에서 적용되지 않음 (모니터링만 해당) 또는 적용됨 을 선택합니다.
재생 보호를 적용할 시점을 결정하려면 다음 사항을 고려하세요.
상당수의 사용자가 제한된 사용 토큰을 사용 설정하지 않고 이전 버전의 앱을 사용할 가능성이 높은 경우 요청을 모니터링하는 것이 좋습니다. 재생 보호를 즉시 적용하면 이러한 사용자의 요청이 차단됩니다.
이전 요청에서 이미 사용된 토큰이 있는 요청의 수인 확인되지 않음: 재사용된 토큰 측정항목을 구체적으로 모니터링할 수 있습니다. Firebase Console에서 이 측정항목을 모니터링합니다 (보안 > 앱 체크 > API 탭으로 이동).
최근 요청의 상당 부분이 이 카테고리에 속하는 경우 사용자를 방해하지 않고 더 많은 사용자가 제한된 사용 토큰을 사용하는 버전의 앱으로 업데이트할 때까지 재생 보호 적용을 기다리는 것이 좋습니다.
Firebase AI Logic이 App Check와 통합되는 방식 이해
Firebase AI Logic SDK를 사용하려면 Firebase 프로젝트에서
Firebase AI Logic API (firebasevertexai.googleapis.com)
를 사용 설정해야 합니다. 이는
Firebase AI Logic SDK에서 수행한 요청이 먼저 Firebase AI Logic
서버로 전송되기 때문입니다. 이 서버는 요청이 선택한
"Gemini API" 제공자의 백엔드와 Gemini
및 Imagen 모델에 액세스하는 API로 진행되기 전에 Firebase App Check 확인
이 이루어지는 프록시 게이트웨이 역할을 합니다.
(선택사항) 프로덕션 증명 제공자 없이 App Check 적용 (디버그 제공자만 해당)
프로덕션 증명 제공자에 앱을 등록하지 않고도 AI Logic에 App Check를 적용할 수 있습니다. 이 설정을 사용하면 App Check 디버그 제공자를 사용하여 AI Logic를 더 쉽게 시작하면서 Gemini API를 계속 보호할 수 있습니다.
App Check가 AI Logic에 이미 적용되어 있는지 확인합니다.
Firebase Console에서 보안 > 앱 체크 > API 탭으로 이동합니다.
Firebase AI Logic의 행을 찾습니다.
Unenforced라고 표시되면 이 안내의 나머지 부분을 계속 진행합니다.
Firebase AI Logic의 행을 클릭하면 측정항목 그래프가 표시됩니다. 그래프 아래에서 설정 을 클릭합니다.
대화상자의 첫 번째 화면 (기본 보호)에서 적용됨을 선택한 후 계속을 클릭합니다.
다음 화면 (재생 보호)에서 사용 중지됨 을 선택합니다. 나중에 언제든지 이 설정을 구성하고 이 설정 워크플로로 돌아갈 수 있습니다. 계속 을 클릭합니다.
마지막 화면에서 App Check 적용에 관한 고려사항을 검토하여 App Check을(를) 적용할 준비가 되었는지 확인합니다. 준비가 되었다면 계속 을 클릭합니다.
앱 체크를 적용하고 프로덕션 전 앱에서 AI 로직과 함께 디버그 제공자만 사용하려는 경우 앱을 등록할 필요가 없습니다. 하지만 최종 사용자에게 앱을 출시할 준비가 되면 프로덕션 증명 제공자 (예: App Attest, Play Integrity 또는 reCAPTCHA Enterprise)를 설정하는 과정에서 앱을 등록해야 합니다.App CheckAI Logic
App Check가 적용될 때 로컬 개발의 경우 App Check 적용을 유지하면서 증명을 우회하도록 App Check 디버그 제공자를 구성해야 합니다.
디버그 제공자 구성에 관한 자세한 내용은 플랫폼별 안내( iOS+ | Android | 웹 | Flutter | Unity)를 참고하세요.