Merkezileştirilmiş işlemler için Topluluk Bağlayıcılarınızdaki hizmet hesaplarını kullanabilirsiniz.
kaynak erişimi yönetimi. Yaygın kullanım alanlarından biri,
ve kullanıcıların kendi kimlik bilgilerini kullanarak erişemeyeceği veriler için de geçerlidir.
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 bilgileriyle veri veya kaynaklara erişim yetkisi verebilirsiniz
adlı kullanıcının erişimi yok.
Uygulama adımları
Veri getirdiğiniz platform için bir hizmet hesabı oluşturun.
Hizmet hesabına erişebilmesi için gereken izinleri sağlayın
inceleme fırsatı sunar.
Hizmet hesabının kimlik bilgilerini bağlayıcınızın komut dosyasında depolayın
özellikler.
Bağlayıcı yürütme sırasında, gereken verileri getirmek için depolanan kimlik bilgilerini kullanın
dışı verilerdir.
İsteğe bağlı: Verileri filtrelemek için erişim denetimi mantığı uygulayın.
ziyaret edin.
Örnek: Looker Studio Advanced Services ve bir hizmet hesabıyla BigQuery'ye erişme
Kullanıcılarınızın tek bir yerden gösterge tabloları oluşturacağı bir çözüm
BigQuery tablosu. Kullanıcılarınız Looker Studio'nun BigQuery bağlayıcısını kullanıyorsa
BigQuery tablosuna okuma erişimi gerektirir. Ayrıca bir faturalandırma hesabı da gereklidir.
Google Cloud Platform (GCP) için yönergelerdir. Aşağıdaki adımlar,
hizmet hesabını kullandığınızdan emin olun.
getData fonksiyonunuz için hizmet hesabının kimliğini doğrulayın ve
erişim jetonundan yararlanabilirsiniz. OAuth2 kapsamını şu şekilde ayarlayın:
https://www.googleapis.com/auth/bigquery.readonly
getData yanıtındaki diğer yapılandırma öğeleriyle birlikte erişim jetonunu döndürün.
Aşağıda, bağlayıcı koduna ilişkin tam bir örnek 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();
}
[null,null,["Son güncelleme tarihi: 2024-08-22 UTC."],[[["Community Connectors can utilize service accounts for centralized resource access management, enabling data access delegation beyond user credentials."],["Service accounts offer benefits like consolidated billing, custom access control implementation, and access to otherwise restricted data or resources."],["Implementing service accounts involves creating a dedicated account, granting necessary permissions, securely storing credentials in script properties, and utilizing these during connector execution."],["For enhanced security, avoid storing service account credentials directly in code; instead, leverage connector script properties to safeguard sensitive information."],["The provided example demonstrates using a service account with Looker Studio Advanced Services for secure and controlled access to BigQuery data, consolidating billing and delegating access efficiently."]]],[]]