Ravindra BagaleCourses & study guides English Track your progress

S3 Bucket Policy Project 5: HTTPS Enforce (aws:SecureTransport)

Gauri Sawant (पुणे) compliance: प्रत्येक S3 call TLS. aws:SecureTransport false → Deny. Browser upgrade लपवतो — curl http:// ने test.

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

  • HTTPS enforce का
  • SecureTransport JSON
  • curl tests
  • TLS version
  • Interview

1. Story

Dr. Anil Krishnan (चेन्नई) व Jonas Becker (Frankfurt). Auditor: HTTP अजून शक्य आहे का?

2. SecureTransport का?

हे का लागतं?

HTTP = wire leak. SecureTransport false → Deny.

  • एक Deny
  • सगळे principals
  • TLS version वेगळं
  • curl http test

3. Policy

हे काय आहे?

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyInsecureTransport",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::rb-secure-uploads-ap-south-1",
        "arn:aws:s3:::rb-secure-uploads-ap-south-1/*"
      ],
      "Condition": {
        "Bool": { "aws:SecureTransport": "false" }
      }
    }
  ]
}

Line-by-line

  1. Clear Sid.
  2. Deny.
  3. *.
  4. s3:*.
  5. Both ARNs.
  6. Non-TLS only.

4. CLI

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

aws s3api put-bucket-policy --bucket rb-secure-uploads-ap-south-1 --policy file://https-only.json
# (empty success)

echo secret > t.txt
aws s3 cp t.txt s3://rb-secure-uploads-ap-south-1/t.txt
# upload success over HTTPS CLI

5. Allow/deny

# ALLOW — HTTPS
curl -s -o /dev/null -w "%{http_code}\n" -I \
  https://rb-secure-uploads-ap-south-1.s3.ap-south-1.amazonaws.com/t.txt
# 403 without public read is OK for private buckets; use signed HTTPS CLI for content:
aws s3 cp s3://rb-secure-uploads-ap-south-1/t.txt -   # works (HTTPS)

# DENY — force HTTP (note: may redirect; use --http1.1 and endpoint that speaks HTTP)
aws s3 cp s3://rb-secure-uploads-ap-south-1/t.txt /tmp/x --no-sign-request --endpoint-url http://s3.ap-south-1.amazonaws.com
# AccessDenied when policy sees SecureTransport=false

6. TLS version

SecureTransport = TLS होते का. TLS 1.2+ pin = CF/ALB policies — फक्त bool नाही.

7. Multi-industry

Healthcare, SaaS, fintech, edtech.

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: HTTPS-only

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

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

  1. Policy on.
  2. HTTPS allow.
  3. HTTP deny.
  4. Evidence.

Cleanup (billing थांबवा)

  1. Cleanup.
  2. Empty bucket.

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.
Browser OK?curl http.
TLS pin?Separate control.

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

प्र. Replace IAM?

नाही.

प्र. Presigned http?

Use https.

प्र. CF origin?

HTTPS only.

प्र. Cost?

Negligible.

13. Interview Q&A

प्र. Condition?

SecureTransport false → Deny.

प्र. TLS1.0?

Pin separately.

प्र. Audit demo?

HTTPS ok / HTTP deny.

प्र. * Deny?

OK for this.

प्र. Website?

Use CF HTTPS.

प्र. Bool JSON?

"false" string.

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

Ravindra Bagale's Tip (EN)

Always keep a SecureTransport Deny on buckets that hold credentials-adjacent data — it is cheap insurance.

Ravindra Bagale's Tip (MR)

Credentials-adjacent buckets वर SecureTransport Deny — स्वस्त insurance.

Tip (HI)

संवेदनशील bucket पर SecureTransport Deny सस्ता बीमा है।

घरी करून बघा

  1. Capture both.
  2. Explain aloud.
  3. Merge Sid.

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

  1. SecureTransport Deny.
  2. curl http.
  3. Version separate.
  4. IAM still.
  5. Use CF HTTPS.

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

Milan Furniture हा मिलान मधला फर्निचर व्यवसाय आहे. Giulia Rossi त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे EUR मध्ये मोजले जातात आणि AWS resources eu-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 16

सोपं Policy

का: HTTP Deny.

काय करायचं: milanfurniture-tls policy.

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

सोपं List

का: HTTPS.

काय करायचं: milanfurniture-tls list.

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

सोपं HTTP

का: Fence.

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

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

सोपं HTTPS

का: Allow.

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

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

सोपं Head

का: Exists.

काय करायचं: milanfurniture-tls head.

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

सोपं BPA

का: BPA.

काय करायचं: milanfurniture-tls BPA.

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

मध्यम Put

का: Allow.

काय करायचं: put note.txt.

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

मध्यम Get

का: Read.

काय करायचं: get note.txt.

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

मध्यम Allow

का: Baseline.

काय करायचं: Get/Put allow.

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

मध्यम Bool

का: Condition.

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

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

मध्यम Presign

का: Bind.

काय करायचं: Presign HTTP तर 1.

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

मध्यम Bool

का: Type.

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

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

मध्यम Enc

का: SSE.

काय करायचं: milanfurniture-tls enc.

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

अवघड Deny HTTP

का: TLS.

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

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

अवघड Deny

का: Deny.

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

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

अवघड Del

का: Cleanup.

काय करायचं: milanfurniture-tls 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: HTTPS enforce. HTTP = cleartext risk. Deny SecureTransport false. Deny → HTTPS ok → HTTP deny. HTTP put denied.
उजळणी card: HTTPS enforce · PNG download करा · Card page उघडा
उजळणी card: Explicit Deny का?. Deny wins over Allow. Bool false + least Allow. Presign HTTP fails too. http → AccessDenied.
उजळणी card: Explicit Deny का? · PNG download करा · Card page उघडा
तुलना: Explicit Deny insecure vs Allow only if SecureTransport true. Explicit Deny insecure: Deny wins. Allow only if SecureTransport true: Other Allow can bypass.
तुलना: Explicit Deny insecure vs Allow only if SecureTransport true · PNG download करा · Card page उघडा
तुलना: HTTP request vs HTTPS request. HTTP request: Cleartext risk. HTTPS request: TLS true.
तुलना: HTTP request vs HTTPS request · PNG download करा · Card page उघडा
मुलाखत card: SecureTransport कसं लिहायचं?. Bool false + Deny. Both ARNs. http deny.
मुलाखत card: SecureTransport कसं लिहायचं? · PNG download करा · Card page उघडा
मुलाखत card: फक्त Allow-if-true का नको?. Deny wins. Broad identity risk. Resource Deny wins.
मुलाखत card: फक्त Allow-if-true का नको? · PNG download करा · Card page उघडा
मुलाखत card: Presign TLS Deny bypass करतो का?. Conditions still bind. https only. http presign fail.
मुलाखत card: Presign TLS Deny bypass करतो का? · PNG download करा · Card page उघडा
मुलाखत card: CloudFront origin काय वापरावं?. HTTPS origin + OAC. No http origin prod. HTTPS only.
मुलाखत card: CloudFront origin काय वापरावं? · PNG download करा · Card page उघडा

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