Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Puedes usar cuentas de servicio en tus Community Connectors para
la administración del acceso a los recursos. Un caso de uso común sería delegar el acceso a
datos a los que los usuarios
no podrían acceder con sus credenciales.
Puedes consolidar la facturación del acceso a los datos.
Puedes implementar tu propia capa de control de acceso en el conector.
Puedes delegar el acceso a los datos o recursos a los que corresponden
no tiene acceso.
Pasos de implementación
Crea una cuenta de servicio para la plataforma desde la que estás recuperando datos.
Proporciona los permisos necesarios a la cuenta de servicio para que pueda acceder
los recursos necesarios.
Guarda las credenciales de la cuenta de servicio en la secuencia de comandos de tu conector
propiedades.
Durante la ejecución del conector, usa las credenciales almacenadas para recuperar los datos requeridos
de datos no estructurados.
Opcional: Implementa la lógica de control de acceso para filtrar los datos.
Ejemplo: Accede a BigQuery con los servicios avanzados de Looker Studio y una cuenta de servicio
Estás creando una solución en la que tus usuarios crearán paneles a partir de un
en la tabla de BigQuery. Si tus usuarios usan el conector de BigQuery de Looker Studio,
necesitan acceso de lectura a la tabla de BigQuery. También necesitarán una cuenta de facturación
para Google Cloud Platform (GCP). Los siguientes pasos ilustran cómo usar una
para consolidar la facturación y delegar el acceso a los datos de BigQuery.
Asegúrate de que la cuenta de servicio pueda crear trabajos de BigQuery y ver los datos de
la tabla requerida. Consulta Control de acceso a BigQuery para obtener más información.
Incluye la biblioteca de Apps Script OAuth2 en tu
Proyecto de Apps Script.
Para la función getData, autentica la cuenta de servicio y genera
un token de acceso. Establece el alcance de OAuth2 en
https://www.googleapis.com/auth/bigquery.readonly
Muestra el token de acceso con otros elementos de configuración en la respuesta de getData.
A continuación, se muestra un ejemplo completo del código del conector:
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();}