เป็นไปได้หรือไม่ที่จะ จำกัด ผู้ใช้ / บัญชี AWS ในบางพื้นที่


24

เราให้บริการ AWS จำนวนมากในภูมิภาค eu-west-1 น่าเสียดายที่นักพัฒนาของเราและพนักงานคนอื่น ๆ ที่ต้องการสร้างทรัพยากรชั่วคราวลืมเกี่ยวกับแง่มุมของ AWS นี้และไม่เลือกภูมิภาคนี้ก่อนเปิดตัวอินสแตนซ์ EC2 การสร้าง S3 ถัง ฯลฯ ดังนั้นพวกเขามักจะจบลงด้วย ภูมิภาค us-east-1 ตั้งแต่ที่ดูเหมือนจะเป็นค่าเริ่มต้นที่ AWS ใช้เสมอ

มีวิธีใดบ้างในการใช้ IAM (หรือวิธีอื่น ๆ ) ในการ จำกัด บัญชีผู้ใช้เพื่อเปิด / สร้างสิ่งต่าง ๆ ภายในพื้นที่เฉพาะหรือไม่?

คำตอบ:


25

น่าเสียดายที่คุณไม่สามารถทำสิ่งนี้ได้ทั่วโลก อย่างไรก็ตามสำหรับแต่ละผลิตภัณฑ์ AWS ที่รองรับคุณมักจะสามารถจำกัด การเข้าถึงในบางภูมิภาค

ตัวอย่างเช่นสำหรับ EC2 คุณสามารถทำสิ่งต่อไปนี้:

{
  "Statement":[{
    "Effect":"allow",
    "Action":"RunInstances",
    "Resource":"*",
    "Condition":{
      "StringEquals":{
        "ec2:Region":"us-west-1"
        }
      }
    }
  ]
}

แน่นอนว่าคุณต้องออกdenyกฎเช่นกันตามความเหมาะสม

นี่คือเอกสารสำหรับข้างต้น


สมบูรณ์ ดูเหมือนว่าสิ่งที่ฉันต้องการ ขอบคุณ!
Bruce P

5
แทนที่จะระบุ"Condition": { "condition": {} }ว่าควรเป็น"Condition": { "StringEquals": {} }
Jasny - Arnold Daniels

แล้วบริการอื่น ๆ เช่น S3 ล่ะ
Yves M.

7

ใช้สิ่งนี้ ตัวอย่างนี้ จำกัด การเข้าถึงสองภูมิภาค AWS แก้ไขตามต้องการ

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
      "StringNotEquals": {
        "aws:RequestedRegion": [
          "eu-central-1",
          "eu-west-1"
        ]
      }
    }
  }]
}

3
ใหม่aws:RequestedRegionนี้เป็นคำตอบที่เกี่ยวข้องมากที่สุดในขณะนี้
majikman

1
ขอขอบคุณด้วยนโยบายนี้คุณสามารถใช้นโยบาย AWS ที่เป็นค่าเริ่มต้นและแนบหนึ่งบรรทัดนี้และคุณ จำกัด บริการใด ๆ ได้อย่างมีประสิทธิภาพ
lkraider

7

ตั้งแต่วันที่ 25 เมษายน 2018 AWS มีทรัพยากรระดับโลก aws: RequestedRegion คุณสามารถใช้เพื่อ จำกัด ภูมิภาคที่ผู้ใช้สามารถส่งคำขอไป นี่เป็นบริการที่ไม่ขึ้นอยู่กับภูมิภาคหรือไม่ดังนั้นคุณสามารถใช้กับบริการทั้งหมดได้

บล็อกความปลอดภัย AWS

น่าเสียดายที่คุณไม่สามารถใช้สิ่งนี้ในนโยบายการควบคุมการบริการขององค์กรเพื่อนำไปใช้กับบัญชีทั่วโลกและคุณต้องแนบนโยบายนี้กับอาจารย์ใหญ่ทุกคนและตรวจสอบว่านี่เป็นเช่นนั้นหากคุณต้องการล็อคบัญชีในบางภูมิภาค


4

ให้คำตอบที่ยอมรับในหัวข้อนี้Syntax Error on Policyแล้ว ทำงานด้านล่างสำหรับฉัน:

{
"Statement": [
    {
        "Sid": "Stmt1375943389569",
        "Action": "ec2:*",
        "Effect": "Allow",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "ec2:Region": "eu-central-1"
            }
        }
    }
]

}


3

หากคุณขอเฉพาะการกระทำ EC2 เท่านั้นใช่คุณสามารถ จำกัด ได้ตามที่กล่าวไว้ในการตอบกลับอื่น ๆ ถ้าเป็นบริการอื่น ๆ ฉันไม่แน่ใจว่าคุณสามารถทำได้ ... เช่น AWS Lambda ดูเหมือนจะไม่มีlambda:regionคุณสามารถเพิ่มเงื่อนไขได้


0

จากคำถามที่พบบ่อยสำหรับ AWS IAM :

ถาม: ผู้ใช้สามารถกำหนดภูมิภาคได้หรือไม่? ไม่ใช่ในตอนแรก ผู้ใช้เป็นเอนทิตีระดับโลกเช่นบัญชี AWS ในปัจจุบัน ไม่จำเป็นต้องระบุภูมิภาคเมื่อกำหนดสิทธิ์ผู้ใช้ ผู้ใช้สามารถใช้บริการ AWS ในพื้นที่ทางภูมิศาสตร์ใด ๆ


3
ว้าว. เป็นคำตอบที่เขียนได้ไม่ดีจาก Amazon "ไม่ใช่ตอนแรก" นั่นหมายความว่าสามารถทำได้หลังจากสร้างบัญชีหรือไม่ นั่นหมายความว่า AWS ไม่สามารถทำได้เมื่อเปิดตัวครั้งแรก แต่ตอนนี้ทำได้หรือไม่ "ไม่จำเป็นต้องระบุภูมิภาคเมื่อกำหนดสิทธิ์ผู้ใช้" ฉันไม่ได้ถามว่าจำเป็นหรือไม่ ฉันถามว่ามันเป็นไปได้ที่จะทำเช่นนั้น "ผู้ใช้สามารถใช้บริการ AWS ได้ในทุกภูมิภาค" เห็นได้ชัดว่าไม่มีสิ่งใดเพิ่มเติมตามสิ่งที่ EEAA โพสต์ไว้ด้านบน คำสั่ง "เงื่อนไข" ใน IAM ช่วยให้คุณ จำกัด บริการบางอย่างตามภูมิภาค ขอบคุณเหมือนกัน
Bruce P

1
@ BruceP - มันไม่ใช่คำตอบที่ไม่ดี มันดีมาก ผู้ใช้ทั่วโลก สามารถ จำกัดสิทธิ์ของผู้ใช้ได้
EEAA

0

ฉันพบว่าสิ่งนี้ทำงานได้ดีขึ้น (อนุญาตให้เรียกใช้ / หยุด / ยุติ / ฯลฯ ) เพื่อให้สิทธิ์การเข้าถึง EC2 เต็มรูปแบบสำหรับผู้ใช้เพียงภูมิภาคเดียว - ภูมิภาคอื่น ๆ แสดงข้อผิดพลาดระหว่างการพยายามเข้าถึงใด ๆ

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "*",
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:Region": "us-east-1"
                }
            }
        }
    ]
}

0

อันนี้ใช้งานได้สำหรับฉันฉันพยายามสร้างนโยบายด้วย json ที่กล่าวถึงว่าเป็นคำตอบที่ยอมรับ แต่มันไม่ได้ผลสำหรับฉัน

{
    "Version": "2012-10-17",
    "Statement": [{
        "Action": "ec2:*",
        "Effect": "Allow",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "ec2:Region": [
                    "us-east-1"
                ]
            }
        }
    }]
}

0

นั่นคือทางออกปัจจุบัน - ใช้ "eu-west-1":

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect"    : "Allow",
            "Action"    : "*",
            "Resource"  : "*",
            "Condition": 
            {
                "StringEquals": {
                    "aws:RequestedRegion": "eu-west-1"
                }
            }
        }
    ]
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.