রিসোর্স অ্যাক্সেস কেন্দ্রীভূত পরিচালনার জন্য আপনি আপনার কমিউনিটি সংযোগকারীগুলিতে পরিষেবা অ্যাকাউন্টগুলি ব্যবহার করতে পারেন। একটি সাধারণ ব্যবহারের ক্ষেত্রে ব্যবহারকারীরা তাদের নিজস্ব শংসাপত্র ব্যবহার করে অ্যাক্সেস করতে সক্ষম হবে না এমন ডেটাতে অ্যাক্সেস অর্পণ করা হবে।
বিষয়ের সাথে নিজেকে পরিচিত করতে পরিষেবা অ্যাকাউন্টগুলি বোঝার পর্যালোচনা করুন।
সুবিধা
- আপনি ডেটা অ্যাক্সেসের জন্য বিলিং একত্রিত করতে পারেন।
- আপনি আপনার সংযোগকারীতে আপনার নিজস্ব অ্যাক্সেস নিয়ন্ত্রণ স্তর প্রয়োগ করতে পারেন।
- আপনি ডেটা বা সংস্থানগুলিতে অ্যাক্সেস অর্পণ করতে পারেন যা ব্যবহারকারীর শংসাপত্রের অ্যাক্সেস নেই৷
বাস্তবায়ন পদক্ষেপ
- আপনি যে প্ল্যাটফর্ম থেকে ডেটা আনছেন তার জন্য একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন।
- পরিষেবা অ্যাকাউন্টে প্রয়োজনীয় অনুমতি প্রদান করুন যাতে এটি প্রয়োজনীয় সংস্থানগুলি অ্যাক্সেস করতে পারে।
- আপনার সংযোগকারীর স্ক্রিপ্ট বৈশিষ্ট্যগুলিতে পরিষেবা অ্যাকাউন্টের শংসাপত্রগুলি সংরক্ষণ করুন৷
- সংযোগকারী কার্যকর করার সময়, প্রয়োজনীয় ডেটা আনতে সঞ্চিত শংসাপত্রগুলি ব্যবহার করুন৷
- ঐচ্ছিক : ডেটা ফিল্টার করতে অ্যাক্সেস কন্ট্রোল লজিক প্রয়োগ করুন।
উদাহরণ: Looker Studio অ্যাডভান্সড পরিষেবা এবং একটি পরিষেবা অ্যাকাউন্টের মাধ্যমে BigQuery অ্যাক্সেস করা
আপনি একটি সমাধান তৈরি করছেন যেখানে আপনার ব্যবহারকারীরা একটি BigQuery টেবিল থেকে ড্যাশবোর্ড তৈরি করবে। আপনার ব্যবহারকারীরা লুকার স্টুডিওর BigQuery সংযোগকারী ব্যবহার করলে, তাদের BigQuery টেবিলে পড়ার অ্যাক্সেসের প্রয়োজন হবে। তাদের Google ক্লাউড প্ল্যাটফর্ম (GCP)-এর জন্য একটি বিলিং অ্যাকাউন্টেরও প্রয়োজন হবে৷ বিলিং একত্রিত করতে এবং BigQuery ডেটাতে অ্যাক্সেস অর্পণ করতে কীভাবে একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করতে হয় তা নিম্নলিখিত ধাপগুলি ব্যাখ্যা করে৷
- আপনার পছন্দসই জিসিপি প্রকল্পে একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন ।
- পরিষেবা অ্যাকাউন্টটি BigQuery কাজ তৈরি করতে পারে এবং প্রয়োজনীয় টেবিলের ডেটা দেখতে পারে তা নিশ্চিত করুন। বিস্তারিত জানার জন্য BigQuery অ্যাক্সেস কন্ট্রোল দেখুন।
- পরিষেবা অ্যাকাউন্টের জন্য একটি কী তৈরি করুন এবং আপনার সংযোগকারীর স্ক্রিপ্ট বৈশিষ্ট্যগুলিতে শংসাপত্রগুলি সংরক্ষণ করুন৷
- আপনার Apps স্ক্রিপ্ট প্রকল্পে OAuth2 অ্যাপস স্ক্রিপ্ট লাইব্রেরি অন্তর্ভুক্ত করুন।
- আপনার
getData
ফাংশনের জন্য, পরিষেবা অ্যাকাউন্টটি প্রমাণীকরণ করুন এবং একটি অ্যাক্সেস টোকেন তৈরি করুন। OAuth2 স্কোপhttps://www.googleapis.com/auth/bigquery.readonly
এ সেট করুন। -
getData
প্রতিক্রিয়ায় অন্যান্য কনফিগারেশন আইটেমগুলির সাথে অ্যাক্সেস টোকেন ফেরত দিন।
নিম্নলিখিত সংযোগকারী কোডের একটি সম্পূর্ণ উদাহরণ:
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(); }