Yalnızca Cloud Firestore Enterprise sürümü için geçerlidir. |
Bağlantı koşulları
MongoDB uyumluluğu istemcileriyle Cloud Firestore için aşağıdakiler gereklidir:
- Sürücüler
load balanced
modunda bağlanmalıdır. Bu, sürücülerin bağlandıkları sunucu topolojisini tam olarak anlamaya çalışmasını engeller. - Sürücüler, SSL etkinleştirilmiş olarak bağlanmalıdır.
- Sürücüler, yeniden denenebilir yazma işlemlerini devre dışı bırakmalıdır. MongoDB uyumluluğu olan Cloud Firestore şu anda yeniden denenebilir yazma işlemlerini desteklememektedir.
Bağlantı dizesini alma
Veritabanı bağlantı dizesi, veritabanının UID'sine, veritabanının konumuna ve kimlik doğrulama mekanizmasına bağlıdır. Aşağıdaki talimatlarda bağlantı dizesinin nasıl oluşturulduğu açıklanmaktadır.
Tam bağlantı dizesi, kimlik doğrulama mekanizmasına bağlıdır. Ancak temel bağlantı dizesi aşağıdaki biçimi kullanır:
mongodb://UID.LOCATION.firestore.goog:443/DATABASE_ID?loadBalanced=true&tls=true&retryWrites=false
Temel bağlantı dizesini aşağıdaki yöntemlerden biriyle elde edebilirsiniz:
Firebase konsolu
-
Firebase konsolunda Firestore Database sayfasına gidin.
- Kimliğini doğrulamak istediğiniz veritabanını tıklayın.
- Gezgin panelinde Daha fazla göster'i tıklayın.
- MongoDB araçlarını kullanarak bağlan'ı seçin.
- Bağlantı dizesini kopyalayın.
gcloud
UID ve konum bilgilerini almak için gcloud firestore database describe
öğesini kullanın:
gcloud firestore databases describe \ --database=DATABASE_ID \ --format='yaml(locationId, uid)'
DATABASE_ID yerine veritabanı kimliğini yazın.
Çıkış, veritabanının konumunu ve UID'sini içerir. Temel bağlantı dizesini oluşturmak için bu bilgileri kullanın.
Kimlik doğrulamak ve veritabanınıza bağlanmak için temel bağlantı dizesini ve aşağıdaki yöntemlerden birini kullanın:
Kullanıcı adı ve şifreyle (SCRAM) bağlanma
Veritabanınız için kullanıcı kimliği oluşturmak ve veritabanınıza bağlanmak üzere aşağıdaki adımları uygulayın.
Başlamadan önce
Kullanıcı oluşturmak için gereken izinleri almak üzere yöneticinizden veritabanınızda userCredsAdmin (roles/datastore.userCredsAdmin
) IAM rolünü vermesini isteyin. Rol verme hakkında daha fazla bilgi için Projelere, klasörlere ve kuruluşlara erişimi yönetme başlıklı makaleyi inceleyin.
Gerekli izinleri özel roller veya diğer önceden tanımlanmış roller aracılığıyla da alabilirsiniz.
Kullanıcı oluşturma ve veritabanına bağlanma
MongoDB uyumluluğu olan Cloud Firestore veritabanınız için kullanıcı oluşturmak üzere aşağıdaki yöntemlerden birini kullanın:
Google Cloud konsolu
-
Google Cloud Console'da Veritabanları sayfasına gidin.
- Veritabanları listesinden bir veritabanı seçin.
- Gezinme menüsünde Auth'u (Kimlik Doğrulama) tıklayın.
- Kullanıcı Ekle'yi tıklayın.
- Bir kullanıcı adı girin.
- Yeni kullanıcı için bir rol seçin.
-
Ekle'yi tıklayın.
Yeni kullanıcının şifresi onay iletişim kutusunda gösterilir.
gcloud CLI
-
SCRAM ile kimlik doğrulaması yapmak için önce bir kullanıcı kimlik bilgisi oluşturmanız gerekir. Şu komutu kullanın:
gcloud alpha firestore user-creds
Aşağıdakileri değiştirin:gcloud alpha firestore user-creds create USERNAME --database=DATABASE_ID
- USERNAME: Oluşturulacak kullanıcı adı.
- DATABASE_ID: Veritabanı kimliği.
Bu komutun çıktısı, kullanıcının şifresini içerir.
Çıkış şu şekilde görünür:
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
-
Varsayılan olarak, bu yeni kullanıcı kimlik bilgilerinin herhangi bir izni yoktur. Veritabanına okuma ve yazma erişimi için bu veritabanına
roles/datastore.user
rolünü ekleyin: Aşağıdakileri değiştirin: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"'
- PROJECT_NAME: Projenizin adı.
- PROJECT_NUMBER: Proje numarası.
- DATABASE_ID: Veritabanı kimliği.
- USERNAME: Daha önce oluşturduğunuz kullanıcı adı.
- CONDITION_TITLE: Bu koşulun başlığı. Bu koşul, erişimi yalnızca bu veritabanıyla kısıtlar.
SCRAM ile veritabanınıza bağlanmak için aşağıdaki bağlantı dizesini kullanın:
mongodb://USERNAME:PASSWORD@UID.LOCATION.firestore.goog:443/DATABASE_ID?loadBalanced=true&authMechanism=SCRAM-SHA-256&tls=true&retryWrites=false
Aşağıdakini değiştirin:
- USERNAME: Kullanıcı adı.
- PASSWORD: Bu kullanıcı için oluşturduğunuz şifre.
- UID: Veritabanının UID'si.
- LOCATION: Veritabanının konumu.
- DATABASE_ID: Veritabanı kimliği.
Google Auth Library ile bağlantı kurma
Aşağıdaki kod örneği, Google Cloud standart OAuth kitaplığını kullanan bir OIDC geri çağırma işleyicisini kaydeder.
Bu kitaplık, çeşitli kimlik doğrulama türlerini (Application Default Credentials, Workload Identity Federation) kullanmanıza olanak tanır.
Bunun için kimlik doğrulama kitaplığının bağımlı kaynak olarak eklenmesi gerekir:
// 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'
Aşağıdaki kod örneğinde nasıl bağlanılacağı gösterilmektedir:
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); }
Aşağıdakini değiştirin:
- DATABASE_UID: Projenizin adı.
- LOCATION: Veritabanınızın konumu.
- DATABASE_ID veritabanı kimliği.
Compute Engine sanal makinesinden bağlanma
Compute Engine hizmet hesabı kullanarak veritabanınızda kimlik doğrulaması yapabilir ve veritabanınıza bağlanabilirsiniz. Bunu yapmak için veritabanınızı içeren Google Cloud projesi için bir IAM politikası oluşturun.
Başlamadan önce
Sanal makineniz için kullanıcı tarafından yönetilen bir hizmet hesabı yapılandırın:
- Sanal makine oluşturma sırasında hizmet hesabını yapılandırmak için Kullanıcı tarafından yönetilen hizmet hesabı kullanan bir sanal makine oluşturma başlıklı makaleyi inceleyin.
- Mevcut bir VM'de hizmet hesabı yapılandırmak için Ekli hizmet hesabını değiştirme başlıklı makaleyi inceleyin.
Hizmet hesabınızın e-posta adresini not edin.
Kimlik bilgilerini yapılandırma
Hizmet hesabına roles/datastore.user
rolünü vererek Cloud Firestore üzerinde okuma ve yazma izni vermek için aşağıdaki komutu çalıştırın:
gcloud projects add-iam-policy-binding PROJECT_NAME --member="SERVICE_ACCOUNT_EMAIL" --role=roles/datastore.user
Aşağıdakini değiştirin:
- PROJECT_NAME: Projenizin adı.
- SERVICE_ACCOUNT_EMAIL: Oluşturduğunuz hizmet hesabının e-posta adresi.
Bağlantı dizesini oluşturma
Bağlantı dizesini oluşturmak için aşağıdaki biçimi kullanın:
mongodb://DATABASE_UID.LOCATION.firestore.goog:443/DATABASE_ID?loadBalanced=true&tls=true&retryWrites=false&authMechanism=MONGODB-OIDC&authMechanismProperties=ENVIRONMENT:gcp,TOKEN_RESOURCE:FIRESTORE
Aşağıdakini değiştirin:
- DATABASE_UID: Projenizin adı.
- LOCATION: Veritabanınızın konumu.
- DATABASE_ID veritabanı kimliği.
UID ve konumun alınması hakkında daha fazla bilgi için Bağlantı dizesini alma başlıklı makaleyi inceleyin.
Geçici erişim jetonuyla bağlanma
Google Cloud gibi teşhis araçlarını çalıştırmak için geçici bir mongosh
erişim jetonu kullanabilirsiniz. Kısa süreli erişim jetonuyla kimlik doğrulamak için
gcloud auth print-access-token
kullanabilirsiniz. Bu jeton bir saat boyunca geçerlidir.
Örneğin, mongosh
ile veritabanınıza bağlanmak için aşağıdaki komutu kullanın:
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'
Aşağıdakini değiştirin:
- DATABASE_UID: Veritabanının UID'si
- LOCATION: veritabanı konumu
- DATABASE_ID: veritabanı kimliği