VPC পরিষেবা নিয়ন্ত্রণ - BigQuery সুরক্ষা কোডল্যাব I

1. ভূমিকা

এই কোডল্যাবে, আপনি VPC সার্ভিস কন্ট্রোল ব্যবহার করে BigQuery API সুরক্ষিত করতে শিখবেন। কোডল্যাবটি পরিষেবা পরিধি দ্বারা সুরক্ষিত কোনও API পরিষেবা দিয়ে শুরু হয় না, যার ফলে পাবলিক ডেটাসেটে কোয়েরি চালানো যায় এবং ফলাফলগুলি একটি প্রকল্প টেবিলে সংরক্ষণ করা যায়। কোয়েরিটি একটি প্রকল্পে চলে এবং টেবিলটি (যেখানে ফলাফল সংরক্ষণ করা হয়) অন্য একটি প্রকল্পে তৈরি করা হয়, এমন একটি সেটআপের অনুকরণ করে যেখানে একটি প্রকল্পে ডেটা সংরক্ষণ করা যেতে পারে তবে একটি ভিন্ন প্রকল্প ব্যবহার করে অ্যাক্সেস করা প্রয়োজন।

এরপর, আমরা ডেটা প্রজেক্টকে সুরক্ষিত করার জন্য একটি পরিষেবা পরিধি প্রবর্তন করব। আপনি শিখবেন কিভাবে প্রবেশাধিকার নিয়ম এবং বহির্গমন নিয়ম ব্যবহার করে পর্যবেক্ষণকৃত লঙ্ঘনগুলি ঠিক করতে হয়, এবং পরে অভ্যন্তরীণ IP ঠিকানা ব্যবহার করে অ্যাক্সেস সীমাবদ্ধ করার জন্য একটি অ্যাক্সেস স্তর যুক্ত করতে হয়। এই কোডল্যাবের লক্ষ্যগুলি হল:

  • প্রবেশ এবং বহির্গমন নিয়ম ব্যবহার করে যথাক্রমে প্রবেশ এবং বহির্গমন লঙ্ঘন কীভাবে ঠিক করতে হয় তা বুঝুন।
  • কেন একটি নির্দিষ্ট লঙ্ঘন ঘটেছে তা বুঝুন।
  • প্রয়োগকৃত লঙ্ঘন সংশোধনের সুযোগ বিশ্লেষণ করুন।
  • অ্যাক্সেস লেভেল ব্যবহার করে একটি VPC নেটওয়ার্কে অভ্যন্তরীণ IP ঠিকানা থেকে ট্র্যাফিকের অনুমতি দেওয়ার বিকল্পটি ব্যবহার করে এর পরিধি পরিবর্তন করতে সংশোধন (প্রবেশ / নির্গমন নিয়ম) পরিবর্তন করুন।

2. সম্পদ সেটআপ এবং প্রয়োজনীয়তা

শুরু করার আগে

এই কোডল্যাবে, আমরা ধরে নিচ্ছি যে আপনি ইতিমধ্যেই জানেন:

সেটআপ

আমাদের প্রাথমিক সেটআপটি নিম্নরূপ ডিজাইন করা হয়েছে:

প্রাথমিক নকশাটিতে পরিষেবার পরিধি নেই এবং কোনও API নেই।

একটি নিয়মিত পরিষেবা পরিধি তৈরি করুন

এই কোডল্যাবে, আমরা project-1 রক্ষাকারী একটি নিয়মিত পরিষেবা পরিধি ব্যবহার করব।

কম্পিউট ইঞ্জিন ভিএম তৈরি করুন

এই কোডল্যাবে, আমরা project-2 তে 1টি Compute Engine ইনস্ট্যান্স ব্যবহার করব, যা us-central1 তে অবস্থিত এবং default নামক ডিফল্ট VPC নেটওয়ার্ক ব্যবহার করব।

খরচ

ক্লাউড রিসোর্স/API ব্যবহার করার জন্য আপনাকে Google ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের বাইরে বিলিং এড়াতে আমরা ব্যবহৃত রিসোর্সগুলি বন্ধ করার পরামর্শ দিচ্ছি। নতুন Google ক্লাউড ব্যবহারকারীরা $300 USD ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

খরচ বহনকারী রিসোর্সগুলি হল BigQuery এবং Compute Engine ইনস্ট্যান্স। আপনি BigQuery মূল্য নির্ধারণ ক্যালকুলেটর এবং Compute Engine মূল্য নির্ধারণ ক্যালকুলেটর ব্যবহার করে খরচ অনুমান করতে পারেন।

৩. VPC পরিষেবা নিয়ন্ত্রণ বিধিনিষেধ ছাড়াই BigQuery-তে অ্যাক্সেস

project-1 এ পাবলিক ডেটাসেট অনুসন্ধান করুন এবং ফলাফল সংরক্ষণ করুন

  1. BigQuery Studio পৃষ্ঠায় গিয়ে যাচাই করুন যে আপনি BigQuery API অ্যাক্সেস করতে পারবেন কিনা। আপনার তা করা উচিত কারণ project-2 project-1 project-1 কোনও পরিষেবার পরিধির মধ্যে থাকে, তবুও পরিধিটি কোনও পরিষেবাকে সুরক্ষিত করছে না।
  2. project-2 থেকে, একটি পাবলিক ডেটাসেট অনুসন্ধান করতে নিম্নলিখিত কোয়েরিটি চালান।
SELECT  name, SUM(number) AS total
FROM  `bigquery-public-data.usa_names.usa_1910_2013`
GROUP BY   name
ORDER BY total DESC
LIMIT 10;

পাবলিক ডেটাসেটে কোয়েরি চালানোর পরে ( project-2 এ থাকাকালীন):

  1. Save Results এ ক্লিক করুন এবং BigQuery টেবিলটি নির্বাচন করুন। (নীচের স্ক্রিনশটটি দেখুন)। BigQuery ফলাফল সংরক্ষণ করুন।
  2. গন্তব্য প্রকল্প হিসেবে project-1 নির্বাচন করুন।
  3. ডেটাসেটের নাম দিন codelab_dataset । (বিদ্যমান ডেটাসেট ব্যবহার না করলে, CREATE NEW DATASET নির্বাচন করুন)। BigQuery ফলাফল সংরক্ষণ করার সময় গন্তব্য প্রকল্প নির্বাচন করা।
  4. টেবিলটির নাম দিন: codelab-table
  5. সংরক্ষণ করুন ক্লিক করুন।

project-2 থেকে কোয়েরি কার্যকর করার ফলে পাবলিক ডেটাসেট ডেটা সফলভাবে project-1 এ সংরক্ষণ করা হয়েছে।

project-2 থেকে project-1 এ সংরক্ষিত কোয়েরি ডেটাসেট

project-2 বিগকুয়েরি স্টুডিওতে থাকাকালীন, ডেটা নির্বাচন করতে নিম্নলিখিত কোয়েরিটি চালান:

  • প্রকল্প: project-1
  • ডেটাসেট: codelab_dataset
  • টেবিল: codelab-table
SELECT name, total
FROM `project-1.codelab_dataset.codelab-table`
ORDER BY total DESC
LIMIT 10;

কোয়েরিটি সফলভাবে চালানো উচিত, কারণ project-2 বা project-1 ক্ষেত্রে BigQuery ব্যবহার করা নিষিদ্ধ। ব্যবহারকারীর যথাযথ IAM অনুমতি থাকলে, যেকোনো জায়গা থেকে BigQuery অ্যাক্সেস করা যাবে।

VPC পরিষেবা নিয়ন্ত্রণ পরিষেবার পরিধি ছাড়াই কোডল্যাব সেটআপ। এই চিত্রটি একটি প্রিন্সিপাল যখন একটি BigQuery ডেটাসেট জিজ্ঞাসা করে তখন প্রক্রিয়াটি চিত্রিত করে। প্রতিটি BigQuery কোয়েরি একটি BigQuery কাজ শুরু করে, যা এই পরিস্থিতিতে প্রকৃত ক্রিয়াকলাপ সম্পাদন করে, ডেটা পুনরুদ্ধার করে। একটি Compute Engine ইনস্ট্যান্স থেকে এবং ইন্টারনেট থেকে প্রিন্সিপাল অ্যাক্সেস প্রদর্শিত হয়, যখন একটি পাবলিক ডেটাসেট থেকে এবং একটি পৃথক Google ক্লাউড প্রকল্প থেকে জিজ্ঞাসা করা হয়। ডেটা জিজ্ঞাসা করার প্রক্রিয়া ( GetData ) সফল হয়, VPC পরিষেবা নিয়ন্ত্রণ দ্বারা অবরুদ্ধ না হয়ে।

৪. সোর্স ডেটাসেট প্রজেক্টে BigQuery API সুরক্ষিত করুন

পেরিমিটার perimeter-1 এর কনফিগারেশন পরিবর্তন করুন এবং project-1 এর সুরক্ষিত রিসোর্সের সাথে BigQuery API পরিষেবা সীমাবদ্ধ করুন।

পরিষেবা পরিধি কনফিগার করা হচ্ছে

পরিষেবা পরিধি প্রয়োগ যাচাই করুন

project-2 থেকে, পূর্ববর্তী ধাপের মতো BigQuery Studio-তে নিম্নলিখিত কোয়েরিটি চালান:

SELECT name, total
FROM `project-1.codelab_dataset.codelab-table`
ORDER BY total DESC
LIMIT 10;

একটি VPC পরিষেবা নিয়ন্ত্রণ RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER লঙ্ঘন ঘটবে

এগ্রেস ভিপিসি পরিষেবা নিয়ন্ত্রণ লঙ্ঘন

লঙ্ঘন নিরীক্ষা লগটি project-1 এ অবস্থিত হবে, কারণ সেখানেই পরিধি অতিক্রম করার জন্য লঙ্ঘনটি ঘটেছে। লগগুলি পর্যবেক্ষণ করা vpcServiceControlsUniqueId দিয়ে ফিল্টার করা যেতে পারে ( VPC_SC_DENIAL_UNIQUE_ID পর্যবেক্ষণ করা অনন্য আইডি দিয়ে প্রতিস্থাপন করুন)।

severity=ERROR
resource.type="audited_resource"
protoPayload.metadata.@type="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
protoPayload.metadata.vpcServiceControlsUniqueId="[*VPC_SC_DENIAL_UNIQUE_ID*]"

লঙ্ঘনটি একটি egressViolations যার মধ্যে রয়েছে:

  • principalEmail : [কোয়েরিটি পরিচালনাকারী ব্যবহারকারীর অ্যাকাউন্ট]
  • callerIp : [কোয়েরিটি পরিচালনাকারী ব্যবহারকারী এজেন্টের IP ঠিকানা]
     "egressViolations": [
       {
         "targetResource": "projects/project-2",
         "sourceType": "Resource",
         "source": "projects/project-1",
         "servicePerimeter": "accessPolicies/REDACTED/servicePerimeters/perimeter-1",
         "targetResourcePermissions": [ "bigquery.jobs.create"]
       }      ],

৫. BigQuery জব তৈরি করতে লঙ্ঘন ঠিক করা

BigQuery জব তৈরির জন্য ইগ্রেস ট্র্যাফিক ব্যর্থ হয়েছে। এই চিত্রটি দেখায় যখন একজন প্রিন্সিপাল project-2 project-1 2 থেকে একটি কোয়েরি চালান। যে প্রোজেক্ট থেকে কোয়েরিটি চালানো হয় ( project-2 2) সেই প্রোজেক্টের ডেটাসেট প্রোজেক্ট ( project-1 ) থেকে একটি BigQuery কাজ তৈরি করার অপারেশনটি VPC সার্ভিস কন্ট্রোলস ইগ্রেস লঙ্ঘনের সাথে ব্যর্থ হয় কারণ পরিষেবা পরিধি perimeter-1 BigQuery API রক্ষা করে। পরিধিটি স্থাপনের সাথে, কোনও BigQuery API অনুরোধ project-1 থেকে পরিধির বাইরের দিকে বা সুরক্ষিত প্রকল্পের বাইরের দিকে শুরু করা যাবে না; যদি না পরিষেবা পরিধি কনফিগারেশন দ্বারা অনুমোদিত হয়।

একটি বহির্গমন নিয়ম তৈরি করে একটি বহির্গমন লঙ্ঘন ঠিক করা যেতে পারে যা নিম্নলিখিত বিষয়গুলির উপর ভিত্তি করে:

  • উৎস (FROM): যথা ব্যবহারকারীর ইমেল ঠিকানা এবং প্রসঙ্গ (যেমন: কলার আইপি ঠিকানা, ডিভাইসের অবস্থা, অবস্থান, ইত্যাদি)
  • গন্তব্য (TO): যথা লক্ষ্য সম্পদ, পরিষেবা, এবং পদ্ধতি বা অনুমতি।

পরিলক্ষিত বহির্গমন লঙ্ঘন ঠিক করার জন্য, একটি বহির্গমন নিয়ম তৈরি করুন যা BigQuery পরিষেবা এবং bigquery.jobs.create পদ্ধতি/ অনুমতিতে কোয়েরি ( user@example.com ) চালানো ব্যবহারকারী অ্যাকাউন্ট দ্বারা targetResource ( project-2 ) এর দিকে ট্র্যাফিকের অনুমতি দেয়।

নির্গমন লঙ্ঘন কনফিগারেশন ঠিক করুন।

কনফিগার করা বহির্গমন নিয়ম থেকে প্রত্যাশিত আচরণ:

  • FROM | পরিচয়: শুধুমাত্র নির্দিষ্ট পরিচয় user@example.com পরিধির সীমানা অতিক্রম করার অনুমতি দিতে হবে।
  • TO | প্রকল্প: নির্দিষ্ট পরিচয়টি কেবলমাত্র যদি গন্তব্য নির্দিষ্ট প্রকল্প project-2 হয় তবেই পরিধির সীমানা অতিক্রম করতে পারে।
  • TO | পরিষেবা: নির্দিষ্ট পরিচয়টি নির্দিষ্ট পরিষেবা এবং পদ্ধতির জন্য API কল করলেই কেবল নির্দিষ্ট প্রকল্পের দিকে ট্র্যাফিক শুরু করতে পারে। অন্যথায়, উদাহরণস্বরূপ, যদি তারা পরিষেবা পরিধি দ্বারা সুরক্ষিত একটি ভিন্ন পরিষেবা চেষ্টা করে, তবে অপারেশনটি ব্লক করা হবে কারণ অন্যান্য পরিষেবা অনুমোদিত নয়।

সমাধান পরীক্ষা করুন: নির্গমন নিয়ম

একবার বহির্গমন নিয়ম কার্যকর হয়ে গেলে, একই কোয়েরি চালান।

SELECT name, total
FROM `project-1.codelab_dataset.codelab-table`
ORDER BY total DESC
LIMIT 10;

আরেকটি লঙ্ঘন ঘটবে, এবার NO_MATCHING_ACCESS_LEVEL প্রবেশ লঙ্ঘন। লক্ষ্য প্রকল্প এবং পদ্ধতির দিক থেকে নতুন লঙ্ঘনটি প্রথমটির থেকে আলাদা।

ভিপিসি পরিষেবা নিয়ন্ত্রণ লঙ্ঘন প্রবেশ

নতুন লঙ্ঘনটি হল একটি প্রবেশ লঙ্ঘন যার সাথে

  • principalEmail : [কোয়েরিটি পরিচালনাকারী ব্যবহারকারীর অ্যাকাউন্ট]
  • callerIp : [কোয়েরিটি পরিচালনাকারী ব্যবহারকারী এজেন্টের IP ঠিকানা]
ingressViolations: [
0: {
 servicePerimeter: "accessPolicies/REDACTED/servicePerimeters/perimeter-1"
 targetResource: "projects/project-1"
 targetResourcePermissions: [0: "bigquery.tables.getData"]}
 ]

bigquery.tables.getData পদ্ধতির লঙ্ঘনের কারণ হল BigQuery জব দ্বারা BigQuery টেবিল থেকে ডেটা পাওয়ার চেষ্টা করে একটি API কল শুরু করা হয়েছে।

৬. BigQuery টেবিল ডেটা পেতে লঙ্ঘন ঠিক করা

একটি প্রবেশাধিকার নিয়ম একটি প্রবেশাধিকার লঙ্ঘন সংশোধন করে, পাশাপাশি অনুমোদিত অ্যাক্সেসের প্রেক্ষাপট, যেমন উৎস/লক্ষ্য প্রকল্প এবং তারা যে API পদ্ধতিতে অ্যাক্সেস করতে পারে তার সাথে পরিষেবার পরিধির সীমানা অতিক্রম করার অনুমতি রয়েছে তার উপর একটি ক্ষুদ্র নিয়ন্ত্রণ প্রদান করে।

একটি প্রবেশ লঙ্ঘন একটি প্রবেশ নিয়ম দ্বারা স্থির করা হয় যা নিম্নলিখিতগুলির সাথে কনফিগার করা হয়:

  • উৎস (FROM): যথা ব্যবহারকারীর ইমেল ঠিকানা এবং প্রসঙ্গ (যেমন: কলার আইপি ঠিকানা, ডিভাইসের অবস্থা, অবস্থান, ইত্যাদি)
  • গন্তব্য (TO): যথা লক্ষ্য সম্পদ, পরিষেবা, এবং পদ্ধতি বা অনুমতি।

প্রবেশের নিয়মটি নির্দিষ্ট ব্যবহারকারীকে নির্দিষ্ট পরিষেবা এবং পদ্ধতিতে project-1 এর দিকে ট্র্যাফিকের অনুমতি দেবে।

প্রবেশ লঙ্ঘনের সমাধান

কনফিগার করা ইনগ্রেস নিয়ম থেকে প্রত্যাশিত আচরণ:

  • FROM | পরিচয়: শুধুমাত্র নির্দিষ্ট পরিচয় user@example.com পরিধির সীমানা অতিক্রম করার অনুমতি দিতে হবে।
  • TO | প্রকল্প: নির্দিষ্ট পরিচয়টি কেবলমাত্র যদি গন্তব্য নির্দিষ্ট প্রকল্প project-1 হয় তবেই পরিধির সীমানা অতিক্রম করতে পারে।
  • TO | পরিষেবা: নির্দিষ্ট পরিচয়টি কেবলমাত্র তখনই পরিধির ভিতরে ট্র্যাফিক শুরু করতে পারে যদি API কলটি BigQuery API এবং নির্দিষ্ট পদ্ধতি bigquery.tables.getData এর জন্য হয়।

এখন থেকে VPC পরিষেবা নিয়ন্ত্রণ লঙ্ঘন ছাড়াই একই ধরণের প্রশ্নের সম্পাদন যথাযথভাবে সম্পন্ন হবে।

আমরা project-1 এ BigQuery API সফলভাবে সীমাবদ্ধ করেছি যাতে এটি শুধুমাত্র user@example.com দ্বারা ব্যবহার করা যেতে পারে, user2@example.com দ্বারা নয়।

BigQuery API-কে সুরক্ষিত করে VPC পরিষেবা নিয়ন্ত্রণ পরিধি এই চিত্রটি দেখায় যে দুটি ভিন্ন প্রিন্সিপাল একই ডেটাসেটকে কীভাবে জিজ্ঞাসা করার চেষ্টা করে। user2@example.com (বিন্দুযুক্ত নীল রেখা) দ্বারা অ্যাক্সেস VPC পরিষেবা নিয়ন্ত্রণ দ্বারা অস্বীকৃত, কারণ পরিষেবা পরিধি কনফিগারেশন দ্বারা তাদের project-1 থেকে বা তার দিকে BigQuery অপারেশন চালানোর অনুমতি নেই। user@example.com (সবুজ সলিড লাইন) দ্বারা অ্যাক্সেস সফল, কারণ VPC পরিষেবা নিয়ন্ত্রণ কনফিগারেশন দ্বারা তাদের project-1 থেকে এবং তার দিকে অপারেশন করার অনুমতি রয়েছে।

৭. অভ্যন্তরীণ আইপি ঠিকানার উপর ভিত্তি করে পরিষেবা পরিধি দ্বারা অনুমোদিত ট্র্যাফিক সীমাবদ্ধ করুন।

বর্তমান কনফিগারেশনের মাধ্যমে মনোনীত ব্যবহারকারীরা যেকোনো স্থান থেকে, ইন্টারনেটের যেকোনো জায়গা থেকে, project-1 এ BigQuery-তে কোয়েরি চালাতে পারবেন, যদি তাদের IAM-এর অনুমতি থাকে যে তারা ডেটা কোয়েরি করতে পারে, এবং যতক্ষণ না তারা তাদের অ্যাকাউন্ট ব্যবহার করে। নিরাপত্তার দৃষ্টিকোণ থেকে, এর অর্থ হল যে যদি অ্যাকাউন্টটি ঝুঁকির মুখে পড়ে, তাহলে যে কেউ অ্যাকাউন্টে অ্যাক্সেস পাবে সে কোনও অতিরিক্ত বিধিনিষেধ ছাড়াই BigQuery ডেটা অ্যাক্সেস করতে পারবে।

ব্যবহারকারীর প্রেক্ষাপট নির্দিষ্ট করার জন্য প্রবেশ এবং বহির্গমন নিয়মে অ্যাক্সেস স্তর ব্যবহার করে আরও বিধিনিষেধ প্রয়োগ করা যেতে পারে। উদাহরণস্বরূপ, আপনি পূর্বে কনফিগার করা প্রবেশ নিয়মের সাথে একত্রে উৎস IP এর উপর ভিত্তি করে অ্যাক্সেসের অনুমতি দিতে পারেন যা কলার পরিচয় দ্বারা অ্যাক্সেস অনুমোদন করে। উৎস IP দ্বারা অ্যাক্সেস পাবলিক IP CIDR রেঞ্জ উভয়ের জন্যই সম্ভব, যদি ব্যবহারকারী ক্লায়েন্টের জন্য একটি পাবলিক IP নির্ধারিত থাকে, অথবা ব্যবহারকারী ক্লায়েন্ট যদি Google ক্লাউড প্রকল্প থেকে পরিচালনা করে তবে একটি অভ্যন্তরীণ IP ঠিকানা ব্যবহার করে।

একটি অভ্যন্তরীণ আইপি ঠিকানা অ্যাক্সেস শর্ত সহ অ্যাক্সেস স্তর তৈরি করুন

একই স্কোপড অ্যাক্সেস পলিসি ফোল্ডারের অধীনে, একটি অ্যাক্সেস লেভেল তৈরি করতে অ্যাক্সেস কনটেক্সট ম্যানেজার পৃষ্ঠাটি খুলুন।

  1. অ্যাক্সেস কনটেক্সট ম্যানেজার পৃষ্ঠায়, অ্যাক্সেস লেভেল তৈরি করুন নির্বাচন করুন।
  2. নতুন অ্যাক্সেস লেভেল প্যানে:
    1. একটি শিরোনাম দিন: আপনি codelab-al ব্যবহার করতে পারেন।
    2. শর্তাবলী বিভাগে, IP সাবনেটওয়ার্ক ক্লিক করুন।
    3. প্রাইভেট আইপি ট্যাব নির্বাচন করুন এবং ভিপিসি নেটওয়ার্ক নির্বাচন করুন এ ক্লিক করুন।
    4. "VPC Networks যোগ করুন" ফলক থেকে, আপনি হয় ব্রাউজ করে default নেটওয়ার্ক খুঁজে পেতে পারেন অথবা //compute.googleapis.com/projects/project-2/global/networks/default ফর্ম্যাটে সম্পূর্ণ নেটওয়ার্ক নামটি ম্যানুয়ালি লিখতে পারেন।
    5. ভিপিসি নেটওয়ার্ক যোগ করুন এ ক্লিক করুন।
    6. "আইপি সাবনেট নির্বাচন করুন" এ ক্লিক করুন।
    7. VM ইনস্ট্যান্সটি কোথায় অবস্থিত তা নির্বাচন করুন। এই কোডল্যাবের জন্য, এটি হল us-central1
    8. সংরক্ষণ করুন ক্লিক করুন।

আমরা একটি অ্যাক্সেস লেভেল তৈরি করেছি, যা এখনও কোনও পরিধি বা প্রবেশ/প্রস্থান নীতিতে প্রয়োগ করা হয়নি।

আইপি সাবনেটওয়ার্ক দিয়ে কনফিগার করা অ্যাক্সেস লেভেল

প্রবেশাধিকার নিয়মে অ্যাক্সেস স্তর যোগ করুন

প্রবেশাধিকার নিয়ম দ্বারা অনুমোদিত ব্যবহারকারীকে অ্যাক্সেস লেভেলের সাথে যাচাই করার জন্য, প্রবেশাধিকার নিয়মে অ্যাক্সেস লেভেল কনফিগার করা প্রয়োজন। কোয়েরি ডেটাতে অ্যাক্সেস অনুমোদনকারী ইনগ্রেস নিয়মটি perimeter-1 এ রয়েছে। প্রবেশাধিকার নিয়মটি পরিবর্তন করে উৎসটিকে অ্যাক্সেস লেভেল codelab-al হিসাবে সংজ্ঞায়িত করুন।

ভিপিসি নেটওয়ার্কের সাথে অ্যাক্সেস লেভেল

নতুন কনফিগারেশন পরীক্ষা করা হচ্ছে

ইনগ্রেস রুলে অ্যাক্সেস লেভেল যোগ করার পর, প্রোজেক্ট project-2 এর জন্য VPC নেটওয়ার্ক default ক্লায়েন্ট থেকে এক্সিকিউট না করা হলে একই BigQuery কোয়েরি ব্যর্থ হবে। এই আচরণ যাচাই করার জন্য, এন্ডপয়েন্ট ডিভাইসটি ইন্টারনেটের সাথে সংযুক্ত থাকাকালীন Google ক্লাউড কনসোল থেকে কোয়েরিটি এক্সিকিউট করুন। কোয়েরিটি ব্যর্থভাবে শেষ হবে, যার সাথে একটি ইনগ্রেস লঙ্ঘনের ইঙ্গিত থাকবে।

একই কোয়েরিটি project-2 এ অবস্থিত VPC নেটওয়ার্ক default থেকে চালানো যেতে পারে। একইভাবে, VPC নেটওয়ার্ক default ব্যবহার করে project-2 এ অবস্থিত একটি Compute Engine ইনস্ট্যান্স থেকে একই BigQuery কোয়েরি কার্যকর করাও ব্যর্থ হবে। এর কারণ হল ingress নিয়মটি এখনও শুধুমাত্র principal user@example.com কে অনুমতি দেওয়ার জন্য কনফিগার করা আছে। তবে, VM Compute Engine ডিফল্ট পরিষেবা অ্যাকাউন্ট ব্যবহার করছে।

project-2 এ কম্পিউট ইঞ্জিন ইনস্ট্যান্স থেকে একই কমান্ড সফলভাবে চালানোর জন্য, নিশ্চিত করুন যে:

  • BigQuery API ব্যবহার করার জন্য VM-এর অ্যাক্সেস স্কোপ আছে। VM অ্যাক্সেস স্কোপ হিসেবে "সমস্ত ক্লাউড API-তে সম্পূর্ণ অ্যাক্সেসের অনুমতি দিন" নির্বাচন করে এটি করা যেতে পারে।
  • VM-এর সাথে সংযুক্ত পরিষেবা অ্যাকাউন্টের IAM অনুমতির প্রয়োজন:
    • project-2 এ BigQuery জব তৈরি করুন
    • project-1 এ অবস্থিত BigQuery টেবিল থেকে BigQuery ডেটা পান।
  • ডিফল্ট কম্পিউট ইঞ্জিন পরিষেবা অ্যাকাউন্টটি প্রবেশ এবং বহির্গমন নিয়ম দ্বারা অনুমোদিত হতে হবে।

এখন আমাদের ইনগ্রেস রুলে (BigQuery টেবিল থেকে ডেটা পাওয়ার অনুমতি দেওয়ার জন্য) এবং এগ্রেস রুলে (BigQuery জব তৈরির অনুমতি দেওয়ার জন্য) কম্পিউট ইঞ্জিন ডিফল্ট সার্ভিস অ্যাকাউন্ট যোগ করতে হবে।

ভিপিসি সার্ভিস কন্ট্রোলস সার্ভিস পেরিমিটার কনফিগারেশন অ্যাক্সেস লেভেল সহ

default VPC নেটওয়ার্কে project-2 এর একটি Compute Engine ইনস্ট্যান্স থেকে, নিম্নলিখিত bq query কমান্ডটি চালান:

bq query --nouse_legacy_sql \
'SELECT name, total
FROM `project-1.codelab_dataset.codelab-table`
ORDER BY total DESC
LIMIT 10;'

বর্তমান কনফিগারেশনের সাথে, BigQuery কমান্ডটি কেবল তখনই সফল হবে যদি:

  • project-2 এ ডিফল্ট VPC নেটওয়ার্ক ব্যবহার করে একটি VM-এ চালান, এবং
  • নির্দিষ্ট us-central1 অঞ্চলে (Ip সাবনেটওয়ার্ক) অবস্থিত, এবং
  • পরিষেবা পরিধিতে কনফিগার করা ডিফল্ট কম্পিউট ইঞ্জিন পরিষেবা অ্যাকাউন্ট ব্যবহার করে চালান।

BigQuery কমান্ড কোয়েরি অন্য কোথাও থেকে চালানো হলে ব্যর্থ হবে, যার মধ্যে রয়েছে:

  • যদি project-2 এ ডিফল্ট ভিপিসি নেটওয়ার্ক ব্যবহার করে একটি ভিএম-এ চালানো হয় কিন্তু অ্যাক্সেস লেভেলে যোগ করা সাবনেটের চেয়ে ভিন্ন অঞ্চলে অবস্থিত হয়, অথবা
  • যদি user@example.com ব্যবহারকারী দ্বারা ইন্টারনেটে একজন ব্যবহারকারী ক্লায়েন্টের সাথে চালানো হয়।

GCE ডিফল্ট পরিষেবা অ্যাকাউন্টের জন্য অ্যাক্সেসের অনুমতি প্রদানকারী পরিষেবা পরিধি। এই চিত্রটি একই প্রধান, user@example.com দ্বারা দুটি ভিন্ন স্থান থেকে শুরু করা অ্যাক্সেসকে চিত্রিত করে: ইন্টারনেট এবং একটি Compute Engine ইনস্ট্যান্স। ইন্টারনেট থেকে সরাসরি BigQuery-তে অ্যাক্সেস (নীল বিন্দুযুক্ত লাইন) VPC পরিষেবা নিয়ন্ত্রণ দ্বারা ব্লক করা হয়, যখন একটি VM (সবুজ সলিড লাইন) থেকে অ্যাক্সেস অনুমোদিত হয় — যখন Compute Engine ডিফল্ট পরিষেবা অ্যাকাউন্টের ছদ্মবেশ ধারণ করে — অনুমোদিত হয়। পরিষেবার পরিধিটি একটি অভ্যন্তরীণ IP ঠিকানা থেকে সুরক্ষিত সংস্থানগুলিতে অ্যাক্সেসের অনুমতি দেওয়ার জন্য কনফিগার করা হওয়ার কারণে অনুমোদিত অ্যাক্সেস।

৮. পরিষ্কার-পরিচ্ছন্নতা

যদিও পরিষেবাটি ব্যবহার না করা অবস্থায় VPC পরিষেবা নিয়ন্ত্রণ ব্যবহারের জন্য আলাদা কোনও চার্জ নেই, তবে এই পরীক্ষাগারে ব্যবহৃত সেটআপ পরিষ্কার করা একটি সর্বোত্তম পদ্ধতি। চার্জ এড়াতে আপনি VM ইনস্ট্যান্স এবং BigQuery ডেটাসেট, অথবা Google Cloud প্রকল্পগুলিও মুছে ফেলতে পারেন। ক্লাউড প্রকল্পটি মুছে ফেলার ফলে সেই প্রকল্পের মধ্যে ব্যবহৃত সমস্ত সংস্থানের জন্য বিলিং বন্ধ হয়ে যায়।

  • VM ইনস্ট্যান্স মুছে ফেলার জন্য, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন:
    • গুগল ক্লাউড কনসোলে, ভিএম ইনস্ট্যান্স পৃষ্ঠায় যান।
    • VM ইনস্ট্যান্স নামের বাম পাশে থাকা চেকবক্সটি নির্বাচন করুন, এবং তারপর Delete নির্বাচন করুন, এবং তারপর নিশ্চিত করতে আবার Delete এ ক্লিক করুন। কম্পিউট ইঞ্জিন ইনস্ট্যান্স ইনস্ট্যান্স মুছে ফেলা।
  • পরিষেবা পরিধি মুছে ফেলার জন্য, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:
    • গুগল ক্লাউড কনসোলে, নিরাপত্তা নির্বাচন করুন, এবং তারপর VPC পরিষেবা নিয়ন্ত্রণগুলি সেই স্তরে যেখানে অ্যাক্সেস নীতিটি স্কোপ করা হয়েছে, এই ক্ষেত্রে, ফোল্ডার স্তরে।
    • VPC পরিষেবা নিয়ন্ত্রণ পৃষ্ঠায়, আপনি যে পরিধিটি মুছতে চান তার সাথে সম্পর্কিত টেবিলের সারিতে, মুছুন ক্লিক করুন।
  • অ্যাক্সেস লেভেল মুছে ফেলার জন্য, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:
    • গুগল ক্লাউড কনসোলে, ফোল্ডার স্কোপে অ্যাক্সেস কনটেক্সট ম্যানেজার পৃষ্ঠাটি খুলুন।
    • গ্রিডে, আপনি যে অ্যাক্সেস লেভেলটি মুছতে চান তার জন্য সারিটি চিহ্নিত করুন, তিন-বিন্দু মেনু নির্বাচন করুন এবং তারপরে মুছুন নির্বাচন করুন।
  • প্রকল্পগুলি বন্ধ করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:
    • গুগল ক্লাউড কনসোলে, আপনি যে প্রকল্পটি মুছতে চান তার IAM এবং অ্যাডমিন সেটিংস পৃষ্ঠায় যান।
    • IAM এবং অ্যাডমিন সেটিংস পৃষ্ঠায়, Shutdown নির্বাচন করুন।
    • প্রজেক্ট আইডি লিখুন, এবং যাইহোক Shutdown নির্বাচন করুন।

9. অভিনন্দন!

এই কোডল্যাবে, আপনি একটি VPC পরিষেবা নিয়ন্ত্রণ পরিধি তৈরি করেছেন, এটি প্রয়োগ করেছেন এবং এটির সমস্যা সমাধান করেছেন।

আরও জানুন

আপনি নিম্নলিখিত পরিস্থিতিগুলিও অন্বেষণ করতে পারেন:

  • প্রকল্পটি VPC পরিষেবা নিয়ন্ত্রণ দ্বারা সুরক্ষিত হওয়ার পরে, পাবলিক ডেটাসেটে একই কোয়েরি চালান।
  • project-1 এর একই পরিধিতে project-2 যোগ করুন।
  • project-2 তার নিজস্ব পরিধিতে যোগ করুন এবং project-1 বর্তমান পরিধিতে রাখুন।
  • শুধুমাত্র ডেটা পুনরুদ্ধারের জন্য নয়, টেবিলে ডেটা আপডেট করার জন্য কোয়েরি চালান।

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ২.০ জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।