1. সংক্ষিপ্ত বিবরণ
GenAI অ্যাপ্লিকেশন তৈরির তাড়াহুড়োয়, আমরা প্রায়শই সবচেয়ে গুরুত্বপূর্ণ উপাদানটি ভুলে যাই: নিরাপত্তা।
কল্পনা করুন একটি এইচআর চ্যাটবট তৈরি করা। আপনি চান এটি "আমার বেতন কত?" বা "আমার দল কেমন পারফর্ম করছে?" এর মতো প্রশ্নের উত্তর দেবে।
- যদি অ্যালিস (একজন নিয়মিত কর্মচারী) জিজ্ঞাসা করে, তাহলে তার কেবল তার ডেটা দেখা উচিত।
- যদি বব (একজন ম্যানেজার) জিজ্ঞাসা করে, তাহলে তার দলের তথ্য দেখা উচিত।
সমস্যাটি
বেশিরভাগ RAG (Retrieval Augmented Generation) আর্কিটেকচার অ্যাপ্লিকেশন লেয়ারে এটি পরিচালনা করার চেষ্টা করে। তারা খণ্ডগুলি পুনরুদ্ধার করার পরে ফিল্টার করে, অথবা তারা "আচরণ" করার জন্য LLM-এর উপর নির্ভর করে। এটি ভঙ্গুর। যদি অ্যাপ লজিক ব্যর্থ হয়, তাহলে ডেটা লিক হয়।
সমাধান
নিরাপত্তাকে ডাটাবেস লেয়ারে নামিয়ে আনুন। AlloyDB তে PostgreSQL রো-লেভেল সিকিউরিটি (RLS) ব্যবহার করে, আমরা নিশ্চিত করি যে ডাটাবেসটি ব্যবহারকারীর দেখার অনুমতি নেই এমন ডেটা ফেরত দিতে শারীরিকভাবে অস্বীকৃতি জানায় — AI যাই চাইুক না কেন।
এই নির্দেশিকায়, আমরা "দ্য প্রাইভেট ভল্ট" তৈরি করব: একটি নিরাপদ এইচআর সহকারী যা লগ ইন করা ব্যক্তির উপর ভিত্তি করে গতিশীলভাবে তার উত্তরগুলি পরিবর্তন করে।

স্থাপত্য
আমরা পাইথনে জটিল অনুমতি লজিক তৈরি করছি না। আমরা ডাটাবেস ইঞ্জিন নিজেই ব্যবহার করছি।
- ইন্টারফেস: একটি সহজ স্ট্রিমলিট অ্যাপ যা লগইন অনুকরণ করে।
- মস্তিষ্ক: AlloyDB AI (PostgreSQL সামঞ্জস্যপূর্ণ)।
- প্রক্রিয়া: আমরা প্রতিটি লেনদেনের শুরুতে একটি সেশন ভেরিয়েবল (
app.active_user) সেট করি। ডাটাবেস নীতিগুলি স্বয়ংক্রিয়ভাবে একটিuser_rolesটেবিল (আমাদের পরিচয় প্রদানকারী হিসাবে কাজ করে) পরীক্ষা করে সারিগুলি ফিল্টার করে।
তুমি কী তৈরি করবে
একটি নিরাপদ এইচআর অ্যাসিস্ট্যান্ট অ্যাপ্লিকেশন। সংবেদনশীল ডেটা ফিল্টার করার জন্য অ্যাপ্লিকেশন লজিকের উপর নির্ভর করার পরিবর্তে, আপনি সরাসরি অ্যালয়ডিবি ডাটাবেস ইঞ্জিনে রো-লেভেল সিকিউরিটি (RLS) প্রয়োগ করবেন। এটি নিশ্চিত করে যে আপনার এআই মডেল যদি "হ্যালুসিনেট" করে বা অননুমোদিত ডেটা অ্যাক্সেস করার চেষ্টা করে, তবুও ডাটাবেসটি শারীরিকভাবে এটি ফেরত দিতে অস্বীকার করবে।
তুমি কি শিখবে
তুমি শিখবে:
- RLS এর জন্য একটি স্কিমা কীভাবে ডিজাইন করবেন (ডেটা বনাম পরিচয় পৃথক করা)।
- PostgreSQL নীতিমালা কীভাবে লিখবেন (
CREATE POLICY)। -
FORCE ROW LEVEL SECURITYব্যবহার করে "টেবিল মালিক" ছাড় কীভাবে বাইপাস করবেন। - ব্যবহারকারীদের জন্য "কনটেক্সট স্যুইচিং" সম্পাদন করে এমন একটি পাইথন অ্যাপ কীভাবে তৈরি করবেন।
আবশ্যকতা
- একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স ।
- বিলিং সক্ষম করা একটি Google ক্লাউড প্রকল্প।
- ক্লাউড শেল অথবা gcloud এবং psql ইনস্টল করা টার্মিনালে অ্যাক্সেস।
2. শুরু করার আগে
একটি প্রকল্প তৈরি করুন
- গুগল ক্লাউড কনসোলে , প্রজেক্ট সিলেক্টর পৃষ্ঠায়, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
- আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং সক্ষম আছে কিনা তা নিশ্চিত করুন। কোনও প্রোজেক্টে বিলিং সক্ষম আছে কিনা তা কীভাবে পরীক্ষা করবেন তা শিখুন ।
- আপনি ক্লাউড শেল ব্যবহার করবেন, যা গুগল ক্লাউডে চলমান একটি কমান্ড-লাইন পরিবেশ। গুগল ক্লাউড কনসোলের শীর্ষে অ্যাক্টিভেট ক্লাউড শেল ক্লিক করুন।

- ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি নিম্নলিখিত কমান্ড ব্যবহার করে পরীক্ষা করতে পারবেন যে আপনি ইতিমধ্যেই প্রমাণীকরণপ্রাপ্ত এবং প্রকল্পটি আপনার প্রকল্প আইডিতে সেট করা আছে কিনা:
gcloud auth list
- gcloud কমান্ড আপনার প্রকল্প সম্পর্কে জানে কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান।
gcloud config list project
- যদি আপনার প্রকল্পটি সেট না করা থাকে, তাহলে এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
gcloud config set project <YOUR_PROJECT_ID>
- প্রয়োজনীয় API গুলি সক্ষম করুন: লিঙ্কটি অনুসরণ করুন এবং API গুলি সক্ষম করুন।
অন্যথায়, আপনি এর জন্য gcloud কমান্ড ব্যবহার করতে পারেন। gcloud কমান্ড এবং ব্যবহারের জন্য ডকুমেন্টেশন দেখুন।
gcloud services enable \
alloydb.googleapis.com \
compute.googleapis.com \
cloudresourcemanager.googleapis.com \
servicenetworking.googleapis.com \
aiplatform.googleapis.com
সমস্যা সমাধান এবং সমস্যা সমাধান
"ঘোস্ট প্রজেক্ট" সিন্ড্রোম | আপনি |
বিলিং ব্যারিকেড | তুমি প্রজেক্টটি চালু করেছো, কিন্তু বিলিং অ্যাকাউন্ট ভুলে গেছো। AlloyDB একটি উচ্চ-কার্যক্ষমতাসম্পন্ন ইঞ্জিন; "গ্যাস ট্যাঙ্ক" (বিলিং) খালি থাকলে এটি চালু হবে না। |
এপিআই প্রচার ল্যাগ | তুমি "এনিমেল এপিআই" ক্লিক করেছো, কিন্তু কমান্ড লাইনে এখনও |
কোটা কোয়াগস | যদি আপনি একটি নতুন ট্রায়াল অ্যাকাউন্ট ব্যবহার করেন, তাহলে AlloyDB ইনস্ট্যান্সের জন্য আপনার আঞ্চলিক কোটা পূরণ হতে পারে। যদি |
৩. ডাটাবেস সেটআপ
এই ল্যাবে আমরা পরীক্ষার তথ্যের জন্য ডাটাবেস হিসেবে AlloyDB ব্যবহার করব। এটি ডাটাবেস এবং লগের মতো সমস্ত রিসোর্স ধরে রাখার জন্য ক্লাস্টার ব্যবহার করে। প্রতিটি ক্লাস্টারের একটি প্রাথমিক উদাহরণ থাকে যা ডেটাতে একটি অ্যাক্সেস পয়েন্ট প্রদান করে। টেবিলগুলি প্রকৃত তথ্য ধারণ করবে।
চলুন একটি AlloyDB ক্লাস্টার, ইনস্ট্যান্স এবং টেবিল তৈরি করি যেখানে পরীক্ষার ডেটাসেট লোড করা হবে।
- বোতামে ক্লিক করুন অথবা নীচের লিঙ্কটি আপনার ব্রাউজারে কপি করুন যেখানে আপনার Google Cloud Console ব্যবহারকারী লগ ইন করেছেন।
- এই ধাপটি সম্পন্ন হলে রেপোটি আপনার স্থানীয় ক্লাউড শেল এডিটরে ক্লোন করা হবে এবং আপনি প্রজেক্ট ফোল্ডার থেকে নীচের কমান্ডটি চালাতে সক্ষম হবেন (আপনি প্রজেক্ট ডিরেক্টরিতে আছেন তা নিশ্চিত করা গুরুত্বপূর্ণ):
sh run.sh
- এখন UI ব্যবহার করুন (টার্মিনালে লিঙ্কে ক্লিক করে অথবা টার্মিনালে "প্রিভিউ অন ওয়েব" লিঙ্কে ক্লিক করে)।
- শুরু করার জন্য প্রকল্প আইডি, ক্লাস্টার এবং উদাহরণের নামের জন্য আপনার বিবরণ লিখুন।
- লগগুলি স্ক্রোল করার সময় কফি খেয়ে নাও এবং পর্দার আড়ালে এটি কীভাবে কাজ করছে তা আপনি এখানে পড়তে পারেন। এতে প্রায় ১০-১৫ মিনিট সময় লাগতে পারে।
সমস্যা সমাধান এবং সমস্যা সমাধান
"ধৈর্য" সমস্যা | ডাটাবেস ক্লাস্টারগুলি ভারী অবকাঠামো। যদি আপনি পৃষ্ঠাটি রিফ্রেশ করেন বা ক্লাউড শেল সেশনটি বন্ধ করে দেন কারণ এটি "আটকে আছে" বলে মনে হয়, তাহলে আপনার একটি "ঘোস্ট" ইনস্ট্যান্স তৈরি হতে পারে যা আংশিকভাবে প্রভিশন করা হয়েছে এবং ম্যানুয়াল হস্তক্ষেপ ছাড়া মুছে ফেলা অসম্ভব। |
অঞ্চলের মিল নেই | যদি আপনি |
জম্বি ক্লাস্টার | যদি আপনি পূর্বে একটি ক্লাস্টারের জন্য একই নাম ব্যবহার করে থাকেন এবং এটি মুছে না ফেলে থাকেন, তাহলে স্ক্রিপ্টটি বলতে পারে যে ক্লাস্টারের নামটি ইতিমধ্যেই বিদ্যমান। একটি প্রকল্পের মধ্যে ক্লাস্টারের নামগুলি অবশ্যই অনন্য হতে হবে। |
ক্লাউড শেল টাইমআউট | যদি আপনার কফি ব্রেক ৩০ মিনিটের হয়, তাহলে ক্লাউড শেল স্লিপ মোডে যেতে পারে এবং |
৪. স্কিমা প্রভিশনিং
এই ধাপে, আমরা নিম্নলিখিত বিষয়গুলি কভার করব:

এখানে ধাপে ধাপে বিস্তারিত পদক্ষেপগুলি দেওয়া হল:
আপনার AlloyDB ক্লাস্টার এবং ইনস্ট্যান্স চালু হয়ে গেলে, AI এক্সটেনশনগুলি সক্ষম করতে এবং স্কিমাটি সরবরাহ করতে AlloyDB স্টুডিও SQL এডিটরে যান।

আপনার ইনস্ট্যান্স তৈরি শেষ না হওয়া পর্যন্ত আপনাকে অপেক্ষা করতে হতে পারে। একবার এটি হয়ে গেলে, ক্লাস্টার তৈরি করার সময় তৈরি করা শংসাপত্রগুলি ব্যবহার করে AlloyDB-তে সাইন ইন করুন। PostgreSQL-এ প্রমাণীকরণের জন্য নিম্নলিখিত ডেটা ব্যবহার করুন:
- ব্যবহারকারীর নাম: "
postgres" - ডাটাবেস: "
postgres" - পাসওয়ার্ড: "
alloydb" (অথবা তৈরির সময় আপনি যা সেট করেছেন)
AlloyDB স্টুডিওতে সফলভাবে প্রমাণীকরণ করার পরে, SQL কমান্ডগুলি এডিটরে প্রবেশ করানো হবে। আপনি শেষ উইন্ডোর ডানদিকে প্লাস ব্যবহার করে একাধিক এডিটর উইন্ডো যুক্ত করতে পারেন।

আপনি এডিটর উইন্ডোতে AlloyDB-এর জন্য কমান্ড লিখবেন, প্রয়োজনে Run, Format এবং Clear অপশন ব্যবহার করে।
একটি টেবিল তৈরি করুন
আমাদের দুটি টেবিলের প্রয়োজন: একটি সংবেদনশীল তথ্য (কর্মচারীদের) জন্য এবং একটি পরিচয় নিয়ম (ব্যবহারকারীর ভূমিকা) জন্য। নীতিমালায় "অসীম পুনরাবৃত্তি" ত্রুটি এড়াতে এগুলি পৃথক করা অত্যন্ত গুরুত্বপূর্ণ।
AlloyDB স্টুডিওতে নিচের DDL স্টেটমেন্টটি ব্যবহার করে আপনি একটি টেবিল তৈরি করতে পারেন:
-- 1. Create User Roles (The Identity Provider)
CREATE TABLE user_roles (
username TEXT PRIMARY KEY,
role TEXT -- 'employee', 'manager', 'admin'
);
INSERT INTO user_roles (username, role) VALUES
('Alice', 'employee'),
('Bob', 'manager'),
('Charlie', 'employee');
-- 2. Create the Data Table
CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name TEXT,
salary INTEGER,
performance_review TEXT
);
INSERT INTO employees (name, salary, performance_review) VALUES
('Alice', 80000, 'Alice meets expectations but needs to improve punctuality.'),
('Bob', 120000, 'Bob is a strong leader. Team morale is high.'),
('Charlie', 85000, 'Charlie exceeds expectations. Ready for promotion.');
সমস্যা সমাধান এবং সমস্যা সমাধান
কর্মচারী টেবিলের ভিতরে ভূমিকা নির্ধারণ করার সময় অসীম পুনরাবৃত্তি সনাক্ত করা হয়েছে | কেন এটি ব্যর্থ হয়: যদি আপনার নীতিমালায় বলা থাকে "আমি একজন পরিচালক কিনা তা দেখার জন্য কর্মচারী টেবিলটি পরীক্ষা করুন," তাহলে ডাটাবেসকে নীতিটি পরীক্ষা করার জন্য টেবিলটি জিজ্ঞাসা করতে হবে, যা নীতিটি আবার ট্রিগার করে। ফলাফল: অসীম পুনরাবৃত্তি সনাক্ত করা হয়েছে। সমাধান: সর্বদা একটি পৃথক লুকআপ টেবিল (user_roles) রাখুন অথবা ভূমিকার জন্য প্রকৃত ডাটাবেস ব্যবহারকারীদের ব্যবহার করুন। |
তথ্য যাচাই করুন:
SELECT count(*) FROM employees;
-- Output: 3
৫. নিরাপত্তা সক্ষম করুন এবং প্রয়োগ করুন
এখন আমরা শিল্ডগুলি চালু করি। আমরা একটি জেনেরিক "অ্যাপ ব্যবহারকারী"ও তৈরি করব যা আমাদের পাইথন কোড সংযোগের জন্য ব্যবহার করবে।
AlloyDB কোয়েরি এডিটর থেকে নিচের SQL স্টেটমেন্টটি চালান:
-- 1. Activate RLS
ALTER TABLE employees ENABLE ROW LEVEL SECURITY;
-- 2. CRITICAL: Force RLS for Table Owners
ALTER TABLE employees FORCE ROW LEVEL SECURITY;
-- 3. Create the Application User
DO
$do$
BEGIN
IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = 'app_user') THEN
CREATE ROLE app_user LOGIN PASSWORD 'password';
END IF;
END
$do$;
-- 4. Grant Access
GRANT SELECT ON employees TO app_user;
GRANT SELECT ON user_roles TO app_user;
সমস্যা সমাধান এবং সমস্যা সমাধান
পোস্টগ্রেস (সুপারইউজার) হিসেবে পরীক্ষা করা হচ্ছে এবং সমস্ত ডেটা দেখা হচ্ছে। | কেন এটি ব্যর্থ হয়: ডিফল্টরূপে, RLS টেবিলের মালিক বা সুপার ব্যবহারকারীদের ক্ষেত্রে প্রযোজ্য হয় না। তারা সমস্ত নীতি বাইপাস করে। সমস্যা সমাধান: যদি আপনার নীতিগুলি "ভাঙা" বলে মনে হয় (সবকিছুর অনুমতি দেয়), তাহলে আপনি |
৬. অ্যাক্সেস নীতিমালা তৈরি করুন
আমরা একটি Session Variable (app.active_user) ব্যবহার করে দুটি নিয়ম সংজ্ঞায়িত করব যা আমরা পরে আমাদের অ্যাপ্লিকেশন কোড থেকে সেট করব।
AlloyDB কোয়েরি এডিটর থেকে নিচের SQL স্টেটমেন্টটি চালান:
-- Policy 1: Self-View
-- Users can see rows where their name matches the session variable
CREATE POLICY "view_own_data" ON employees
FOR SELECT
USING (name = current_setting('app.active_user', true));
-- Policy 2: Manager-View
-- Managers can see ALL rows.
CREATE POLICY "manager_view_all" ON employees
FOR SELECT
USING (
EXISTS (
SELECT 1 FROM user_roles
WHERE username = current_setting('app.active_user', true)
AND role = 'manager'
)
);
সমস্যা সমাধান এবং সমস্যা সমাধান
app.active_user এর পরিবর্তে current_user ব্যবহার করা হচ্ছে। | সমস্যা: Current_user হল একটি সংরক্ষিত SQL কীওয়ার্ড যা ডাটাবেস ভূমিকা (যেমন, app_user) ফেরত দেয়। আমাদের অ্যাপ্লিকেশন ব্যবহারকারীর প্রয়োজন (যেমন, Alice)। সমাধান: সর্বদা app.variable_name এর মতো একটি কাস্টম নেমস্পেস ব্যবহার করুন । |
| সমস্যা: যদি ভেরিয়েবলটি সেট না করা থাকে, তাহলে কোয়েরিটি একটি ত্রুটির সাথে ক্র্যাশ করে। সমাধান: current_setting('...', true) ক্র্যাশ করার পরিবর্তে NULL প্রদান করে, যার ফলে নিরাপদে 0 টি সারি ফিরে আসে। |
৭. "গিরগিটি" অ্যাপ তৈরি করুন
আমরা অ্যাপ্লিকেশন লজিক সিমুলেট করার জন্য পাইথন এবং স্ট্রিমলিট ব্যবহার করব।

এডিটর মোডে ক্লাউড শেল টার্মিনাল খুলুন, আপনার রুট ফোল্ডারে অথবা আপনি যে ডিরেক্টরিতে এই অ্যাপ্লিকেশনটি তৈরি করতে চান সেখানে যান। একটি নতুন ফোল্ডার তৈরি করুন।
১. নির্ভরতা ইনস্টল করুন:
আপনার নতুন প্রজেক্ট ডিরেক্টরির মধ্যে থেকে ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:
pip install streamlit psycopg2-binary
2. app.py তৈরি করুন:
app.py নামে একটি নতুন ফাইল তৈরি করুন এবং repo ফাইল থেকে কন্টেন্ট কপি করুন।
import streamlit as st
import psycopg2
# CONFIGURATION (Replace with your IP)
DB_HOST = "10.x.x.x"
DB_NAME = "postgres"
DB_USER = "postgres"
DB_PASS = "alloydb"
def get_db_connection():
return psycopg2.connect(
host=DB_HOST, database=DB_NAME, user=DB_USER, password=DB_PASS
)
def query_database(user_name):
conn = get_db_connection()
try:
with conn.cursor() as cur:
# THE SECURITY HANDSHAKE
# We tell the database: "For this transaction, I am acting as..."
cur.execute(f"SET app.active_user = '{user_name}';")
# THE BLIND QUERY
# We ask for EVERYTHING. The database silently filters it.
cur.execute("SELECT name, role, salary, performance_review FROM employees;")
return cur.fetchall()
finally:
conn.close()
# UI
st.title("🛡️ The Private Vault")
user = st.sidebar.radio("Act as User:", ["Alice", "Bob", "Charlie", "Eve"])
if st.button("Access Data"):
results = query_database(user)
if not results:
st.error("🚫 Access Denied.")
else:
st.success(f"Viewing data as {user}")
for row in results:
st.write(row)
৩. অ্যাপটি চালান:
আপনার নতুন প্রজেক্ট ডিরেক্টরির মধ্যে থেকে ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:
streamlit run app.py --server.port 8080 --server.enableCORS false
সমস্যা সমাধান এবং সমস্যা সমাধান
সংযোগ পুলিং। | ঝুঁকি: যদি আপনি একটি সংযোগ পুল ব্যবহার করেন, তাহলে সেশন ভেরিয়েবল SET app.active_user সংযোগে থাকতে পারে এবং পরবর্তী ব্যবহারকারীর কাছে "লিক" হতে পারে যিনি সেই সংযোগটি ধরেন। সমাধান: উৎপাদনে, পুলে সংযোগ ফেরত দেওয়ার সময় সর্বদা RESET app.active_user অথবা DISCARD ALL ব্যবহার করুন। |
ক্লাউড শেলে ফাঁকা স্ক্রিন। | সমাধান: পোর্ট 8080-এ "ওয়েব প্রিভিউ" বোতামটি ব্যবহার করুন। টার্মিনালে লোকালহোস্ট লিঙ্কে ক্লিক করবেন না। |
৮. জিরো ট্রাস্ট যাচাই করুন
জিরো ট্রাস্ট বাস্তবায়ন নিশ্চিত করতে অ্যাপটি ব্যবহার করে দেখুন:
"অ্যালিস" নির্বাচন করুন: তার (নিজেকে) ১টি সারি দেখা উচিত।

"বব" নির্বাচন করুন: তার ৩টি সারি (সবাই) দেখা উচিত।

এআই এজেন্টদের জন্য এটি কেন গুরুত্বপূর্ণ
কল্পনা করুন আপনার মডেলটিকে এই ডাটাবেসের সাথে সংযুক্ত করুন। যদি কোনও ব্যবহারকারী আপনার মডেলকে জিজ্ঞাসা করে: "সমস্ত কর্মক্ষমতা পর্যালোচনার সারসংক্ষেপ", তাহলে এটি "SELECT performance_review FROM employees" তৈরি করবে।
- RLS ছাড়া: আপনার মডেল সকলের ব্যক্তিগত পর্যালোচনা উদ্ধার করে এবং অ্যালিসের কাছে ফাঁস করে।
- RLS এর সাথে: আপনার মডেলটি ঠিক একই কোয়েরি চালায়, কিন্তু ডাটাবেসটি কেবল অ্যালিসের পর্যালোচনা ফেরত দেয়।
এটি হলো জিরো-ট্রাস্ট এআই। আপনি ডেটা ফিল্টার করার জন্য মডেলটিকে বিশ্বাস করেন না; আপনি ডাটাবেসকে এটি লুকিয়ে রাখতে বাধ্য করেন।
এটি প্রোডাকশনে নিয়ে যাওয়া হচ্ছে
এখানে প্রদর্শিত স্থাপত্যটি উৎপাদন-গ্রেড, তবে শেখার জন্য নির্দিষ্ট বাস্তবায়ন সরলীকৃত। বাস্তব-বিশ্বের এন্টারপ্রাইজ পরিবেশে এটি নিরাপদে স্থাপন করতে, আপনার নিম্নলিখিত বর্ধিতকরণগুলি বাস্তবায়ন করা উচিত:
- আসল প্রমাণীকরণ: "আইডেন্টিটি সুইচার" ড্রপডাউনটি গুগল আইডেন্টিটি প্ল্যাটফর্ম, ওকটা, অথবা অথ০ এর মতো একটি শক্তিশালী আইডেন্টিটি প্রোভাইডার (আইডিপি) দিয়ে প্রতিস্থাপন করুন। আপনার অ্যাপ্লিকেশনটি ব্যবহারকারীর টোকেন যাচাই করবে এবং ডাটাবেস সেশন ভেরিয়েবল সেট করার আগে নিরাপদে তাদের পরিচয় বের করবে, যাতে ব্যবহারকারীরা তাদের পরিচয় নকল করতে না পারে।
- সংযোগ পুলিং সুরক্ষা: সংযোগ পুল ব্যবহার করার সময়, সঠিকভাবে পরিচালনা না করা হলে সেশন ভেরিয়েবলগুলি কখনও কখনও বিভিন্ন ব্যবহারকারীর অনুরোধের মধ্যে স্থির থাকতে পারে। ব্যবহারকারীদের মধ্যে ডেটা ফাঁস রোধ করতে পুলে সংযোগ ফেরত দেওয়ার সময় আপনার অ্যাপ্লিকেশনটি সেশন ভেরিয়েবলটি (যেমন, RESET app.active_user) রিসেট করে বা সংযোগের অবস্থা পরিষ্কার করে তা নিশ্চিত করুন।
- গোপন ব্যবস্থাপনা: ডাটাবেস শংসাপত্র হার্ডকোড করা একটি নিরাপত্তা ঝুঁকি। রানটাইমের সময় আপনার ডাটাবেস পাসওয়ার্ড এবং সংযোগ স্ট্রিংগুলি নিরাপদে সংরক্ষণ এবং পুনরুদ্ধার করতে Google Secret Manager এর মতো একটি ডেডিকেটেড গোপন ব্যবস্থাপনা পরিষেবা ব্যবহার করুন।
9. পরিষ্কার করা
এই ল্যাবটি সম্পন্ন হয়ে গেলে, alloyDB ক্লাস্টার এবং ইনস্ট্যান্স মুছে ফেলতে ভুলবেন না।
এটির ক্লাস্টারটি তার ইনস্ট্যান্স(গুলি) সহ পরিষ্কার করা উচিত।
১০. অভিনন্দন
অভিনন্দন! আপনি সফলভাবে ডেটা লেয়ারে নিরাপত্তা ব্যবস্থাটি পুশ করেছেন। এমনকি যদি আপনার পাইথন কোডে একটি বাগ থাকে যা print(all_salaries) করার চেষ্টা করে, তবুও ডাটাবেস অ্যালিসকে কিছুই ফেরত দেবে না।
পরবর্তী পদক্ষেপ
- আপনার নিজস্ব ডেটাসেট দিয়ে এটি চেষ্টা করুন।
- AlloyDB AI ডকুমেন্টেশন অন্বেষণ করুন।
- আরও কর্মশালার জন্য কোড বিপাসনা ওয়েবসাইটটি দেখুন।