স্বাক্ষরিত কন্টেইনার ইমেজ কোডল্যাব

1। সংক্ষিপ্ত বিবরণ

এই কোডল্যাব কনফিডেন্সিয়াল স্পেস কোডল্যাবের উপর তৈরি করে। ওয়ার্কলোড আইডেন্টিটি পুল (ডব্লিউআইপি) নীতিতে ইমেজ ডাইজেস্ট নির্দিষ্ট করার পরিবর্তে একটি প্রত্যয়িত পাবলিক কী ব্যবহার করে একটি কন্টেইনারকে প্রমাণীকরণ করার বিকল্প দেওয়া হয়েছে স্বাক্ষরিত কন্টেইনার ইমেজ সমর্থন।

গোপনীয় স্থানে স্বাক্ষরিত কন্টেইনার ইমেজ সমর্থনের সাথে কি পরিবর্তন হয়েছে:

উন্নত ব্যবহারযোগ্যতা: স্বাক্ষরিত কন্টেইনার ইমেজ বৈশিষ্ট্যের প্রবর্তনের সাথে আমরা এখন একটি ছবি অনুমোদনকারী সহযোগী/অডিটরদের জন্য একটি কাজের চাপ ইমেজ ডাইজেস্ট পদ্ধতি থেকে কন্টেইনার স্বাক্ষর পদ্ধতিতে স্থানান্তর করতে পারি।

  • সরাসরি ইমেজ ডাইজেস্ট ব্যবহার করার সময়, রিসোর্স মালিকদের অবশ্যই একটি ইমেজ ডাইজেস্টের সাথে তাদের নীতি আপডেট করতে হবে যখনই তারা একটি নতুন ছবি অনুমোদন করবে। চিত্র স্বাক্ষর ব্যবহার করে, নীতিতে একটি সর্বজনীন কী ফিঙ্গারপ্রিন্ট রয়েছে, যার সংশ্লিষ্ট ব্যক্তিগত কীটি সহযোগী/অডিটরের মালিকানাধীন এবং নিরীক্ষিত ছবিগুলিতে স্বাক্ষর করতে ব্যবহৃত হয়।
  • কিছু নিরাপত্তা মডেলের জন্য, একটি বিশ্বস্ত ছবি সাইনিং কী উল্লেখ করা নতুন ইমেজ ডাইজেস্ট মানগুলির একটি তালিকা আপডেট করার চেয়ে বেশি সুবিধাজনক৷

কোন নিরাপত্তা রিগ্রেশন নেই: এই কন্টেইনার স্বাক্ষর পদ্ধতি পূর্ববর্তী ইমেজ ডাইজেস্ট পদ্ধতির উপর কোন নিরাপত্তা রিগ্রেশন আনবে না কারণ বিশ্বাসের সীমানা একই থাকে। কনটেইনার স্বাক্ষর পদ্ধতিতে, সম্পদের মালিক WIP নীতিতে বিশ্বস্ত পাবলিক কী ফিঙ্গারপ্রিন্ট উল্লেখ করে একটি যাচাইকরণ কী অনুমোদন করেন এবং অনুমোদন যাচাইকরণ যাচাইকরণ পরিষেবা এবং WIP দ্বারা সঞ্চালিত হয়; প্রত্যয়ন যাচাইকারী পরিষেবা যাচাই করে যে স্বাক্ষরটি চলমান কাজের চাপের সাথে যুক্ত, এবং WIP নীতি পরীক্ষা করে যে পরিষেবা দ্বারা দৃঢ় করা সর্বজনীন কী নীতি দ্বারা অনুমোদিত।

দৃঢ় নিরাপত্তা: কন্টেইনার ইমেজ স্বাক্ষর ব্যবহার করে একজনকে ইমেজ স্বাক্ষরকারীকে কিছু পরিমাণ বিশ্বাস অর্পণ করতে দেয়। প্রত্যয়ন নীতিতে একজন বিশ্বস্ত স্বাক্ষরকারীর সর্বজনীন কী ফিঙ্গারপ্রিন্ট উল্লেখ করে, সম্পদের মালিক সেই স্বাক্ষরকারীকে অনুমোদন করে যে কনটেইনার চিত্রগুলি একটি নীতির সাথে সঙ্গতিপূর্ণ। প্রত্যয়ন যাচাইকারী পরিষেবা যাচাই করে যে স্বাক্ষরটি চলমান কাজের চাপের সাথে যুক্ত, এবং নীতি পরীক্ষা করে যে স্বাক্ষর তৈরি করা সর্বজনীন কী নীতি দ্বারা অনুমোদিত। এর মাধ্যমে, ইমেজ সাইনিং প্রদান করে পরোক্ষের যোগ করা স্তরটি গোপনীয় স্থানের শক্তিশালী নিরাপত্তা গ্যারান্টি বজায় রাখে।

এই পন্থাগুলির মধ্যে একমাত্র পার্থক্য হল যে পরবর্তী পদ্ধতিটি পরোক্ষের একটি অতিরিক্ত স্তর ব্যবহার করে যেখানে কাজের চাপের চিত্রগুলি একটি স্বাক্ষর কী দিয়ে অনুমোদিত হয়। এটি কোনো নতুন নিরাপত্তা দুর্বলতার পরিচয় দেয় না কারণ বিশ্বাসের সীমানা একই থাকে।

আপনি কি শিখবেন

এই কোডল্যাবে, আপনি কীভাবে সুরক্ষিত সংস্থানগুলিতে অ্যাক্সেস অনুমোদন করতে একটি ধারক চিত্র স্বাক্ষর ব্যবহার করবেন তা শিখবেন:

  • কিভাবে cosign ব্যবহার করে একটি নিরীক্ষিত কন্টেইনার ইমেজ সাইন ইন করবেন
  • স্বাক্ষর আবিষ্কার এবং সঞ্চয়স্থানের জন্য OCI রেজিস্ট্রিতে কন্টেইনার ইমেজ স্বাক্ষরগুলি কীভাবে আপলোড করবেন
  • গোপনীয় স্থান চালানোর জন্য প্রয়োজনীয় ক্লাউড সংস্থানগুলি কীভাবে কনফিগার করবেন
  • স্বাক্ষরিত কন্টেইনার ইমেজ সমর্থন সহ একটি গোপনীয় স্থানে কাজের চাপ কীভাবে চালাবেন

এই কোডল্যাব আপনাকে দেখায় কিভাবে Google Compute Engine-এ চলমান একটি বিশ্বস্ত কী দ্বারা স্বাক্ষরিত একটি কন্টেইনার ইমেজকে দূরবর্তীভাবে প্রমাণ করতে গোপনীয় স্থান ব্যবহার করতে হয়।

আপনি কি প্রয়োজন হবে

স্বাক্ষরিত ধারক চিত্র সহ একটি গোপনীয় স্থানে জড়িত ভূমিকা

এই কোডল্যাবে, প্রাইমাস ব্যাংক হবে নিরীক্ষক এবং সম্পদের মালিক, যা নিম্নলিখিতগুলির জন্য দায়ী থাকবে:

  1. নমুনা ডেটা সহ প্রয়োজনীয় সংস্থান সেট আপ করা হচ্ছে।
  2. ওয়ার্কলোড কোড অডিটিং.
  3. কাজের চাপ ইমেজ সাইন ইন করতে cosign ব্যবহার করে.
  4. একটি সংগ্রহস্থলে স্বাক্ষর আপলোড করা হচ্ছে।
  5. গ্রাহক ডেটা সুরক্ষিত করতে WIP নীতি কনফিগার করা।

Secundus Bank হবে কাজের চাপ লেখক এবং অপারেটর, এবং দায়ী থাকবে:

  1. ফলাফল সঞ্চয় করার জন্য প্রয়োজনীয় সংস্থান সেট আপ করা হচ্ছে।
  2. কাজের চাপ কোড লেখা।
  3. কাজের চাপের চিত্র প্রকাশ করা হচ্ছে।
  4. স্বাক্ষরিত কন্টেইনার ইমেজ সমর্থন সহ গোপনীয় স্থানে কাজের চাপ চালানো।

সেকেন্ডাস ব্যাংক একটি কাজের চাপ তৈরি করবে এবং প্রকাশ করবে যা একটি ক্লাউড স্টোরেজ বাকেটের মধ্যে সঞ্চিত এবং প্রাইমাস ব্যাংকের মালিকানাধীন গ্রাহকের ডেটা জিজ্ঞাসা করবে। প্রাইমাস ব্যাংক ওয়ার্কলোড অডিট করবে, কন্টেইনার ইমেজ সাইন ইন করবে এবং অনুমোদিত ওয়ার্কলোডের মাধ্যমে তাদের ডেটা অ্যাক্সেস করার অনুমতি দেওয়ার জন্য WIP নীতিগুলি কনফিগার করবে। এই কাজের চাপ সঞ্চালনের ফলাফল Secundus ব্যাঙ্কের মালিকানাধীন একটি ক্লাউড স্টোরেজ বালতিতে সংরক্ষণ করা হবে।

একটি গোপনীয় স্থান সেটআপের সাথে জড়িত সম্পদ

এই কোডল্যাবটি বেশ কয়েকটি ভেরিয়েবলের উল্লেখ করে যা আপনার জিসিপি প্রকল্পের জন্য উপযুক্ত মানগুলিতে সেট করা উচিত। এই কোডল্যাবের কমান্ডগুলি অনুমান করে যে এই ভেরিয়েবলগুলি সেট করা হয়েছে। (উদাহরণস্বরূপ, export PRIMUS_INPUT_STORAGE_BUCKET='my-input-bucket' প্রাইমাস ব্যাঙ্কের ইনপুট স্টোরেজ বাকেটের নাম সেট করতে ব্যবহার করা যেতে পারে।) যদি রিসোর্স-নামের ভেরিয়েবল সেট করা না থাকে, তাহলে এটির উপর ভিত্তি করে তৈরি করা হবে GCP প্রকল্প-আইডি।

Primus প্রকল্পে নিম্নলিখিত কনফিগার করুন:

  • $PRIMUS_INPUT_STORAGE_BUCKET : বালতি যা গ্রাহকের ডেটা ফাইল সংরক্ষণ করে।
  • $PRIMUS_WORKLOAD_IDENTITY_POOL : ওয়ার্কলোড আইডেন্টিটি পুল (ডব্লিউআইপি) যা দাবিকে যাচাই করে।
  • $PRIMUS_WIP_PROVIDER : ওয়ার্কলোড আইডেন্টিটি পুল প্রদানকারী যা প্রত্যয়ন যাচাইকারী পরিষেবা দ্বারা স্বাক্ষরিত টোকেনগুলির জন্য ব্যবহার করার অনুমোদন শর্ত অন্তর্ভুক্ত করে৷
  • $PRIMUS_SERVICEACCOUNT : পরিষেবা অ্যাকাউন্ট যা $PRIMUS_WORKLOAD_IDENTITY_POOL সুরক্ষিত সংস্থানগুলি অ্যাক্সেস করতে ব্যবহার করে৷ এই ধাপে $PRIMUS_INPUT_STORAGE_BUCKET বালতিতে সংরক্ষিত গ্রাহক ডেটা দেখার অনুমতি রয়েছে৷
  • $PRIMUS_ENC_KEY : $PRIMUS_INPUT_STORAGE_BUCKET এ সংরক্ষিত ডেটা এনক্রিপ্ট করতে ব্যবহৃত KMS কী।

এই কোডল্যাবে নতুন সম্পদ:

  • $PRIMUS_COSIGN_REPOSITORY : কাজের চাপের ছবি স্বাক্ষর সংরক্ষণ করার জন্য আর্টিফ্যাক্ট রেজিস্ট্রি।
  • $PRIMUS_SIGNING_KEY : অডিটর/ডেটা-সহযোগীদের (যেমন প্রাইমাস ব্যাঙ্ক) দ্বারা ওয়ার্কলোড ইমেজে স্বাক্ষর করতে ব্যবহৃত KMS কী।

Secundus প্রকল্পে নিম্নলিখিত কনফিগার করুন:

  • $SECUNDUS_ARTIFACT_REGISTRY : আর্টিফ্যাক্ট রেজিস্ট্রি যেখানে ওয়ার্কলোড ডকার ইমেজ পুশ করা হবে।
  • $WORKLOAD_IMAGE_NAME : ওয়ার্কলোড ডকার ইমেজের নাম।
  • $WORKLOAD_IMAGE_TAG : ওয়ার্কলোড ডকার ইমেজের ট্যাগ।
  • $WORKLOAD_SERVICEACCOUNT : যে পরিষেবা অ্যাকাউন্টের গোপনীয় VM অ্যাক্সেস করার অনুমতি রয়েছে যা কাজের চাপ চালায়।
  • $SECUNDUS_RESULT_BUCKET : বালতি যা কাজের চাপের ফলাফল সংরক্ষণ করে।

অন্যান্য উৎস:

  • primus_customer_list.csv গ্রাহকের ডেটা ধারণ করে। আমরা এই ডেটা $PRIMUS_INPUT_STORAGE_BUCKET এ আপলোড করব এবং একটি কাজের চাপ তৈরি করব যা এই ডেটাকে জিজ্ঞাসা করবে৷

বিদ্যমান কর্মপ্রবাহ

যখন আপনি গোপনীয় স্থানে কাজের চাপ চালান, কনফিগার করা সংস্থানগুলি ব্যবহার করে নিম্নলিখিত প্রক্রিয়াটি সঞ্চালিত হয়:

  1. ওয়ার্কলোড WIP থেকে $PRIMUS_SERVICEACCOUNT এর জন্য একটি সাধারণ Google অ্যাক্সেস টোকেন অনুরোধ করে৷ এটি কাজের চাপ এবং পরিবেশের দাবি সহ একটি সত্যায়ন যাচাইকারী পরিষেবা টোকেন অফার করে৷
  2. যদি প্রত্যয়ন যাচাইকারী পরিষেবা টোকেনে কাজের চাপ পরিমাপের দাবি WIP-এর অ্যাট্রিবিউট শর্তের সাথে মেলে, তাহলে এটি $PRIMUS_SERVICEACCOUNT.
  3. ওয়ার্কলোড $PRIMUS_INPUT_STORAGE_BUCKET বালতিতে গ্রাহক ডেটা অ্যাক্সেস করতে $PRIMUS_SERVICEACCOUNT এর সাথে যুক্ত পরিষেবা অ্যাকাউন্ট অ্যাক্সেস টোকেন ব্যবহার করে৷
  4. কাজের চাপ সেই ডেটাতে একটি অপারেশন করে।
  5. কাজের চাপ $SECUNDUS_RESULT_STORAGE_BUCKET বালতিতে সেই অপারেশনের ফলাফল লেখার জন্য $WORKLOAD_SERVICEACCOUNT পরিষেবা অ্যাকাউন্ট ব্যবহার করে৷

স্বাক্ষরিত ধারক সমর্থন সহ নতুন কর্মপ্রবাহ

স্বাক্ষরিত কন্টেইনার সমর্থন বিদ্যমান ওয়ার্কফ্লোতে একত্রিত হবে, যেমনটি নীচে হাইলাইট করা হয়েছে। যখন আপনি স্বাক্ষরিত কন্টেইনার ইমেজ সমর্থন সহ গোপনীয় স্থানে কাজের চাপ চালান, কনফিগার করা সংস্থানগুলি ব্যবহার করে নিম্নলিখিত প্রক্রিয়াটি সঞ্চালিত হয়:

  1. কনফিডেনশিয়াল স্পেস বর্তমান চলমান ওয়ার্কলোড ইমেজের সাথে সম্পর্কিত যেকোনো ধারক স্বাক্ষর আবিষ্কার করে এবং এগুলিকে সত্যায়ন যাচাইকারীকে পাঠায়। প্রত্যয়ন যাচাইকারী স্বাক্ষর যাচাই করে, এবং প্রত্যয়ন দাবিতে যেকোনো বৈধ স্বাক্ষর অন্তর্ভুক্ত করে।
  2. ওয়ার্কলোড WIP থেকে $PRIMUS_SERVICEACCOUNT এর জন্য একটি সাধারণ Google অ্যাক্সেস টোকেন অনুরোধ করে৷ এটি কাজের চাপ এবং পরিবেশের দাবি সহ একটি সত্যায়ন যাচাইকারী পরিষেবা টোকেন অফার করে৷
  3. যদি প্রত্যয়ন যাচাইকারী পরিষেবা টোকেনে কন্টেইনার স্বাক্ষরের দাবি WIP-এর অ্যাট্রিবিউট শর্তের সাথে মেলে, তাহলে এটি $PRIMUS_SERVICEACCOUNT এর অ্যাক্সেস টোকেন ফেরত দেয়
  4. ওয়ার্কলোড $PRIMUS_INPUT_STORAGE_BUCKET বালতিতে গ্রাহক ডেটা অ্যাক্সেস করতে $PRIMUS_SERVICEACCOUNT এর সাথে যুক্ত পরিষেবা অ্যাকাউন্ট অ্যাক্সেস টোকেন ব্যবহার করে৷
  5. কাজের চাপ সেই ডেটাতে একটি অপারেশন করে।
  6. কাজের চাপ $WORKLOAD_SERVICEACCOUNT ব্যবহার করে সেই অপারেশনের ফলাফল $SECUNDUS_RESULT_STORAGE_BUCKET বালতিতে লিখতে।

2. ক্লাউড রিসোর্স সেট আপ করুন৷

গোপনীয় স্থান সেটআপের অংশ হিসাবে, প্রথমে আপনি প্রাইমাস এবং সেকেন্ডাস ব্যাঙ্কের GCP প্রকল্পগুলির অধীনে প্রয়োজনীয় ক্লাউড সংস্থান তৈরি করবেন। এই কোডল্যাবে নতুন সংস্থানগুলি হল:

প্রাইমাস প্রকল্পে:

  • কোড অডিট করার পর সেকেন্ডাস ওয়ার্কলোড সাইন ইন করতে ব্যবহৃত KMS সাইনিং কী।
  • Cosign স্বাক্ষর সংরক্ষণ করার জন্য আর্টিফ্যাক্ট রেজিস্ট্রি সংগ্রহস্থল।

সেকান্ডাস প্রকল্পে নতুন কোনো সম্পদ নেই। একবার এই সংস্থানগুলি সেট আপ হয়ে গেলে, আপনি প্রয়োজনীয় ভূমিকা এবং অনুমতি সহ কাজের চাপের জন্য একটি পরিষেবা অ্যাকাউন্ট তৈরি করবেন। তারপরে আপনি একটি ওয়ার্কলোড ইমেজ তৈরি করবেন এবং অডিটর, প্রাইমাস ব্যাঙ্ক, ওয়ার্কলোড ইমেজে স্বাক্ষর করবেন। কাজের চাপ তখন ডেটা-সহযোগীদের দ্বারা অনুমোদিত হবে (এই কোডল্যাবে প্রাইমাস ব্যাঙ্ক) এবং ওয়ার্কলোড অপারেটর (এই ক্ষেত্রে সেকেন্ডাস ব্যাঙ্ক) কাজের চাপ চালাবে৷

গোপনীয় স্থান সেটআপের অংশ হিসাবে, আপনি প্রাইমাস এবং সেকেন্ডাস জিসিপি প্রকল্পগুলিতে প্রয়োজনীয় ক্লাউড সংস্থান তৈরি করবেন।

তুমি শুরু করার আগে

  • এই কোডল্যাবের অংশ হিসাবে ব্যবহৃত প্রয়োজনীয় স্ক্রিপ্টগুলি পেতে নীচের কমান্ডটি ব্যবহার করে এই সংগ্রহস্থলটি ক্লোন করুন।
$ git clone https://github.com/GoogleCloudPlatform/confidential-space
  • নিশ্চিত করুন যে আপনি নীচে দেখানো হিসাবে প্রয়োজনীয় প্রকল্পগুলি সেট করেছেন৷
$ export PRIMUS_PROJECT_ID=<GCP project id of primus bank>
$ export SECUNDUS_PROJECT_ID=<GCP project id of secundus bank>
  • এই কমান্ড ব্যবহার করে উপরে উল্লিখিত সম্পদ নামের জন্য ভেরিয়েবল সেট করুন। আপনি এই ভেরিয়েবলগুলি ব্যবহার করে সম্পদের নামগুলিকে ওভাররাইড করতে পারেন (যেমন export PRIMUS_INPUT_STORAGE_BUCKET='my-input-bucket' )
  • সম্পদের নামের জন্য আপনার প্রকল্প আইডির উপর ভিত্তি করে মানগুলিতে অবশিষ্ট পরিবর্তনশীল নাম সেট করতে নিম্নলিখিত স্ক্রিপ্টটি চালান।
$ source config_env.sh
  • এখান থেকে নির্দেশাবলী অনুসরণ করে cosign ইনস্টল করুন।

প্রাইমাস ব্যাঙ্ক রিসোর্স সেট আপ করুন

এই পদক্ষেপের অংশ হিসাবে, আপনি প্রাইমাস ব্যাঙ্কের জন্য প্রয়োজনীয় ক্লাউড সংস্থানগুলি সেট আপ করবেন। Primus ব্যাঙ্কের জন্য সংস্থানগুলি সেট আপ করতে নিম্নলিখিত স্ক্রিপ্টটি চালান৷ এই পদক্ষেপগুলির অংশ হিসাবে, নীচে উল্লিখিত সংস্থানগুলি তৈরি করা হবে:

  • ক্লাউড স্টোরেজ বাকেট ( $PRIMUS_INPUT_STORAGE_BUCKET ) প্রাইমাস ব্যাঙ্কের এনক্রিপ্ট করা গ্রাহক ডেটা ফাইল সংরক্ষণ করতে।
  • এনক্রিপশন কী ( $PRIMUS_ENC_KEY ) এবং কিরিং ( $PRIMUS_ENC_KEYRING ) কেএমএসে প্রাইমাস ব্যাঙ্কের ডেটা ফাইল এনক্রিপ্ট করতে।
  • ওয়ার্কলোড আইডেন্টিটি পুল ( $PRIMUS_WORKLOAD_IDENTITY_POOL ) তার প্রদানকারীর অধীনে কনফিগার করা বৈশিষ্ট্যের শর্তগুলির উপর ভিত্তি করে দাবিগুলি যাচাই করতে।
  • নিম্নলিখিত IAM অ্যাক্সেস সহ উপরে উল্লিখিত ওয়ার্কলোড আইডেন্টিটি পুল ( $PRIMUS_WORKLOAD_IDENTITY_POOL ) এর সাথে পরিষেবা অ্যাকাউন্ট ( $PRIMUS_SERVICEACCOUNT ) সংযুক্ত:
  • KMS কী ব্যবহার করে ডেটা ডিক্রিপ্ট করতে roles/cloudkms.cryptoKeyDecrypter
  • ক্লাউড স্টোরেজ বালতি থেকে ডেটা পড়তে objectViewer
  • এই পরিষেবা অ্যাকাউন্টটিকে ওয়ার্কলোড আইডেন্টিটি পুলের সাথে সংযুক্ত করার জন্য roles/iam.workloadIdentityUser
$ ./setup_primus_bank_resources.sh

Secundus ব্যাংক সম্পদ সেট আপ করুন

এই পদক্ষেপের অংশ হিসাবে, আপনি সেকুন্ডাস ব্যাঙ্কের জন্য প্রয়োজনীয় ক্লাউড সংস্থানগুলি সেট আপ করবেন। সেকেন্ডাস ব্যাঙ্কের জন্য সংস্থানগুলি সেট আপ করতে নিম্নলিখিত স্ক্রিপ্টটি চালান। এই পদক্ষেপগুলির অংশ হিসাবে নীচে উল্লিখিত সংস্থানগুলি তৈরি করা হবে:

  • ক্লাউড স্টোরেজ বালতি ( $SECUNDUS_RESULT_STORAGE_BUCKET ) Secundus ব্যাঙ্কের কাজের চাপ নির্বাহের ফলাফল সংরক্ষণ করতে।
$ ./setup_secundus_bank_resources.sh

3. কাজের চাপ তৈরি করুন এবং স্বাক্ষর করুন

কাজের চাপ পরিষেবা অ্যাকাউন্ট তৈরি করুন

এখন, আপনি প্রয়োজনীয় ভূমিকা এবং অনুমতি সহ কাজের চাপের জন্য একটি পরিষেবা অ্যাকাউন্ট তৈরি করবেন। Secundus ব্যাঙ্ক প্রকল্পে একটি কাজের চাপ পরিষেবা অ্যাকাউন্ট তৈরি করতে নিম্নলিখিত স্ক্রিপ্টটি চালান। এই পরিষেবা-অ্যাকাউন্টটি VM দ্বারা ব্যবহৃত হবে যা কাজের চাপ চালায়।

  • এই কাজের চাপ পরিষেবা-অ্যাকাউন্ট ( $WORKLOAD_SERVICEACCOUNT ) এর নিম্নলিখিত ভূমিকা থাকবে:
  • একটি প্রত্যয়ন টোকেন পেতে confidentialcomputing.workloadUser
  • logging.logWriter ক্লাউড লগিং-এ লগ লিখতে।
  • objectViewer $PRIMUS_INPUT_STORAGE_BUCKET ক্লাউড স্টোরেজ বাকেট থেকে ডেটা পড়ার জন্য।
  • objectAdmin $SECUNDUS_RESULT_STORAGE_BUCKET ক্লাউড স্টোরেজ বালতিতে কাজের চাপের ফলাফল লিখতে।
$ ./create_workload_serviceaccount.sh

কাজের চাপ তৈরি করুন

এই পদক্ষেপের অংশ হিসাবে, আপনি একটি ওয়ার্কলোড ডকার ইমেজ তৈরি করবেন। এই কোডল্যাবে ব্যবহৃত কাজের চাপ হল একটি সাধারণ CLI-ভিত্তিক Go অ্যাপ যা যুক্তিতে প্রদত্ত ভৌগলিক অবস্থান থেকে গ্রাহকদের (প্রাইমাস ব্যাঙ্ক গ্রাহক ডেটা থেকে) গণনা করে। একটি কাজের চাপ তৈরি করতে নিম্নলিখিত স্ক্রিপ্টটি চালান যেখানে নিম্নলিখিত পদক্ষেপগুলি সঞ্চালিত হচ্ছে:

  • সেকেন্ডাস ব্যাঙ্কের মালিকানাধীন আর্টিফ্যাক্ট রেজিস্ট্রি ( $SECUNDUS_ARTIFACT_REGISTRY ) তৈরি করুন।
  • প্রয়োজনীয় সম্পদের নাম সহ ওয়ার্কলোড কোড আপডেট করুন। এখানে এই কোডল্যাবের জন্য ব্যবহৃত ওয়ার্কলোড কোড।
  • গো বাইনারি তৈরি করুন এবং ওয়ার্কলোড কোডের একটি ডকার ইমেজ তৈরির জন্য ডকারফাইল তৈরি করুন। এখানে এই কোডল্যাবের জন্য ব্যবহৃত ডকারফাইল।
  • Secundus ব্যাঙ্কের মালিকানাধীন আর্টিফ্যাক্ট রেজিস্ট্রিতে ( $SECUNDUS_ARTIFACT_REGISTRY ) ডকার ইমেজ তৈরি ও প্রকাশ করুন।
  • $SECUNDUS_ARTIFACT_REGISTRY এর জন্য $WORKLOAD_SERVICEACCOUNT পড়ার অনুমতি দিন। আর্টিফ্যাক্ট রেজিস্ট্রি থেকে ওয়ার্কলোড ডকার ইমেজ টানতে ওয়ার্কলোড কন্টেইনারের জন্য এটি প্রয়োজন।
$ ./create_workload.sh

কাজের চাপে সাইন ইন করুন

আমরা কাজের চাপ ইমেজ সাইন ইন করতে Cosign ব্যবহার করা হবে. Cosign যে ছবিটি স্বাক্ষর করছে সেই একই রেপোতে স্বাক্ষর সংরক্ষণ করতে ডিফল্ট হবে। স্বাক্ষরের জন্য একটি ভিন্ন সংগ্রহস্থল নির্দিষ্ট করতে, আপনি COSIGN_REPOSITORY পরিবেশ পরিবর্তনশীল সেট করতে পারেন।

এখানে আমরা একটি উদাহরণ হিসাবে আর্টিফ্যাক্ট রেজিস্ট্রি ব্যবহার করব। আপনি আপনার পছন্দের উপর ভিত্তি করে অন্যান্য OCI-ভিত্তিক রেজিস্ট্রি যেমন Docker Hub, AWS CodeArtifact বেছে নিতে পারেন।

  1. একটি আর্টিফ্যাক্ট রেজিস্ট্রি ডকার সংগ্রহস্থল তৈরি করুন।
$ gcloud config set project $PRIMUS_PROJECT_ID

$ gcloud artifacts repositories create $PRIMUS_COSIGN_REPOSITORY \
  --repository-format=docker --location=us
  1. একটি ওয়ার্কলোড ইমেজ সাইন ইন করার জন্য KMS এর অধীনে একটি কীরিং এবং কী তৈরি করুন৷
$ gcloud config set project $PRIMUS_PROJECT_ID

$ gcloud kms keyrings create $PRIMUS_SIGNING_KEYRING \
  --location=global

$ gcloud kms keys create $PRIMUS_SIGNING_KEY \
  --keyring=$PRIMUS_SIGNING_KEYRING \
  --purpose=asymmetric-signing \
  --default-algorithm=ec-sign-p256-sha256
  --location=us
  1. আর্টিফ্যাক্ট রেজিস্ট্রির জন্য, একটি সম্পূর্ণ ছবির নাম যেমন $LOCATION/$PROJECT/$REPOSITORY/$IMAGE_NAME প্রত্যাশিত৷ আপনি স্বাক্ষর সঞ্চয়ের জন্য সংগ্রহস্থলে যেকোনো ধারক চিত্র আপলোড করতে পারেন।
$ export COSIGN_REPOSITORY=us-docker.pkg.dev/${PRIMUS_PROJECT_ID}/${PRIMUS_COSIGN_REPOSITORY}/demo
  1. $WORKLOAD_SERVICEACCOUNT পরিষেবা অ্যাকাউন্টে $PRIMUS_COSIGN_REPOSITORY সংগ্রহস্থলে দর্শকের ভূমিকা মঞ্জুর করুন৷ এটি কনফিডেন্সিয়াল স্পেসকে $PRIMUS_COSIGN_REPOSITORY এ আপলোড করা যেকোনো ধারক চিত্র স্বাক্ষর আবিষ্কার করতে দেয়।
$ gcloud artifacts repositories add-iam-policy-binding ${PRIMUS_COSIGN_REPOSITORY} \
--project=${PRIMUS_PROJECT_ID} --role='roles/viewer' --location=us \
--member="serviceAccount:${WORKLOAD_SERVICEACCOUNT}@${SECUNDUS_PROJECT_ID}.iam.gserviceaccount.com"

Cosign হল একাধিক সাইনিং বৈশিষ্ট্য সহ একটি শক্তিশালী টুল। আমাদের ব্যবহারের ক্ষেত্রে, আমাদের শুধুমাত্র Cosign কে একটি কী জোড়া দিয়ে সাইন করতে হবে। Cosign keyless সাইনিং এই স্বাক্ষরিত ধারক চিত্র বৈশিষ্ট্য জন্য সমর্থিত নয়.

একটি কী জোড়া দিয়ে স্বাক্ষর করার সময়, দুটি বিকল্প রয়েছে:

  1. Cosign দ্বারা উত্পন্ন একটি স্থানীয় কী জোড়া দিয়ে সাইন ইন করুন৷
  2. অন্যত্র সংরক্ষিত একটি কী জোড়া দিয়ে সাইন ইন করুন (উদাহরণস্বরূপ, একটি কেএমএসে)।
  1. আপনার কাছে না থাকলে Cosign-এ একটি কী জোড়া তৈরি করুন৷ আরও বিশদ বিবরণের জন্য স্ব-পরিচালিত কীগুলির সাথে স্বাক্ষর করা পড়ুন।
// Set Application Default Credentials.
$ gcloud auth application-default login 

// Generate keys using a KMS provider.
$ cosign generate-key-pair --kms <provider>://<key>

// Generate keys using Cosign.
$ cosign generate-key-pair

উপরের <provider>://<key> এর সাথে gcpkms://projects/$PRIMUS_PROJECT_ID/locations/global/keyRings/$PRIMUS_SIGNING_KEYRING/cryptoKeys/$PRIMUS_SIGNING_KEY/cryptoKeyVersions/$PRIMUS_SIGNING_KEYVERSION

  • <provider> : আপনি যে কেএমএস সমাধান ব্যবহার করছেন তা বোঝায়
  • <key> : KMS-এ কী পাথ বোঝায়
  1. যাচাইয়ের জন্য সর্বজনীন কী পুনরুদ্ধার করুন।
// For KMS providers.
$ cosign public-key --key <some provider>://<some key> > pub.pem

// For local key pair signing.
$ cosign public-key --key cosign.key > pub.pem
  1. Cosign ব্যবহার করে কাজের চাপে স্বাক্ষর করুন। পাবলিক কী-তে আনপ্যাডহীন base64 এনকোডিং সম্পাদন করুন
$ PUB=$(cat pub.pem | openssl base64)

// Remove spaces and trailing "=" signs.
$ PUB=$(echo $PUB | tr -d '[:space:]' | sed 's/[=]*$//')
  1. রপ্তানি করা সর্বজনীন কী এবং স্বাক্ষর অ্যালগরিদম সংযুক্ত করে Cosign ব্যবহার করে কাজের চাপে স্বাক্ষর করুন।
$ IMAGE_REFERENCE=us-docker.pkg.dev/$SECUNDUS_PROJECT_ID/$SECUNDUS_ARTIFACT_REPOSITORY/$WORKLOAD_IMAGE_NAME:$WORKLOAD_IMAGE_TAG

// Sign with KMS support.
$ cosign sign --key <some provider>://<some key> $IMAGE_REFERENCE \
-a dev.cosignproject.cosign/sigalg=ECDSA_P256_SHA256 \
-a dev.cosignproject.cosign/pub=$PUB

// Sign with a local key pair.
$ cosign sign --key cosign.key $IMAGE_REFERENCE \
-a dev.cosignproject.cosign/sigalg=ECDSA_P256_SHA256 \
-a dev.cosignproject.cosign/pub=$PUB
  • --key [প্রয়োজনীয়] কোন সাইনিং কী ব্যবহার করতে হবে তা নির্দিষ্ট করে। একটি KMS প্রদানকারী দ্বারা পরিচালিত একটি কী উল্লেখ করার সময়, অনুগ্রহ করে Sigstore KMS সমর্থন থেকে নির্দিষ্ট URI বিন্যাস অনুসরণ করুন৷ Cosign দ্বারা উত্পন্ন একটি কী উল্লেখ করার সময়, পরিবর্তে cosign.key ব্যবহার করুন।
  • $IMAGE_REFERENCE [প্রয়োজনীয়] কোন কন্টেইনার ছবি সাইন ইন করতে হবে তা নির্দিষ্ট করে৷ IMAGE_REFERENCE এর বিন্যাস ট্যাগ বা চিত্র ডাইজেস্ট দ্বারা চিহ্নিত করা যেতে পারে। যেমন: us-docker.pkg.dev/$SECUNDUS_PROJECT_ID/secundus-workloads/workload-container:latest or us-docker.pkg.dev/$SECUNDUS_PROJECT_ID/secundus-workloads/workload-container [IMAGE-digest]
  • -a [প্রয়োজনীয়] স্বাক্ষর পেলোডের সাথে সংযুক্ত টীকা উল্লেখ করে। গোপনীয় স্থান স্বাক্ষরিত ধারক চিত্রগুলির জন্য, পাবলিক কী এবং স্বাক্ষর অ্যালগরিদমগুলি স্বাক্ষর পেলোডের সাথে সংযুক্ত করা প্রয়োজন৷
  • dev.cosignproject.cosign/sigalg শুধুমাত্র তিনটি মান গ্রহণ করে:
  • RSASSA_PSS_SHA256: SHA256 ডাইজেস্ট সহ PSS প্যাডিং সহ RSASSA অ্যালগরিদম৷
  • RSASSA_PKCS1V15_SHA256: SHA256 ডাইজেস্ট সহ PKCS#1 v1.5 প্যাডিং সহ RSASSA অ্যালগরিদম৷
  • ECDSA_P256_SHA256: SHA256 ডাইজেস্ট সহ P-256 বক্ররেখার ECDSA। এটি Cosign-উত্পন্ন কী জোড়ার জন্য ডিফল্ট স্বাক্ষর অ্যালগরিদম।
  1. ডকার রিপোজিটরিতে স্বাক্ষর আপলোড করুন

কসাইন সাইন স্বয়ংক্রিয়ভাবে নির্দিষ্ট COSIGN_REPOSITORY-এ স্বাক্ষর আপলোড করবে।

4. অনুমোদন এবং কাজের চাপ চালান

কাজের চাপ অনুমোদন করুন

এই পদক্ষেপের অংশ হিসাবে, আমরা ওয়ার্কলোড আইডেন্টিটি পুল ( $PRIMUS_WORKLOAD_IDENTITY_POOL ) এর অধীনে ওয়ার্কলোড পরিচয় প্রদানকারী সেট আপ করব৷ নিচে দেখানো হিসাবে কাজের চাপ পরিচয়ের জন্য কনফিগার করা বৈশিষ্ট্য-শর্ত আছে। শর্তগুলির মধ্যে একটি হল পাবলিক কী-এর আঙুলের ছাপ স্বাক্ষরের বিপরীতে কাজের চাপের চিত্র স্বাক্ষরের আঙুলের ছাপ যাচাই করা। এই অ্যাট্রিবিউট শর্তের সাথে, যখন সেকেন্ডাস ব্যাংক একটি নতুন কাজের চাপের ছবি প্রকাশ করে, তখন প্রাইমাস ব্যাংক ওয়ার্কলোড কোডটি অডিট করে এবং ইমেজ ডাইজেস্টের সাথে WIP নীতি আপডেট করার প্রয়োজন ছাড়াই নতুন ওয়ার্কলোড ছবিতে স্বাক্ষর করে।

$ gcloud config set project $PRIMUS_PROJECT_ID

$ PUBLIC_KEY_FINGERPRINT=$(openssl pkey -pubin -in pub.pem -outform DER | openssl sha256 | cut -d' ' -f2)

$ gcloud iam workload-identity-pools providers create-oidc ${PRIMUS_WIP_PROVIDER} \
   --location="global" \
   --workload-identity-pool="${PRIMUS_WORKLOAD_IDENTITY_POOL}" \
   --issuer-uri="https://confidentialcomputing.googleapis.com/" \
   --allowed-audiences="https://sts.googleapis.com" \
   --attribute-mapping="google.subject='assertion.sub'" \
   --attribute-condition="assertion.swname == 'CONFIDENTIAL_SPACE' &&
  'STABLE' in assertion.submods.confidential_space.support_attributes
     && '${WORKLOAD_SERVICEACCOUNT}@${SECUNDUS_PROJECT_ID}.iam.gserviceaccount.com' in
     assertion.google_service_accounts
     && ['ECDSA_P256_SHA256:${PUBLIC_KEY_FINGERPRINT}']
       .exists(fingerprint, fingerprint in assertion.submods.container.image_signatures.map(sig,sig.signature_algorithm+':'+sig.key_id))"

কাজের চাপ চালান

এই পদক্ষেপের অংশ হিসাবে, আমরা গোপনীয় VM-এ কাজের চাপ চালাব। প্রয়োজনীয় TEE আর্গুমেন্ট মেটাডেটা পতাকা ব্যবহার করে পাস করা হয়। ওয়ার্কলোড কন্টেইনারের আর্গুমেন্টগুলি পতাকার " tee-cmd " অংশ ব্যবহার করে পাস করা হয়। কাজের চাপটি $SECUNDUS_RESULT_STORAGE_BUCKET এ ফলাফল প্রকাশ করার জন্য কোড করা হয়েছে।

$ gcloud config set project $SECUNDUS_PROJECT_ID

$ gcloud compute instances create signed-container-vm \
 --confidential-compute-type=SEV \
 --shielded-secure-boot \
 --maintenance-policy=TERMINATE \
 --scopes=cloud-platform --zone=us-west1-b \
 --image-project=confidential-space-images \
 --image-family=confidential-space \ --service-account=${WORKLOAD_SERVICEACCOUNT}@${SECUNDUS_PROJECT_ID}.iam.gserviceaccount.com \
 --metadata "^~^tee-image-reference=us-docker.pkg.dev/${SECUNDUS_PROJECT_ID}/${SECUNDUS_ARTIFACT_REPOSITORY}/${WORKLOAD_IMAGE_NAME}:${WORKLOAD_IMAGE_TAG}~tee-restart-policy=Never~tee-cmd="[\"count-location\",\"Seattle\",\"gs://${SECUNDUS_RESULT_STORAGE_BUCKET}/seattle-result\"]"~tee-signed-image-repos=us-docker.pkg.dev/${PRIMUS_PROJECT_ID}/${PRIMUS_COSIGN_REPOSITORY}/demo"

ফলাফল দেখুন

সেকেন্ডাস প্রকল্পে, কাজের চাপের ফলাফল দেখুন।

$ gcloud config set project $SECUNDUS_PROJECT_ID

$ gsutil cat gs://$SECUNDUS_RESULT_STORAGE_BUCKET/seattle-result

ফলাফল 3 হওয়া উচিত, কারণ সিয়াটেলের কতজন লোক primus_customer_list.csv ফাইলে তালিকাভুক্ত হয়েছে!

5. পরিষ্কার করুন

এই কোডল্যাবের অংশ হিসাবে আমরা যে সংস্থানগুলি তৈরি করেছি তা পরিষ্কার করতে এখানে স্ক্রিপ্টটি ব্যবহার করা যেতে পারে। এই পরিষ্কারের অংশ হিসাবে, নিম্নলিখিত সংস্থানগুলি মুছে ফেলা হবে:

  • প্রাইমাস ব্যাঙ্কের ইনপুট স্টোরেজ বালতি ( $PRIMUS_INPUT_STORAGE_BUCKET )।
  • প্রাইমাস ব্যাঙ্ক পরিষেবা-অ্যাকাউন্ট ( $PRIMUS_SERVICEACCOUNT )।
  • প্রাইমাস ব্যাঙ্কের আর্টিফ্যাক্ট রেজিস্ট্রি যা ছবি স্বাক্ষর ধারণ করে ( $PRIMUS_COSIGN_REPOSITORY )।
  • প্রাইমাস ব্যাঙ্ক ওয়ার্কলোড আইডেন্টিটি পুল ( $PRIMUS_WORKLOAD_IDENTITY_POOL )।
  • সেকেন্ডাস ব্যাঙ্কের কাজের চাপ পরিষেবা অ্যাকাউন্ট ( $WORKLOAD_SERVICEACCOUNT )।
  • কাজের চাপ কম্পিউট ইনস্ট্যান্স।
  • সেকেন্ডাস ব্যাঙ্কের ফলাফল স্টোরেজ বালতি ( $SECUNDUS_RESULT_STORAGE_BUCKET )।
  • সেকেন্ডাস ব্যাংকের আর্টিফ্যাক্ট রেজিস্ট্রি ( $SECUNDUS_ARTIFACT_REGISTRY )।
// run the clean up script to delete the resources created as part of this codelab.
$ ./cleanup.sh

আপনি যদি অন্বেষণ শেষ করে থাকেন, তাহলে অনুগ্রহ করে আপনার প্রকল্প মুছে ফেলার কথা বিবেচনা করুন।

  • ক্লাউড প্ল্যাটফর্ম কনসোলে যান
  • আপনি যে প্রকল্পটি বন্ধ করতে চান সেটি নির্বাচন করুন, তারপর শীর্ষে 'মুছুন' এ ক্লিক করুন: এটি মুছে ফেলার জন্য প্রকল্পের সময় নির্ধারণ করে

অভিনন্দন

অভিনন্দন, আপনি সফলভাবে কোডল্যাব সম্পূর্ণ করেছেন!

আপনি শিখেছেন কীভাবে গোপনীয় স্থানের ব্যবহারযোগ্যতা উন্নত করতে স্বাক্ষরিত কন্টেইনার চিত্র বৈশিষ্ট্যটি ব্যবহার করতে হয়।

এরপর কি?

এই অনুরূপ কোডল্যাবগুলির কিছু পরীক্ষা করে দেখুন...

আরও পড়া