Ravindra BagaleCourses & study guides English Track your progress

S3 Bucket Policy Project 4: Office Source IP Restrict

Pune manufacturing: Ravi Kulkarni. Finance sheets फक्त office IP (+ VPN NAT). aws:SourceIp — VPN caveats सह.

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

  • Office IP का
  • SourceIp JSON
  • Allow/deny IPs
  • VPN + CF pitfalls
  • Interview

1. Story

Nisha Patel (अहमदाबाद) व Omar Al-Farsi (Dubai) CSVs. Home IP + leaked key = deny.

2. Source IP का?

हे का लागतं?

Stolen keys random IP वर fail. Office/VPN CIDR allow-list.

  • Stable CIDRs
  • Deny-unless IP
  • CF pitfall
  • VPN better long-term

3. Policy

हे काय आहे?

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyUnlessOfficeIp",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::rb-finance-office-ap-south-1",
        "arn:aws:s3:::rb-finance-office-ap-south-1/*"
      ],
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": [
            "203.0.113.10/32",
            "203.0.113.0/28",
            "198.51.100.20/32"
          ]
        },
        "Bool": { "aws:ViaAWSService": "false" }
      }
    }
  ]
}

Line-by-line

  1. NotIpAddress.
  2. CIDR list.
  3. VPN NAT.
  4. ViaAWSService.
  5. Both ARNs.
  6. IAM Allow.

4. CLI

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

# Discover your egress IP from office
curl -s https://checkip.amazonaws.com
# 203.0.113.10

aws s3api put-bucket-policy --bucket rb-finance-office-ap-south-1 --policy file://office-ip.json
# (empty success)

5. Allow/deny

# ALLOW — on office network
aws s3 ls s3://rb-finance-office-ap-south-1/
# PRE exports/

# DENY — phone hotspot / home
aws s3 ls s3://rb-finance-office-ap-south-1/
# An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied

VPN reality

VPN वापरल्यास S3 ला VPN egress IP दिसते — home Wi-Fi नाही. NAT बदलेल तेव्हा list update.

6. Multi-industry

Manufacturing, CA, trading, legal.

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: office IP

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

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

  1. Record IP.
  2. Allow test.
  3. Deny test.
  4. Second CIDR.

Cleanup (billing थांबवा)

  1. Cleanup.
  2. IAM cleanup.

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.
VPN deniedAdd NAT IP.
CF+IPRedesign.

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

प्र. IPv6?

Add ranges.

प्र. Dynamic IP?

Use VPN.

प्र. ViaAWSService?

Service calls carve.

प्र. Better?

Defense in depth.

12. Interview Q&A

प्र. Key?

aws:SourceIp.

प्र. VPN IP?

Egress NAT.

प्र. WFH?

VPN.

प्र. CF+IP?

Avoid naive mix.

प्र. Prove?

On/off IP.

प्र. /32 vs /24?

Least range.

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

Ravindra Bagale's Tip (EN)

Treat IP allow-lists as living documents — NAT changes break prod silently.

Ravindra Bagale's Tip (MR)

IP list = living doc; NAT change = silent break.

Tip (HI)

IP allow-list को living document समझें — NAT बदलते ही prod टूट सकता है।

घरी करून बघा

  1. Two networks.
  2. NAT owners.
  3. ViaAWSService 60s.

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

  1. SourceIp lock.
  2. VPN NAT.
  3. No naive CF.
  4. On/off test.
  5. Defense in depth.

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

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

0 / 16

सोपं Policy

का: IP.

काय करायचं: amravatiagro-office policy.

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

सोपं List

का: Office.

काय करायचं: amravatiagro-office list.

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

सोपं Home

का: Fence.

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

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

सोपं NAT

का: Egress.

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

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

सोपं BPA

का: BPA.

काय करायचं: amravatiagro-office BPA.

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

सोपं Head

का: Exists.

काय करायचं: amravatiagro-office head.

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

मध्यम Get

का: Allow.

काय करायचं: get report.pdf.

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

मध्यम Put

का: Upload.

काय करायचं: put report.pdf.

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

मध्यम HTTPS

का: TLS.

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

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

मध्यम CIDR

का: IP.

काय करायचं: 203.0.113.0/24.

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

मध्यम Operators

का: Op.

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

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

मध्यम VPN

का: IP.

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

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

मध्यम Versioning

का: State.

काय करायचं: amravatiagro-office ver.

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

अवघड SourceIp

का: Office.

काय करायचं: deny unless office IP.

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

अवघड NAT

का: Egress.

काय करायचं: nat ip.

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

अवघड Del

का: Cleanup.

काय करायचं: amravatiagro-office 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: Office SourceIp fence. No cafe Wi‑Fi downloads. SourceIp allowlist via Deny-unless. CIDRs → policy → tests → break-glass. Office CIDR only.
उजळणी card: Office SourceIp fence · PNG download करा · Card page उघडा
उजळणी card: NAT egress आणि CIDRs. Public egress IP matters. Allowlist NAT; refresh on change. Office vs hotspot. ISP renumber.
उजळणी card: NAT egress आणि CIDRs · PNG download करा · Card page उघडा
तुलना: Office SourceIp allowlist vs VPN-only access. Office SourceIp allowlist: Office/NAT CIDR. VPN-only access: VPN egress IP.
तुलना: Office SourceIp allowlist vs VPN-only access · PNG download करा · Card page उघडा
तुलना: SourceIp fence vs Identity-only IAM. SourceIp fence: Blocks off-net keys. Identity-only IAM: Who, not where.
तुलना: SourceIp fence vs Identity-only IAM · PNG download करा · Card page उघडा
मुलाखत card: Office IP साठी कोणती key?. SourceIp + IpAddress ops. NAT egress. CIDR allowlist.
मुलाखत card: Office IP साठी कोणती key? · PNG download करा · Card page उघडा
मुलाखत card: 10.x नको, NAT का allow?. Public egress visible. Refresh on change. /32 NAT.
मुलाखत card: 10.x नको, NAT का allow? · PNG download करा · Card page उघडा
मुलाखत card: VPN users काय?. VPN egress must match. Split-tunnel. Home VPN deny.
मुलाखत card: VPN users काय? · PNG download करा · Card page उघडा
मुलाखत card: IP सोबत TLS?. IP + SecureTransport. Layers. HTTP deny even in office.
मुलाखत card: IP सोबत TLS? · PNG download करा · Card page उघडा

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