ใช้ IAM เพื่ออนุญาตให้ผู้ใช้แก้ไขกลุ่มความปลอดภัย AWS / EC2 หรือไม่


16

ฉันกำลังพยายามให้ความสามารถแก่กลุ่ม IAM ในการแก้ไขกลุ่มความปลอดภัย EC2 ของเรา แต่ฉันไม่สามารถทำงานนี้ได้โดยไม่ได้รับอนุญาตให้เข้าถึงทุกอย่างใน EC2

ฉันได้ลองแล้วหลายรุ่น:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1392336685000",
      "Effect": "Allow",
      "Action": [
        "ec2:*"
      ],
      "Resource": [
        "arn:aws:ec2:us-east-1:<MYACCOUNTHERE>:security-group/*"
      ]
    }
  ]
}

แต่เมื่อฉันเข้าสู่ระบบด้วยผู้ใช้ IAM ฉันจะได้รับข้อความในหน้า Security Group ว่า "คุณไม่ได้รับอนุญาตให้ดำเนินการนี้"

ฉันรู้ว่าผู้ใช้ / กลุ่มทำงานได้เพราะถ้าฉันเลือกเทมเพลตนโยบาย IAM สำหรับ "การเข้าถึงแบบเต็มของ Amazon EC2" ผู้ใช้สามารถเข้าถึงทุกอย่างใน EC2

เห็นได้ชัดว่าฉันไม่ได้มีประสบการณ์มากมายกับ IAM ความช่วยเหลือใด ๆ จะได้รับการชื่นชมอย่างมาก

คำตอบ:


13

เพื่อให้สิ่งนี้ใช้งานได้คุณจะต้องอนุญาตสิ่งต่อไปนี้อย่างชัดเจน:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1392679134000",
      "Effect": "Allow",
      "Action": [
        "ec2:AuthorizeSecurityGroupEgress",
        "ec2:AuthorizeSecurityGroupIngress",
        "ec2:CreateSecurityGroup",
        "ec2:DeleteSecurityGroup",
        "ec2:DescribeInstanceAttribute",
        "ec2:DescribeInstanceStatus",
        "ec2:DescribeInstances",
        "ec2:DescribeNetworkAcls",
        "ec2:DescribeSecurityGroups",
        "ec2:RevokeSecurityGroupEgress",
        "ec2:RevokeSecurityGroupIngress"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

นโยบาย JSON ข้างต้นโดยทั่วไปกำหนดว่าผู้ใช้เท่านั้นที่สามารถเข้าถึงข้างต้น พวกเขาจะไม่สามารถเข้าถึงสิ่งอื่นได้ ซึ่งรวมถึงอินสแตนซ์ ec2, S3, IAM, คลาวด์ฟรอนต์และอื่น ๆ


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

@ DevMan14 มีวิธีใดบ้างในการระบุกลุ่มความปลอดภัยที่เฉพาะเจาะจง? เมื่อฉันลองวินาทีทรัพยากรด้านล่างมันไม่ทำงานและด้วยรหัสนี้ใครบางคนสามารถใช้ aws ec2 อธิบาย - ความปลอดภัย - กลุ่มและรับข้อมูลที่เป็นธรรมเกี่ยวกับทุกกลุ่มความปลอดภัย
nsij22

1
หากคุณเห็นEC2ResponseError: 403ข้อผิดพลาดต้องห้ามไม่นานหลังจากตั้งค่า / แก้ไขนโยบายของคุณโปรดทราบว่าใช้เวลาสองสามนาทีก่อนที่นโยบายของฉันจะมีผลใช้งาน
storm_m2138

12

หากคุณต้องการ จำกัด การแก้ไขเฉพาะกลุ่มรักษาความปลอดภัยกลุ่มเดียวฉันคิดว่าคุณต้องมีข้อความสั่ง 2 ข้อต่อไปนี้ใช้งานได้สำหรับฉัน:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1413232782000",
            "Effect": "Allow",
            "Action": [               
                "ec2:DescribeInstanceAttribute",
                "ec2:DescribeInstanceStatus",
                "ec2:DescribeInstances",
                "ec2:DescribeNetworkAcls",
                "ec2:DescribeSecurityGroups"              
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "Stmt1413232782001",
            "Effect": "Allow",
            "Action": [
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",                
                "ec2:RevokeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupIngress"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:<accountid>:security-group/sg-<id>"
            ]
        }
    ]
}

DescribeInstance อาจไม่จำเป็น แต่ในกรณีของฉันฉันต้องการมันดังนั้นจึงไม่ได้ทำการทดสอบถ้าไม่มี


1
ฉันสามารถแก้ไขกฎ SG ได้โดยไม่ต้องใช้กฎ DescirbeInstance เช่นตัวเลือก * โลกเท่านั้นที่จะถูกกำหนดให้เป็น: "ec2:DescribeNetworkAcls", "ec2:DescribeSecurityGroups"
storm_m2138

1

ดูเหมือนว่ากลุ่มความปลอดภัยของคุณอาจถูกใช้งานโดยอินสแตนซ์หรือทรัพยากร EC2 อื่น ๆ คุณลองได้ไหม:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1392336685000",
      "Effect": "Allow",
      "Action": [
        "ec2:*"
      ],
      "Resource": [
        "arn:aws:ec2:us-east-1:<MYACCOUNTHERE>:instance/*",
        "arn:aws:ec2:us-east-1:<MYACCOUNTHERE>:security-group/*"
      ]
    }
  ]
}

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

1

ฉันกำลังมองหาคำตอบสำหรับคำถามที่@ nsij22ถามในความคิดเห็นของคำตอบที่ยอมรับ น่าเสียดายที่ดูเหมือนว่าเป็นไปไม่ได้ ตามIAM Policy Simulatorเท่านั้นการกระทำต่อไปนี้จากคำตอบของ@ DevMan14สามารถใช้กับทรัพยากรที่ระบุ:

  • DeleteSecurityGroup
  • AuthorizeSecurityGroupEgress
  • AuthorizeSecurityGroupIngress
  • RevokeSecurityGroupEgress
  • RevokeSecurityGroupIngress

สำหรับทุกสิ่งอื่น IAM Policy Simulator พูดว่า:

การกระทำนี้ไม่สนับสนุนสิทธิ์ระดับทรัพยากร นโยบายที่ให้สิทธิ์การเข้าถึงต้องระบุ "*" ในองค์ประกอบทรัพยากร

ดูเหมือนว่านี้:

ภาพหน้าจอ.

"อนุญาต" และ "ปฏิเสธ" ทั้งหมดเหมือนกันดังนั้นฉันจึงยุบมัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.