Ravindra BagaleCourses & study guides English Track your progress

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

  1. Delete without MFA.
  2. Lifecycle lock.
  3. MFA missing.
  4. Lock separate.
  5. Root MFA Delete.
  6. 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

ModeOverrideUse
GovernanceBypass permOps
ComplianceNobodyEvidence
Legal holdUntil removedCase

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)

  1. Create bucket.
  2. Policy + upload.
  3. Deny proof.
  4. MFA/Lock allow path.

Cleanup (billing थांबवा)

  1. Careful cleanup.
  2. Avoid endless Compliance.

10. सामान्य errors आणि fixes

प्रत्येक row = खरी चूक. Panic करण्याआधी fix वाचा.

Error / लक्षणFix
IAM Allow + DenyBucket Deny / BPA.
JSON rejectjson.tool + file://.
Simulator ≠ CLIReal CLI.
Wrong ARN/* vs bare.
Condition typoExact spelling.
PrincipalResource policy needs it.
Account BPACheck account switches.
KMS layerKey policy + IAM.
Forever lockedRetention.
MFA Delete failRoot + MFA.

11. Troubleshooting checklist

  1. Region + endpoint.
  2. Policy + BPA.
  3. Lab user.
  4. Sid binary search.
  5. CloudTrail.
  6. KMS test.
  7. VPCe path.
  8. 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 न लगाएं।

घरी करून बघा

  1. Capture deny.
  2. Compare modes.
  3. Bypass owners.

थोडक्यात सांगायचं तर

  1. MFA delete Deny.
  2. MFA Delete feature.
  3. Lock modes.
  4. At create.
  5. Plan cleanup.

15. Policy save करण्याआधी checklist

  1. Business rule एका वाक्यात.
  2. Allow vs Deny-unless; Deny wins.
  3. ARN shapes.
  4. Condition keys.
  5. BPA first.
  6. Allow+deny plan.
  7. Cleanup plan.
  8. json.tool.

16. Policy Simulator walkthrough

Simulator identity/resource typos साठी चांगला; BPA/VPCe/KMS miss होऊ शकतात. नंतर खऱ्या path वरून CLI.

  1. Simulator → user/role.
  2. Action + ARN.
  3. Include bucket policy.
  4. CLI confirm.
  5. 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

  1. Error code + request id.
  2. Bucket + region.
  3. BPA.
  4. Explicit Deny.
  5. Conditions.
  6. KMS key policy.
  7. OAC id.
  8. VPCe path.
  9. Simulator + CLI.
  10. Support last.

20. PR review checklist

  • Valid JSON.
  • Required fields.
  • No open write.
  • Tests.
  • Cleanup.

सराव Tasks

या scenario बद्दल

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.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

सोपं Versioning

का: Required.

काय करायचं: sgfreight-lock ver.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

सोपं WORM

का: Strong.

काय करायचं: COMPLIANCE तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

सोपं Versioning

का: Prereq.

काय करायचं: Versioning तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

सोपं List

का: Inventory.

काय करायचं: sgfreight-lock list.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

सोपं Head

का: Exists.

काय करायचं: sgfreight-lock head.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

सोपं BPA

का: BPA.

काय करायचं: sgfreight-lock BPA.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Object Lock

का: WORM.

काय करायचं: sgfreight-lock lock.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Put

का: Write.

काय करायचं: put evidence.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम MFA delete

का: Privileged.

काय करायचं: MFA delete.

कसं करायचं:
  1. { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
  2. प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
  3. Task ला लागेल तेवढंच द्या (least privilege).
  4. Double quotes व commas नीट वापरा. Check answer दाबा.

मध्यम Mode

का: COMPLIANCE.

काय करायचं: COMPLIANCE.

कसं करायचं:
  1. Task मधल्या top-level keys पासून सुरू करा.
  2. Child keys 2 spaces ने indent करा (tabs नकोत).
  3. प्रत्येक property मध्ये task मधली value भरा.
  4. Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.

मध्यम Create

का: Flag.

काय करायचं: Create-time तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

मध्यम Hold

का: Hold.

काय करायचं: Hold तर 1.

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

अवघड Deny delete

का: Protect.

काय करायचं: deny delete.

कसं करायचं:
  1. { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
  2. प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
  3. Task ला लागेल तेवढंच द्या (least privilege).
  4. Double quotes व commas नीट वापरा. Check answer दाबा.

अवघड MFA JSON

का: Condition.

काय करायचं: MFA true.

कसं करायचं:
  1. Task मधल्या top-level keys पासून सुरू करा.
  2. Child keys 2 spaces ने indent करा (tabs नकोत).
  3. प्रत्येक property मध्ये task मधली value भरा.
  4. Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.

अवघड Del

का: Cleanup.

काय करायचं: sgfreight-lock del.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

उजळणी, मुलाखत आणि तुलना cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

उजळणी card: Object Lock आणि WORM. No silent deletes. Lock + Deny delete + MFA Delete. Create → retain → delete fail. COMPLIANCE 30d lab.
उजळणी card: Object Lock आणि WORM · PNG download करा · Card page उघडा
उजळणी card: MFA Delete protection. MFA for version delete. MFA condition + Deny. No MFA deny / MFA allow. Needs MFA to purge.
उजळणी card: MFA Delete protection · PNG download करा · Card page उघडा
तुलना: COMPLIANCE mode vs GOVERNANCE mode. COMPLIANCE mode: Cannot override till expiry. GOVERNANCE mode: Privileged override.
तुलना: COMPLIANCE mode vs GOVERNANCE mode · PNG download करा · Card page उघडा
तुलना: MFA Delete vs Object Lock retention. MFA Delete: Versioning/MFA gate. Object Lock retention: Time/hold WORM.
तुलना: MFA Delete vs Object Lock retention · PNG download करा · Card page उघडा
मुलाखत card: COMPLIANCE vs GOVERNANCE?. COMPLIANCE stronger WORM. Legal choice. Early delete fails.
मुलाखत card: COMPLIANCE vs GOVERNANCE? · PNG download करा · Card page उघडा
मुलाखत card: MFA Delete काय वाचवते?. Versioning state + version delete. Complement Object Lock. No MFA → deny.
मुलाखत card: MFA Delete काय वाचवते? · PNG download करा · Card page उघडा
मुलाखत card: Object Lock कधी enable?. Mostly create-time. Plan ahead. Create flag.
मुलाखत card: Object Lock कधी enable? · PNG download करा · Card page उघडा
मुलाखत card: Legal hold म्हणजे?. Hold until cleared. Investigations. Hold blocks delete.
मुलाखत card: Legal hold म्हणजे? · PNG download करा · Card page उघडा

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