Kont usługi w społecznościowym oprogramowaniu sprzęgającym możesz używać do scentralizowanego zarządzania
i zarządzanie dostępem do zasobów. Typowym przypadkiem użycia jest przekazywanie dostępu
dane, do których użytkownicy nie mogli uzyskać dostępu przy użyciu własnych danych logowania.
Możesz skonsolidować płatności za dostęp do danych.
Możesz wdrożyć w oprogramowaniu sprzęgającym własną warstwę kontroli dostępu.
Możesz przekazać dostęp do danych lub zasobów wskazywanych przez dane logowania użytkownika
nie ma dostępu do.
Etapy wdrażania
Utwórz konto usługi dla platformy, z której pobierasz dane.
Przyznaj kontu usługi niezbędne uprawnienia, aby mieć dostęp
wymaganych zasobów.
Przechowuj dane logowania do konta usługi w skrypcie oprogramowania sprzęgającego
usług.
Podczas wykonywania oprogramowania sprzęgającego użyj zapisanych danych logowania, aby pobrać wymagane
i skalowalnych danych.
Opcjonalnie: zaimplementuj zasady kontroli dostępu, aby filtrować dane.
.
Przykład: dostęp do BigQuery za pomocą usług zaawansowanych Looker Studio i konta usługi
Opracowujesz rozwiązanie, w którym użytkownicy będą tworzyć panele na podstawie
Tabela BigQuery. Jeśli użytkownicy korzystają z oprogramowania sprzęgającego BigQuery w Looker Studio,
potrzebują uprawnień do odczytu tabeli BigQuery. Będzie też potrzebować konta rozliczeniowego.
dla Google Cloud Platform (GCP). Poniższe kroki pokazują, jak korzystać z
konta usługi, aby skonsolidować płatności i przekazać dostęp do danych BigQuery.
Sprawdź, czy konto usługi może tworzyć zadania BigQuery i wyświetlać dane dotyczące
wymaganej tabeli. Więcej informacji znajdziesz w artykule Kontrola dostępu do BigQuery.
Dodaj bibliotekę OAuth2 Apps Script do swojej aplikacji
Projekt Apps Script.
W przypadku funkcji getData uwierzytelnij konto usługi i wygeneruj
token dostępu. Ustaw zakres OAuth2 na
https://www.googleapis.com/auth/bigquery.readonly
Zwróć token dostępu z innymi elementami konfiguracji w odpowiedzi getData.
Poniżej znajduje się pełny przykład kodu oprogramowania sprzęgającego:
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();
}
[null,null,["Ostatnia aktualizacja: 2024-08-22 UTC."],[[["Community Connectors can utilize service accounts for centralized resource access management, enabling data access delegation beyond user credentials."],["Service accounts offer benefits like consolidated billing, custom access control implementation, and access to otherwise restricted data or resources."],["Implementing service accounts involves creating a dedicated account, granting necessary permissions, securely storing credentials in script properties, and utilizing these during connector execution."],["For enhanced security, avoid storing service account credentials directly in code; instead, leverage connector script properties to safeguard sensitive information."],["The provided example demonstrates using a service account with Looker Studio Advanced Services for secure and controlled access to BigQuery data, consolidating billing and delegating access efficiently."]]],[]]