S3 Bucket Policy Project 3: फक्त VPC Endpoint Access
Fatima Khan (मुंबई) payroll. Internet path नको. Gateway VPC endpoint + aws:SourceVpce.
या chapter मध्ये तुम्ही काय शिकाल
- VPCe path का
- SourceVpce JSON
- Inside vs outside
- दोन्ही policies
- Interview
1. Story
Arjun Mehta (बेंगलुरु) व Sophie Martin (Toronto) KYC. फक्त vpce path.
2. VPCe-only का?
हे का लागतं?
Private EC2 असूनही public S3 endpoint शक्य. Condition = फक्त VPCe; stolen key from internet fail.
- Gateway VPCe
- Prefix list route
- SourceVpce
- Endpoint policy
3. Policy
हे काय आहे?
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyUnlessFromMyVpce",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::rb-payroll-ap-south-1",
"arn:aws:s3:::rb-payroll-ap-south-1/*"
],
"Condition": {
"StringNotEquals": {
"aws:SourceVpce": "vpce-0a1b2c3d4e5f67890"
}
}
}
]
}
Line-by-line
- Deny unless VPCe.
- All callers.
- s3:* lock.
- Both ARNs.
- vpce-id.
- Deny ≠ Allow.
4. CLI
कसं करायचं (step by step)
# Gateway endpoint
aws ec2 create-vpc-endpoint --vpc-id vpc-0123456789abcdef0 \
--service-name com.amazonaws.ap-south-1.s3 \
--route-table-ids rtb-aaa rtb-bbb --vpc-endpoint-type Gateway
# { "VpcEndpoint": { "VpcEndpointId": "vpce-0a1b2c3d4e5f67890", ... } }
aws s3api put-bucket-policy --bucket rb-payroll-ap-south-1 --policy file://vpce.json
5. Allow/deny
# ALLOW — EC2 in VPC with endpoint route
aws s3 cp s3://rb-payroll-ap-south-1/payslip.pdf - --region ap-south-1 | wc -c
# >0
# DENY — laptop on internet, same IAM key
aws s3 cp s3://rb-payroll-ap-south-1/payslip.pdf /tmp/x --region ap-south-1
# An error occurred (AccessDenied) when calling the GetObject operation: Access Denied
दोन्ही policies
Endpoint + bucket दोन्ही. रिकामं endpoint policy = block.
6. Multi-industry
Payroll, KYC, hospital, govt.
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: SourceVpce
Org block नसेल तर ap-south-1 (Mumbai). आधी budget alert.
कसं करायचं (step by step)
- Bucket + VPCe.
- Policy.
- Allow inside.
- Deny outside.
Cleanup (billing थांबवा)
- Cleanup.
- Routes.
9. सामान्य 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. |
| Everywhere deny | vpce id + RT. |
| EP policy | Allow there too. |
10. Troubleshooting checklist
- Region + endpoint.
- Policy + BPA.
- Lab user.
- Sid binary search.
- CloudTrail.
- KMS test.
- VPCe path.
- Lock cleanup.
- Route check.
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; * नको.
प्र. Gateway vs Interface?
Gateway for S3.
प्र. vs SourceIp?
Different keys.
प्र. Services?
Carve-out test.
प्र. Deny=Allow?
नाही.
12. Interview Q&A
प्र. Force VPCe?
SourceVpce + RT.
प्र. Stolen key?
Denied off-VPC.
प्र. EP deny?
AND.
प्र. Find id?
describe-vpc-endpoints.
प्र. Interface when?
Special + cost.
प्र. Deny-unless?
Common lock pattern.
13. Tips — English, मराठी आणि हिंदी
Ravindra Bagale's Tip (EN)
Pair SourceVpce with private subnets when compliance demands no public S3 path.
Ravindra Bagale's Tip (MR)
Compliance: SourceVpce + private subnet.
Tip (HI)
Compliance में SourceVpce + private subnet रखें।
घरी करून बघा
- Inside allow / laptop deny.
- Typo test.
- Draw path.
थोडक्यात सांगायचं तर
- SourceVpce.
- Deny-unless.
- Both.
- Two paths.
- Carve-outs.
14. Policy save करण्याआधी checklist
- Business rule एका वाक्यात.
- Allow vs Deny-unless; Deny wins.
- ARN shapes.
- Condition keys.
- BPA first.
- Allow+deny plan.
- Cleanup plan.
- json.tool.
15. 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.
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
- Error code + request id.
- Bucket + region.
- BPA.
- Explicit Deny.
- Conditions.
- KMS key policy.
- OAC id.
- VPCe path.
- Simulator + CLI.
- Support last.
19. PR review checklist
- Valid JSON.
- Required fields.
- No open write.
- Tests.
- Cleanup.
सराव Tasks
London Legal LLP हा लंडन मधला कायदा सेवा व्यवसाय आहे. Oliver Hughes त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे GBP मध्ये मोजले जातात आणि AWS resources eu-west-2 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 16
सोपं Policy
का: Fence.
काय करायचं: londonlegal-private policy.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं List
का: Endpoint.
काय करायचं: londonlegal-private list.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Outside
का: Fence.
काय करायचं: Outside deny तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं Routes
का: Gateway.
काय करायचं: Route तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं Head
का: Exists.
काय करायचं: londonlegal-private head.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Location
का: Region.
काय करायचं: londonlegal-private loc.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Endpoints
का: vpce id.
काय करायचं: VPC endpoints.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Get
का: In-VPC.
काय करायचं: get data.csv.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Allow Get
का: Allow.
काय करायचं: account GetObject.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
मध्यम vpce JSON
का: Value.
काय करायचं: vpce-0abc123.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
मध्यम EP policy
का: Layers.
काय करायचं: EP policy तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Keys
का: Different.
काय करायचं: Different तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
अवघड SourceVpce
का: Endpoint.
काय करायचं: deny unless vpce.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
अवघड Resources
का: ARNs.
काय करायचं: both ARNs.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
अवघड Put
का: Write.
काय करायचं: put data.csv.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड Del
का: Cleanup.
काय करायचं: londonlegal-private 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.