자신의 사용자 인증 정보가 포함된 데이터 또는 리소스에 대한 액세스 권한을
님은 액세스 권한이 없습니다.
구현 단계
데이터를 가져올 플랫폼의 서비스 계정을 만듭니다.
서비스 계정에서 액세스할 수 있도록 필요한 권한 제공
리소스를 배포합니다
커넥터의 스크립트에 서비스 계정의 사용자 인증 정보 저장
속성
커넥터 실행 중에 저장된 사용자 인증 정보를 사용하여 필요한 항목을 가져옵니다.
데이터를 수집하는 데 사용됩니다
선택사항: 액세스 제어 로직을 구현하여 데이터를 필터링합니다.
를 통해 개인정보처리방침을 정의할 수 있습니다.
예: Looker Studio 고급 서비스 및 서비스 계정으로 BigQuery 액세스
사용자가 Google Cloud 콘솔에서 대시보드를 빌드하는
BigQuery 테이블 사용자가 Looker Studio의 BigQuery 커넥터를 사용하는 경우
BigQuery 테이블에 대한 읽기 액세스 권한이 필요합니다. 결제 계정도 필요합니다.
(Google Cloud Platform(GCP))에 대해 알아봅니다 다음 단계는
서비스 계정을 사용하여 결제를 통합하고 BigQuery 데이터에 대한 액세스 권한을 위임할 수 있습니다.
getData 함수의 경우 서비스 계정을 인증하고
액세스할 수 있습니다 OAuth2 범위를 다음으로 설정
https://www.googleapis.com/auth/bigquery.readonly
getData 응답에서 다른 구성 항목과 함께 액세스 토큰을 반환합니다.
다음은 커넥터 코드의 전체 예입니다.
기본.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();}
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-25(UTC)"],[],[]]