Ravindra BagaleCourses & study guides English Track your progress

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

  1. Deny unless VPCe.
  2. All callers.
  3. s3:* lock.
  4. Both ARNs.
  5. vpce-id.
  6. 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)

  1. Bucket + VPCe.
  2. Policy.
  3. Allow inside.
  4. Deny outside.

Cleanup (billing थांबवा)

  1. Cleanup.
  2. Routes.

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.
Everywhere denyvpce id + RT.
EP policyAllow there too.

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.
  9. 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 रखें।

घरी करून बघा

  1. Inside allow / laptop deny.
  2. Typo test.
  3. Draw path.

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

  1. SourceVpce.
  2. Deny-unless.
  3. Both.
  4. Two paths.
  5. Carve-outs.

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 बद्दल

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.

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

सोपं List

का: Endpoint.

काय करायचं: londonlegal-private list.

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

सोपं Outside

का: Fence.

काय करायचं: Outside deny तर 1.

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

सोपं Routes

का: Gateway.

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

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

सोपं Head

का: Exists.

काय करायचं: londonlegal-private head.

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

सोपं Location

का: Region.

काय करायचं: londonlegal-private loc.

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

मध्यम Endpoints

का: vpce id.

काय करायचं: VPC endpoints.

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

मध्यम Get

का: In-VPC.

काय करायचं: get data.csv.

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

मध्यम Allow Get

का: Allow.

काय करायचं: account GetObject.

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

मध्यम vpce JSON

का: Value.

काय करायचं: vpce-0abc123.

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

मध्यम EP policy

का: Layers.

काय करायचं: EP policy तर 1.

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

मध्यम Keys

का: Different.

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

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

अवघड SourceVpce

का: Endpoint.

काय करायचं: deny unless vpce.

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

अवघड Resources

का: ARNs.

काय करायचं: both ARNs.

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

अवघड Put

का: Write.

काय करायचं: put data.csv.

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

अवघड Del

का: Cleanup.

काय करायचं: londonlegal-private 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: VPC endpoint restrict. Keep traffic private. Condition aws:SourceVpce. Endpoint → routes → Deny-unless → test. ETL via vpce.
उजळणी card: VPC endpoint restrict · PNG download करा · Card page उघडा
उजळणी card: Endpoint policy layers. Bucket + endpoint policies. Align policies; routes; no NAT leak. VPC allow / laptop deny. Missing RT association.
उजळणी card: Endpoint policy layers · PNG download करा · Card page उघडा
तुलना: VPC endpoint path vs Public S3 endpoint via NAT. VPC endpoint path: SourceVpce fence; private. Public S3 endpoint via NAT: NAT → public S3.
तुलना: VPC endpoint path vs Public S3 endpoint via NAT · PNG download करा · Card page उघडा
तुलना: S3 gateway endpoint vs S3 interface endpoint. S3 gateway endpoint: Prefix-list routes. S3 interface endpoint: ENI + SG.
तुलना: S3 gateway endpoint vs S3 interface endpoint · PNG download करा · Card page उघडा
मुलाखत card: SourceVpce vs SourceVpc?. Endpoint id vs VPC id. Often SourceVpce. vpce-… value.
मुलाखत card: SourceVpce vs SourceVpc? · PNG download करा · Card page उघडा
मुलाखत card: VPC मधूनही fail का?. No route → public path → Deny. Endpoint policy. RT association fix.
मुलाखत card: VPC मधूनही fail का? · PNG download करा · Card page उघडा
मुलाखत card: Deny-unless pattern का?. Deny wins. Bucket + /*. Outside deny.
मुलाखत card: Deny-unless pattern का? · PNG download करा · Card page उघडा
मुलाखत card: S3 साठी gateway की interface?. Gateway common for S3. Interface = ENI/SG. Gateway lab.
मुलाखत card: S3 साठी gateway की interface? · PNG download करा · Card page उघडा

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