Ravindra BagaleCourses & study guides English

Conditions असलेली IAM Policy Step by Step लिहा

S3 read फक्त तुमच्या IP (किंवा MFA) वर Allow करणारी customer-managed policy. Role attach, allow/deny prove, cleanup.

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

  • SourceIp किंवा MFA Condition
  • Lab role ला attach
  • Allowed path prove
  • Deny prove
  • Cleanup

1. Lab: click by click

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

Region ap-south-1. Public IP शोधा — home IP बदलते; स्थिर lab साठी MFA Condition चांगली. दोन्ही दाखवतो.

A. Bucket

  1. Bucket + hello.txt.

B. Condition policy

  1. एक variant निवडा.
  2. Variant 1 — IP:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ListIfFromMyIp",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::BUCKET",
      "Condition": {
        "IpAddress": { "aws:SourceIp": "YOUR.IP.ADDR.ESS/32" }
      }
    },
    {
      "Sid": "GetIfFromMyIp",
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::BUCKET/*",
      "Condition": {
        "IpAddress": { "aws:SourceIp": "YOUR.IP.ADDR.ESS/32" }
      }
    }
  ]
}
  1. Variant 2 — MFA:
{
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "ReadOnlyWithMfa",
    "Effect": "Allow",
    "Action": ["s3:ListBucket", "s3:GetObject"],
    "Resource": [
      "arn:aws:s3:::BUCKET",
      "arn:aws:s3:::BUCKET/*"
    ],
    "Condition": {
      "Bool": { "aws:MultiFactorAuthPresent": "true" }
    }
  }]
}
  1. Name lab-s3-read-conditioned.

C. Role आणि prove

  1. Role/permission set + policy.
  2. Allowed path:
aws s3 cp s3://BUCKET/hello.txt -
# expect: ok
  1. Deny test: वेगळा IP किंवा MFA नसलेलं session.
  2. Optional: दुसऱ्या Region ला explicit Deny.

Cleanup

  1. Role/assignment काढा.
  2. Policy delete.
  3. Bucket delete.

Ravindra Bagale's Tip

CloudShell = AWS IPs — SourceIp अनेकदा Deny. Laptop CLI किंवा MFA variant.

2. Interview

प्र. दोन्हीवर Condition?

प्रत्येक statement ला / एकत्र काळजीपूर्वक.

प्र. Bool "true"?

IAM मध्ये string "true".

प्र. /32?

एक address; office साठी CIDR काळजीपूर्वक.

प्र. Deny vs Allow नसणं?

Allow नसणं पुरे; Explicit Deny = स्पष्ट + भविष्यातील Allow ला मात.

घरी करून बघा

  1. RequestedRegion = ap-south-1.
  2. मित्राला trust vs permissions vs Condition समजावून सांगा.

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

  1. Condition = Allow कधी.
  2. Allow आणि deny दोन्ही.
  3. CloudShell vs SourceIp.
  4. Cleanup.

सराव Tasks

या scenario बद्दल

Zurich Insurance Partners हा झुरिच मधला विमा व्यवसाय आहे. Anna Müller त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे CHF मध्ये मोजले जातात आणि AWS resources eu-central-2 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 12

सोपं एका bucket ला read-only access

का: Least privilege: कामाला लागणारे actions व bucket च द्या.

काय करायचं: User ला फक्त zurichinsure-data bucket मधले objects वाचू (s3:GetObject) देणारी identity policy लिहा.

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

मध्यम एका table ला Lambda access

का: Function ला फक्त स्वतःच्या table मध्ये वाचणं/लिहिणं लागतं.

काय करायचं: फक्त arn:aws:dynamodb:eu-central-2:131130276334:table/zurichinsure-orders वर dynamodb:GetItem, dynamodb:PutItem, dynamodb:Query allow करा.

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

मध्यम फक्त servers start/stop

का: Night operator servers start/stop करू शकतो पण terminate नाही.

काय करायचं: Account 131130276334, Region eu-central-2 मधल्या सगळ्या instances वर ec2:StartInstances व ec2:StopInstances, व * वर ec2:DescribeInstances allow करा.

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

मध्यम एक bucket list व read

का: ListBucket bucket ARN वर; GetObject object ARNs वर चालतो.

काय करायचं: zurichinsure-data bucket वर s3:ListBucket व सगळ्या objects वर s3:GetObject allow करा. बाकी काही नाही.

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

मध्यम एका folder मध्ये फक्त upload

का: Field staff files टाकू शकतात पण वाचू/delete करू शकत नाहीत.

काय करायचं: zurichinsure-data मध्ये फक्त uploads/ prefix खाली s3:PutObject allow करा.

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

मध्यम Group ला managed policy लावा

का: AWS managed policies तयार असतात व AWS त्या update ठेवतो.

काय करायचं: AWS managed policy arn:aws:iam::aws:policy/ReadOnlyAccess ला Auditors group ला attach करा.

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

मध्यम Customer managed policy बनवा

का: स्वतःची managed policy अनेक users, groups व roles वर वापरता येते.

काय करायचं: policy.json मधल्या document पासून zurichinsure-s3-read नावाची policy बनवा.

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

अवघड Office बाहेरून access deny

का: aws:SourceIp सह explicit Deny इतर ठिकाणांहून keys वापर रोखतो.

काय करायचं: एक Deny statement: source IP 203.0.113.0/24 मध्ये नसेल तेव्हा * resources वर * actions deny.

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

अवघड फक्त tagged servers वर allow

का: Tag conditions मुळे team फक्त स्वतःचे servers हाताळते.

काय करायचं: Instance tag Team = zurichinsure असेल तेव्हाच * वर ec2:StopInstances allow करा.

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

अवघड वापरण्याआधी policy test करा

का: Policy simulator action न करता ते allow होईल का ते सांगतो.

काय करायचं: User arn:aws:iam::131130276334:user/anna s3:GetObject call करू शकतो का ते तपासा.

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

अवघड Delete साठी MFA आवश्यक

का: धोकादायक actions ला MFA हवा.

काय करायचं: MFA नसताना (aws:MultiFactorAuthPresent false) arn:aws:s3:::zurichinsure-data/* वर s3:DeleteObject deny करा.

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

अवघड इतर Regions block करा (SCP)

का: Data rules aws:RequestedRegion ने लागू करतात.

काय करायचं: aws:RequestedRegion eu-central-2 नसेल तेव्हा * वर ec2:* deny करा.

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

उजळणी, तुलना आणि मुलाखत cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

उजळणी card: Condition असलेली policy लिहा. Condition = Allow कधी लागू. S3 read + SourceIp or MFA Condition. JSON + Condition → attach → test. Allow path + deny path both tested.
उजळणी card: Condition असलेली policy लिहा · PNG download करा · Card page उघडा
उजळणी card: Allow आणि deny paths prove करा. फक्त happy path = Condition खरंच काम करते का कळत नाही. Allowed context OK; disallowed AccessDenied. Two s3 ls: meet vs violate Condition. Same role; Condition decides.
उजळणी card: Allow आणि deny paths prove करा · PNG download करा · Card page उघडा
उजळणी card: Condition lab cleanup. Lab policy विसरली = पुढचा AccessDenied. Detach/delete policy+role+bucket same day. Policy → role → bucket delete. Lab policy/bucket gone.
उजळणी card: Condition lab cleanup · PNG download करा · Card page उघडा
मुलाखत card: Allow ला Condition का?. Condition = Allow कधी. Without = leaked key from anywhere. Per-statement Condition; Bool as "true"/"false" strings. SourceIp /32 Allow; CloudShell deny prove.
मुलाखत card: Allow ला Condition का? · PNG download करा · Card page उघडा
मुलाखत card: List आणि Get दोन्हींना Condition?. List = bucket ARN; Get = object ARN; Condition per statement. List without Condition = key names leak. Both statements + same SourceIp Condition.
मुलाखत card: List आणि Get दोन्हींना Condition? · PNG download करा · Card page उघडा

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