Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Kaynak erişiminin merkezi yönetimi için Topluluk Bağlayıcılarınızdaki hizmet hesaplarını kullanabilirsiniz. Yaygın bir kullanım alanı da kullanıcıların kendi kimlik bilgilerini kullanarak erişemeyeceği verilere erişim yetkisi vermektir.
Veri erişimi için faturalandırmayı birleştirebilirsiniz.
Bağlayıcınıza kendi erişim denetimi katmanınızı uygulayabilirsiniz.
Kullanıcının kimlik bilgilerinin erişemediği veri veya kaynaklara erişim yetkisi verebilirsiniz.
Uygulama adımları
Veri aldığınız platform için bir hizmet hesabı oluşturun.
Hizmet hesabının gerekli kaynaklara erişebilmesi için gerekli izinleri sağlayın.
Hizmet hesabının kimlik bilgilerini bağlayıcınızın komut dosyası özelliklerinde depolayın.
Bağlayıcının yürütülmesi sırasında gerekli verileri getirmek için depolanan kimlik bilgilerini kullanın.
İsteğe bağlı: Verileri filtrelemek için erişim denetimi mantığı uygulayın.
Örnek: Looker Studio Gelişmiş Hizmetleri ve bir hizmet hesabı ile BigQuery'ye erişme
Kullanıcılarınızın BigQuery tablosundan kontrol panelleri oluşturacağı bir çözüm geliştiriyorsunuz. Kullanıcılarınız Looker Studio'nun BigQuery bağlayıcısını kullanıyorsa BigQuery tablosuna okuma erişimlerinin olması gerekir. Ayrıca Google Cloud Platform (GCP) için faturalandırma hesabı da gerekir. Aşağıdaki adımlarda, faturalandırmayı birleştirmek ve BigQuery verilerine erişim yetkisi vermek için hizmet hesabının nasıl kullanılacağı gösterilmektedir.
Hizmet hesabının BigQuery işleri oluşturabildiğinden ve gerekli tablonun verilerini görüntüleyebildiğinden emin olun. Ayrıntılar için BigQuery Erişim Denetimi bölümüne bakın.
getData işleviniz için hizmet hesabının kimliğini doğrulayın ve bir erişim jetonu oluşturun. OAuth2 kapsamını https://www.googleapis.com/auth/bigquery.readonly olarak ayarlayın.
Erişim jetonunu, getData yanıtında diğer yapılandırma öğeleriyle birlikte döndürün.
Aşağıda bağlayıcı kodunun eksiksiz bir örneği verilmiştir:
main.js
var cc = DataStudioApp.createCommunityConnector();
var scriptProperties = PropertiesService.getScriptProperties();
function isAdminUser() {
return true;
}
function getAuthType() {
var AuthTypes = cc.AuthType;
return cc
.newAuthTypeResponse()
.setAuthType(AuthTypes.NONE)
.build();
}
function getConfig(request) {
var config = cc.getConfig();
config
.newInfo()
.setId('generalInfo')
.setText('This is an example connector to showcase row level security.');
return config.build();
}
function getFields() {
var fields = cc.getFields();
var types = cc.FieldType;
var aggregations = 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);
return fields;
}
function getSchema(request) {
return {schema: getFields().build()};
}
var SERVICE_ACCOUNT_CREDS = 'SERVICE_ACCOUNT_CREDS';
var SERVICE_ACCOUNT_KEY = 'private_key';
var SERVICE_ACCOUNT_EMAIL = 'client_email';
var BILLING_PROJECT_ID = 'project_id';
/**
* Copy the entire credentials JSON file from creating a service account in GCP.
*/
function getServiceAccountCreds() {
return JSON.parse(scriptProperties.getProperty(SERVICE_ACCOUNT_CREDS));
}
function getOauthService() {
var serviceAccountCreds = getServiceAccountCreds();
var serviceAccountKey = serviceAccountCreds[SERVICE_ACCOUNT_KEY];
var serviceAccountEmail = serviceAccountCreds[SERVICE_ACCOUNT_EMAIL];
return OAuth2.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']);
}
var BASE_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';
function getData(request) {
var accessToken = getOauthService().getAccessToken();
var serviceAccountCreds = getServiceAccountCreds();
var billingProjectId = serviceAccountCreds[BILLING_PROJECT_ID];
var email = Session.getEffectiveUser().getEmail();
var bqTypes = DataStudioApp.createCommunityConnector().BigQueryParameterType;
return cc
.newBigQueryConfig()
.setAccessToken(accessToken)
.setBillingProjectId(billingProjectId)
.setUseStandardSql(true)
.setQuery(BASE_SQL)
.addQueryParameter('email', bqTypes.STRING, email)
.build();
}