নিরাপত্তা
আতিথেয়তার মতো নিরাপত্তা।
একটি আইডেন্টিটি প্রোভাইডার ততটাই ভালো, যতটা মজবুত তার টেন্যান্টদের মধ্যের দেয়াল আর যতটা যত্ন সে সিক্রেটের প্রতি নেয়। Usher Identity কীভাবে তৈরি, তা এখানে। আমরা বর্ণনা করি সফটওয়্যারটি কী করে; কোনো সার্টিফিকেশনের দাবি আমরা করি না।
আর্কিটেকচার
আলাদা ডোমেইন, আলাদা নেটওয়ার্ক।
Usher Identity-এর নিজের পৃষ্ঠাগুলি আর প্রতিটি গ্রাহকের ইস্যুয়ার ভিন্ন ভিন্ন রেজিস্টারযোগ্য ডোমেইনে থাকে। ডেটাবেসগুলি এমন একটি নেটওয়ার্কে থাকে যেখান থেকে ইন্টারনেটে পৌঁছানো যায় না, আর বাইরে যাওয়ার একমাত্র পথ একটি প্রক্সি, যা যাচাই করে সে কোথায় যাচ্ছে।
- Caddy প্রতিটি হোস্টের জন্য TLS সামলায় এবং সেই হেডারগুলি সরিয়ে দেয় যা কেবল Usher Identity-এর নিজের পরিষেবাই সেট করতে পারে।
- অথ টিয়ার প্রতিটি এনভায়রনমেন্টের হয়ে উত্তর দেয়, হোস্ট দিয়ে আলাদা করে; একটি হোস্টের জন্য কিছু ক্যাশ করে অন্য হোস্টকে দেওয়া হয় না।
- প্রতিটি পরিষেবা Valkey-এর সাথে নিজস্ব ব্যবহারকারী হিসেবে কথা বলে, কেবল নিজের কী-তে সীমাবদ্ধ। কোনো ডিফল্ট ব্যবহারকারী নেই।
- টোকেন ও কোড বহনকারী স্টেটমেন্ট কখনও তাদের মানসহ ডেটাবেস লগে লেখা হয় না।
ইন্টারনেট
মানুষ, আপনার অ্যাপ, আপনার সার্ভার
এজ
Caddy: TLS, HSTS, অভ্যন্তরীণ হেডার সরায়
usheridentity.com
সাইট ও Console
usheridentity.com, console.usheridentity.com
API
api.usheridentity.com
*.usherid.com
অথ টিয়ার
প্রতিটি এনভায়রনমেন্টের ইস্যুয়ার ও লবি
ডেটা নেটওয়ার্ক · বাইরে যাওয়ার পথ নেই
Postgres
প্রতিটি এনভায়রনমেন্টের জন্য একটি স্কিমা
Valkey
প্রতিটি পরিষেবা কেবল নিজের কী-তে সীমাবদ্ধ
বাইরে যাওয়ার একমাত্র পথ
ইগ্রেস প্রক্সি
গ্রাহকের দেওয়া প্রতিটি URL-এর জন্য
ডিসকভারি, JWKS, লগআউট
কেবল পাবলিক ঠিকানা
আইসোলেশন
গুরুত্বপূর্ণ কিছুই ভাগ করা হয় না।
প্রতিটি প্রজেক্ট এনভায়রনমেন্ট পায় নিজস্ব Postgres স্কিমা, নিজস্ব সাইনিং কী, এবং নিজস্ব ডেটা কী দিয়ে সিল করা নিজস্ব সিক্রেট। এর ইস্যুয়ার টেন্যান্ট ডোমেইনের একটি হোস্ট, এবং এর কুকিগুলি শুধু-হোস্ট, তাই ব্রাউজার কখনও এক এনভায়রনমেন্টের কুকি অন্যটিতে পাঠায় না।
usheridentity.com
সাইট, Usher Identity Console, Usher Identity অ্যাকাউন্ট
*.usherid.com
প্রতিটি এনভায়রনমেন্টের জন্য একটি ইস্যুয়ার, একটি আলাদা ডোমেইনে
ব্যবহারকারী, সেশন ও টোকেন থাকে এই এনভায়রনমেন্টের জন্য তৈরি একটি স্কিমায়। কোয়েরি চলে সেই স্কিমার উপর, কখনও টেন্যান্ট কলামসহ ভাগ করা টেবিলে নয়।
Acme প্রোডাকশন-এর সিল করা Google ক্লায়েন্ট সিক্রেট Northwind প্রোডাকশন-এ কপি করুন।
সংরক্ষিত অবস্থায় এনক্রিপশন
এনভেলপ এনক্রিপশন, নিজের জায়গার সাথে বাঁধা।
আপনি Usher Identity-কে যে সিক্রেট দেন তা একটি এনভায়রনমেন্টের নিজস্ব ডেটা কী-এর অধীনে AES-256-GCM দিয়ে সিল করা হয়। ডেটা কীগুলি নিজেরাই ডেটাবেসের বাইরে রাখা একটি ভার্সনসহ মাস্টার কী দিয়ে মোড়ানো।
- প্রতিটি এনভায়রনমেন্টের নিজস্ব ডেটা কী
- এক এনভায়রনমেন্টের ডেটা কী ফাঁস হলেও অন্যটির সম্পর্কে কিছুই জানা যায় না।
- AAD বাঁধন
- এনভায়রনমেন্ট ও উদ্দেশ্য প্রতিটি সাইফারটেক্সটে বাঁধা থাকে, তাই একটি মান এক সারি বা টেন্যান্ট থেকে অন্যটিতে সরানো যায় না।
- ভার্সনসহ কী
- প্রতিটি সিল করা মান লিখে রাখে কোন কী ভার্সন দিয়ে এটি তৈরি, তাই কী রোটেট করা যায় এবং পুরনো মান নতুন করে মোড়ানো যায়।
- অথেন্টিকেটেড
- GCM-এর ট্যাগের অর্থ, কারসাজি করা মান খোলে না, অন্য কিছুতে ডিক্রিপ্ট হয়ে যায় না।
মাস্টার কী
ডেটাবেসের বাইরে রাখা, ভার্সনসহ
ডেটা কী, প্রতিটি এনভায়রনমেন্টের জন্য একটি
মাস্টার কী দিয়ে মোড়ানো
সিক্রেট
ডেটা কী-এর অধীনে AES-256-GCM দিয়ে সিল করা
u1.<key version>.<iv>.<ciphertext + tag>
aad = u1 | version | environment | purpose
চর্চা
খুঁটিনাটি, যত্ন নিয়ে করা।
পাসওয়ার্ড, যদি আপনি ব্যবহার করেন
OWASP-এর সুপারিশ করা মাত্রায় (19 MiB, দুই পাস) Argon2id দিয়ে হ্যাশ করা, একসাথে কতগুলি চলতে পারে তার একটি সীমাসহ, যাতে সাইন-ইনের ঢল পরিষেবাকে বসিয়ে দিতে না পারে। নতুন পাসওয়ার্ড Have I Been Pwned-এর range API দিয়ে জানা ফাঁসের সাথে মিলিয়ে দেখা হয়, যা পাসওয়ার্ডের হ্যাশের কেবল একটি ছোট প্রিফিক্স দেখে। ডিফল্ট ন্যূনতম দৈর্ঘ্য 12।
আবার ব্যবহার করা যায় এমন কিছুই সংরক্ষিত নয়
ক্লায়েন্ট সিক্রেট, টোকেন, ম্যাজিক-লিঙ্ক টোকেন ও ইমেলে পাঠানো কোড হ্যাশ করে সংরক্ষণ করা হয়। ব্যাকআপ কোড এনক্রিপ্ট করা। একটি অথরাইজেশন কোড পাঁচ মিনিট টেকে; ইমেলে পাঠানো কোডে তিনবার চেষ্টা করা যায়।
প্রতিটি দরজায় রেট লিমিট
সাইন-ইন, সাইন-আপ, ইমেলে পাঠানো কোড, ম্যাজিক লিঙ্ক, পাসওয়ার্ড রিসেট ও দ্বিতীয় ফ্যাক্টর যাচাই, প্রতিটির নিজস্ব সীমা আছে: যেমন, মিনিটে দশটি পাসওয়ার্ড সাইন-ইন, আর প্রতি দশ মিনিটে পাঁচটি ইমেল কোড।
একটি কঠোর Content-Security-Policy
প্রতিটি লবি পৃষ্ঠা পায় একটি নতুন nonce এবং তাকে ঘিরে তৈরি একটি নীতি: কেবল এই অরিজিনের nonce বহনকারী স্ক্রিপ্ট চলে, ফর্ম কেবল একই অরিজিনে পোস্ট হয়, এবং অন্য সাইট পৃষ্ঠাটিকে ফ্রেমে রাখতে পারে না।
এমন অডিট লগ যাতে ভরসা করা যায়
ওয়ার্কস্পেস, প্রজেক্ট ও এনভায়রনমেন্টের পরিবর্তন একটি কেবল-যোগ করা যায় এমন লগে লেখা হয়, প্রতিটি এন্ট্রি আগেরটির সাথে হ্যাশ-চেইন করা, তাই কোনো এন্ট্রি বদলানো বা হারানো হলে তা ধরা পড়ে।
গ্রাহকের URL-এর জন্য একটি ইগ্রেস প্রক্সি
গ্রাহকের দেওয়া কোনো ঠিকানায় Usher Identity যে অনুরোধই করে (OIDC ডিসকভারি, JWKS, ব্যাক-চ্যানেল লগআউট), তা একটি প্রক্সি দিয়ে বের হয়। এটি নামটি একবার রিজলভ করে, প্রাইভেট, লুপব্যাক, লিঙ্ক-লোকাল ও ক্লাউড-মেটাডেটা ঠিকানা প্রত্যাখ্যান করে, এবং যে ঠিকানা যাচাই করেছে সেখানেই সংযোগ করে, তাই DNS রিবাইন্ডিং গ্রাহকের URL-কে অভ্যন্তরীণ URL-এ পরিণত করতে পারে না।
যে হ্যান্ডেল কখনও দুবার দেওয়া হয় না
একটি প্রোডাকশন এনভায়রনমেন্টের হ্যান্ডেল তার ইস্যুয়ারের প্রথম লেবেল। Console আমন্ত্রণের মাধ্যমে খোলা, ফিশিংয়ের জন্য রিপোর্ট হওয়া লবি স্থগিত করা হয়, এবং একবার ব্যবহৃত হ্যান্ডেল আর কখনও দেওয়া হয় না, কারণ পুরনো অ্যাপগুলি হয়তো এখনও এর টোকেনে ভরসা করে।
আপনি বললেই শেষ হয় এমন সেশন
Usher Identity ক্যাশ করা কপিতে ভরসা না করে প্রতিটি অনুরোধে নিজের সেশন যাচাই করে, তাই আপনি যে সেশন শেষ করেন তা সঙ্গে সঙ্গে শেষ হয়। অ্যাক্সেস টোকেন স্বল্পমেয়াদি (ডিফল্টভাবে দশ মিনিট), এবং আপনার API সেগুলি ইনট্রোস্পেক্ট করতে পারে।
দায়িত্বশীল প্রকাশ
কিছু পেয়েছেন? আগে আমাদের জানান।
আপনার যদি মনে হয় Usher Identity-তে কোনো নিরাপত্তা সমস্যা পেয়েছেন, আমরা সে সম্পর্কে শুনতে চাই, এবং এটি ঠিক করতে আপনার সাথে কাজ করব।
- আপনি কী পেয়েছেন, কোথায়, এবং কীভাবে আবার ঘটানো যায়।
- আপনার বোঝা অনুযায়ী, কেউ এটি দিয়ে কী করতে পারে।
- আমরা কীভাবে আপনার সাথে যোগাযোগ করতে পারি, এবং আপনি কৃতিত্ব চান কি না।
অনুগ্রহ করে কেবল নিজের এনভায়রনমেন্টে পরীক্ষা করুন, অন্যদের ডেটায় ঢুকবেন না, এবং কাউকে জানানোর আগে সমস্যাটি ঠিক করার জন্য আমাদের যুক্তিসঙ্গত সময় দিন। Usher Identity সাইন-ইনের ভান করা কোনো পৃষ্ঠা রিপোর্ট করতে, অপব্যবহার রিপোর্ট করুন দেখুন।