Ravindra BagaleCourses & study guides English Track your progress

S3 Bucket Policy Project 8: ${aws:username} Home Folders

Shared bucket: प्रत्येक user फक्त home/${aws:username}/*. Variables = एक policy अनेक users. Role assume → username रिकामं — pitfall.

या chapter मध्ये तुम्ही काय शिकाल

  • Home prefix का
  • username variable
  • Two-user test
  • Role pitfall
  • Interview

1. Story

Prof. Sunil Pawar (नाशिक) व Alicia Gomez (Austin) — एक bucket, अनेक homes.

2. Per-user का?

हे का लागतं?

एक bucket = सोपी ops. Variable = identity → path.

  • IAM users
  • home/user/*
  • List prefix
  • Roles ≠ username

3. Policy

हे काय आहे?

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "HomeList",
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::111122223333:root" },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::rb-student-homes-ap-south-1",
      "Condition": {
        "StringLike": { "s3:prefix": ["home/${aws:username}/*", "home/${aws:username}"] }
      }
    },
    {
      "Sid": "HomeRW",
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::111122223333:root" },
      "Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
      "Resource": "arn:aws:s3:::rb-student-homes-ap-south-1/home/${aws:username}/*"
    }
  ]
}

Line-by-line

  1. Principal design note.
  2. List prefix.
  3. RW home.
  4. User expand.
  5. Role pitfall.
  6. IAM vs bucket note.

Teaching note

Production मध्ये बहुतेक IAM user policy. Bucket वर दाखवलं = variables शिकायला. Roles: PrincipalTag/userid.

4. CLI

कसं करायचं (step by step)

# As user ananya
aws s3 cp notes.txt s3://rb-student-homes-ap-south-1/home/ananya/notes.txt --profile ananya
# upload success

aws s3 ls s3://rb-student-homes-ap-south-1/home/ananya/ --profile ananya
# notes.txt

5. Allow/deny

# ALLOW — own prefix
aws s3 cp s3://rb-student-homes-ap-south-1/home/ananya/notes.txt - --profile ananya
# <file contents>

# DENY — peer prefix
aws s3 cp s3://rb-student-homes-ap-south-1/home/rohan/secret.txt - --profile ananya
# AccessDenied

6. Multi-industry

College, bootcamp, agency, enterprise sync.

7. 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

8. Lab: two-user homes

Org block नसेल तर ap-south-1 (Mumbai). आधी budget alert.

कसं करायचं (step by step)

  1. Two users.
  2. Upload own.
  3. Deny peer.
  4. Role pitfall.

Cleanup (billing थांबवा)

  1. Cleanup.
  2. Groups.

9. सामान्य 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.
Role usernameuserid/tags.
Empty listList+prefix.

10. 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.

11. 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; * नको.

प्र. IAM vs bucket?

Usually IAM.

प्र. Federated?

Session tags.

प्र. Admin?

Separate policy.

प्र. Peer delete?

Denied.

12. Interview Q&A

प्र. username?

Substitutes IAM user.

प्र. Roles break?

Empty username.

प्र. Alternatives?

userid/tags.

प्र. Prove?

A ok / B deny.

प्र. List risk?

Need prefix.

प्र. One vs many?

One + prefixes.

13. Tips — English, मराठी आणि हिंदी

Ravindra Bagale's Tip (EN)

Never copy-paste username home policies onto role-based apps without rewriting the variable.

Ravindra Bagale's Tip (MR)

Role-based app वर username policy copy-paste करू नका — variable बदला.

Tip (HI)

Role-based ऐप पर username वाली policy कॉपी न करें — variable बदलें।

घरी करून बघा

  1. Two profiles.
  2. Role experiment.
  3. Draw tree.

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

  1. username homes.
  2. List prefix.
  3. Roles ≠ username.
  4. Two-user test.
  5. Often IAM side.

14. 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.

15. 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.

16. 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

17. 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.

18. 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.

19. PR review checklist

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

सराव Tasks

या scenario बद्दल

Shivneri Schools हा जुन्नर मधला शिक्षण व्यवसाय आहे. Kavita Shinde त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 16

सोपं Policy

का: Prefix.

काय करायचं: shivnerischool-homes policy.

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

सोपं List prefix

का: Folder.

काय करायचं: list homes.

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

सोपं Isolation

का: Homes.

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

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

सोपं Variable

का: Var.

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

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

सोपं Head

का: Exists.

काय करायचं: shivnerischool-homes head.

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

सोपं BPA

का: BPA.

काय करायचं: shivnerischool-homes BPA.

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

मध्यम Put home

का: Upload.

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

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

मध्यम Get home

का: Read.

काय करायचं: get home.

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

मध्यम List prefix

का: List.

काय करायचं: list own prefix.

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

मध्यम username

का: Var.

काय करायचं: username path.

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

मध्यम No star

का: LP.

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

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

मध्यम Both

का: Eval.

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

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

मध्यम Versioning

का: State.

काय करायचं: shivnerischool-homes ver.

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

अवघड username objects

का: Home.

काय करायचं: username objects.

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

अवघड Federated

का: tags.

काय करायचं: principal tag.

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

अवघड Del

का: Cleanup.

काय करायचं: shivnerischool-homes 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: Per-user home prefixes. One bucket; many homes. ${aws:username} + prefix. Users → policy → allow/deny tests. Analyst home prefixes.
उजळणी card: Per-user home prefixes · PNG download करा · Card page उघडा
उजळणी card: Federation आणि tags. Username not always set. userid / PrincipalTag. Tags + both paths. SSO → PrincipalTag.
उजळणी card: Federation आणि tags · PNG download करा · Card page उघडा
तुलना: ${aws:username} homes vs aws:PrincipalTag homes. ${aws:username} homes: IAM users. aws:PrincipalTag homes: SSO/federation tags.
तुलना: ${aws:username} homes vs aws:PrincipalTag homes · PNG download करा · Card page उघडा
तुलना: One shared bucket homes vs One bucket per user. One shared bucket homes: One policy; prefixes. One bucket per user: Strong isolation; more buckets.
तुलना: One shared bucket homes vs One bucket per user · PNG download करा · Card page उघडा
मुलाखत card: ${aws:username} काय करते?. Per-caller substitution. IAM users; federation caveat. Alice home only.
मुलाखत card: ${aws:username} काय करते? · PNG download करा · Card page उघडा
मुलाखत card: ListBucket वर Condition का?. s3:prefix on ListBucket. Else enumerate others. Cross-list deny.
मुलाखत card: ListBucket वर Condition का? · PNG download करा · Card page उघडा
मुलाखत card: /* वर s3:* चा धोका?. Breaks isolation. Tight scope. * → Alice reads Bob.
मुलाखत card: /* वर s3:* चा धोका? · PNG download करा · Card page उघडा
मुलाखत card: Identity + bucket policy?. Both; Deny wins. Simulator + CLI. Bucket Deny wins.
मुलाखत card: Identity + bucket policy? · PNG download करा · Card page उघडा

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