প্রমাণীকরণ করুন এবং একটি ডাটাবেসের সাথে সংযোগ করুন

শুধুমাত্র ক্লাউড ফায়ারস্টোর এন্টারপ্রাইজ সংস্করণের জন্য প্রাসঙ্গিক।

সংযোগের প্রয়োজনীয়তা

MongoDB সামঞ্জস্যপূর্ণ ক্লায়েন্টগুলির সাথে ক্লাউড ফায়ারস্টোরের জন্য নিম্নলিখিতগুলি প্রয়োজন:

  • ড্রাইভারদের অবশ্যই load balanced মোডে সংযোগ করতে হবে। এটি ড্রাইভারদের সঠিক সার্ভার টপোলজি বোঝার চেষ্টা করতে বাধা দেয় যে তারা সংযোগ করছে।
  • ড্রাইভারদের অবশ্যই SSL সক্ষম করে সংযোগ করতে হবে৷
  • ড্রাইভারদের অবশ্যই পুনরায় চেষ্টা করার যোগ্য লেখাগুলি অক্ষম করতে হবে। MongoDB সামঞ্জস্য সহ ক্লাউড ফায়ারস্টোর বর্তমানে পুনরায় চেষ্টাযোগ্য লেখাগুলিকে সমর্থন করে না।

সংযোগ স্ট্রিং পুনরুদ্ধার করুন

ডাটাবেস সংযোগ স্ট্রিং ডাটাবেসের UID, ডাটাবেসের অবস্থান এবং প্রমাণীকরণ প্রক্রিয়ার উপর নির্ভর করে। নিম্নলিখিত নির্দেশাবলী বর্ণনা করে কিভাবে সংযোগ স্ট্রিং গঠিত হয়।

সঠিক সংযোগ স্ট্রিং প্রমাণীকরণ প্রক্রিয়ার উপর নির্ভর করে, কিন্তু বেস সংযোগ স্ট্রিং নিম্নলিখিত বিন্যাস ব্যবহার করে:

mongodb://UID.LOCATION.firestore.goog:443/DATABASE_ID?loadBalanced=true&tls=true&retryWrites=false

আপনি নিম্নলিখিত উপায়গুলির মধ্যে একটিতে বেস সংযোগ স্ট্রিং পেতে পারেন:

Firebase কনসোল
  1. Firebase কনসোলে, ফায়ারস্টোর ডেটাবেস পৃষ্ঠায় যান।

    ফায়ারস্টোর ডাটাবেসে যান

  2. আপনি প্রমাণীকরণ করতে চান যে ডাটাবেস ক্লিক করুন.
  3. এক্সপ্লোরার প্যানেলে, আরও দেখুন ক্লিক করুন।
  4. MongoDB টুল ব্যবহার করে সংযোগ নির্বাচন করুন।
  5. সংযোগ স্ট্রিং অনুলিপি করুন.
জিক্লাউড

UID এবং অবস্থানের তথ্য পুনরুদ্ধার করতে gcloud firestore database describe ব্যবহার করুন:

gcloud firestore databases describe \
--database=DATABASE_ID \
--format='yaml(locationId, uid)'

ডেটাবেস আইডি দিয়ে DATABASE_ID প্রতিস্থাপন করুন।

আউটপুট ডাটাবেসের অবস্থান এবং UID অন্তর্ভুক্ত করে। বেস সংযোগ স্ট্রিং নির্মাণ করতে এই তথ্য ব্যবহার করুন.

আপনার ডাটাবেসের সাথে প্রমাণীকরণ এবং সংযোগ করতে বেস সংযোগ স্ট্রিং এবং নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করুন:

ব্যবহারকারীর নাম এবং পাসওয়ার্ডের সাথে সংযোগ করুন (SCRAM)

আপনার ডাটাবেসের জন্য একটি ব্যবহারকারীর শংসাপত্র তৈরি করতে এবং আপনার ডাটাবেসের সাথে সংযোগ করতে এই পদক্ষেপগুলি অনুসরণ করুন।

আপনি শুরু করার আগে

একজন ব্যবহারকারী তৈরি করার জন্য আপনাকে যে অনুমতিগুলি প্রয়োজন তা পেতে, আপনার অ্যাডমিনিস্ট্রেটরকে আপনার ডাটাবেসে userCredsAdmin ( roles/datastore.userCredsAdmin ) IAM ভূমিকা দেওয়ার জন্য বলুন৷ ভূমিকা প্রদান সম্পর্কে আরও তথ্যের জন্য, প্রকল্প, ফোল্ডার এবং সংস্থাগুলিতে অ্যাক্সেস পরিচালনা করুন দেখুন।

আপনি কাস্টম ভূমিকা বা অন্যান্য পূর্বনির্ধারিত ভূমিকার মাধ্যমে প্রয়োজনীয় অনুমতি পেতে সক্ষম হতে পারেন৷

একটি ব্যবহারকারী তৈরি করুন এবং একটি ডাটাবেসের সাথে সংযোগ করুন

MongoDB সামঞ্জস্যপূর্ণ ডাটাবেসের সাথে আপনার ক্লাউড ফায়ারস্টোরের জন্য একজন ব্যবহারকারী তৈরি করতে, নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করুন:

গুগল ক্লাউড কনসোল
  1. Google ক্লাউড কনসোলে, ডেটাবেস পৃষ্ঠায় যান।

    ডাটাবেসে যান

  2. ডাটাবেসের তালিকা থেকে একটি ডাটাবেস নির্বাচন করুন।
  3. নেভিগেশন মেনুতে, Auth-এ ক্লিক করুন।
  4. ব্যবহারকারী যোগ করুন ক্লিক করুন.
  5. একটি ব্যবহারকারীর নাম লিখুন।
  6. নতুন ব্যবহারকারীর জন্য একটি ভূমিকা নির্বাচন করুন।
  7. যোগ করুন ক্লিক করুন।

    নতুন ব্যবহারকারীর পাসওয়ার্ড নিশ্চিতকরণ ডায়ালগে প্রদর্শিত হবে।

gcloud CLI
  1. SCRAM দিয়ে প্রমাণীকরণ করতে, আপনাকে প্রথমে একটি ব্যবহারকারীর শংসাপত্র তৈরি করতে হবে। gcloud alpha firestore user-creds কমান্ড ব্যবহার করুন:
    gcloud alpha firestore user-creds create USERNAME --database=DATABASE_ID
    নিম্নলিখিতগুলি প্রতিস্থাপন করুন:
    • USERNAME : তৈরি করার জন্য ব্যবহারকারীর নাম৷
    • DATABASE_ID : ডাটাবেস আইডি।

    এই কমান্ডের আউটপুট ব্যবহারকারীর পাসওয়ার্ড অন্তর্ভুক্ত.

    আউটপুট নিম্নলিখিত অনুরূপ:

    name: projects/PROJECT_NAME/databases/DATABASE_ID/userCreds/USERNAME
    resourceIdentity:
      principal: principal://firestore.googleapis.com/projects/PROJECT_NUMBER/name/databases/DATABASE_ID/userCreds/USERNAME
    securePassword: PASSWORD
  2. ডিফল্টরূপে, এই নতুন ব্যবহারকারীর শংসাপত্রের কোনো অনুমতি নেই। ডাটাবেসে পড়ার এবং লেখার অ্যাক্সেসের জন্য, এই নির্দিষ্ট ডাটাবেসের জন্য roles/datastore.user ভূমিকা যোগ করুন:

    gcloud projects add-iam-policy-binding PROJECT_NAME \
    --member='principal://firestore.googleapis.com/projects/PROJECT_NUMBER/name/databases/DATABASE_ID/userCreds/USERNAME' \
    --role=roles/datastore.user \
    --condition='expression=resource.name == "projects/PROJECT_NAME/databases/DATABASE_ID",title="CONDITION_TITLE"'
    নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

SCRAM এর সাথে আপনার ডাটাবেসের সাথে সংযোগ করতে নিম্নলিখিত সংযোগ স্ট্রিংটি ব্যবহার করুন:

mongodb://USERNAME:PASSWORD@UID.LOCATION.firestore.goog:443/DATABASE_ID?loadBalanced=true&authMechanism=SCRAM-SHA-256&tls=true&retryWrites=false

নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

  • USERNAME : ব্যবহারকারীর নাম।
  • PASSWORD : এই ব্যবহারকারীর জন্য আপনি যে পাসওয়ার্ড তৈরি করেছেন।
  • UID : ডাটাবেসের UID।
  • LOCATION : ডাটাবেসের অবস্থান।
  • DATABASE_ID : ডাটাবেস আইডি।

Google Auth লাইব্রেরির সাথে সংযোগ করুন৷

নিম্নলিখিত কোড নমুনা একটি OIDC কলব্যাক হ্যান্ডলার নিবন্ধন করে Google Cloud স্ট্যান্ডার্ড OAuth লাইব্রেরি ব্যবহার করে।

এই লাইব্রেরিটি আপনাকে বিভিন্ন ধরণের প্রমাণীকরণ (অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র, ওয়ার্কলোড আইডেন্টিটি ফেডারেশন) ব্যবহার করতে দেয়।

এটি একটি নির্ভরতা হিসাবে প্রমাণীকরণ লাইব্রেরি যোগ করা প্রয়োজন:

// Maven
<dependency>
  <groupId>com.google.auth</groupId>
  <artifactId>google-auth-library-oauth2-http</artifactId>
  <version>1.19.0</version>
</dependency>

// Gradle
implementation 'com.google.auth:google-auth-library-oauth2-http:1.19.0'

নিম্নলিখিত কোড নমুনা দেখায় কিভাবে সংযোগ করতে হয়:

val db = MongoClients.create(
    clientSettings(
      "DATABASE_UID",
      "LOCATION"
    ).build()
  ).getDatabase("DATABASE_ID")


/**
 * Creates a connection to a Firestore with MongoDB Compatibility database.
 * @param databaseUid The uid of the database to connect to as a string. For example: f116f93a-519c-208a-9a72-3ef6c9a1f081
 * @param locationId The location of the database to connect to, for example: nam5, us-central1, us-east4 etc...
 * @param environment Determines whether to try and fetch an authentication credential from the
 * Compute Engine VM metadata service or whether to call gcloud.
 */
private static MongoClientSettings.Builder clientSettings(
  String databaseUid: String
  String locationId:String
): MongoClientSettings.Builder {
  MongoCredential credential =
    MongoCredential.createOidcCredential(null)
      .withMechanismProperty(
        MongoCredential.OIDC_CALLBACK_KEY,
        new MongoCredential.OidcCallback() {
          @Override
          MongoCredential.OidcCallbackResult onRequest(
MongoCredential.OidcCallbackContext context) {
     // Customize this credential builder for additional credential types.
     GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
            return new MongoCredential.OidcCallbackResult(
         credentials.getAccessToken().getTokenValue(),
         Duration.between(Instant.now(),
credentials.getAccessToken().getExpirationTime().toInstant()));
          }
        },
      );
  return MongoClientSettings.builder()
    .hosts(listOf(ServerAddress(
        "$databaseUid.$locationId.firestore.goog", 443)))
    .credential(credential)
    .applyToClusterSettings(builder ->
         builder.mode(ClusterConnectionMode.LOAD_BALANCED))
    ).applyToSslSettings(ssl -> ssl.enabled(true)).retryWrites(false);
}

নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

  • DATABASE_UID : আপনার প্রকল্পের নাম।
  • LOCATION : আপনার ডাটাবেসের অবস্থান।
  • DATABASE_ID ডাটাবেস আইডি।

একটি Compute Engine VM থেকে সংযোগ করুন

আপনি একটি Compute Engine পরিষেবা অ্যাকাউন্ট ব্যবহার করে আপনার ডাটাবেসের সাথে প্রমাণীকরণ এবং সংযোগ করতে পারেন। এটি করার জন্য, Google Cloud প্রকল্পের জন্য একটি IAM নীতি তৈরি করুন যাতে আপনার ডেটাবেস রয়েছে৷

আপনি শুরু করার আগে

আপনার VM-এর জন্য একটি ব্যবহারকারী-পরিচালিত পরিষেবা অ্যাকাউন্ট কনফিগার করুন:

আপনার পরিষেবা অ্যাকাউন্ট ইমেল নোট নিন.

শংসাপত্র কনফিগার করুন

Cloud Firestore পড়া এবং লেখার জন্য পরিষেবা অ্যাকাউন্টটিকে roles/datastore.user ভূমিকা প্রদান করতে, নিম্নলিখিত কমান্ডটি চালান:

gcloud projects add-iam-policy-binding PROJECT_NAME --member="SERVICE_ACCOUNT_EMAIL" --role=roles/datastore.user

নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

  • PROJECT_NAME : আপনার প্রকল্পের নাম।
  • SERVICE_ACCOUNT_EMAIL : আপনার তৈরি করা পরিষেবা অ্যাকাউন্টের ইমেল ঠিকানা।

সংযোগ স্ট্রিং তৈরি করুন

সংযোগ স্ট্রিং নির্মাণ করতে নিম্নলিখিত বিন্যাস ব্যবহার করুন:

mongodb://DATABASE_UID.LOCATION.firestore.goog:443/DATABASE_ID?loadBalanced=true&tls=true&retryWrites=false&authMechanism=MONGODB-OIDC&authMechanismProperties=ENVIRONMENT:gcp,TOKEN_RESOURCE:FIRESTORE

নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

  • DATABASE_UID : আপনার প্রকল্পের নাম।
  • LOCATION : আপনার ডাটাবেসের অবস্থান।
  • DATABASE_ID ডাটাবেস আইডি।

UID এবং অবস্থান পুনরুদ্ধার সম্পর্কে আরও তথ্যের জন্য, সংযোগ স্ট্রিং পুনরুদ্ধার দেখুন।

একটি অস্থায়ী অ্যাক্সেস টোকেনের সাথে সংযোগ করুন

আপনি একটি অস্থায়ী Google Cloud অ্যাক্সেস টোকেন ব্যবহার করতে পারেন ডায়াগনস্টিক টুল যেমন mongosh চালাতে। আপনি স্বল্প-মেয়াদী অ্যাক্সেস টোকেন দিয়ে প্রমাণীকরণ করতে gcloud auth print-access-token ব্যবহার করতে পারেন। এই টোকেন এক ঘন্টার জন্য বৈধ।

উদাহরণস্বরূপ, mongosh সাথে আপনার ডাটাবেসের সাথে সংযোগ করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

mongosh --tls \
      --username access_token --password $(gcloud auth print-access-token) \
      'mongodb://UID.LOCATION.firestore.goog:443/DATABASE_ID?loadBalanced=true&authMechanism=PLAIN&authSource=$external&retryWrites=false'

নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

  • DATABASE_UID : ডাটাবেসের UID
  • LOCATION : ডাটাবেসের অবস্থান
  • DATABASE_ID : একটি ডাটাবেস আইডি