S3 Bucket Policy Project 9: Deny Delete, MFA Delete आणि Object Lock
Maya Banerjee (कोलकाता) forensic. Casual delete नको. Deny delete without MFA + MFA Delete + Object Lock. Compliance cleanup आधी plan.
या chapter मध्ये तुम्ही काय शिकाल
- Deny-delete का
- MFA + Lock modes
- CLI tests
- Cleanup reality
- Interview
1. Story
Rohit Verma (दिल्ली) व Erik Lindqvist (Stockholm) disk images. Accidental rm नको.
2. का?
हे का लागतं?
Versioning पुरेसं नाही. MFA Delete + Object Lock = friction + WORM.
- MFA condition
- MFA Delete
- Lock modes
- Plan retention
3. Policy
हे काय आहे?
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyDeleteWithoutMFA",
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:DeleteObject",
"s3:DeleteObjectVersion",
"s3:PutLifecycleConfiguration"
],
"Resource": [
"arn:aws:s3:::rb-evidence-ap-south-1",
"arn:aws:s3:::rb-evidence-ap-south-1/*"
],
"Condition": {
"BoolIfExists": { "aws:MultiFactorAuthPresent": "false" }
}
}
]
}
Line-by-line
- Delete without MFA.
- Lifecycle lock.
- MFA missing.
- Lock separate.
- Root MFA Delete.
- Compliance hard.
4. CLI
कसं करायचं (step by step)
# Versioning + Object Lock must be set at create time for Lock
aws s3api create-bucket --bucket rb-evidence-ap-south-1 --region ap-south-1 \
--create-bucket-configuration LocationConstraint=ap-south-1 \
--object-lock-enabled-for-bucket
aws s3api put-bucket-policy --bucket rb-evidence-ap-south-1 --policy file://deny-delete.json
# MFA Delete (example — requires root serial/token; lab carefully)
# aws s3api put-bucket-versioning --bucket rb-evidence-ap-south-1 \
# --versioning-configuration Status=Enabled,MFADelete=Enabled \
# --mfa "arn:aws:iam::111122223333:mfa/root-account-mfa-device PASSCODE"
5. Allow/deny
# DENY — normal session delete
aws s3 rm s3://rb-evidence-ap-south-1/disk.img
# AccessDenied
# ALLOW — session with MFA (STS get-session-token with MFA, then delete)
aws sts get-session-token --serial-number arn:aws:iam::111122223333:mfa/user --token-code 123456
# export temp keys, then:
aws s3 rm s3://rb-evidence-ap-south-1/disk.img
# delete success (unless Object Lock retention still blocks)
6. Object Lock
| Mode | Override | Use |
|---|---|---|
| Governance | Bypass perm | Ops |
| Compliance | Nobody | Evidence |
| Legal hold | Until removed | Case |
7. Multi-industry
Forensics, cyber, SOC, pharma.
8. AccessDenied debugging आणि Policy Simulator
AccessDenied क्रम: BPA → bucket Deny → IAM Allow → KMS → VPCe → ACL. Simulator BPA/VPC/KMS miss करू शकतो — खऱ्या CLI ने test.
# Decode
aws s3api get-bucket-policy --bucket BUCKET --query Policy --output text | python3 -m json.tool
aws s3api get-public-access-block --bucket BUCKET
aws iam simulate-principal-policy --policy-source-arn ARN \
--action-names s3:GetObject --resource-arns arn:aws:s3:::BUCKET/key.txt
aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=GetObject --max-items 5
9. Lab: deny delete MFA
Org block नसेल तर ap-south-1 (Mumbai). आधी budget alert.
कसं करायचं (step by step)
- Create bucket.
- Policy + upload.
- Deny proof.
- MFA/Lock allow path.
Cleanup (billing थांबवा)
- Careful cleanup.
- Avoid endless Compliance.
10. सामान्य errors आणि fixes
प्रत्येक row = खरी चूक. Panic करण्याआधी fix वाचा.
| Error / लक्षण | Fix |
|---|---|
| IAM Allow + Deny | Bucket Deny / BPA. |
| JSON reject | json.tool + file://. |
| Simulator ≠ CLI | Real CLI. |
| Wrong ARN | /* vs bare. |
| Condition typo | Exact spelling. |
| Principal | Resource policy needs it. |
| Account BPA | Check account switches. |
| KMS layer | Key policy + IAM. |
| Forever locked | Retention. |
| MFA Delete fail | Root + MFA. |
11. Troubleshooting checklist
- Region + endpoint.
- Policy + BPA.
- Lab user.
- Sid binary search.
- CloudTrail.
- KMS test.
- VPCe path.
- Lock cleanup.
12. FAQ
प्र. Bucket = IAM?
नाही — resource vs identity; Deny wins; cross-account दोन्ही.
प्र. ACL 2026?
Owner enforced; logs कधी ACL.
प्र. BPA?
Public ACL/policy blocks.
प्र. AccessDenied fast?
Layer checklist; * नको.
प्र. MFA Delete vs policy?
Different layers.
प्र. Lock later?
Only at create.
प्र. Lifecycle?
Denied in sample.
प्र. Bypass?
Rare grant.
13. Interview Q&A
प्र. Casual delete?
MFA Deny + Lock.
प्र. Gov vs Comp?
Bypass vs none.
प्र. Lifecycle?
Silent wipe.
प्र. Prove?
rm denied.
प्र. Root?
Cannot shorten.
प्र. When Lock?
At create.
14. Tips — English, मराठी आणि हिंदी
Ravindra Bagale's Tip (EN)
Never enable Compliance mode on a personal credit-card lab without a short retention and a calendar reminder.
Ravindra Bagale's Tip (MR)
Personal lab वर Compliance बिना short retention व reminder नको.
Tip (HI)
Personal lab में Compliance बिना छोटी retention और reminder न लगाएं।
घरी करून बघा
- Capture deny.
- Compare modes.
- Bypass owners.
थोडक्यात सांगायचं तर
- MFA delete Deny.
- MFA Delete feature.
- Lock modes.
- At create.
- Plan cleanup.
15. Policy save करण्याआधी checklist
- Business rule एका वाक्यात.
- Allow vs Deny-unless; Deny wins.
- ARN shapes.
- Condition keys.
- BPA first.
- Allow+deny plan.
- Cleanup plan.
- json.tool.
16. Policy Simulator walkthrough
Simulator identity/resource typos साठी चांगला; BPA/VPCe/KMS miss होऊ शकतात. नंतर खऱ्या path वरून CLI.
- Simulator → user/role.
- Action + ARN.
- Include bucket policy.
- CLI confirm.
- Mismatch → layers.
17. Copy-paste runbook
# 0) Region + names
export AWS_REGION=ap-south-1
export BUCKET=rb-lab-$(date +%s)-ap-south-1
# 1) Create + show BPA
aws s3api create-bucket --bucket $BUCKET --region $AWS_REGION \
--create-bucket-configuration LocationConstraint=$AWS_REGION
aws s3api get-public-access-block --bucket $BUCKET || true
# 2) Validate + apply policy
python3 -m json.tool policy.json >/dev/null
aws s3api put-bucket-policy --bucket $BUCKET --policy file://policy.json
aws s3api get-bucket-policy --bucket $BUCKET --query Policy --output text | python3 -m json.tool | head
# 3) Allow test + Deny test (fill per project)
# ... project-specific curls / aws s3 cp ...
# 4) Cleanup
aws s3 rm s3://$BUCKET --recursive || true
aws s3api delete-bucket-policy --bucket $BUCKET || true
aws s3api delete-bucket --bucket $BUCKET
18. Industry story bank
वरील प्रत्येक project एक industry story वापरतो. इतर industries मध्ये फक्त bucket/principal/Condition बदला.
- Healthcare: SSE-KMS + OrgID + MFA.
- Fintech: IP + HTTPS + OAC.
- EdTech: OAC only.
- Logistics: VPCe.
- Media: Object Lock.
- Retail: prefix public read.
- SaaS: prefix homes.
- Gov: OrgID + MFA + Lock.
19. AccessDenied debugging flowchart
- Error code + request id.
- Bucket + region.
- BPA.
- Explicit Deny.
- Conditions.
- KMS key policy.
- OAC id.
- VPCe path.
- Simulator + CLI.
- Support last.
20. PR review checklist
- Valid JSON.
- Required fields.
- No open write.
- Tests.
- Cleanup.
सराव Tasks
Singapore Freight हा सिंगापूर मधला लॉजिस्टिक्स व्यवसाय आहे. Wei Ling Tan त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे SGD मध्ये मोजले जातात आणि AWS resources ap-southeast-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 16
सोपं Policy
का: Deny.
काय करायचं: sgfreight-lock policy.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Versioning
का: Required.
काय करायचं: sgfreight-lock ver.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं WORM
का: Strong.
काय करायचं: COMPLIANCE तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं Versioning
का: Prereq.
काय करायचं: Versioning तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं List
का: Inventory.
काय करायचं: sgfreight-lock list.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Head
का: Exists.
काय करायचं: sgfreight-lock head.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं BPA
का: BPA.
काय करायचं: sgfreight-lock BPA.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Object Lock
का: WORM.
काय करायचं: sgfreight-lock lock.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Put
का: Write.
काय करायचं: put evidence.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम MFA delete
का: Privileged.
काय करायचं: MFA delete.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
मध्यम Mode
का: COMPLIANCE.
काय करायचं: COMPLIANCE.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
मध्यम Create
का: Flag.
काय करायचं: Create-time तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Hold
का: Hold.
काय करायचं: Hold तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
अवघड Deny delete
का: Protect.
काय करायचं: deny delete.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
अवघड MFA JSON
का: Condition.
काय करायचं: MFA true.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
अवघड Del
का: Cleanup.
काय करायचं: sgfreight-lock del.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
उजळणी, मुलाखत आणि तुलना cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.








अजून cards: Ravi Sir's Cards.