1. সংক্ষিপ্ত বিবরণ
এই কোডল্যাবটি গোপনীয় স্থান কোডল্যাবের উপর ভিত্তি করে তৈরি। স্বাক্ষরিত কন্টেইনার ইমেজ সাপোর্টে ওয়ার্কলোড আইডেন্টিটি পুল (WIP) নীতিতে ইমেজ ডাইজেস্ট নির্দিষ্ট করার পরিবর্তে একটি সত্যায়িত পাবলিক কী ব্যবহার করে একটি কন্টেইনার প্রমাণীকরণের বিকল্প দেওয়া হয়েছে।
কনফিডেনশিয়াল স্পেসে স্বাক্ষরিত কন্টেইনার ইমেজ সাপোর্টের সাথে কী পরিবর্তন হয়েছে:
উন্নত ব্যবহারযোগ্যতা: স্বাক্ষরিত কন্টেইনার ইমেজ বৈশিষ্ট্যটি প্রবর্তনের মাধ্যমে আমরা এখন একটি চিত্র অনুমোদনকারী সহযোগী/অডিটরদের জন্য ওয়ার্কলোড ইমেজ ডাইজেস্ট পদ্ধতি থেকে কন্টেইনার স্বাক্ষর পদ্ধতিতে স্থানান্তরিত হতে পারি।
- সরাসরি ইমেজ ডাইজেস্ট ব্যবহার করার সময়, রিসোর্স মালিকদের প্রতিবার নতুন ইমেজ অনুমোদন করার সময় ইমেজ ডাইজেস্ট দিয়ে তাদের নীতি আপডেট করতে হবে। ইমেজ সিগনেচার ব্যবহার করে, নীতিতে একটি পাবলিক কী ফিঙ্গারপ্রিন্ট থাকে, যার সংশ্লিষ্ট প্রাইভেট কী সহযোগী/অডিটরের মালিকানাধীন এবং নিরীক্ষিত ছবিগুলিতে স্বাক্ষর করতে ব্যবহৃত হয়।
- কিছু নিরাপত্তা মডেলের জন্য, নতুন চিত্র ডাইজেস্ট মানের তালিকা আপডেট করার চেয়ে একটি বিশ্বস্ত চিত্র স্বাক্ষর কী উল্লেখ করা বেশি সুবিধাজনক।
কোনও সুরক্ষা রিগ্রেশন নেই: এই কন্টেইনার স্বাক্ষর পদ্ধতিটি পূর্ববর্তী চিত্র ডাইজেস্ট পদ্ধতির তুলনায় কোনও সুরক্ষা রিগ্রেশন আনবে না কারণ বিশ্বাসের সীমানা একই থাকে। কন্টেইনার স্বাক্ষর পদ্ধতিতে, রিসোর্স মালিক WIP নীতিতে বিশ্বস্ত পাবলিক কী ফিঙ্গারপ্রিন্ট নির্দিষ্ট করে একটি যাচাইকরণ কী অনুমোদন করেন এবং অনুমোদন পরীক্ষাটি অ্যাটেস্টেশন ভেরিফায়ার পরিষেবা এবং WIP দ্বারা সম্পাদিত হয়; অ্যাটেস্টেশন ভেরিফায়ার পরিষেবা যাচাই করে যে স্বাক্ষরটি চলমান কাজের চাপের সাথে সম্পর্কিত, এবং WIP নীতি পরীক্ষা করে যে পরিষেবা দ্বারা দাবি করা পাবলিক কী নীতি দ্বারা অনুমোদিত।
শক্তিশালী নিরাপত্তা: কন্টেইনার ইমেজ সিগনেচার ব্যবহার করলে ইমেজ সাইনারের উপর কিছু পরিমাণ আস্থা অর্পণ করা সম্ভব হয়। অ্যাটেস্টেশন পলিসিতে একজন বিশ্বস্ত সাইনারের পাবলিক কী ফিঙ্গারপ্রিন্ট নির্দিষ্ট করে, রিসোর্স মালিক সেই স্বাক্ষরকারীকে অনুমোদন দেন যে কোন কন্টেইনার ইমেজ কোন নীতিমালা পূরণ করে। অ্যাটেস্টেশন ভেরিফায়ার সার্ভিস যাচাই করে যে স্বাক্ষরটি চলমান কাজের চাপের সাথে সম্পর্কিত, এবং পলিসি পরীক্ষা করে যে স্বাক্ষর তৈরি করা পাবলিক কী নীতি দ্বারা অনুমোদিত। এর মাধ্যমে, ইমেজ সাইনিং দ্বারা প্রদত্ত ইনডিরেক্টেন্সের অতিরিক্ত স্তর গোপনীয় স্থানের শক্তিশালী নিরাপত্তা গ্যারান্টি বজায় রাখে।
এই পদ্ধতিগুলির মধ্যে একমাত্র পার্থক্য হল যে পরবর্তী পদ্ধতিটি একটি অতিরিক্ত স্তরের পরোক্ষন ব্যবহার করে যেখানে কাজের চাপের ছবিগুলি একটি সাইনিং কী দিয়ে অনুমোদিত হয়। এটি কোনও নতুন সুরক্ষা দুর্বলতা প্রবর্তন করে না কারণ বিশ্বাসের সীমানা একই থাকে।
তুমি কি শিখবে
এই কোডল্যাবে, আপনি শিখবেন কিভাবে সুরক্ষিত সম্পদগুলিতে অ্যাক্সেস অনুমোদনের জন্য একটি কন্টেইনার ইমেজ স্বাক্ষর ব্যবহার করতে হয়:
-
cosignব্যবহার করে একটি নিরীক্ষিত কন্টেইনার ছবিতে কীভাবে স্বাক্ষর করবেন - স্বাক্ষর আবিষ্কার এবং সংরক্ষণের জন্য OCI রেজিস্ট্রিগুলিতে কন্টেইনার ইমেজ স্বাক্ষর কীভাবে আপলোড করবেন
- গোপন স্থান চালানোর জন্য প্রয়োজনীয় ক্লাউড রিসোর্সগুলি কীভাবে কনফিগার করবেন
- স্বাক্ষরিত কন্টেইনার ইমেজ সাপোর্ট সহ একটি গোপন স্থানে কীভাবে কাজের চাপ চালানো যায়
এই কোডল্যাবটি আপনাকে দেখায় কিভাবে গুগল কম্পিউট ইঞ্জিনে চলমান একটি বিশ্বস্ত কী দ্বারা স্বাক্ষরিত একটি কন্টেইনার চিত্রের দূরবর্তী সত্যায়নের জন্য গোপনীয় স্থান ব্যবহার করতে হয়।
তোমার যা লাগবে
- সম্পূর্ণ গোপনীয় স্থান কোডল্যাব
- একটি গুগল ক্লাউড প্ল্যাটফর্ম প্রকল্প
- একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
- ভিম, ইম্যাকস বা ন্যানোর মতো স্ট্যান্ডার্ড লিনাক্স টেক্সট এডিটরগুলির সাথে পরিচিতি।
- সিগস্টোর কসাইন সম্পর্কে প্রাথমিক জ্ঞান
- গুগল কম্পিউট ইঞ্জিন ( কোডল্যাব ), গোপনীয় ভিএম , কন্টেইনার এবং রিমোট রিপোজিটরি সম্পর্কে প্রাথমিক জ্ঞান।
- ক্লাউড কেএমএস ( কোডল্যাব ) এর প্রাথমিক জ্ঞান
- সার্ভিস অ্যাকাউন্ট , ওয়ার্কলোড আইডেন্টিটি ফেডারেশন এবং অ্যাট্রিবিউট শর্তাবলী সম্পর্কে প্রাথমিক জ্ঞান।
- আর্টিফ্যাক্ট রেজিস্ট্রি সম্পর্কে প্রাথমিক জ্ঞান
- ডিজিটাল স্বাক্ষর সম্পর্কে প্রাথমিক জ্ঞান
স্বাক্ষরিত কন্টেইনার চিত্র সহ একটি গোপনীয় স্থানে জড়িত ভূমিকা
এই কোডল্যাবে, প্রাইমাস ব্যাংক হবে নিরীক্ষক এবং সম্পদের মালিক, যারা নিম্নলিখিত বিষয়গুলির জন্য দায়ী থাকবে:
- নমুনা তথ্য সহ প্রয়োজনীয় সম্পদ স্থাপন করা।
- ওয়ার্কলোড কোড অডিট করা হচ্ছে।
- ওয়ার্কলোড ইমেজ সাইন করার জন্য
cosignব্যবহার করা। - একটি সংগ্রহস্থলে স্বাক্ষর আপলোড করা হচ্ছে।
- গ্রাহকের তথ্য সুরক্ষিত রাখার জন্য WIP নীতি কনফিগার করা।
সেকান্ডাস ব্যাংক হবে কাজের ভার লেখক এবং অপারেটর, এবং এর জন্য দায়ী:
- ফলাফল সংরক্ষণের জন্য প্রয়োজনীয় সম্পদ স্থাপন করা।
- ওয়ার্কলোড কোড লেখা।
- কাজের চাপের ছবি প্রকাশ করা হচ্ছে।
- স্বাক্ষরিত কন্টেইনার ইমেজ সাপোর্ট সহ কনফিডেনশিয়াল স্পেসে ওয়ার্কলোড চালানো।
সেকান্ডাস ব্যাংক একটি ওয়ার্কলোড তৈরি এবং প্রকাশ করবে যা প্রাইমাস ব্যাংকের মালিকানাধীন ক্লাউড স্টোরেজ বাকেটে সংরক্ষিত গ্রাহকদের ডেটা অনুসন্ধান করবে। প্রাইমাস ব্যাংক ওয়ার্কলোড অডিট করবে, কন্টেইনার ইমেজ স্বাক্ষর করবে এবং অনুমোদিত ওয়ার্কলোড দ্বারা তাদের ডেটা অ্যাক্সেস করার জন্য WIP নীতিগুলি কনফিগার করবে। এই ওয়ার্কলোড কার্যকর করার ফলাফল সেকান্ডাস ব্যাংকের মালিকানাধীন ক্লাউড স্টোরেজ বাকেটে সংরক্ষণ করা হবে।
একটি গোপন স্থান সেটআপের সাথে জড়িত সম্পদ
এই কোডল্যাবটি বেশ কয়েকটি ভেরিয়েবলের উল্লেখ করে যা আপনার GCP প্রকল্পের জন্য উপযুক্ত মানগুলিতে সেট করা উচিত। এই কোডল্যাবের কমান্ডগুলি ধরে নেয় যে এই ভেরিয়েবলগুলি সেট করা হয়েছে। (উদাহরণস্বরূপ, export PRIMUS_INPUT_STORAGE_BUCKET='my-input-bucket' প্রাইমাস ব্যাংকের ইনপুট স্টোরেজ বাকেটের নাম সেট করতে ব্যবহার করা যেতে পারে।) যদি রিসোর্স-নামের ভেরিয়েবল সেট না করা থাকে, তাহলে এটি GCP প্রকল্প-আইডির উপর ভিত্তি করে তৈরি করা হবে।
প্রাইমাস প্রজেক্টে নিম্নলিখিতগুলি কনফিগার করুন:
-
$PRIMUS_INPUT_STORAGE_BUCKET: গ্রাহকের ডেটা ফাইল সংরক্ষণকারী বাকেট। -
$PRIMUS_WORKLOAD_IDENTITY_POOL: ওয়ার্কলোড আইডেন্টিটি পুল (WIP) যা দাবি যাচাই করে। -
$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এ আপলোড করব এবং একটি ওয়ার্কলোড তৈরি করব যা এই ডেটা অনুসন্ধান করবে।
বিদ্যমান কর্মপ্রবাহ
যখন আপনি Confidential Space-এ ওয়ার্কলোড চালান, তখন কনফিগার করা রিসোর্স ব্যবহার করে নিম্নলিখিত প্রক্রিয়াটি সম্পন্ন হয়:
- ওয়ার্কলোডটি WIP থেকে
$PRIMUS_SERVICEACCOUNTএর জন্য একটি সাধারণ Google অ্যাক্সেস টোকেনের অনুরোধ করে। এটি ওয়ার্কলোড এবং পরিবেশগত দাবি সহ একটি অ্যাটেস্টেশন ভেরিফায়ার পরিষেবা টোকেন অফার করে। - যদি অ্যাটেস্টেশন ভেরিফায়ার সার্ভিস টোকেনে থাকা ওয়ার্কলোড পরিমাপের দাবিগুলি WIP-তে থাকা অ্যাট্রিবিউট শর্তের সাথে মিলে যায়, তাহলে এটি
$PRIMUS_SERVICEACCOUNT. -
$PRIMUS_INPUT_STORAGE_BUCKETবাকেটের গ্রাহক ডেটা অ্যাক্সেস করার জন্য ওয়ার্কলোড$PRIMUS_SERVICEACCOUNTএর সাথে সম্পর্কিত পরিষেবা অ্যাকাউন্ট অ্যাক্সেস টোকেন ব্যবহার করে। - ওয়ার্কলোড সেই ডেটার উপর একটি অপারেশন করে।
- ওয়ার্কলোড
$WORKLOAD_SERVICEACCOUNTপরিষেবা অ্যাকাউন্ট ব্যবহার করে$SECUNDUS_RESULT_STORAGE_BUCKETবাকেটে সেই অপারেশনের ফলাফল লেখার জন্য।
স্বাক্ষরিত কন্টেইনার সাপোর্ট সহ নতুন কর্মপ্রবাহ
স্বাক্ষরিত কন্টেইনার সাপোর্টটি বিদ্যমান ওয়ার্কফ্লোতে একত্রিত করা হবে, যেমনটি নীচে হাইলাইট করা হয়েছে। যখন আপনি স্বাক্ষরিত কন্টেইনার ইমেজ সাপোর্ট সহ কনফিডেনশিয়াল স্পেসে ওয়ার্কলোড চালান, তখন কনফিগার করা রিসোর্সগুলি ব্যবহার করে নিম্নলিখিত প্রক্রিয়াটি সম্পন্ন হয়:
- কনফিডেনশিয়াল স্পেস বর্তমান চলমান ওয়ার্কলোড চিত্রের সাথে সম্পর্কিত যেকোনো কন্টেইনার স্বাক্ষর আবিষ্কার করে এবং সেগুলি সত্যায়ন যাচাইকারীর কাছে পাঠায়। সত্যায়ন যাচাইকারী স্বাক্ষরটি যাচাই করে এবং সত্যায়ন দাবিতে যেকোনো বৈধ স্বাক্ষর অন্তর্ভুক্ত করে।
- ওয়ার্কলোডটি WIP থেকে
$PRIMUS_SERVICEACCOUNTএর জন্য একটি সাধারণ Google অ্যাক্সেস টোকেনের অনুরোধ করে। এটি ওয়ার্কলোড এবং পরিবেশগত দাবি সহ একটি অ্যাটেস্টেশন ভেরিফায়ার পরিষেবা টোকেন অফার করে। - যদি অ্যাটেস্টেশন ভেরিফায়ার সার্ভিস টোকেনে কন্টেইনার স্বাক্ষর দাবিগুলি WIP-তে অ্যাট্রিবিউট শর্তের সাথে মেলে, তাহলে এটি
$PRIMUS_SERVICEACCOUNTজন্য অ্যাক্সেস টোকেন ফেরত দেয় । -
$PRIMUS_INPUT_STORAGE_BUCKETবাকেটের গ্রাহক ডেটা অ্যাক্সেস করার জন্য ওয়ার্কলোড$PRIMUS_SERVICEACCOUNTএর সাথে সম্পর্কিত পরিষেবা অ্যাকাউন্ট অ্যাক্সেস টোকেন ব্যবহার করে। - ওয়ার্কলোড সেই ডেটার উপর একটি অপারেশন করে।
- ওয়ার্কলোড
$WORKLOAD_SERVICEACCOUNTব্যবহার করে$SECUNDUS_RESULT_STORAGE_BUCKETবাকেটে সেই অপারেশনের ফলাফল লেখা হয়।
2. ক্লাউড রিসোর্স সেট আপ করুন
কনফিডেনশিয়াল স্পেস সেটআপের অংশ হিসেবে, প্রথমে আপনি প্রাইমাস এবং সেকান্ডাস ব্যাংকের জিসিপি প্রকল্পের অধীনে প্রয়োজনীয় ক্লাউড রিসোর্স তৈরি করবেন। এই কোডল্যাবে নতুন রিসোর্সগুলি হল:
প্রাইমাস প্রকল্পে:
- কোড অডিট করার পর, Secundus ওয়ার্কলোড সাইন করতে ব্যবহৃত KMS সাইনিং কী।
- Cosign স্বাক্ষর সংরক্ষণের জন্য আর্টিফ্যাক্ট রেজিস্ট্রি সংগ্রহস্থল।
সেকান্ডাস প্রকল্পে কোনও নতুন সংস্থান নেই। এই সংস্থানগুলি সেট আপ হয়ে গেলে, আপনি প্রয়োজনীয় ভূমিকা এবং অনুমতি সহ কাজের চাপের জন্য একটি পরিষেবা অ্যাকাউন্ট তৈরি করবেন। তারপরে আপনি একটি কাজের চাপের চিত্র তৈরি করবেন এবং অডিটর, প্রাইমাস ব্যাংক, কাজের চাপের চিত্রটিতে স্বাক্ষর করবে। কাজের চাপ ডেটা-সহযোগীদের (এই কোডল্যাবে প্রাইমাস ব্যাংক) দ্বারা অনুমোদিত হবে এবং কাজের চাপ অপারেটর (এই ক্ষেত্রে সেকান্ডাস ব্যাংক) কাজের চাপ পরিচালনা করবে।
কনফিডেনশিয়াল স্পেস সেটআপের অংশ হিসেবে, আপনি প্রাইমাস এবং সেকান্ডাস জিসিপি প্রকল্পগুলিতে প্রয়োজনীয় ক্লাউড রিসোর্স তৈরি করবেন।
শুরু করার আগে
- এই কোডল্যাবের অংশ হিসেবে ব্যবহৃত প্রয়োজনীয় স্ক্রিপ্টগুলি পেতে নীচের কমান্ডটি ব্যবহার করে এই সংগ্রহস্থলটি ক্লোন করুন।
git clone https://github.com/GoogleCloudPlatform/confidential-space
- এই কোডল্যাবের ডিরেক্টরি পরিবর্তন করুন।
cd confidential-space/codelabs/signed_container_codelab/scripts
- নিচে দেখানো প্রয়োজনীয় প্রকল্পগুলি সেট করেছেন কিনা তা নিশ্চিত করুন।
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_INPUT_STORAGE_BUCKET)। - প্রাইমাস ব্যাংকের ডেটা ফাইল এনক্রিপ্ট করার জন্য KMS-এ এনক্রিপশন কী (
$PRIMUS_ENC_KEY) এবং কীরিং ($PRIMUS_ENC_KEYRING)। - ওয়ার্কলোড আইডেন্টিটি পুল (
$PRIMUS_WORKLOAD_IDENTITY_POOL) এর প্রোভাইডার দ্বারা কনফিগার করা বৈশিষ্ট্যের শর্তাবলীর উপর ভিত্তি করে দাবি যাচাই করার জন্য। - উপরে উল্লিখিত ওয়ার্কলোড আইডেন্টিটি পুল (
$PRIMUS_WORKLOAD_IDENTITY_POOL) এর সাথে সংযুক্ত পরিষেবা অ্যাকাউন্ট ($PRIMUS_SERVICEACCOUNT) এবং নিম্নলিখিত IAM অ্যাক্সেস সহ: - KMS কী ব্যবহার করে ডেটা ডিক্রিপ্ট করার জন্য
roles/cloudkms.cryptoKeyDecrypterব্যবহার করুন। - ক্লাউড স্টোরেজ বাকেট থেকে ডেটা পড়ার জন্য
objectViewer। -
roles/iam.workloadIdentityUserএই পরিষেবা অ্যাকাউন্টটিকে ওয়ার্কলোড আইডেন্টিটি পুলের সাথে সংযুক্ত করার জন্য ব্যবহারকারী।
./setup_primus_bank_resources.sh
Secundus ব্যাংক সম্পদ সেট আপ করুন
এই ধাপের অংশ হিসেবে, আপনি Secundus ব্যাংকের জন্য প্রয়োজনীয় ক্লাউড রিসোর্স সেট আপ করবেন। Secundus ব্যাংকের জন্য রিসোর্স সেট আপ করতে নিম্নলিখিত স্ক্রিপ্টটি চালান। এই ধাপের অংশ হিসেবে নীচে উল্লিখিত রিসোর্স তৈরি করা হবে:
- সেকান্ডাস ব্যাংকের ওয়ার্কলোড সম্পাদনের ফলাফল সংরক্ষণের জন্য ক্লাউড স্টোরেজ বাকেট (
$SECUNDUS_RESULT_STORAGE_BUCKET)।
./setup_secundus_bank_resources.sh
৩. কাজের চাপ তৈরি এবং স্বাক্ষর করুন
ওয়ার্কলোড পরিষেবা অ্যাকাউন্ট তৈরি করুন
এখন, আপনি প্রয়োজনীয় ভূমিকা এবং অনুমতি সহ কাজের চাপের জন্য একটি পরিষেবা অ্যাকাউন্ট তৈরি করবেন। Secundus ব্যাংক প্রকল্পে একটি কাজের চাপ পরিষেবা অ্যাকাউন্ট তৈরি করতে নিম্নলিখিত স্ক্রিপ্টটি চালান। এই পরিষেবা-অ্যাকাউন্টটি ওয়ার্কলোড পরিচালনাকারী VM দ্বারা ব্যবহৃত হবে।
- এই ওয়ার্কলোড সার্ভিস-অ্যাকাউন্ট (
$WORKLOAD_SERVICEACCOUNT) এর নিম্নলিখিত ভূমিকা থাকবে: -
confidentialcomputing.workloadUserএকটি প্রত্যয়ন টোকেন পাবেন - ক্লাউড লগিং-এ লগ লেখার জন্য
logging.logWriter। -
$PRIMUS_INPUT_STORAGE_BUCKETক্লাউড স্টোরেজ বাকেট থেকে ডেটা পড়ার জন্যobjectViewer। -
$SECUNDUS_RESULT_STORAGE_BUCKETক্লাউড স্টোরেজ বাকেটে ওয়ার্কলোড ফলাফল লেখার জন্যobjectAdmin।
./create_workload_serviceaccount.sh
কাজের চাপ তৈরি করুন
এই ধাপের অংশ হিসেবে, আপনি একটি ওয়ার্কলোড ডকার ইমেজ তৈরি করবেন। এই কোডল্যাবে ব্যবহৃত ওয়ার্কলোড হল একটি সহজ CLI-ভিত্তিক Go অ্যাপ যা আর্গুমেন্টে প্রদত্ত ভৌগোলিক অবস্থান থেকে গ্রাহকদের (প্রাইমাস ব্যাংকের গ্রাহক ডেটা থেকে) গণনা করে। নিম্নলিখিত স্ক্রিপ্টটি চালান যাতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করা হচ্ছে এমন একটি ওয়ার্কলোড তৈরি করতে:
- সেকান্ডাস ব্যাংকের মালিকানাধীন আর্টিফ্যাক্ট রেজিস্ট্রি (
$SECUNDUS_ARTIFACT_REGISTRY) তৈরি করুন। - প্রয়োজনীয় রিসোর্সের নাম সহ ওয়ার্কলোড কোড আপডেট করুন। এই কোডল্যাবের জন্য ব্যবহৃত ওয়ার্কলোড কোডটি এখানে দেওয়া হল।
- Go বাইনারি তৈরি করুন এবং ওয়ার্কলোড কোডের একটি ডকার ইমেজ তৈরি করার জন্য Dockerfile তৈরি করুন। এই কোডল্যাবের জন্য ব্যবহৃত Dockerfileটি এখানে ।
- সেকান্ডাস ব্যাংকের মালিকানাধীন আর্টিফ্যাক্ট রেজিস্ট্রিতে (
$SECUNDUS_ARTIFACT_REGISTRY) ডকার ইমেজ তৈরি এবং প্রকাশ করুন। -
$SECUNDUS_ARTIFACT_REGISTRYএর জন্য$WORKLOAD_SERVICEACCOUNTপড়ার অনুমতি দিন। আর্টিফ্যাক্ট রেজিস্ট্রি থেকে ওয়ার্কলোড ডকার ইমেজ টেনে আনার জন্য ওয়ার্কলোড কন্টেইনারের জন্য এটি প্রয়োজন।
./create_workload.sh
কাজের চাপ সাইন করুন
আমরা ওয়ার্কলোড ইমেজ সাইন করার জন্য Cosign ব্যবহার করব। Cosign ডিফল্টভাবে যে ইমেজ সাইন করছে সেই রেপোতেই স্বাক্ষর সংরক্ষণ করবে। স্বাক্ষরের জন্য একটি ভিন্ন রিপোজিটরি নির্দিষ্ট করতে, আপনি COSIGN_REPOSITORY এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারেন।
এখানে আমরা উদাহরণ হিসেবে আর্টিফ্যাক্ট রেজিস্ট্রি ব্যবহার করব। আপনি আপনার পছন্দের উপর ভিত্তি করে অন্যান্য OCI-ভিত্তিক রেজিস্ট্রি যেমন Docker Hub, AWS CodeArtifact বেছে নিতে পারেন।
- একটি আর্টিফ্যাক্ট রেজিস্ট্রি ডকার রিপোজিটরি তৈরি করুন।
gcloud config set project $PRIMUS_PROJECT_ID
gcloud artifacts repositories create $PRIMUS_COSIGN_REPOSITORY \
--repository-format=docker --location=${PRIMUS_PROJECT_REPOSITORY_REGION}
- একটি ওয়ার্কলোড ইমেজ সাইন করার জন্য KMS এর অধীনে একটি কীরিং এবং কী তৈরি করুন।
gcloud config set project $PRIMUS_PROJECT_ID
gcloud kms keyrings create $PRIMUS_SIGNING_KEYRING \
--location=${PRIMUS_PROJECT_LOCATION}
gcloud kms keys create $PRIMUS_SIGNING_KEY \
--keyring=$PRIMUS_SIGNING_KEYRING \
--purpose=asymmetric-signing \
--default-algorithm=ec-sign-p256-sha256 \
--location=${PRIMUS_PROJECT_LOCATION}
- আর্টিফ্যাক্ট রেজিস্ট্রির জন্য,
$LOCATION/$PROJECT/$REPOSITORY/$IMAGE_NAMEএর মতো একটি পূর্ণাঙ্গ ছবির নাম প্রত্যাশিত। স্বাক্ষর সংরক্ষণের জন্য আপনি যেকোনো কন্টেইনার ছবি সংগ্রহস্থলে আপলোড করতে পারেন।
export COSIGN_REPOSITORY=us-docker.pkg.dev/${PRIMUS_PROJECT_ID}/${PRIMUS_COSIGN_REPOSITORY}/demo
-
$WORKLOAD_SERVICEACCOUNTপরিষেবা অ্যাকাউন্টে$PRIMUS_COSIGN_REPOSITORYসংগ্রহস্থলে ভিউয়ার ভূমিকা প্রদান করুন। এটি Confidential Space কে$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 চাবিহীন সাইনিং সমর্থিত নয়।
একটি কী জোড়া দিয়ে স্বাক্ষর করার সময়, দুটি বিকল্প থাকে:
- Cosign দ্বারা তৈরি একটি স্থানীয় কী জোড়া দিয়ে স্বাক্ষর করুন।
- অন্য কোথাও সংরক্ষিত একটি চাবি জোড়া দিয়ে স্বাক্ষর করুন (উদাহরণস্বরূপ, একটি KMS-এ)।
- যদি আপনার Cosign-এ একটি কী পেয়ার না থাকে, তাহলে তা তৈরি করুন। আরও বিস্তারিত জানার জন্য স্ব-পরিচালিত কী দিয়ে সাইন ইন করুন দেখুন। এখানে আমরা কী-পেয়ার তৈরি এবং ওয়ার্কলোড সাইন করার উভয় উপায় (স্থানীয়ভাবে এবং KMS প্রদানকারী ব্যবহার করে) উল্লেখ করেছি, ওয়ার্কলোড কন্টেইনার সাইন করার জন্য দয়া করে এই পদ্ধতিগুলির মধ্যে একটি অনুসরণ করুন।
// 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> : আপনার ব্যবহৃত KMS সমাধানকে বোঝায়
- <key> : KMS-এ কী পাথকে বোঝায়
- যাচাইয়ের জন্য পাবলিক কীটি পুনরুদ্ধার করুন।
// 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
- Cosign ব্যবহার করে ওয়ার্কলোড সাইন করুন। পাবলিক কীতে আনপ্যাডেড বেস৬৪ এনকোডিং সম্পাদন করুন।
PUB=$(cat pub.pem | openssl base64)
// Remove spaces and trailing "=" signs.
PUB=$(echo $PUB | tr -d '[:space:]' | sed 's/[=]*$//')
- রপ্তানি করা পাবলিক কী এবং স্বাক্ষর অ্যালগরিদম সংযুক্ত করে 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[REQUIRED] কোন সাইনিং কী ব্যবহার করতে হবে তা নির্দিষ্ট করে। KMS প্রদানকারী দ্বারা পরিচালিত কী উল্লেখ করার সময়, অনুগ্রহ করে Sigstore KMS সমর্থন থেকে নির্দিষ্ট URI ফর্ম্যাট অনুসরণ করুন। Cosign দ্বারা তৈরি কোনও কী উল্লেখ করার সময়, cosign.key ব্যবহার করুন।-
$IMAGE_REFERENCE[REQUIRED] কোন কন্টেইনার ছবিতে স্বাক্ষর করতে হবে তা নির্দিষ্ট করে।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 [REQUIRED] স্বাক্ষর পেলোডের সাথে সংযুক্ত টীকাগুলি নির্দিষ্ট করে। গোপনীয় স্থান স্বাক্ষরিত কন্টেইনার চিত্রগুলির জন্য, পাবলিক কী এবং স্বাক্ষর অ্যালগরিদমগুলি স্বাক্ষর পেলোডের সাথে সংযুক্ত করা প্রয়োজন।
-
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-জেনারেটেড কী জোড়ার জন্য ডিফল্ট স্বাক্ষর অ্যালগরিদমও।
- ডকার রিপোজিটরিতে স্বাক্ষর আপলোড করুন
Cosign সাইন স্বয়ংক্রিয়ভাবে নির্দিষ্ট COSIGN_REPOSITORY.
৪. কাজের চাপ অনুমোদন এবং চালান
কাজের চাপ অনুমোদন করুন
এই পদক্ষেপের অংশ হিসেবে, আমরা ওয়ার্কলোড আইডেন্টিটি পুল ( $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))"
কাজের চাপ চালান
এই ধাপের অংশ হিসেবে, আমরা Confidential VM-এ ওয়ার্কলোড চালাবো। মেটাডেটা ফ্ল্যাগ ব্যবহার করে প্রয়োজনীয় TEE আর্গুমেন্ট পাস করা হয়। ওয়ার্কলোড কন্টেইনারের আর্গুমেন্ট ফ্ল্যাগের " tee-cmd " অংশ ব্যবহার করে পাস করা হয়। ওয়ার্কলোড কোড করা হয় যাতে এর ফলাফল $SECUNDUS_RESULT_STORAGE_BUCKET এ প্রকাশ করা যায়।
gcloud compute instances create ${WORKLOAD_VM} \
--confidential-compute-type=SEV \
--shielded-secure-boot \
--maintenance-policy=MIGRATE \
--scopes=cloud-platform \
--zone=${SECUNDUS_PROJECT_ZONE} \
--project=${SECUNDUS_PROJECT_ID} \
--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 ফাইলে সিয়াটেলের কতজন লোক তালিকাভুক্ত আছে!
৫. পরিষ্কার করা
এই কোডল্যাবের অংশ হিসেবে আমরা যে রিসোর্সগুলি তৈরি করেছি সেগুলি পরিষ্কার করার জন্য এখানে একটি স্ক্রিপ্ট ব্যবহার করা যেতে পারে। এই পরিষ্কারের অংশ হিসেবে, নিম্নলিখিত রিসোর্সগুলি মুছে ফেলা হবে:
- প্রাইমাস ব্যাংকের ইনপুট স্টোরেজ বাকেট (
$PRIMUS_INPUT_STORAGE_BUCKET)। - প্রাইমাস ব্যাংক সার্ভিস-অ্যাকাউন্ট (
$PRIMUS_SERVICEACCOUNT)। - প্রাইমাস ব্যাংকের আর্টিফ্যাক্ট রেজিস্ট্রি যেখানে ছবির স্বাক্ষর (
$PRIMUS_COSIGN_REPOSITORY) থাকে। - প্রাইমাস ব্যাংকের ওয়ার্কলোড আইডেন্টিটি পুল (
$PRIMUS_WORKLOAD_IDENTITY_POOL)। - সেকান্ডাস ব্যাংকের ওয়ার্কলোড সার্ভিস অ্যাকাউন্ট (
$WORKLOAD_SERVICEACCOUNT)। - কাজের চাপ গণনার উদাহরণ।
- সেকান্ডাস ব্যাংকের ফলাফল স্টোরেজ বাকেট (
$SECUNDUS_RESULT_STORAGE_BUCKET)। - সেকান্ডাস ব্যাংকের আর্টিফ্যাক্ট রেজিস্ট্রি (
$SECUNDUS_ARTIFACT_REGISTRY)। - সেকান্ডাস ব্যাংকের ওয়ার্কলোড ভিএম (
$WORKLOAD_VM)।
./cleanup.sh
যদি আপনার অন্বেষণ শেষ হয়ে যায়, তাহলে অনুগ্রহ করে আপনার প্রকল্পটি মুছে ফেলার কথা বিবেচনা করুন।
- ক্লাউড প্ল্যাটফর্ম কনসোলে যান
- আপনি যে প্রকল্পটি বন্ধ করতে চান তা নির্বাচন করুন, তারপর উপরে 'মুছুন' এ ক্লিক করুন: এটি প্রকল্পটি মুছে ফেলার জন্য সময়সূচী করে।
অভিনন্দন
অভিনন্দন, আপনি কোডল্যাবটি সফলভাবে সম্পন্ন করেছেন!
গোপন স্থানের ব্যবহারযোগ্যতা উন্নত করতে স্বাক্ষরিত কন্টেইনার চিত্র বৈশিষ্ট্যটি কীভাবে কাজে লাগাতে হয় তা আপনি শিখেছেন।
এরপর কী?
এই ধরণের কিছু কোডল্যাব দেখুন...
- গোপন স্থানের সাথে ব্যবহার করা সুরক্ষিত শেয়ার করা ডেটা
- মাল্টি-পার্টি কম্পিউটেশন এবং গোপনীয় স্থান ব্যবহার করে কীভাবে ডিজিটাল সম্পদ লেনদেন করবেন
- গোপনীয় স্থান ব্যবহার করে গোপনীয় তথ্য বিশ্লেষণ করুন