Hizmet hesabı kullan

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.

Konu hakkında bilgi edinmek için Hizmet hesaplarını anlama başlıklı makaleyi inceleyin.

Avantajları

  • 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ı

  1. Veri getirdiğiniz platform için bir hizmet hesabı oluşturun.
  2. Hizmet hesabına erişebilmesi için gereken izinleri sağlayın inceleme fırsatı sunar.
  3. Hizmet hesabının kimlik bilgilerini bağlayıcınızın komut dosyasında depolayın özellikler.
  4. Bağlayıcı yürütme sırasında, gereken verileri getirmek için depolanan kimlik bilgilerini kullanın dışı verilerdir.
  5. İ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.

  1. İstediğiniz GCP projesinde bir hizmet hesabı oluşturun.
  2. Hizmet hesabının BigQuery işleri oluşturabildiğinden ve eklemeniz gerekir. Ayrıntılar için BigQuery Erişim Denetimi başlıklı makaleyi inceleyin.
  3. Hizmet hesabı için bir anahtar oluşturun ve kimlik bilgilerini şurada depolayın: bağlayıcının komut dosyası özelliklerini değiştirir.
  4. OAuth2 Apps Komut Dosyası kitaplığını Apps Komut Dosyası projesi.
  5. 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
  6. getData yanıtındaki diğer yapılandırma öğeleriyle birlikte erişim jetonunu döndürün.

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();
}