Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Sie können Dienstkonten in Ihren Community-Connectors für zentralisierte
den Ressourcenzugriff zu verwalten. Ein häufiger Anwendungsfall ist die
Delegierung des Zugriffs auf
Daten, auf die Nutzer mit ihren eigenen Anmeldedaten nicht zugreifen können.
Sie können die Abrechnung für den Datenzugriff konsolidieren.
Sie können in Ihrem Connector eine eigene Zugriffssteuerungsebene implementieren.
Sie können den Zugriff auf Daten oder Ressourcen an die Anmeldedaten des Nutzers delegieren.
auf die der Nutzer keinen Zugriff hat.
Implementierungsschritte
Erstellen Sie ein Dienstkonto für die Plattform, von der Sie Daten abrufen.
Gewähren Sie dem Dienstkonto die erforderlichen Berechtigungen, damit es auf das Konto zugreifen kann
erforderlichen Ressourcen.
Anmeldedaten des Dienstkontos im Skript des Connectors speichern
Eigenschaften.
Verwenden Sie während der Connector-Ausführung die gespeicherten Anmeldedaten, um die erforderlichen
Daten.
Optional: Implementieren Sie eine Zugriffssteuerungslogik, um die Daten zu filtern.
Beispiel: Mit erweiterten Looker Studio-Diensten und einem Dienstkonto auf BigQuery zugreifen
Sie erstellen eine Lösung, bei der Ihre Nutzenden Dashboards aus einem
BigQuery-Tabelle. Wenn Ihre Nutzer den BigQuery-Connector von Looker Studio verwenden,
Lesezugriff auf die BigQuery-Tabelle. Außerdem ist ein Rechnungskonto erforderlich.
für die Google Cloud Platform (GCP). Die folgenden Schritte veranschaulichen, wie Sie ein
Dienstkonto, um die Abrechnung zu konsolidieren und den Zugriff auf die BigQuery-Daten zu delegieren.
Achten Sie darauf, dass das Dienstkonto BigQuery-Jobs erstellen und die Daten anzeigen kann für
die erforderliche Tabelle. Weitere Informationen finden Sie unter BigQuery-Zugriffssteuerung.
Authentifizieren Sie für die Funktion getData das Dienstkonto und generieren Sie
ein Zugriffstoken. OAuth2-Bereich festlegen auf
https://www.googleapis.com/auth/bigquery.readonly
Gibt das Zugriffstoken mit anderen Konfigurationselementen in der getData-Antwort zurück.
Hier sehen Sie ein vollständiges Beispiel für den Connector-Code:
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();}