Sử dụng IAM để cho phép người dùng chỉnh sửa các nhóm bảo mật AWS / EC2?


16

Tôi đang cố gắng cấp cho nhóm IAM khả năng chỉnh sửa Nhóm bảo mật EC2 của chúng tôi, nhưng tôi đã không thể làm việc này mà không cấp quyền truy cập vào mọi thứ trong EC2.

Tôi đã thử một vài phiên bản này:

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

Nhưng khi tôi đăng nhập với người dùng IAM, tôi nhận được một tin nhắn trong trang Nhóm bảo mật với nội dung "Bạn không được phép thực hiện thao tác này".

Tôi biết rằng người dùng / nhóm đang hoạt động vì nếu tôi chọn Mẫu chính sách IAM cho "Truy cập đầy đủ Amazon EC2", người dùng có thể truy cập mọi thứ trong EC2.

Tôi rõ ràng không có nhiều kinh nghiệm với IAM, bất kỳ trợ giúp nào cũng sẽ được đánh giá cao.

Câu trả lời:


13

Để làm việc này, bạn cần phải cho phép rõ ràng những điều sau đây:

{
  "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": [
        "*"
      ]
    }
  ]
}

Chính sách JSON ở trên về cơ bản quy định rằng CHỈ người dùng có quyền truy cập vào bên trên. Họ sẽ KHÔNG có quyền truy cập vào bất cứ điều gì khác. Điều đó bao gồm các trường hợp ec2, S3, IAM, cloudfront, v.v.


1
Điều này đã làm việc. Cảm ơn bạn. Người dùng có thể xem tất cả dữ liệu sơ thẩm nhưng không thể bắt đầu / dừng / tạo, do đó đủ gần. Bạn có nghĩ rằng có một cách để nêu chính xác những Nhóm bảo mật nào họ có thể truy cập hoặc tôi cần để nó mở cho tất cả các Nhóm bảo mật?
Chris

@ DevMan14 vậy có cách nào để nêu các nhóm bảo mật cụ thể không? Khi tôi thử một giây tài nguyên như bên dưới nó không hoạt động và với mã này, ai đó có thể sử dụng các nhóm mô tả-bảo mật aws ec2 và nhận được một chút thông tin về mọi nhóm bảo mật
nsij22

1
Nếu bạn đang thấy EC2ResponseError: 403 Lỗi bị cấm , ngay sau khi thiết lập / sửa đổi chính sách của bạn, hãy lưu ý rằng phải mất vài phút trước khi chính sách của tôi có hiệu lực
Storm_m2138

12

Nếu bạn muốn giới hạn chỉnh sửa trong một nhóm bảo mật duy nhất, tôi nghĩ rằng bạn cần 2 câu lệnh, những điều sau đây có hiệu quả với tôi:

{
    "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 có thể không cần thiết nhưng trong trường hợp của tôi, tôi muốn nó, vì vậy đã không được thử nghiệm mà không có nó


1
Tôi đã có thể chỉnh sửa các quy tắc SG mà không cần các quy tắc DescirbeInstance. Ví dụ: các tùy chọn toàn cầu * chỉ được đặt là: "ec2:DescribeNetworkAcls", "ec2:DescribeSecurityGroups"
bão_m2138

1

Có vẻ như nhóm bảo mật của bạn có thể đang được sử dụng bởi một thể hiện hoặc một số tài nguyên EC2 khác. Bạn có thể thử:

{
  "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/*"
      ]
    }
  ]
}

Cảm ơn bạn đã trả lời nhưng điều đó đã không làm việc. Có, các nhóm bảo mật đang được sử dụng bởi nhiều trường hợp - có vấn đề gì khi chúng là "Nhóm bảo mật EC2" chứ không phải "Nhóm bảo mật VPC" không? - HOẶC có thể tôi đang làm sai điều gì khác vì điều này không cho phép người dùng nhìn thấy Trường hợp, điều mà tôi mong đợi một nửa là nó sẽ làm.
Chris

1

Tôi đang tìm kiếm một câu trả lời cho một câu hỏi@ nsij22 đã hỏi trong các bình luận của câu trả lời được chấp nhận. Thật không may, có vẻ như điều đó là không thể. Theo Trình mô phỏng chính sách của IAM , chỉ các hành động sau từ câu trả lời của @ DevMan14 có thể được sử dụng với các tài nguyên cụ thể:

  • DeleteSecuritygroup
  • AuthorizeSecuritygroupETHER
  • AuthorizeSecuritygroupIngress
  • RevokeSecuritygroupETHER
  • RevokeSecuritygroupIngress

Đối với mọi thứ khác, IAM Policy Simulator nói:

Hành động này không hỗ trợ quyền cấp tài nguyên. Chính sách cấp quyền truy cập phải chỉ định "*" trong thành phần tài nguyên.

Nó trông như thế này:

ảnh chụp màn hình.

Tất cả "được phép" và "bị từ chối" đều giống nhau, vì vậy tôi đã thu gọn chúng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.