Firebase অ্যাপ চেকের মাধ্যমে Gemini API-এর অপব্যবহার প্রতিরোধ করুন

যখন আপনি কোনো মোবাইল বা ওয়েব অ্যাপ থেকে সরাসরি কোনো এপিআই কল করেন (উদাহরণস্বরূপ, যে এপিআইগুলো জেনারেটিভ এআই মডেলে অ্যাক্সেস দেয়), তখন অননুমোদিত ক্লায়েন্টদের দ্বারা এপিআইটি অপব্যবহারের ঝুঁকিতে থাকে। এই এপিআইগুলোকে অপব্যবহার থেকে রক্ষা করতে, আপনি Firebase App Check ব্যবহার করে যাচাই করতে পারেন যে সমস্ত ইনকামিং এপিআই কল আপনার আসল অ্যাপ এবং একটি অক্ষত ডিভাইস থেকেই আসছে।

ফায়ারবেস এআই লজিক একটি প্রক্সি গেটওয়ে প্রদান করে, যা আপনাকে Firebase App Check সাথে ইন্টিগ্রেট করতে এবং আপনার মোবাইল ও ওয়েব অ্যাপ দ্বারা কল করা জেনারেটিভ এআই মডেল এপিআইগুলোকে সুরক্ষিত রাখতে সাহায্য করে। ফায়ারবেস এআই লজিক এসডিকে-এর সাথে App Check ব্যবহার করে আমাদের সমস্ত কনফিগারেশন সাপোর্ট করা যায়:

  • উভয় 'জেমিনি এপিআই' প্রদানকারীকে সুরক্ষা দেয়: জেমিনি ডেভেলপার এপিআই এবং ভার্টেক্স এআই জেমিনি এপিআই

  • জেমিনিইমাজেন মডেলসহ সকল সমর্থিত মডেলকে সুরক্ষা দেয়।

App Check রিপ্লে প্রোটেকশনও সমর্থন করে, যার অর্থ হলো একটি App Check টোকেন শুধুমাত্র একবারই ব্যবহার করা যাবে।

App Check কীভাবে কাজ করে তার একটি উচ্চ-স্তরের সারসংক্ষেপ

App Check মাধ্যমে, আপনার অ্যাপ চালিত ডিভাইসগুলো একটি অ্যাপ বা ডিভাইস অ্যাটেস্টেশন প্রোভাইডার ব্যবহার করে, যা নিম্নলিখিত এক বা উভয় বিষয় যাচাই করে:

  • অনুরোধগুলি আপনার আসল অ্যাপ থেকে আসে
  • অনুরোধগুলি একটি খাঁটি, অপরিবর্তিত ডিভাইস থেকে আসে।

আপনার অ্যাপ Firebase AI Logic SDK ব্যবহার করে করা প্রতিটি অনুরোধের সাথে এই অ্যাটেস্টেশনটি সংযুক্ত থাকে। যখন App Check কার্যকর করা হয়, তখন বৈধ অ্যাটেস্টেশন ছাড়া ক্লায়েন্টদের অনুরোধ প্রত্যাখ্যান করা হবে; একইভাবে, আপনার দ্বারা অনুমোদিত নয় এমন কোনো অ্যাপ বা প্ল্যাটফর্ম থেকে আসা অনুরোধও বাতিল করা হবে।

App Check সেট আপ করার সময়, রিপ্লে প্রোটেকশন যোগ করার কথা বিবেচনা করুন, যা App Check টোকেনগুলোকে শুধুমাত্র একবার ব্যবহারযোগ্য করে তোলে। এই অপশনটি বেসলাইন প্রোটেকশনের চেয়েও উন্নত সুরক্ষা প্রদান করে এবং আপনাকে আপনার অ্যাপ ও ব্যবহারের ক্ষেত্র অনুযায়ী সুরক্ষার একটি উপযুক্ত স্তর নির্ধারণ করার সুযোগ দেয়।

আপনি App Check সম্পর্কে বিস্তারিত তথ্য , এর কোটা এবং সীমা সহ, এর ডকুমেন্টেশনে খুঁজে পেতে পারেন।

App Check সেট আপ করুন

App Check ডকুমেন্টেশনে অ্যাটেস্টেশন প্রোভাইডারদের বিশদ বিবরণের পাশাপাশি বিস্তারিত বাস্তবায়ন নির্দেশাবলীও দেওয়া আছে।

  1. একটি অ্যাটেস্টেশন প্রদানকারী বেছে নিন, এবং নিম্নলিখিত লিঙ্কগুলিতে দেওয়া বাস্তবায়ন নির্দেশাবলী অনুসরণ করুন:

    মনে রাখবেন যে, যদি এই অ্যাটেস্টেশন প্রোভাইডারগুলোর কোনোটিই আপনার প্রয়োজনের জন্য যথেষ্ট না হয়, তাহলে আপনি একটি কাস্টম প্রোভাইডার প্রয়োগ করতে পারেন যা হয় কোনো থার্ড-পার্টি অ্যাটেস্টেশন প্রোভাইডার অথবা আপনার নিজস্ব অ্যাটেস্টেশন কৌশল ব্যবহার করে।

  2. (আবশ্যক) আপনার অ্যাপটি কোনো সর্বজনীনভাবে উপলব্ধ সোর্স কোড কন্ট্রোল সিস্টেমে কমিট করার আগে, শেয়ার করার আগে, বা সর্বজনীনভাবে উপলব্ধ করার আগে App Check এনফোর্সমেন্ট সক্রিয় করুন

  3. (সুপারিশকৃত) রিপ্লে প্রোটেকশন যোগ করে সুরক্ষা আরও জোরদার করুন , যার অর্থ হলো একটি App Check টোকেন শুধুমাত্র একবারই ব্যবহার করা যাবে।

  4. For local development when App Check is enforced, configure the App Check debug provider to bypass attestation while still maintaining the enforcement of App Check . See setup instructions for your platform: iOS+ | Android | Web | Flutter | Unity .

রিপ্লে প্রোটেকশন যোগ করে সুরক্ষা আরও জোরদার করুন।

আমরা সর্বশেষ SDK সংস্করণগুলো ব্যবহার করার পরামর্শ দিই, কিন্তু রিপ্লে সুরক্ষা ব্যবহার করার জন্য নিশ্চিত করুন যে আপনি এই সংস্করণগুলোর মধ্যে অন্তত একটি ব্যবহার করছেন:
অ্যাপল প্ল্যাটফর্ম v12.2.0+ | অ্যান্ড্রয়েড BoM v34.14.0+ ( App Check v19.1.0+) | ওয়েব v12.14.0+ | ফ্লাটার v4.15.0+ ( App Check v4.10.0+) | ইউনিটি v13.12.0+

ডিফল্টরূপে, App Check সেশন টোকেন ব্যবহার করে, যেগুলোর ৩০ মিনিট থেকে ৭ দিনের মধ্যে একটি কনফিগারযোগ্য টাইম টু লিভ (TTL) থাকে। এই সেশন টোকেনগুলো App Check SDK দ্বারা ক্যাশ করা হয়, আপনার অ্যাপ থেকে করা অনুরোধের সাথে পাঠানো হয় এবং এগুলোর TTL শেষ না হওয়া পর্যন্ত পুনরায় ব্যবহার করা যায়। সেশন টোকেন ব্যবহার করাকে বেসলাইন সুরক্ষা হিসেবে বিবেচনা করা হয়।

তবে, আপনি রিপ্লে সুরক্ষা প্রয়োগ করে এই প্রাথমিক সুরক্ষার বাইরেও সুরক্ষা বাড়াতে পারেন, যা এর পরিবর্তে সীমিত-ব্যবহারের টোকেন ব্যবহার করে। যখন রিপ্লে সুরক্ষা প্রয়োগ করা হয়, তখন নিম্নলিখিত ঘটনাগুলো ঘটে:

  • App Check সেশন টোকেন ব্যবহার করে ফায়ারবেস এআই লজিক- এ পাঠানো অনুরোধগুলিকে ব্লক করবে। এর পরিবর্তে, App Check শুধুমাত্র তখনই ফায়ারবেস এআই লজিক- এ কোনো অনুরোধের অনুমতি দেবে, যদি সেটি একটি নতুন তৈরি সীমিত-ব্যবহারের টোকেন ব্যবহার করে।

  • সীমিত-ব্যবহারের টোকেনটি যাচাই করার পর, টোকেনটি এমনভাবে ব্যবহৃত হয়ে যায় যাতে এটি কেবল একবারই ব্যবহার করা যায়, যা রিপ্লে অ্যাটাক প্রতিরোধ করে।

  • App Check এসডিকে প্রতিটি অনুরোধের জন্য একটি নতুন সীমিত-ব্যবহারের টোকেন তৈরি করে। মনে রাখবেন যে এই প্রক্রিয়াটি আপনার অনুরোধগুলিতে কিছু লেটেন্সি এবং কখনও কখনও খরচ যোগ করে প্রভাব ফেলতে পারে (যা আপনার অ্যাটেস্টেশন প্রদানকারীর উপর নির্ভর করে)।

রিপ্লে সুরক্ষা স্থাপন ও প্রয়োগ করুন

এই পৃষ্ঠায় প্রদানকারী-নির্দিষ্ট বিষয়বস্তু এবং কোড দেখতে আপনার জেমিনি এপিআই প্রদানকারীর উপর ক্লিক করুন।

রিপ্লে সুরক্ষা সেট আপ এবং কার্যকর করার পদ্ধতি নিচে দেওয়া হলো:

  1. যদি এখনও না করে থাকেন, তাহলে আপনার অ্যাপের জন্য App Check প্রয়োগ করুন এবং App Check এনফোর্সমেন্ট সক্রিয় করুন

  2. সীমিত-ব্যবহারের টোকেন ব্যবহার সক্ষম করুন।

    আপনার অ্যাপে ইনস্ট্যানসিয়েশনের সময়, useLimitedUseAppCheckTokens প্যারামিটারটি true তে সেট করুন:

    সুইফট

    
    // ...
    
    // 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,
    );
    
    // ...
    
    

    ঐক্য

    // ...
    
    // During instantiation, enable usage of limited-use tokens
    var ai = FirebaseAI.GetInstance(
      useLimitedUseAppCheckTokens: true
    );
    
    // ...
    
  3. রিপ্লে সুরক্ষা কার্যকর করুন।

    1. আপনার অ্যাপের কোডবেসে, সীমিত-ব্যবহারের টোকেন ব্যবহার সক্ষম করা আছে কিনা তা নিশ্চিত করুন (পূর্ববর্তী ধাপ দেখুন)।

    2. Firebase কনসোলে, Security > App Check- এ যান।

    3. Firebase AI Logic- এর মেট্রিক্স ভিউটি প্রসারিত করুন।

    4. বেসলাইন সুরক্ষা বলবৎ আছে কিনা তা নিশ্চিত করুন, তারপর ' চালিয়ে যান'-এ ক্লিক করুন।

    5. রিপ্লে সুরক্ষার জন্য, আনএনফোর্সড (শুধুমাত্র পর্যবেক্ষণ) অথবা এনফোর্সড বেছে নিন।

      কখন রিপ্লে সুরক্ষা প্রয়োগ করতে হবে, সেই সিদ্ধান্ত নিতে নিম্নলিখিত বিষয়গুলো বিবেচনা করুন:

      • আপনার ব্যবহারকারীদের একটি উল্লেখযোগ্য অংশ যদি সীমিত-ব্যবহারের টোকেন ব্যবহার সক্ষম না করে আপনার অ্যাপের পূর্ববর্তী সংস্করণ ব্যবহার করে থাকেন, তবে আপনার অনুরোধগুলি নিরীক্ষণ করার পরামর্শ দেওয়া হয়। আপনি যদি অবিলম্বে রিপ্লে সুরক্ষা প্রয়োগ করেন, তাহলে সেই ব্যবহারকারীদের অনুরোধগুলি ব্লক হয়ে যাবে।

      • আপনি বিশেষভাবে ‘Unverified: Reused token’ মেট্রিকটি মনিটর করতে পারেন, যা হলো সেইসব রিকোয়েস্টের সংখ্যা, যেগুলোর টোকেন ইতিমধ্যেই পূর্ববর্তী কোনো রিকোয়েস্টে ব্যবহৃত হয়েছে। Firebase কনসোলে এই মেট্রিকটি মনিটর করুন ( Security > App Check > APIs ট্যাবে যান)।

        যদি সাম্প্রতিক অনুরোধগুলির একটি উল্লেখযোগ্য অংশ এই বিভাগের অন্তর্ভুক্ত হয়, তাহলে আপনি ব্যবহারকারীদের অসুবিধা এড়াতে পারেন এবং আরও বেশি ব্যবহারকারী আপনার অ্যাপের এমন একটি সংস্করণে আপডেট না করা পর্যন্ত রিপ্লে সুরক্ষা প্রয়োগ করা থেকে বিরত থাকার কথা বিবেচনা করতে পারেন, যেটি সীমিত-ব্যবহারের টোকেন ব্যবহার করে।

Firebase AI Logic কীভাবে App Check সাথে সমন্বিত হয় তা বুঝুন

Firebase AI Logic SDK ব্যবহার করার জন্য, আপনার Firebase প্রজেক্টে Firebase AI Logic API ( firebasevertexai.googleapis.com ) অবশ্যই সক্রিয় থাকতে হবে। এর কারণ হলো, Firebase AI Logic SDK দ্বারা করা অনুরোধগুলো প্রথমে Firebase AI Logic সার্ভারে পাঠানো হয়, যা একটি প্রক্সি গেটওয়ে হিসেবে কাজ করে। এই সার্ভারেই Firebase App Check যাচাইকরণ সম্পন্ন হয় এবং এরপরই অনুরোধটি আপনার নির্বাচিত " Gemini API " প্রদানকারীর ব্যাকএন্ড এবং GeminiImagen মডেলগুলো অ্যাক্সেস করার জন্য API-গুলোতে যাওয়ার অনুমতি পায়।

(Optional) Enforce App Check without a production attestation provider (debug provider only)

আপনি কোনো প্রোডাকশন অ্যাটেস্টেশন প্রোভাইডারের সাথে আপনার অ্যাপ রেজিস্টার না করেই AI Logic-এর জন্য App Check প্রয়োগ করতে পারেন। এই সেটআপটি আপনাকে Gemini API সুরক্ষিত রেখেই আরও সহজে AI Logic-এর সাথে কাজ শুরু করার জন্য App Check ডিবাগ প্রোভাইডার ব্যবহার করতে দেয়।

  1. এআই লজিকের জন্য App Check ইতিমধ্যেই কার্যকর করা আছে কিনা তা যাচাই করুন।

    1. Firebase কনসোলে, Security > App Check > APIs ট্যাবে যান।

    2. Firebase AI Logic- এর সারিটি খুঁজুন। যদি সেখানে Unenforced লেখা থাকে, তাহলে এই নির্দেশাবলীর বাকি অংশ অনুসরণ করুন।

  2. Firebase AI Logic- এর জন্য App Check বাধ্যতামূলক করতে App Check REST API ব্যবহার করুন।

    projects.services.patch এন্ডপয়েন্টে একটি অনুরোধ পাঠান।

    • নিম্নলিখিত অনুরোধ প্যারামিটারগুলি নির্দিষ্ট করুন:

      • PROJECT_NUMBER : আপনার ফায়ারবেস প্রজেক্ট নম্বর।
        এই প্রজেক্ট আইডেন্টিফায়ারটি খুঁজুন Firebase কনসোলের > সাধারণ ট্যাব

      • SERVICE_ID : firebasevertexai.googleapis.com
        এই আইডিটি হলো Firebase AI Logic API- এর অফিশিয়াল সার্ভিস নেম, এবং আপনি Vertex AI Gemini API অথবা Gemini Developer API অ্যাক্সেস করুন না কেন, এটি বৈধ।

      • updateMask : enforcementMode

    • অনুরোধের মূল অংশে নিম্নলিখিত বিষয়গুলো উল্লেখ করুন:

      • "enforcementMode": "ENFORCED"
  3. এখন যেহেতু App Check বাধ্যতামূলক করা হয়েছে, লোকাল ডেভেলপমেন্টের জন্য আপনাকে App Check ডিবাগ প্রোভাইডারটি এমনভাবে কনফিগার করতে হবে যাতে এটি অ্যাটেস্টেশন বাইপাস করে এবং একই সাথে App Check প্রয়োগও বজায় রাখে।

    ডিবাগ প্রোভাইডার কনফিগার করার বিস্তারিত তথ্যের জন্য, আপনার প্ল্যাটফর্মের নির্দেশাবলী দেখুন: iOS+ | Android | Web | Flutter | Unity