Menggunakan akun layanan
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Anda dapat menggunakan akun layanan di Konektor Komunitas untuk pengelolaan akses resource yang terpusat. Kasus penggunaan umum adalah mendelegasikan akses ke data yang tidak dapat diakses pengguna menggunakan kredensial mereka sendiri.
Anda dapat menggabungkan penagihan untuk akses data.
Anda dapat menerapkan lapisan kontrol akses Anda sendiri di konektor.
Anda dapat mendelegasikan akses ke data atau resource yang tidak dapat diakses oleh kredensial pengguna.
Langkah-langkah implementasi
Buat akun layanan untuk platform tempat Anda mengambil data.
Berikan izin yang diperlukan ke akun layanan agar akun tersebut dapat mengakses
resource yang diperlukan.
Simpan kredensial akun layanan di properti skrip konektor Anda.
Selama eksekusi konektor, gunakan kredensial tersimpan untuk mengambil data yang diperlukan.
Opsional: Terapkan logika kontrol akses untuk memfilter data.
Contoh: Mengakses BigQuery dengan Layanan Lanjutan Data Studio dan akun layanan
Anda sedang membangun solusi tempat pengguna Anda akan membuat dasbor dari tabel BigQuery. Jika pengguna Anda menggunakan konektor BigQuery Data Studio, mereka akan memerlukan akses baca ke tabel BigQuery. Mereka juga memerlukan akun penagihan untuk Google Cloud Platform (GCP). Langkah-langkah berikut menggambarkan cara menggunakan
akun layanan untuk menggabungkan penagihan dan mendelegasikan akses ke data BigQuery.
Pastikan akun layanan dapat membuat tugas BigQuery dan melihat data untuk
tabel yang diperlukan. Lihat Kontrol Akses BigQuery untuk mengetahui detailnya.
Untuk fungsi getData, autentikasi akun layanan dan buat
token akses. Tetapkan cakupan OAuth2 ke
https://www.googleapis.com/auth/bigquery.readonly.
Menampilkan token akses dengan item konfigurasi lainnya dalam respons getData.
Berikut adalah contoh lengkap kode konektor:
main.js
varcc=DataStudioApp.createCommunityConnector();varscriptProperties=PropertiesService.getScriptProperties();functionisAdminUser(){returntrue;}functiongetAuthType(){varAuthTypes=cc.AuthType;returncc.newAuthTypeResponse().setAuthType(AuthTypes.NONE).build();}functiongetConfig(request){varconfig=cc.getConfig();config.newInfo().setId('generalInfo').setText('This is an example connector to showcase row level security.');returnconfig.build();}functiongetFields(){varfields=cc.getFields();vartypes=cc.FieldType;varaggregations=cc.AggregationType;fields.newDimension().setId('region').setName('Region').setType(types.TEXT);fields.newMetric().setId('sales').setName('Sales').setType(types.NUMBER).setAggregation(aggregations.SUM);fields.newDimension().setId('date').setName('Date').setType(types.YEAR_MONTH_DAY);returnfields;}functiongetSchema(request){return{schema:getFields().build()};}varSERVICE_ACCOUNT_CREDS='SERVICE_ACCOUNT_CREDS';varSERVICE_ACCOUNT_KEY='private_key';varSERVICE_ACCOUNT_EMAIL='client_email';varBILLING_PROJECT_ID='project_id';/** * Copy the entire credentials JSON file from creating a service account in GCP. */functiongetServiceAccountCreds(){returnJSON.parse(scriptProperties.getProperty(SERVICE_ACCOUNT_CREDS));}functiongetOauthService(){varserviceAccountCreds=getServiceAccountCreds();varserviceAccountKey=serviceAccountCreds[SERVICE_ACCOUNT_KEY];varserviceAccountEmail=serviceAccountCreds[SERVICE_ACCOUNT_EMAIL];returnOAuth2.createService('RowLevelSecurity').setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth').setTokenUrl('https://accounts.google.com/o/oauth2/token').setPrivateKey(serviceAccountKey).setIssuer(serviceAccountEmail).setPropertyStore(scriptProperties).setCache(CacheService.getScriptCache()).setScope(['https://www.googleapis.com/auth/bigquery.readonly']);}varBASE_SQL='SELECT d.region, d.sales, d.date '+'FROM `datastudio-solutions.row_level_security.data` d '+'INNER JOIN `datastudio-solutions.row_level_security.access` a '+'ON d.region = a.region '+'where a.email=@email';functiongetData(request){varaccessToken=getOauthService().getAccessToken();varserviceAccountCreds=getServiceAccountCreds();varbillingProjectId=serviceAccountCreds[BILLING_PROJECT_ID];varemail=Session.getEffectiveUser().getEmail();varbqTypes=DataStudioApp.createCommunityConnector().BigQueryParameterType;returncc.newBigQueryConfig().setAccessToken(accessToken).setBillingProjectId(billingProjectId).setUseStandardSql(true).setQuery(BASE_SQL).addQueryParameter('email',bqTypes.STRING,email).build();}
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2026-04-18 UTC."],[],[]]