Neo4J API সিকিউরিটি
Neo4J API সিকিউরিটি মূলত Authentication এবং Authorization এর উপর ভিত্তি করে কাজ করে। যখন Neo4J ডেটাবেসের API অ্যাক্সেস করার জন্য ক্লায়েন্ট অথবা ব্যবহারকারী লগইন করেন, তখন নিম্নলিখিত সিকিউরিটি ব্যবস্থা কার্যকর হয়:
- Authentication (অথেনটিকেশন): এটি ব্যবহারকারীর পরিচয় যাচাই করার প্রক্রিয়া। Neo4J এ সিস্টেমে লগইন করার সময় ব্যবহারকারীকে ইউজারনেম এবং পাসওয়ার্ড দিয়ে অথেনটিকেট করা হয়।
- Authorization (অথোরাইজেশন): এটি যাচাই করে যে, একটি নির্দিষ্ট ব্যবহারকারী বা অ্যাপ্লিকেশন কী ধরনের অ্যাক্সেস বা অনুমতি পাবে ডেটাবেসের বিভিন্ন অংশে। এখানে, নির্দিষ্ট ব্যবহারকারীকে নির্ধারিত রোল এবং পারমিশন দেওয়া হয়, যেমন
reader,writer, অথবাadmin।
Neo4J Authentication
Neo4J ডেটাবেসে অথেনটিকেশন ব্যবস্থার জন্য প্রথমেই ইউজারনেম এবং পাসওয়ার্ড নির্ধারণ করা হয়। একটি সাধারণ অথেনটিকেশন স্টেপ এর মধ্যে আছে:
- ডিফল্ট ইউজারনেম এবং পাসওয়ার্ড: Neo4J ইনস্টল করার পর ডিফল্ট ইউজারনেম
neo4jএবং পাসওয়ার্ড দেওয়া থাকে। ব্যবহারকারীরা প্রথম লগইন করার পর তাদের পাসওয়ার্ড পরিবর্তন করতে পারেন। - ইউজার তৈরি এবং পাসওয়ার্ড রিসেট: ব্যবহারকারী চাইলে নতুন ইউজার তৈরি করতে পারেন অথবা পাসওয়ার্ড পরিবর্তন করতে পারেন। এর জন্য Neo4J কনসোল বা API ব্যবহৃত হয়।
নতুন ইউজার তৈরি করার উদাহরণ:
bin/neo4j-admin set-initial-password new_password
এটি ডিফল্ট পাসওয়ার্ড পরিবর্তন করতে ব্যবহৃত হয়।
Neo4J Authorization
Neo4J-এর Authorization মেকানিজম ব্যবহার করে ব্যবহারকারীদের ভূমিকা (Roles) নির্ধারণ করা হয়। ডিফল্টভাবে, Neo4J তিনটি রোল সমর্থন করে:
- Reader: শুধুমাত্র ডেটা পড়ার অনুমতি থাকে।
- Writer: ডেটা পড়ার পাশাপাশি ডেটা লিখতে পারে।
- Admin: সম্পূর্ণ অ্যাক্সেস থাকে, সব ধরনের পরিবর্তন করতে পারে এবং সিস্টেম প্রশাসনিক কাজ করতে পারে।
ব্যবহারকারীকে নির্দিষ্ট ভূমিকা অ্যাসাইন করার জন্য নিচের মত একটি কুয়েরি ব্যবহার করা যেতে পারে:
GRANT ROLE reader TO john_doe
এটি john_doe ইউজারকে reader রোল প্রদান করবে।
API Authentication using Bolt Protocol
নিওফোরজে Bolt প্রোটোকল ব্যবহার করে API অথেনটিকেশন প্রদান করে। Bolt হল একটি দ্রুত এবং নিরাপদ প্রোটোকল যা Neo4J ডেটাবেসের সাথে যোগাযোগের জন্য ব্যবহৃত হয়।
নিচে Python ব্যবহার করে API অথেনটিকেশন দেখানো হলো:
from neo4j import GraphDatabase
uri = "bolt://localhost:7687"
username = "neo4j"
password = "your_password"
# গ্রাফ ডেটাবেস ড্রাইভার ইনস্ট্যান্স তৈরি
driver = GraphDatabase.driver(uri, auth=(username, password))
# সেশন তৈরি এবং কুয়েরি এক্সিকিউট করা
def execute_cypher_query(query):
with driver.session() as session:
result = session.run(query)
return result
query = "MATCH (n) RETURN n LIMIT 5"
result = execute_cypher_query(query)
for record in result:
print(record)
TLS (Transport Layer Security) এনক্রিপশন
Neo4J ডেটাবেসের API নিরাপদ করার জন্য TLS এনক্রিপশন সমর্থন করে, যা ডেটার ট্রান্সফার প্রক্রিয়া এনক্রিপ্ট করে। TLS ব্যবহার করা হলে API এক্সেসের মাধ্যমে ডেটা এক স্থান থেকে অন্য স্থানে পাঠানোর সময় তার নিরাপত্তা নিশ্চিত হয়। TLS প্রোটোকল সক্রিয় করতে Neo4J কনফিগারেশন ফাইলের মাধ্যমে সেটিংস পরিবর্তন করা হয়।
নিচে TLS সক্রিয় করার উদাহরণ:
- Neo4J কনফিগারেশন ফাইলটি এডিট করুন (
neo4j.conf):
dbms.ssl.policy.default.enabled=true
dbms.ssl.policy.default.private_key=path_to_private_key
dbms.ssl.policy.default.public_certificate=path_to_public_certificate
- TLS সক্রিয় করা: এর মাধ্যমে Neo4J সার্ভারটির API এক্সেস এনক্রিপ্ট হয়ে যাবে।
সারাংশ
নিওফোরজে (Neo4J) ডেটাবেসের API সিকিউরিটি এবং অথেনটিকেশন নিশ্চিত করতে ব্যবহারকারীদের জন্য শক্তিশালী নিরাপত্তা ব্যবস্থা রয়েছে। এতে রয়েছে ইউজার অথেনটিকেশন, রোল ভিত্তিক অথোরাইজেশন, এবং TLS এনক্রিপশন। এসব ব্যবস্থার মাধ্যমে শুধুমাত্র অনুমোদিত ব্যবহারকারীরা ডেটাবেসে এক্সেস পায় এবং ডেটার নিরাপত্তা নিশ্চিত করা হয়। API অথেনটিকেশন সাধারণত bolt প্রোটোকলের মাধ্যমে করা হয় এবং বিভিন্ন ভূমিকা (roles) ব্যবহার করে ইউজারদের অনুমতি নির্ধারণ করা হয়।
Read more