Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Anda dapat menggunakan akun layanan di Community Connectors untuk
untuk pengelolaan akses resource. Kasus penggunaan yang umum adalah
mendelegasikan akses ke
data yang tidak dapat diakses oleh pengguna
menggunakan kredensial mereka sendiri.
Anda dapat menggabungkan penagihan untuk akses data.
Anda dapat menerapkan lapisan kontrol akses Anda sendiri di konektor Anda.
Anda dapat mendelegasikan akses ke data atau resource yang kredensial pengguna
memiliki akses.
Langkah-langkah implementasi
Buat akun layanan untuk platform tempat Anda mengambil data.
Berikan izin yang diperlukan pada akun layanan agar dapat mengakses
resource yang diperlukan.
Simpan kredensial akun layanan di skrip konektor Anda
properti baru.
Selama eksekusi konektor, gunakan kredensial yang disimpan untuk mengambil data yang diperlukan
layanan otomatis dan data skalabel.
Opsional: Terapkan logika kontrol akses untuk memfilter data.
Contoh: Mengakses BigQuery dengan Layanan Lanjutan Looker Studio dan akun layanan
Anda sedang membangun solusi di mana pengguna akan membangun dasbor dari
BigQuery. Jika pengguna Anda menggunakan konektor BigQuery Looker Studio, mereka akan
membutuhkan akses baca
ke tabel BigQuery. Mereka juga akan memerlukan akun penagihan
untuk Google Cloud Platform (GCP). Langkah-langkah berikut mengilustrasikan cara menggunakan
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.
Tampilkan token akses dengan item konfigurasi lain di 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();}