20.1
AWS Organizations, OU আর SCP
management account আর member account, consolidated billing, OU কীভাবে সাজাবে, SCP কীভাবে নিচে নামে, tag policy আর resource control policy।
26 মিনিট পড়া + Animation
টিপস: ডটেড-আন্ডারলাইন করা যেকোনো শব্দে ট্যাপ বা Hover করলে তার অর্থ দেখবে।
এই লেসন শেষে তুমি যা পারবে
- বুঝিয়ে বলতে পারবে কোম্পানিগুলো কেন একটা না রেখে অনেকগুলো AWS account চালায়, আর একটা account সীমানা হিসেবে কী দেয়: ক্ষতির পরিধি (blast radius), quota, bill আর নিরাপত্তা।
- একটা organization কেমন, বর্ণনা করতে পারবে: management account আর member account, root, OU, account বানানো বনাম দাওয়াত দেওয়া,
OrganizationAccountAccessRole, account ছেড়ে যাওয়া আর সরানো। - consolidated billing বুঝিয়ে বলতে পারবে: একটা bill, সব account মিলিয়ে volume-এর দাম, Reserved Instance আর Savings Plans-এর discount ভাগাভাগি, আর কখন ভাগাভাগি বন্ধ করতে হয়।
- OU-র গাছ সাজাতে পারবে (business unit, environment, project, আর AWS-এর সুপারিশ করা OU), যাতে policy সেই কাঠামো মেনে চলে।
- গাছের যেকোনো জায়গায় একটা SCP কী allow করে, হিসাব করে বের করতে পারবে: default
FullAWSAccess, deny-list আর allow-list কৌশল, উত্তরাধিকার, আর কাদের ওপর SCP খাটে না। - পরিচিত SCP-গুলো লিখতে পারবে (organization ছাড়া আটকানো, Region lock, logging রক্ষা, root user আটকানো, একটা role রক্ষা), আর তাদের সীমাও জানবে।
- SCP, RCP, declarative policy আর অন্য policy-গুলো আলাদা করে চিনতে পারবে, আর tag policy ঠিকভাবে ব্যবহার করতে পারবে, সে কী পারে না সেটাও জেনে।
- AWS Resource Access Manager দিয়ে account-এর মধ্যে resource ভাগ করতে পারবে, আর delegated administrator account থেকে security service চালাতে পারবে।
#একটা account কেন যথেষ্ট না
২ নম্বর chapter-এ তুমি IAM দেখেছ একটা account-এর ভেতরে। কিন্তু বাস্তবের কোম্পানি খুব কমই একটা account নিয়ে থাকে। ঢাকার একটা mobile-banking কোম্পানির হয়তো বিশটা account, একটা বড় ব্যাংকের কয়েকশো। কারণটা সোজা: AWS-এ সবচেয়ে মজবুত সীমানা হলো account। প্রায় সবকিছুই account ধরে আলাদা:
- ক্ষতির পরিধি (blast radius)। ফাঁস হয়ে যাওয়া একটা access key, resource মুছে ফেলা কোনো ভুল script, বা বেশি ক্ষমতা পাওয়া কোনো developer ক্ষতি করতে পারে শুধু নিজের account-এ। Dev account-এর একটা test কখনো Prod account-এর payment database ছুঁতে পারে না, কারণ দুই account-এর মধ্যে কোনো IAM user, role বা resource ভাগ করা নেই, যতক্ষণ না তুমি ইচ্ছে করে জোড়া দাও।
- Quota। service quota (Lambda concurrency, EC2 vCPU, API rate limit) account আর Region ধরে আলাদা। এক account-এর load test বা লাগামছাড়া কোনো job আরেক account-এর quota খেয়ে ফেলতে পারে না। lesson ১৫.২ এটারই কথা দিয়েছিল: জরুরি কাজ পুরোপুরি আলাদা রাখার শক্ত উপায় হলো আলাদা account।
- Bill। প্রতিটা account-এর খরচ আলাদা লাইনে আসে, তাই কোনো tag ছাড়াই প্রতিটা team, product বা গ্রাহকের খরচ আলাদা দেখা যায়।
- নিরাপত্তা আর compliance। auditor-কে বলা যায় “card-এর ডেটা শুধু এই দুটো account-এ থাকে”, তাতে audit-এর পরিধি ছোট থাকে। আলাদা account-এ আলাদা নিয়মও রাখা যায়।
এর বিকল্প, একটা account-এ অনেকগুলো VPC, সবাইকে একই IAM, একই quota আর একই bill-এর মধ্যে রেখে দেয়। IAM policy-তে একটা ভুল হলেই সব খুলে যেতে পারে। স্লাইডে এই তুলনাকে বলা হয়েছে multi account বনাম একটা account-এ অনেক VPC, আর ছোট কোনো প্রজেক্টের বাইরে যেকোনো কিছুর জন্য AWS অনেক account-ই সুপারিশ করে।
অনেক account মানে নতুন একটা ঝামেলা: চল্লিশটা account-এর user, চল্লিশটা bill আর চল্লিশ সেট নিয়ম সামলাবে কীভাবে? এই chapter সেটা নিয়েই। এই lesson-এ কাঠামোটা (Organizations, OU, policy)। Lesson ২০.২ SCP আর RCP-কে condition আর boundary-সহ পুরো যাচাইয়ের ধারায় বসায়, আর lesson ২০.৩ IAM Identity Center দিয়ে মানুষকে সব account-এ একবারেই sign in করায়, আর Control Tower দিয়ে তৈরি-করা একটা organization বানায়।
#AWS Organizations
#Management account আর member account
AWS Organizations একটা বিনা পয়সার global service, যেটা AWS account-গুলোকে একটা organization-এর মধ্যে জড়ো করে:
- যে account organization বানায়, সে হয় management account। পুরোনো document, owner-এর নোট আর কিছু API field (যেমন
MasterAccountId) এখনো একে master account বলে: একই জিনিস, শুধু নাম বদলেছে। সে bill দেয়, account বানায় আর দাওয়াত দেয়, policy সামলায়। management account অন্য account-এ বদলানো যায় না; বদলাতে চাইলে organization-টাই মুছে ফেলতে হবে। - বাকি প্রতিটা account হলো member account। একটা account একসঙ্গে শুধু একটা organization-এ থাকতে পারে।
- organization-এর ঠিক একটা root থাকে, গাছের মাথা। তার নিচে তুমি organizational unit (OU) বানাও, ফোল্ডারের মতো, যার ভেতরে account আর অন্য OU থাকে। root-এর নিচে OU ৫ ধাপ পর্যন্ত গভীরে বসানো যায়, আর একটা organization-এ ২,০০০ পর্যন্ত OU রাখা যায়। একটা account থাকে ঠিক এক জায়গায়: root-এ, নয়তো একটা OU-তে।
- নতুন একটা organization-এ default-ভাবে ১০টা account রাখা যায় (খোলা থাকা দাওয়াতও গোনা হয়)। management account Service Quotas-এ বেশি চাইতে পারে; বড় কোম্পানি হাজার হাজার account চালায়। একদম নতুন organization কখনো কখনো এর চেয়ে কম quota দিয়ে শুরু হয়।
management account-এর ক্ষমতা সবচেয়ে বেশি, আর তার ওপর SCP খাটে না (নিচে দেখবে)। তাই AWS-এর পরামর্শ: একে প্রায় খালি রাখো। কোনো workload না, খুব অল্প মানুষ, শুধু organization চালানো আর billing।
#Account বানানো আর দাওয়াত দেওয়া
organization-এ account আনার দুটো পথ।
| account বানানো | আগে থেকে থাকা account-কে দাওয়াত | |
|---|---|---|
| কীভাবে | management account থেকে create-account: একটা email আর একটা নাম | invite-account-to-organization; account-কে accept করতে হয় |
| গতি | asynchronous, সাধারণত কয়েক মিনিট; একসঙ্গে ৫টা পর্যন্ত তৈরি হতে পারে | দাওয়াত (একটা “handshake”) ১৫ দিন পর্যন্ত অপেক্ষা করে |
| admin access | OrganizationAccountAccessRole নিজে থেকেই তৈরি: পুরো admin, management account-কে বিশ্বাস করে | এমন কোনো role নেই: account-এর নিজের admin-দের হাতে বানাতে হয় |
| root user | কেউ password recovery না চালানো পর্যন্ত কোনো password নেই | আগের root user-ই থাকে |
| সাধারণ ব্যবহার | প্রতিটা নতুন team, environment বা project | কিনে নেওয়া কোনো কোম্পানি, একা শুরু করা কোনো team |
OrganizationAccountAccessRole হলো lesson ২.৪-এর সেই পরিচিত cross-account admin role: management account-এর administrator-রা sts:AssumeRole দিয়ে এতে ঢোকে। অনেক কোম্পানি পরে এর জায়গায় IAM Identity Center-এর permission set (lesson ২০.৩) ব্যবহার করে, আর কে এটা assume করতে পারবে তা কড়া করে বেঁধে দেয়।
#ছেড়ে যাওয়া, সরিয়ে দেওয়া আর অন্য জায়গায় নেওয়া
- একটা member account নিজে ছেড়ে যেতে পারে (
LeaveOrganization), অথবা management account তাকে সরিয়ে দিতে পারে। দুই ক্ষেত্রেই account-কে একা চলার মতো হতে হবে: নিজের payment method, যোগাযোগের তথ্য আর support plan লাগবে, আর Organizations-এর বানানো account হলে অন্তত ৪ দিন পুরোনো হতে হবে। - নভেম্বর ২০২৫ থেকে একটা account সরাসরি এক organization থেকে আরেকটায় যেতে পারে: নতুন organization দাওয়াত দেয়, account accept করে, মাঝখানে কখনো একা হয় না। এর আগে একমাত্র পথ ছিল ছেড়ে যাওয়া → একা থাকা → accept করা। আগে লেখা পরীক্ষার প্রশ্ন পুরোনো পথটাই বলে, আর সেটা এখনো কাজ করে।
- একই organization-এর ভেতরে এক OU থেকে আরেক OU-তে account সরানো (
move-account) সঙ্গে সঙ্গে হয়, আর account তখনই গাছের নতুন জায়গার policy পেয়ে যায়। আগে পরীক্ষা করে নাও: কড়া কোনো OU চলতে থাকা workload ভেঙে দিতে পারে। - management account ছেড়ে যেতে পারে না। একটা organization শেষ করতে চাইলে আগে সব member সরাও, তারপর organization মুছে ফেলো।
এখানে পরীক্ষার প্রিয় বাক্য: “member account যেন organization ছেড়ে যেতে না পারে”। উত্তর: একটা SCP, যেটা organizations:LeaveOrganization deny করে।
account ঢোকানো আর বের করা
একটা organization দুইভাবে বড় হয়: management account একদম নতুন account বানায়, অথবা আগে থেকে থাকা account-কে দাওয়াত দেয়। দেখো কোন পথে কী পাওয়া যায়, আর কোনো account বেরিয়ে যেতে চাইলে কী হয়।
পরিস্থিতি
সহজ পথ: একটা API call-এই নতুন member account তৈরি, admin access-এর ব্যবস্থাসহ।
account বানাতে পারে শুধু management account। platform team সেখানে sign in করে (ভালো হয় Identity Center দিয়ে, lesson ২০.৩)।
#All features নাকি শুধু consolidated billing
একটা organization দুটো feature set-এর একটায় চলে:
- All features (নতুন organization-এর default): consolidated billing সঙ্গে SCP, RCP, tag policy আর বাকি সব policy, AWS service-গুলোর জন্য trusted access, আর delegated administrator।
- শুধু consolidated billing: শুধু একসঙ্গে bill। কোনো ধরনের policy নেই।
শুধু billing দিয়ে শুরু করা পুরোনো organization all features-এ যেতে পারে। দাওয়াত দিয়ে আনা প্রতিটা account-কে এই বদলে রাজি হতে হয় (organization-এর ভেতরে বানানো account-গুলো নিজে থেকেই রাজি)। all features একবার চালু হলে আর ফেরা যায় না। পরীক্ষায় প্রশ্নে SCP লাগলে বুঝবে organization-এ all features লাগবে।
#Consolidated billing
consolidated billing প্রতিটা organization-এ চালু থাকে, কোনো খরচ নেই। এটা তিনটা জিনিস দেয়:
- একটা bill, একটা payment method। প্রতিটা member-এর খরচ management account-এর invoice-এ আসে। Cost Explorer-এ তবু account ধরে খরচ আলাদা দেখা যায়, তাই প্রতিটা team নিজের খরচ দেখে। member account-গুলো একে অপরের bill দেখতে পায় না।
- সব account মিলিয়ে volume-এর দাম। যে দাম ব্যবহার বাড়লে কমে (S3 storage-এর ধাপ, data transfer, আরও কিছু service), সেটা হিসাব হয় সব account-এর মোট ব্যবহার ধরে, যেন সবাই একটাই account। দুটো team-এর একটার ৩০ TB আর আরেকটার ৪০ TB S3 Standard থাকলে, একা একা দুজনেই প্রথম ৫০ TB-র ধাপে থাকত; একসঙ্গে ৭০ TB, তাই শেষ ২০ TB পরের সস্তা ধাপে bill হয়।
- Reserved Instance আর Savings Plans-এর discount ভাগাভাগি। এক account-এ কেনা commitment আগে সেই account-এর ব্যবহারে লাগে; যা বেঁচে যায়, সেটা অন্য account-এর মিলে যাওয়া ব্যবহারে লাগে (lesson ৪.৪)। organization-এর কোনো account ব্যবহার করতে পারলে কিছুই নষ্ট হয় না।
ভাগাভাগি default-ভাবে চালু, আর management account billing preferences-এ গিয়ে যেকোনো account-এর জন্য এটা বন্ধ করতে পারে (নিজের জন্যও)। যে account-এর ভাগাভাগি বন্ধ, সে নিজের বেঁচে যাওয়া discount অন্যকে দেয় না, অন্যদেরটাও পায় না। group-এর কোনো কোম্পানির যদি নিজের লাভ-ক্ষতির হিসাব থাকে, আর সে অন্যদের ভর্তুকি দেবে না বা অন্যদের থেকে নেবেও না, তখন এটা কাজে লাগে।
Consolidated billing
একটা marketplace-এর তিনটা team তিনটা account-এ কাজ করে। দেখো তিনটা bill-এর চেয়ে একটা bill কেন সস্তা, আর কখন discount ভাগাভাগি বন্ধ করতে হয়।
পরিস্থিতি
প্রতিটা member account-এর খরচ যায় management account-এ, যে টাকা দেয়। consolidated billing বিনা পয়সায়, আর প্রতিটা organization-এ চালু থাকে।
#OU-র গাছ সাজানো
OU-র কাজই হলো policy যেন কাঠামো মেনে চলে। একটা OU-তে বসানো policy তার ভেতরের প্রতিটা account আর OU-তে খাটে। তাই গাছটা সাজাও কোথায় কতটা আলাদা নিয়মে চালাতে চাও সেটা ধরে, কোম্পানির organogram ধরে না।
স্লাইডে তিনটা পরিচিত ধরন আছে:
| ধরন | OU | কখন ভালো |
|---|---|---|
| Business unit | Sales OU, Retail OU, Finance OU, প্রত্যেকটায় তাদের account | যখন বিভাগগুলোর নিয়ম, মালিক আর budget আলাদা (পাঁচ কারখানার একটা garments group) |
| Environment lifecycle | Prod OU, Dev OU, Test OU | যখন নিয়মের মূল পার্থক্য production আর বাকি সবকিছুর মধ্যে |
| Project-based | Project 1 OU, Project 2 OU, Project 3 OU | নিজস্ব team-ওয়ালা অল্প দিনের project, যেমন একটা agency-তে |
এগুলো মেশানোও যায়: একটা business-unit OU-র ভেতরে Prod আর Dev sub-OU থাকতে পারে। AWS-এর নিজের গাইড (“Organizing your AWS environment using multiple accounts”) কিছু OU-র সুপারিশ করে, বেশির ভাগ organization শেষমেশ এগুলোতেই পৌঁছায়:
| সুপারিশ করা OU | ভেতরে কী থাকে |
|---|---|
| Security | log archive account (সব CloudTrail আর Config log) আর security tooling বা audit account। অল্প মানুষ, কড়া নিয়ম। |
| Infrastructure | ভাগ করা networking (যে account VPC আর Transit Gateway-এর মালিক), directory বা CI/CD tool-এর মতো ভাগ করা service। |
| Workloads | application account-গুলো, সাধারণত Prod আর non-Prod sub-OU-তে ভাগ করা। |
| Sandbox | পরীক্ষা-নিরীক্ষার জন্য ব্যক্তিগত বা team account, production থেকে বিচ্ছিন্ন, প্রায়ই খরচের সীমা বাঁধা। |
| Policy staging | test account, যেখানে নতুন SCP আসল OU-তে যাওয়ার আগে পরীক্ষা করা হয়। |
| Suspended | বন্ধ হওয়ার অপেক্ষায় থাকা account, এমন একটা SCP-সহ যেটা প্রায় সবকিছু deny করে। |
দরকারমতো আরও আসে: Deployments (CI/CD), Exceptions (যে account-এর বিশেষ নিয়ম লাগে), Transitional (কিনে নেওয়া কোম্পানি থেকে সদ্য আসা account), Individual business users।
স্লাইডে আরও আছে, অনেক account থাকলে কী কী কেন্দ্র থেকে করা যায়: billing-এর জন্য tag-এর একই মান, প্রতিটা account-এ CloudTrail চালু করে log পাঠানো একটা log account-এর central bucket-এ (lesson ১৯.৬), CloudWatch Logs একটা central logging account-এ জড়ো করা, আর administration-এর জন্য cross-account role। এগুলোর সব নিচে বা lesson ২০.৩ আর ১৯.৬-এ আছে।
#Service control policy
#SCP কী, আর কী না
একটা service control policy (SCP) হলো একটা JSON policy, প্রায় IAM policy-র মতোই লেখা, যেটা বসানো হয় root, একটা OU বা একটা account-এ। এটা ঠিক করে দেয় প্রভাবিত member account-গুলোর IAM user আর role সর্বোচ্চ কতটা করতে পারবে। lesson ২.২ এর পরিচয় দিয়েছিল; এবার সব নিয়ম:
- SCP কখনো কিছু দেয় না। আসল permission হলো SCP আর IAM policy-র (আর boundary, আর RCP-র) মিল (intersection)। যে user-এর কোনো IAM policy নেই, SCP সব action allow করলেও সে কিছুই পারে না।
- member account-এর প্রতিটা IAM user আর role-এর ওপর খাটে, ওই account-এর root user-এর ওপরেও,
AdministratorAccess-ওয়ালা administrator-দের ওপরেও। এজন্যই এটা সত্যিকারের পাহারা: account-এর ভেতরের কেউ এটা সরাতে পারে না। - management account-এ কখনো খাটে না। সেখানকার user আর role-কে সীমিত করে শুধু তাদের নিজের IAM policy, যে SCP-ই বসাও।
- service-linked role-এ কখনো খাটে না। AWS service যে role দিয়ে তোমার হয়ে কাজ করে (Auto Scaling, GuardDuty, Organizations নিজে), সেগুলো চলতেই থাকে, তাই কড়া SCP-ও AWS-এর নিজের যোগাযোগ ভাঙতে পারে না।
- শুধু তোমার নিজের member account-এর principal-এর ওপর খাটে। member account-এর কোনো bucket policy যদি বাইরের একটা account-কে পড়তে দেয়, SCP সেই বাইরের জনের ব্যাপারে কিছুই করে না। এই ফাঁকটাই RCP ভরাট করে (নিচে)।
- root-এর কিছু নিজস্ব কাজ SCP দিয়ে একদমই আটকানো যায় না (যেমন root হয়ে Enterprise Support plan-এ sign up করা)।
#উত্তরাধিকার: প্রতিটা ধাপে Allow, যেকোনো জায়গায় Deny
গাছটা হলো Root → OU → sub-OU → account। একটা account-এর কোনো principal-এর request এলে AWS root থেকে ওই account পর্যন্ত সরাসরি পথে বসানো প্রতিটা SCP দেখে:
- যেকোনো জায়গার Deny জেতে। পথের যেকোনো ধাপের কোনো SCP action-টা deny করলে request deny। root-এর একটা Deny প্রতিটা member account-এ পৌঁছায়; একটা OU-র Deny তার ভেতরের সবকিছুতে।
- প্রতিটা ধাপে Allow। পথের প্রতিটা ধাপে (root, প্রতিটা OU, account নিজে) অন্তত একটা বসানো SCP থাকতে হবে যেটা action allow করে। একটা ধাপেও না থাকলে action deny, বাকি সব ধাপ allow করলেও। সব জায়গায়
FullAWSAccessথাকলে এটা নিজে থেকেই মেটে; allow-list ব্যবহার করলে ঠিক এই জায়গাটাতেই ভুল হয়। - তারপর IAM। SCP ছেড়ে দিলে তবেই account-এর নিজের IAM policy-র প্রশ্ন আসে, আর সেটাকেও allow করতে হবে।
খেয়াল করো, দুটো আলাদা আচরণ: Deny নিজে থেকেই নিচে নামে, কিন্তু Allow নামে না। root-এ EC2 allow করা একটা SCP, যে OU FullAWSAccess সরিয়েছে তাকে কিছুই দেয় না; সেই OU-কে নিজেকেই EC2 allow করতে হবে।
SCP কীভাবে tree বেয়ে নিচে নামে
Root, OU, sub-OU, account। একটা account শুধু সেটুকুই করতে পারে যা তার ওপরের প্রতিটা ধাপ allow করে, আর পথের যেকোনো জায়গায় একটা Deny থাকলে সেটাই জেতে। একটা ঘটনা বেছে নাও।
পরিস্থিতি
নতুন organization সব জায়গায় FullAWSAccess বসিয়ে দেয়, তাই SCP এখনো কিছুই আটকায় না।
SCP চালু করলেই AWS FullAWSAccess নামের managed SCP (সব কিছুতে Allow *) root, প্রতিটা OU আর প্রতিটা account-এ বসিয়ে দেয়। তাই নোটের “default-ভাবে সব deny” কথাটা বাস্তবে দেখবে না: default-ভাবে সব allow।
#Deny-list নাকি allow-list কৌশল
Deny-list (blocklist)Allow-list
- সব জায়গায়
FullAWSAccessরেখে দাও। - নির্দিষ্ট জিনিস Deny করা SCP যোগ করো: organization ছাড়া, logging বন্ধ করা, অনুমতি নেই এমন Region।
- নতুন AWS service নিজে থেকেই পাওয়া যায়।
- রক্ষণাবেক্ষণ কম; সবচেয়ে চালু পদ্ধতি, AWS-এর default।
FullAWSAccessসরিয়ে দাও, বসাও এমন SCP যা শুধু অনুমোদিত service Allow করে।- পথের প্রতিটা ধাপকে প্রতিটা service allow করতে হবে।
- নতুন service কেউ যোগ না করা পর্যন্ত বন্ধই থাকে।
- কড়া, খাটুনি বেশি; sandbox আর নিয়ন্ত্রিত account-এর জন্য ভালো।
বেশির ভাগ organization দুটো মেশায়: workload-এর জন্য deny-list, Sandbox OU-র জন্য allow-list।
#স্লাইডের গাছের উদাহরণ
স্লাইডের গাছটা ধাপে ধাপে মিলিয়ে দেখা দরকার, কারণ পরীক্ষায় ঠিক এমন ছবিই আসে:
| কোথায় | বসানো SCP | ফল |
|---|---|---|
| Root | FullAWSAccess | — |
| Management account | FullAWSAccess + Deny Athena | সব পারে: এর ওপর SCP কখনো খাটে না, তাই Deny Athena উপেক্ষিত |
| Sandbox OU | FullAWSAccess + Deny S3 | — |
| Account A (Sandbox-এ) | FullAWSAccess + Deny EC2 | সব পারে, S3 বাদে (Sandbox-এর Deny) আর EC2 বাদে (নিজের Deny) |
| Account B আর C (Sandbox-এ) | FullAWSAccess | সব পারে, S3 বাদে (উত্তরাধিকারে পাওয়া Deny) |
| Workloads OU | FullAWSAccess | — |
| Test OU (Workloads-এ) | শুধু EC2 Allow (FullAWSAccess নেই) | — |
| Account D (Test-এ) | FullAWSAccess | শুধু EC2: Test OU-র ধাপ আর কিছু allow করে না |
| Prod OU (Workloads-এ), account E আর F | FullAWSAccess | সব পারে |
প্রতিটা ক্ষেত্রেই account-এর IAM policy-কে তবু permission-টা দিতে হবে।
SCP tree lab
প্রতিটা ধাপে SCP বসাও বা সরাও, তারপর একটা account, কে চাইছে আর কী চাইছে বেছে নাও। পথের প্রতিটা ধাপ নিজের রায় দেয়; শেষ কথা বলে IAM।
পথের SCP, ওপর থেকে নিচে
Root
organization root
allow করে (FullAWSAccess (Allow *))
Workloads OU
OU
allow করে (FullAWSAccess (Allow *))
Prod OU
sub-OU
allow করে (FullAWSAccess (Allow *))
Payments account
member account
allow করে (FullAWSAccess (Allow *))
account-এর ভেতরের IAM
AdministratorAccess: সব allow: Allow
সিদ্ধান্ত: Allowed
একদম নতুন organization: প্রতিটা ধাপে FullAWSAccess বসানো, তাই SCP কিছুই আটকায় না, সিদ্ধান্ত নেয় IAM। পথের প্রতিটা ধাপ allow করে, কেউ deny করে না। SCP শুধু ছাদ টানে; permission দেয় IAM, আর এখানে দেয়।
নিজেকে যাচাই করোপ্রশ্ন
একটা account আছে OU-Dev-এ, যেটা OU-Eng-এর নিচে, যেটা root-এর নিচে। root আর OU-Eng-এ FullAWSAccess। OU-Dev-এ শুধু একটা SCP, যেটা ec2:* আর s3:* allow করে। account-এ FullAWSAccess। account-এর AdministratorAccess-ওয়ালা একজন administrator একটা DynamoDB table বানাতে চাইল। কী হবে?
#পরিচিত SCP-গুলো
organization ছেড়ে যাওয়া deny (root-এ বসাও):
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "DenyLeaveOrg",
"Effect": "Deny",
"Action": "organizations:LeaveOrganization",
"Resource": "*"
}]
}
Region lock, global service-গুলোকে বাদ রেখে (কেন NotAction লাগে, lesson ২.২-এ দেখেছ):
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "DenyOutsideSingaporeAndMumbai",
"Effect": "Deny",
"NotAction": [
"iam:*", "sts:*", "organizations:*", "route53:*", "cloudfront:*",
"support:*", "budgets:*", "waf:*", "globalaccelerator:*", "health:*"
],
"Resource": "*",
"Condition": {
"StringNotEquals": { "aws:RequestedRegion": ["ap-southeast-1", "ap-south-1"] },
"ArnNotLike": { "aws:PrincipalArn": "arn:aws:iam::*:role/break-glass-admin" }
}
}]
}
ArnNotLike condition একটা জরুরি অবস্থার role-কে ছাড় দেয়; Deny খাটতে হলে দুটো condition-ই সত্যি হতে হবে।
logging আর security service রক্ষা:
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "ProtectSecurityServices",
"Effect": "Deny",
"Action": [
"cloudtrail:StopLogging", "cloudtrail:DeleteTrail", "cloudtrail:UpdateTrail",
"guardduty:DeleteDetector", "guardduty:DisassociateFromMasterAccount",
"config:StopConfigurationRecorder", "config:DeleteConfigurationRecorder"
],
"Resource": "*"
}]
}
member account-এর root user আটকানো:
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "DenyRootUser",
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": { "StringLike": { "aws:PrincipalArn": "arn:aws:iam::*:root" } }
}]
}
প্রতিটা account-এ একটা security role রক্ষা, শুধু security team নিজে ছাড়া:
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "ProtectSecurityAuditRole",
"Effect": "Deny",
"Action": [
"iam:DeleteRole", "iam:UpdateAssumeRolePolicy", "iam:AttachRolePolicy",
"iam:DetachRolePolicy", "iam:PutRolePolicy", "iam:DeleteRolePolicy"
],
"Resource": "arn:aws:iam::*:role/security-audit",
"Condition": {
"ArnNotLike": { "aws:PrincipalArn": "arn:aws:iam::*:role/security-team-admin" }
}
}]
}
আরও কিছু পরিচিত SCP: IAM user বা access key বানানো deny (মানুষ Identity Center ব্যবহার করবে), finance ছাড়া কেউ Reserved Instance কিনতে পারবে না, শুধু নির্দিষ্ট EC2 instance type allow, S3 bucket public করা deny, IMDSv2 বাধ্যতামূলক।
চারটা পরিচিত SCP
ঢাকার একটা mobile-banking কোম্পানির Workloads OU-তে এই SCP-গুলো বসানো। প্রতিটার ভেতর দিয়ে একটা request কীভাবে যায় দেখো।
পরিস্থিতি
Singapore আর Mumbai-এর বাইরে সব deny, শুধু global service ছাড়া।
নিয়ন্ত্রক সংস্থা চায় গ্রাহকের ডেটা থাকুক শুধু কাছের Region-এ। SCP সব action deny করে (NotAction-এ global service-গুলোর তালিকা) যখন aws:RequestedRegion ap-southeast-1 বা ap-south-1 না।
#SCP-র লেখার নিয়ম আর সীমা
| সীমা (নভেম্বর ২০২৬-এ যাচাই করা) | মান |
|---|---|
| একটা root, OU বা account-এ সরাসরি বসানো SCP | ১০টা (উত্তরাধিকারে আসাগুলো গোনা হয় না) |
| একটা SCP-র আকার | ১০,২৪০ অক্ষর (CLI দিয়ে save করলে ফাঁকা জায়গাও গোনা হয়) |
| একটা organization-এ SCP | ১০,০০০টা |
| OU-র গভীরতা | root-এর নিচে ৫ ধাপ |
| কমপক্ষে বসানো | প্রতিটা জায়গায় সবসময় ১টা |
লেখার ধরন IAM-এরই, একটা বড় ব্যতিক্রম ছাড়া: SCP-তে Principal বা NotPrincipal element নেই, কারণ এটা সবসময় যে account-এ বসানো তার principal-দের ওপর খাটে। নির্দিষ্ট principal ধরতে চাইলে উদাহরণগুলোর মতো aws:PrincipalArn-এর ওপর condition দাও। সেপ্টেম্বর ২০২৫ থেকে SCP পুরো IAM policy language বোঝে: condition, NotAction, NotResource আর নির্দিষ্ট resource ARN এখন Allow statement-এও চলে, আগের মতো শুধু Deny-তে না। পুরোনো লেখায় (আর স্লাইডে) পাবে, SCP-র Allow statement শুধু "Resource": "*" নিতে পারে, condition ছাড়া; এটা আর সত্যি না, যদিও পরীক্ষার প্রশ্ন সেই সময়ের লেখা হতে পারে।
#SCP-র বাইরে: RCP আর declarative policy
#Resource control policy
Resource control policy (RCP), নভেম্বর ২০২৪ থেকে আছে, অন্য authorization policy। SCP যেখানে তোমার principal-রা কী করতে পারবে তার সীমা টানে, RCP সেখানে সীমা টানে তোমার resource-এর ওপর, যে কেউ কী করতে পারবে তার: তোমার নিজের principal, অন্য organization-এর principal, এমনকি নাম-পরিচয়হীন request-ও।
- root, OU বা account-এ বসে, SCP-র মতোই নিচে নামে, আর এটাও কিছু দেয় না।
- RCP চালু করলেই
RCPFullAWSAccessসব জায়গায় বসে যায়, আর এটা সরানো যায় না। তাই বাস্তবে RCP লেখা হয়"Principal": "*"-সহ Deny statement হিসেবে। - প্রতিটা জায়গায় ৫টা পর্যন্ত (
RCPFullAWSAccessধরে), প্রতিটা ৫,১২০ অক্ষর। - খাটে শুধু যে service-গুলো সমর্থন করে সেগুলোতে। শুরুতে তালিকা ছিল S3, STS, KMS, SQS আর Secrets Manager, পরে বড় হয়েছে (২০২৬-এর শেষে DynamoDB, CloudWatch Logs, ECR, Cognito, OpenSearch Serverless আর আরও অনেক)। EC2 তালিকায় নেই।
- SCP-র মতোই management account-এর resource বা service-linked role-এ কখনো খাটে না, আর AWS managed KMS key-তেও খাটে না।
সাধারণ RCP হলো একটা data perimeter: organization-এর প্রতিটা S3 bucket, queue, key আর secret-এ access deny করো, যদি না caller organization-এর ভেতরের কেউ (aws:PrincipalOrgID) হয়, বা তোমার হয়ে কাজ করা কোনো AWS service হয়। তাহলে কোনো developer ভুল করে bucket policy-তে "Principal": "*" লিখলেও গ্রাহকের কাগজপত্র বাইরে যায় না।
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "OnlyOurOrgCanTouchOurData",
"Effect": "Deny",
"Principal": "*",
"Action": ["s3:*", "sqs:*", "kms:*", "secretsmanager:*", "sts:AssumeRole"],
"Resource": "*",
"Condition": {
"StringNotEqualsIfExists": { "aws:PrincipalOrgID": "o-a1b2c3d4e5" },
"BoolIfExists": { "aws:PrincipalIsAWSService": "false" }
}
}]
}
পুরো যাচাইয়ের ধারায় SCP আর RCP ঠিক কোথায় বসে, resource-based policy, boundary আর session policy-র সঙ্গে, সেটা আছে lesson ২০.২-এ।
RCP: তোমার ডেটার চারপাশে বেড়া
SCP সীমা টানে তোমার নিজের লোকদের ওপর। RCP সীমা টানে তোমার resource-এর ওপর যে কেউ, এমনকি বাইরের কেউ, কী করতে পারবে তার ওপর। দেখো কেন দুটোই লাগে।
পরিস্থিতি
তাড়াহুড়োয় একজন developer এমন bucket policy লিখল যেটা Principal "*"-কে s3:GetObject দেয়। গ্রাহকের KYC কাগজপত্র এখন সারা দুনিয়ার জন্য খোলা।
#Declarative policy
Declarative policy (ডিসেম্বর ২০২৪) API request যাচাই করেই না। এটা যে account-গুলোর ওপর বসে, সেখানে একটা service-এর configuration ঠিক করে দেয়, আর AWS সেটা ধরে রাখে, পরে যোগ হওয়া API আর feature-এর ক্ষেত্রেও। প্রথমটা Amazon EC2-এর জন্য, যেমন জোর করে বসাতে পারে: নতুন instance-এ default হিসেবে IMDSv2, AMI আর EBS snapshot public করে ভাগ করা বন্ধ, VPC Block Public Access, serial console access বন্ধ, আর শুধু অনুমোদিত provider-এর image। কেউ বন্ধ করা কিছু করতে গেলে তুমি নিজে যে error message লিখে রেখেছ সেটা পায়। SCP-র উল্টো, declarative policy management account-এও খাটে।
#অন্য policy-গুলো
SCP বা RCP নয় এমন প্রতিটা policy-কে AWS-এর গাইড এখন দ্বিতীয় একটা দলে রাখে, যার নাম declarative policy (ওপরের EC2 policy-ও এই দলেরই)। প্রত্যেকটা ব্যবহারের আগে root-এ চালু করতে হয়। যেগুলো চিনে রাখা দরকার:
| Policy-র ধরন | কী করে |
|---|---|
| Tag policy | tag key-এর নির্দিষ্ট বানান আর অনুমোদিত মান (পরের অংশ) |
| Backup policy | একটা OU-র প্রতিটা account-এ AWS Backup plan (সময়সূচি, কতদিন রাখবে, vault, আরেক Region-এ copy) বসিয়ে দেয়, যাতে কোনো account backup ভুলে না যায় |
| AI services opt-out policy | AWS AI service-গুলো (Rekognition, Transcribe, Comprehend আর অন্যরা) যেন তোমার content জমিয়ে তাদের model উন্নত করতে ব্যবহার না করে, সব account-এর জন্য একবারে |
| Chat applications policy | কোন account-গুলো Slack বা Microsoft Teams channel থেকে Amazon Q Developer in chat applications (আগের নাম AWS Chatbot) দিয়ে চালানো যাবে, সেটা নিয়ন্ত্রণ করে |
| Security Hub, Inspector, GuardDuty policy | এই security service-গুলো কেন্দ্র থেকে চালু আর configure করে (নতুন সংযোজন) |
| Amazon Bedrock, S3, upgrade rollout policy | প্রতিটা model call-এ Bedrock guardrail, S3-এর setting, আর ধাপে ধাপে automatic upgrade (২০২৫–২৬-এর সংযোজন) |
এগুলোর সবগুলোই (SCP আর RCP-র উল্টো) management account-এও খাটে, আর যেকোনো account-এর effective policy, মানে উত্তরাধিকারের পর আসলে যা দাঁড়ায়, দেখে নেওয়া যায়।
#Tag policy
#Tag policy কী করে
একটা tag policy পুরো organization-এ tag এক রকম রাখে। tag দিয়ে cost report বা access control তখনই চলে, যখন সবাই একইভাবে লেখে: AWS-এর কাছে CostCenter, costcenter আর Cost-Center তিনটা আলাদা key, আর একটা ধরে cost report বানালে বাকি দুটো বাদ পড়ে।
একটা tag policy প্রতিটা tag-এর জন্য ঠিক করে দিতে পারে:
- key-এর বানান, বড়-ছোট অক্ষরসহ (
CostCenter), - অনুমোদিত মান (
retail,cards,treasury, বা একটা wildcard pattern), - কোন resource type-এর জন্য policy-টা enforce হবে (
ec2:instance,s3:bucket…)।
{
"tags": {
"costcenter": {
"tag_key": { "@@assign": "CostCenter" },
"tag_value": { "@@assign": ["retail", "cards", "treasury"] },
"enforced_for": { "@@assign": ["ec2:instance"] }
}
}
}
enforced_for না থাকলে policy শুধু report করে: management account (বা একটা delegated administrator) Tag Editor-এ পুরো organization-এর একটা tag compliance report বানায়, আর নিয়ম-না-মানা tag বদল হলে EventBridge সাড়া দিতে পারে। enforced_for থাকলে, ওই resource type-এ নিয়ম ভাঙা কোনো tag দেওয়ার কাজ বাতিল হয়। tag policy উত্তরাধিকারের operator (@@assign, @@append, @@remove) ব্যবহার করে, তাই root যা ঠিক করেছে তার সঙ্গে একটা OU নতুন মান যোগ করতে পারে, আর যেকোনো account-এর effective tag policy দেখা যায়।
#Tag policy কী করে না
tag বাধ্যতামূলক করা
tag policy কোনো tag থাকতে বাধ্য করতে পারে না। tag condition-ওয়ালা একটা SCP পারে, আর যা আগে থেকেই আছে সেগুলো ধরে AWS Config।
পরিস্থিতি
SCP instance-এর ec2:RunInstances deny করে যখন request-এ কোনো CostCenter tag নেই (aws:RequestTag/CostCenter-এর ওপর একটা Null condition)।
#Tag, খরচ আর access
এক রকম tag-এর ওপর দুটো জিনিস দাঁড়িয়ে থাকে:
- Cost allocation tag। Cost Explorer আর Cost and Usage Report-এ দেখাতে হলে tag key-কে তবু Billing console-এ activate করতে হয় (lesson ১.৪)। tag policy এগুলো এক রকম রাখে; activate করে না।
- ABAC (attribute-based access control): এমন IAM policy, যেটা caller-এর tag আর resource-এর tag মেলায়, যেমন “যে instance-এর
Teamtag তোমার নিজের সমান, শুধু সেগুলো তুমি বন্ধ করতে পারবে”। tag-এ একটা বানান ভুল এমন নিয়ম চুপচাপ ভেঙে দেয়, তাই tag policy একে রক্ষা করে (lesson ২০.২)।
#পুরো organization জুড়ে service চালানো
#Trusted access আর delegated administrator
অনেক AWS service Organizations বোঝে: CloudTrail, Config, GuardDuty, Security Hub, IAM Identity Center, Firewall Manager, AWS Backup, CloudFormation stack sets, IAM Access Analyzer আর আরও কিছু। দুটো সুইচ এদের জোড়া দেয়:
- Trusted access service-টাকে সব account জুড়ে কাজ করতে দেয়, যেমন প্রতিটা নতুন account-এ নিজে থেকে GuardDuty চালু করা, বা CloudTrail-এ একটা organization trail বানানো, যেটা প্রতিটা account-এর কাজ এক bucket-এ লেখে।
- Delegated administrator হলো একটা member account, যাকে management account পুরো organization-এর জন্য একটা service চালানোর দায়িত্ব দেয়। GuardDuty, Security Hub আর Config সাধারণত security tooling account-কে দেওয়া হয়, তাই security team সেখানে কাজ করে, আর রোজকার কাজে কাউকে management account-এ ঢুকতে হয় না। delegated administrator account-এর ওপর SCP খাটে, কারণ এগুলো member account।
Organizations নিজেও একটা resource-based delegation policy দিয়ে policy সামলানোর দায়িত্ব একটা member account-কে দিতে পারে, তাই একটা platform team management account-এ না ঢুকেই SCP সামলাতে পারে।
#AWS Resource Access Manager
অনেক account থাকলে প্রায়ই চাও একটা resource-এর একটাই কপি কয়েকটা account ব্যবহার করুক। AWS Resource Access Manager কপি না করে account-এর মধ্যে resource ভাগ করে দেয়। তুমি একটা resource share বানাও, তাতে resource যোগ করো, আর principal যোগ করো: account, OU, বা পুরো organization।
সাধারণত যা ভাগ করা হয়:
- VPC subnet (VPC sharing): একটা network account VPC-র মালিক; application account-গুলো ভাগ করা subnet-এ তাদের instance, database আর load balancer চালু করে। অংশগ্রহণকারীরা VPC, subnet বা route table বদলাতে বা মুছতে পারে না, একে অপরের resource-ও না। subnet শুধু organization-এর ভেতরেই ভাগ করা যায়।
- Transit Gateway, যাতে অন্য account-গুলো তাদের VPC একটা কেন্দ্রীয় hub-এ জোড়ে (lesson ২২.৬)।
- Route 53 Resolver rule (lesson ৮.৫), prefix list, IPAM pool, License Manager configuration, Aurora DB cluster, Network Firewall policy, capacity reservation আর আরও অনেক কিছু।
management account AWS Organizations-এর সঙ্গে sharing চালু করার পর organization-এর ভেতরের share দাওয়াত ছাড়াই কাজ করে। organization-এর বাইরের account-এ share মানে একটা দাওয়াত, যেটা accept করতে হয়।
account-এর মধ্যে resource ভাগাভাগি
একটা network account VPC আর Transit Gateway-এর মালিক। AWS Resource Access Manager সেগুলো কপি না করে application account-গুলোর সঙ্গে ভাগ করে দেয়।
পরিস্থিতি
VPC sharing: একটা VPC, অনেক account তার ভেতরে launch করে।
network team-এর একটা VPC আছে, ভেতরে private subnet। প্রতিটা team-এর জন্য আলাদা VPC (আর সবার মধ্যে peering) না করে, সে subnet-গুলো ভাগ করে দেয়।
#কোথায় গোলমাল হয়
- member account-এর একজন admin এমন কাজে AccessDenied পায়, যেটা তার IAM policy allow করে। account-এর ওপরে তাকাও: পথে কোনো SCP-র Deny, বা allow-list-এর কোনো ধাপে service-টা লেখা নেই। error message সাধারণত বলে দেয় “with an explicit deny in a service control policy” বা “because no service control policy allows”।
- root-এ নতুন SCP বসাতেই production ভেঙে পড়ল। এটা একসঙ্গে প্রতিটা member account-এ পৌঁছে গেছে। আগে একটা staging OU-তে পরীক্ষা করো।
- “কড়া করার জন্য”
FullAWSAccessসরানো হলো, আর সব থেমে গেল। এটা না থাকলে ওই ধাপ শুধু তার অন্য SCP-তে লেখা জিনিসই allow করে। প্রতিটা পথের প্রতিটা ধাপে Allow লাগে। - Region lock admin-দের IAM থেকে আটকে দিল। Deny-তে global service বাদ দিয়ে
NotActionনা লিখেAction: "*"লেখা হয়েছে। - পরীক্ষায় পাহারা কাজ করে, কিন্তু একটা account-এ করে না। ওটা management account, যেখানে SCP কখনো খাটে না। অথবা কাজটা করেছে একটা service-linked role।
- central team দাওয়াত দিয়ে আনা account-এ ঢুকতে পারছে না। দাওয়াতি account
OrganizationAccountAccessRoleপায় না; কাউকে বানাতে হবে। - একটা account ছেড়ে যেতে বা সরানো যাচ্ছে না। একা চলার জন্য তার payment method, যোগাযোগের তথ্য বা support plan নেই, account-টা খুব নতুন, অথবা কোনো SCP ছেড়ে যাওয়া deny করে।
- tag report বলছে সব ঠিক, অথচ bill-এ tag-ছাড়া খরচ। tag policy tag-ছাড়া resource দেখে না, আর cost allocation tag activate করতে হয়।
- SCP থাকা সত্ত্বেও বাইরের একটা account bucket পড়ছে। SCP বাইরের জনকে সীমিত করে না; RCP বা resource policy-তে
aws:PrincipalOrgIDব্যবহার করো।
#System design আর পরীক্ষায় কীভাবে আসে
- শুরু থেকেই অনেক account। production, non-production, security log, ভাগ করা network আর sandbox-এর জন্য আলাদা account। management account খালি রাখো। বাস্তবে Control Tower এই কাঠামোটা তোমার জন্য বানিয়ে দেয়।
- পাহারা, দারোয়ান না। root-এ অল্প কয়েকটা SCP (ছেড়ে যাওয়া deny, logging রক্ষা, Region lock, root আটকানো), Sandbox-এ কড়া allow-list, Suspended-এ প্রায় সব Deny।
- Data perimeter। RCP (বা resource policy-তে
aws:PrincipalOrgID), যাতে শুধু তোমার organization তোমার ডেটায় পৌঁছাতে পারে। - সবকিছু কেন্দ্রে। একটা organization trail, Config aggregator, GuardDuty আর Security Hub চলে একটা delegated administrator account থেকে; log থাকে একটা log archive account-এ, যেখান থেকে কেউ মুছতে পারে না।
- ভাগ করো, কপি কোরো না। network আর DNS resource ভাগ হয় AWS Resource Access Manager দিয়ে।
#নিজে করে দেখো
একটা test organization-এর management account থেকে (তোমার কোম্পানির আসলটা থেকে কখনো না), CLI configure করা থাকলে। Organizations global; এর endpoint us-east-1-এ।
# আমি কোন organization-এ? (output-এ পুরোনো "Master" নামগুলো খেয়াল করো।)
aws organizations describe-organization
# {
# "Organization": {
# "Id": "o-a1b2c3d4e5",
# "Arn": "arn:aws:organizations::111122223333:organization/o-a1b2c3d4e5",
# "FeatureSet": "ALL",
# "MasterAccountArn": "arn:aws:organizations::111122223333:account/o-a1b2c3d4e5/111122223333",
# "MasterAccountId": "111122223333",
# "MasterAccountEmail": "aws-root@example.com"
# }
# }
# root, তারপর তার নিচে একটা Workloads OU
aws organizations list-roots --query 'Roots[].[Id,Name]' --output text
# r-ab12 Root
aws organizations create-organizational-unit --parent-id r-ab12 --name Workloads
# { "OrganizationalUnit": { "Id": "ou-ab12-cdef3456", "Name": "Workloads", ... } }
# organization-এর ভেতরেই সরাসরি একটা account বানাও (asynchronous)
aws organizations create-account --email payments-prod@example.com --account-name payments-prod
# { "CreateAccountStatus": { "Id": "car-0a1b2c3d4e5f", "State": "IN_PROGRESS", ... } }
aws organizations describe-create-account-status --create-account-request-id car-0a1b2c3d4e5f \
--query 'CreateAccountStatus.[State,AccountId]' --output text
# SUCCEEDED 444455556666
aws organizations move-account --account-id 444455556666 \
--source-parent-id r-ab12 --destination-parent-id ou-ab12-cdef3456
aws organizations list-accounts-for-parent --parent-id ou-ab12-cdef3456 \
--query 'Accounts[].[Id,Name,Status]' --output table
# ছেড়ে যাওয়া deny করা একটা SCP, root-এ বসানো
aws organizations create-policy --type SERVICE_CONTROL_POLICY --name DenyLeaveOrg \
--description "Member accounts cannot leave" --content file://deny-leave.json
# { "Policy": { "PolicySummary": { "Id": "p-a1b2c3d4", "Name": "DenyLeaveOrg", ... } } }
aws organizations attach-policy --policy-id p-a1b2c3d4 --target-id r-ab12
aws organizations list-policies-for-target --target-id 444455556666 \
--filter SERVICE_CONTROL_POLICY --query 'Policies[].Name'
# [ "FullAWSAccess" ] <- শুধু সরাসরি বসানোগুলো; root-এর DenyLeaveOrg উত্তরাধিকারে আসে
# Tag policy: type চালু করো, একটা বসাও, তারপর দেখো একটা account আসলে কী পায়
aws organizations enable-policy-type --root-id r-ab12 --policy-type TAG_POLICY
aws organizations create-policy --type TAG_POLICY --name CostCenterTags --content file://tags.json
aws organizations attach-policy --policy-id p-e5f6a7b8 --target-id ou-ab12-cdef3456
aws organizations describe-effective-policy --policy-type TAG_POLICY --target-id 444455556666
# network account থেকে (সেখানে চালাও) Workloads OU-র সঙ্গে একটা subnet ভাগ করো
aws ram enable-sharing-with-aws-organization # একবারই, management account থেকে
aws ram create-resource-share --name shared-app-subnets \
--resource-arns arn:aws:ec2:ap-southeast-1:777788889999:subnet/subnet-0abc1234def567890 \
--principals arn:aws:organizations::111122223333:ou/o-a1b2c3d4e5/ou-ab12-cdef3456
তারপর নতুন account থেকে (OrganizationAccountAccessRole assume করে) aws organizations leave-organization চালিয়ে দেখো, আর AccessDenied message-টা পড়ো: সেখানে service control policy-র নাম থাকবে। একটা test OU-তে allow-list বসিয়ে তার FullAWSAccess সরাও, আর দেখো কোন কোন command fail করতে শুরু করে।
#সারসংক্ষেপ
মূল কথা
- AWS account সবচেয়ে মজবুত সীমানা: ক্ষতির পরিধি, quota, bill আর নিরাপত্তার নিয়ম সবই account ধরে। অনেক account ব্যবহার করো, আর AWS Organizations দিয়ে সামলাও।
- একটা management account (আগের নাম “master”), অনেক member account, প্রত্যেকে ঠিক একটা organization-এ; একটা root, ৫ ধাপ পর্যন্ত গভীর OU; default-ভাবে ১০টা account।
- account বানালে
OrganizationAccountAccessRoleনিজে থেকেই আসে; দাওয়াতি account-এ হাতে বানাতে হয়। ছেড়ে যেতে একা চলার তথ্য লাগে; নভেম্বর ২০২৫ থেকে account সরাসরি এক organization থেকে আরেকটায় যেতে পারে। - Consolidated billing: একটা bill, volume-এর ধাপে সবার ব্যবহার যোগ, RI আর Savings Plans-এর discount ভাগ (প্রতিটা account-এর জন্য বন্ধ করা যায়)। যেকোনো policy-র জন্য all features লাগে।
- OU সাজাও শাসনের দরকার ধরে: business unit, environment, project; AWS সুপারিশ করে Security, Infrastructure, Workloads, Sandbox, Policy staging, Suspended।
- SCP member account-এর IAM user আর role-এর সর্বোচ্চ সীমা টানে, root user-এরও; কিছু দেয় না; management account, service-linked role বা বাইরের কারও ওপর কখনো খাটে না।
- default-ভাবে সব জায়গায়
FullAWSAccessবসানো (“default-ভাবে deny” না)। পথের যেকোনো জায়গার Deny জেতে; allow-list-এ প্রতিটা ধাপে Allow লাগে। - পরিচিত SCP: ছেড়ে যাওয়া deny,
NotAction-সহ Region lock, logging রক্ষা, root আটকানো, role রক্ষা। প্রতিটা জায়গায় ১০টা, ১০,২৪০ অক্ষর; সেপ্টেম্বর ২০২৫ থেকে পুরো IAM language;Principalelement নেই। - RCP (নভেম্বর ২০২৪) সমর্থিত service-এর resource-এ যে কেউ কী করতে পারবে তার সীমা টানে: data perimeter। Declarative policy EC2-র configuration ঠিক করে। backup, AI opt-out, chat আর অন্য policy service সামলায়।
- Tag policy key-এর বানান আর অনুমোদিত মান ঠিক রাখে, নিয়ম-না-মানা tag আটকাতেও পারে, কিন্তু কোনো tag বাধ্যতামূলক করে না: তার জন্য
aws:RequestTag/aws:TagKeys-সহ SCP বা Configrequired-tags। - Delegated administrator একটা member account থেকে GuardDuty, Security Hub, Config আর অন্যগুলো চালায়। AWS Resource Access Manager subnet, Transit Gateway আর Resolver rule কপি না করে ভাগ করে।
আগে নিজে উত্তর দাও, তারপর ব্যাখ্যাটা পড়ো। ঠিক হলেও পড়ো, কারণ ভুল Option-গুলো কেন ভুল, সেটাও ওখানে আছে।
নিজেকে যাচাই করোপ্রশ্ন
যে account একটা AWS organization বানায় আর তার bill দেয়, তার এখনকার নাম কী?
নিজেকে যাচাই করোপ্রশ্ন
একটার বদলে অনেকগুলো account ব্যবহারের পক্ষে AWS যে কারণগুলো দেয়, তার মধ্যে কোনটা NOT?
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানি create-account দিয়ে নতুন একটা member account বানাল। central team সঙ্গে সঙ্গে তাতে admin access চায়। সেখানে আগে থেকেই কী আছে?
নিজেকে যাচাই করোপ্রশ্ন
একটা ব্যাংক একটা fintech কিনে নিয়ে fintech-এর আগে থেকে থাকা AWS account-কে নিজের organization-এ দাওয়াত দিল। দাওয়াত accept হওয়ার পরও ব্যাংকের platform team সেখানে OrganizationAccountAccessRole assume করতে পারছে না। কেন?
নিজেকে যাচাই করোপ্রশ্ন
consolidated billing-এর দুটো সুবিধা বেছে নাও।
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা group-এর একটা কোম্পানির নিজের লাভ-ক্ষতির হিসাব। তার finance প্রধান জোর দিয়ে বলছেন, তাদের Savings Plans যেন অন্য কোম্পানির ব্যবহার না ঢাকে, আর তারাও যেন অন্যদের থেকে সুবিধা না পায়। management account কী করবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা organization বহু বছর আগে শুধু consolidated billing দিয়ে বানানো হয়েছিল। security team এখন SCP বসাতে চায়। আগে কী করতে হবে?
নিজেকে যাচাই করোপ্রশ্ন
একজন administrator root-এ SCP চালু করল, আর কিছুই বসাল না। member account-এর user-রা কী করতে পারবে?
নিজেকে যাচাই করোপ্রশ্ন
root-এর একটা SCP ec2:TerminateInstances deny করে। কোন principal তবু একটা instance terminate করতে পারবে?
নিজেকে যাচাই করোপ্রশ্ন
Sandbox OU-তে একটা SCP ec2:TerminateInstances deny করে। sandbox account-এর একটা Auto Scaling group তবু অসুস্থ instance বদলে পুরোনোটা terminate করছে। কেন?
নিজেকে যাচাই করোপ্রশ্ন
Root-এ FullAWSAccess। OU-Prod-এ FullAWSAccess আর S3 bucket মোছার ওপর একটা Deny। OU-Prod-এর account 444455556666-এ FullAWSAccess আর s3:*-এর একটা Allow। সেখানকার একজন admin একটা bucket মুছতে চাইল। কী হবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা বিশ্ববিদ্যালয়ের Sandbox OU allow-list ব্যবহার করে: FullAWSAccess সরানো, আর একটা SCP ec2:*, s3:* আর lambda:* allow করে। root-এ FullAWSAccess। Sandbox OU-র ভেতরের একটা ছাত্র account-এ FullAWSAccess, আর ছাত্রের AdministratorAccess। কোন দুটো কাজ fail করবে?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা OU-র SCP s3:* allow করে। ওই OU-র একটা account-এ নতুন একজন IAM user, যার কোনো IAM policy নেই। সে কি bucket-এর তালিকা দেখতে পারবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানি চায় যেকোনো member account-এর কেউ, administrator আর root user-সহ, CloudTrail logging বন্ধ করতে না পারুক। কোন নিয়ন্ত্রণ সবচেয়ে মানানসই?
নিজেকে যাচাই করোপ্রশ্ন
একটা Region lock SCP Action * deny করে, যখন aws:RequestedRegion ap-southeast-1 না। কিছুক্ষণ পরেই administrator-রা আর IAM role বানাতে পারছে না। সমাধান কী?
নিজেকে যাচাই করোপ্রশ্ন
কোন অবস্থায় root-এ বসানো একটা SCP request-কে সীমিত করে না? দুটো বেছে নাও।
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা member account-এর bucket-এর bucket policy একটা partner কোম্পানির account-কে (organization-এর বাইরে) object পড়তে দেয়। security team ওই account-এ s3:GetObject deny করা একটা SCP বসাল। partner কি তবু পড়তে পারবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা fintech নিশ্চিত করতে চায়, কোনো member account-এর কোনো S3 bucket, KMS key বা SQS queue organization-এর বাইরের কোনো principal কখনো ছুঁতে না পারুক, কোনো developer খারাপ resource policy লিখলেও। আজকের দিনে সবচেয়ে সরাসরি নিয়ন্ত্রণ কোনটা?
নিজেকে যাচাই করোপ্রশ্ন
resource control policy নিয়ে কোন দুটো কথা ঠিক?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
finance বিভাগ চায় সব account জুড়ে CostCenter tag key সবসময় ঠিক CostCenter বানানে লেখা হোক, তিনটা মানের একটা দিয়ে। কোন feature ঠিক এই কাজের জন্য বানানো?
নিজেকে যাচাই করোপ্রশ্ন
CostCenter-এর একটা tag policy ec2:instance-এর জন্য enforce করা। একজন engineer কোনো tag ছাড়াই একটা instance চালু করল। কী হবে?
নিজেকে যাচাই করোপ্রশ্ন
একই enforce করা tag policy থাকা অবস্থায় একজন engineer instance-এ costcenter=retail tag দিল। কী হবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানিকে নিশ্চিত করতে হবে, কোনো account-এ Project tag ছাড়া কোনো EC2 instance চালু করা যাবে না। কোন দুটো নিয়ন্ত্রণ মিলে tag না থাকা আটকায় আর ধরে?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
পরীক্ষার একটা ঘটনা: “Prod OU-র প্রতিটা account-এ, পরে যোগ হওয়া account-সহ, একই সময়সূচি আর একই মেয়াদে automatic backup চালু করো।” কোনটা সবচেয়ে মানানসই?
নিজেকে যাচাই করোপ্রশ্ন
security team ৬০টা account-এর জন্য GuardDuty আর Security Hub চালাতে চায়, কাউকে management account-এ কাজ না করিয়ে। কী সেট আপ করবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা network team একটা network account-এ একটা VPC-র মালিক, আর চায় একই organization-এর দশটা application account তার subnet-এ instance চালু করুক, অথচ route-এর নিয়ন্ত্রণ শুধু তার হাতেই থাকুক। কী ব্যবহার করবে?
নিজেকে যাচাই করোপ্রশ্ন
AWS Resource Access Manager দিয়ে একটা Transit Gateway organization-এর বাইরের একটা account-এ share করা হলো। ওই account-এ কিছুই ঘটছে না। কেন?
নিজেকে যাচাই করোপ্রশ্ন
একটা team শুক্রবার সন্ধ্যায় root-এ নতুন একটা SCP বসাল, আর ৪০টা account-এ production ভেঙে পড়ল। কী করলে এটা এড়ানো যেত?
নিজেকে যাচাই করোপ্রশ্ন
SCP লেখার নিয়ম আর সীমা নিয়ে কোন দুটো কথা ঠিক (২০২৬-এর শেষে)?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
ভুল ধারণা নাকি সত্যি: “tag policy আসলে এক ধরনের SCP, তাই tag দেখে API call deny করতে পারে।”
নিজেকে যাচাই করোপ্রশ্ন
একটা e-commerce group চায় তার পাঁচটা কোম্পানির প্রত্যেকটার নিজের budget-এর মালিক আর নিজের নিয়ম থাকুক, আর প্রতিটা কোম্পানির ভেতরে production আর development আলাদা থাকুক। কোন OU নকশা মানানসই?