برای مدیریت متمرکز دسترسی به منابع، میتوانید از حسابهای سرویس در رابطهای انجمن خود استفاده کنید. یک مورد معمول استفاده، واگذاری دسترسی به دادههایی است که کاربران نمیتوانند با استفاده از اعتبار خود به آن دسترسی داشته باشند.
میتوانید صورتحساب را برای دسترسی به دادهها ادغام کنید.
شما می توانید لایه کنترل دسترسی خود را در کانکتور خود پیاده سازی کنید.
شما می توانید دسترسی به داده ها یا منابعی را که اعتبار کاربر به آنها دسترسی ندارد واگذار کنید.
مراحل پیاده سازی
برای پلتفرمی که دادهها را از آن واکشی میکنید، یک حساب سرویس ایجاد کنید.
مجوزهای لازم را برای حساب سرویس ارائه دهید تا بتواند به منابع مورد نیاز دسترسی پیدا کند.
اطلاعات کاربری حساب سرویس را در ویژگی های اسکریپت رابط خود ذخیره کنید.
در طول اجرای رابط، از اعتبارنامه های ذخیره شده برای واکشی داده های مورد نیاز استفاده کنید.
اختیاری : منطق کنترل دسترسی را برای فیلتر کردن داده ها پیاده سازی کنید.
مثال: دسترسی به BigQuery با سرویسهای پیشرفته استودیوی Looker و یک حساب سرویس
شما در حال ساخت راه حلی هستید که در آن کاربران شما داشبوردهایی را از جدول BigQuery بسازند. اگر کاربران شما از رابط BigQuery استودیوی Looker استفاده می کنند، به جدول BigQuery دسترسی خواندن نیاز دارند. آنها همچنین به یک حساب صورتحساب برای Google Cloud Platform (GCP) نیاز دارند. مراحل زیر نحوه استفاده از یک حساب سرویس برای تجمیع صورتحساب و واگذاری دسترسی به دادههای BigQuery را نشان میدهد.
مطمئن شوید که حساب سرویس میتواند کارهای BigQuery ایجاد کند و دادههای جدول مورد نیاز را مشاهده کند. برای جزئیات بیشتر به BigQuery Access Control مراجعه کنید.
برای تابع 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();}
تاریخ آخرین بهروزرسانی 2024-11-13 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2024-11-13 بهوقت ساعت هماهنگ جهانی."],[[["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."]]],[]]