คุณสามารถใช้บัญชีบริการในเครื่องมือเชื่อมต่อชุมชนสำหรับการรวมศูนย์ได้
การจัดการสิทธิ์เข้าถึงทรัพยากร กรณีการใช้งานทั่วไปคือการมอบสิทธิ์การเข้าถึง
ที่ผู้ใช้ไม่สามารถเข้าถึงโดยใช้ข้อมูลเข้าสู่ระบบของตนเอง
โปรดอ่านหัวข้อทำความเข้าใจบัญชีบริการ เพื่อทำความคุ้นเคยกับหัวข้อ
ประโยชน์
คุณสามารถรวมการเรียกเก็บเงินสำหรับการเข้าถึงข้อมูลได้
คุณสามารถนำเลเยอร์การควบคุมการเข้าถึงของตัวเองไปใช้ในเครื่องมือเชื่อมต่อ
คุณสามารถมอบสิทธิ์เข้าถึงข้อมูลหรือทรัพยากรที่ข้อมูลเข้าสู่ระบบของผู้ใช้ได้
ไม่มีสิทธิ์เข้าถึง
ขั้นตอนการใช้งาน
สร้างบัญชีบริการของแพลตฟอร์มที่คุณกำลังดึงข้อมูล
ให้สิทธิ์ที่จำเป็นแก่บัญชีบริการเพื่อให้เข้าถึงได้
ทรัพยากรที่จำเป็น
จัดเก็บข้อมูลเข้าสู่ระบบของบัญชีบริการในสคริปต์ของเครื่องมือเชื่อมต่อ
พร็อพเพอร์ตี้
ระหว่างการดำเนินการของเครื่องมือเชื่อมต่อ ให้ใช้ข้อมูลเข้าสู่ระบบที่จัดเก็บไว้เพื่อดึงข้อมูลที่จำเป็น
ไม่บังคับ : ใช้ตรรกะการควบคุมการเข้าถึงเพื่อกรองข้อมูล
ข้อควรระวัง: อย่าจัดเก็บข้อมูลเข้าสู่ระบบของบัญชีบริการไว้ในโค้ดของคุณ แทน
ใช้พร็อพเพอร์ตี้สคริปต์ของเครื่องมือเชื่อมต่อเพื่อให้แน่ใจว่าผู้ใช้คนอื่นๆ ที่มีข้อมูลพร็อพเพอร์ตี้
การเข้าถึงโค้ดของคุณ (ผ่านทาง Apps Script หรือผ่านที่เก็บโค้ดภายนอก)
ไม่เห็นข้อมูลเข้าสู่ระบบ
ตัวอย่าง: การเข้าถึง BigQuery ด้วยบริการขั้นสูงของ Looker Studio และบัญชีบริการ
คุณกำลังสร้างโซลูชันที่ผู้ใช้ของคุณจะสร้างหน้าแดชบอร์ดจาก
ตาราง BigQuery หากผู้ใช้ใช้เครื่องมือเชื่อมต่อ BigQuery ของ Looker Studio ผู้ใช้จะ
ต้องมีสิทธิ์อ่านตาราง BigQuery และจะต้องมีบัญชีสำหรับการเรียกเก็บเงินด้วย
สำหรับ Google Cloud Platform (GCP) ขั้นตอนต่อไปนี้จะแสดงวิธีใช้
บัญชีบริการเพื่อรวมการเรียกเก็บเงินและมอบสิทธิ์เข้าถึงข้อมูล BigQuery
สร้างบัญชีบริการ ในโปรเจ็กต์ GCP ที่ต้องการ
ตรวจสอบว่าบัญชีบริการสามารถสร้างงาน BigQuery และดูข้อมูลสำหรับ
ในตารางที่จำเป็น โปรดดูรายละเอียดที่การควบคุมการเข้าถึง BigQuery
สร้างคีย์สำหรับบัญชีบริการ และจัดเก็บข้อมูลเข้าสู่ระบบไว้ใน
พร็อพเพอร์ตี้สคริปต์ ของเครื่องมือเชื่อมต่อ
รวมไลบรารี OAuth2 Apps Script ไว้ใน
โครงการ Apps Script
สำหรับฟังก์ชัน getData
ให้ตรวจสอบสิทธิ์บัญชีบริการและสร้าง
โทเค็นเพื่อการเข้าถึง กำหนดขอบเขต OAuth2 เป็น
https://www.googleapis.com/auth/bigquery.readonly
แสดงผลโทเค็นเพื่อการเข้าถึงพร้อมรายการการกำหนดค่าอื่นๆ ในการตอบกลับ getData
ต่อไปนี้เป็นตัวอย่างที่สมบูรณ์ของรหัสเครื่องมือเชื่อมต่อ
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();
}