קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
אפשר להשתמש בחשבונות שירות במחברים של הקהילה כדי לנהל
ניהול הגישה למשאבים. תרחיש נפוץ לדוגמה הוא להעניק גישה אל
נתונים שמשתמשים לא יוכלו לגשת אליהם באמצעות פרטי הכניסה שלהם.
יש לך אפשרות להעניק גישה לנתונים או למשאבים שהגישה אליהם קשורה לפרטי הכניסה של המשתמש
ל- אין גישה אל.
שלבי ההטמעה
יוצרים חשבון שירות לפלטפורמה שממנה שולפים נתונים.
צריך לתת לחשבון השירות את ההרשאות הנדרשות כדי שתהיה לו גישה
את המשאבים הנדרשים.
אחסון פרטי הכניסה של חשבון השירות בסקריפט של המחבר
נכסים.
במהלך ביצוע המחבר, יש להשתמש בפרטי הכניסה המאוחסנים לצורך אחזור הנדרש
.
אופציונלי: מטמיעים לוגיקה של בקרת גישה לסינון הנתונים.
דוגמה: גישה ל-BigQuery באמצעות השירותים המתקדמים של Looker Studio וחשבון שירות
אתה יוצר פתרון שבו המשתמשים שלך יבנו מרכזי שליטה
טבלה ב-BigQuery. אם המשתמשים שלך ישתמשו במחבר BigQuery של Looker Studio, הם יוכלו
צריכה גישת קריאה לטבלה ב-BigQuery. יידרש להם גם חשבון לחיוב
ל-Google Cloud Platform (GCP). השלבים הבאים ממחישים איך להשתמש
כדי לאחד את החיובים ולהעניק גישה לנתוני BigQuery.
בפונקציה getData, מאמתים את חשבון השירות ויוצרים
אסימון גישה. הגדרת היקף ההרשאות של OAuth2
https://www.googleapis.com/auth/bigquery.readonly
החזרת אסימון גישה עם פריטי הגדרה אחרים בתגובה getData.
דוגמה מלאה לקוד המחבר:
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();}