Gunakan IAM untuk Mengizinkan Pengguna Mengedit Grup Keamanan AWS / EC2?

16

Saya mencoba memberi kelompok IAM kemampuan untuk mengedit Grup Keamanan EC2 kami, tetapi saya tidak dapat membuatnya berfungsi tanpa memberikan akses ke semua yang ada di EC2.

Saya sudah mencoba beberapa versi:

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

Tetapi ketika saya login dengan pengguna IAM, saya mendapatkan pesan di halaman Security Group yang mengatakan "Anda tidak berwenang untuk melakukan operasi ini."

Saya tahu bahwa pengguna / grup berfungsi karena jika saya memilih Template Kebijakan IAM untuk "Amazon EC2 Full Access", pengguna dapat mengakses semua yang ada di EC2.

Saya jelas tidak memiliki banyak pengalaman dengan IAM, bantuan apa pun akan sangat dihargai.

Chris
sumber

Jawaban:

13

Agar ini berfungsi, Anda perlu MENGIZINKAN yang berikut secara eksplisit:

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

Kebijakan JSON di atas pada dasarnya menetapkan bahwa HANYA pengguna memiliki akses ke di atas. Mereka TIDAK akan memiliki akses ke hal lain. Itu termasuk instance EC2, S3, IAM, cloudfront, dll.

Scott Moore
sumber
1
Ini Berhasil. Terima kasih. Pengguna dapat melihat semua data Instance tetapi tidak dapat memulai / menghentikan / membuat, sehingga cukup dekat. Apakah Anda pikir ada cara untuk menyatakan dengan tepat Grup Keamanan mana yang dapat mereka akses, atau apakah saya harus membiarkannya terbuka untuk semua Grup Keamanan?
Chris
@ DevMan14 jadi adakah cara untuk menyatakan grup keamanan tertentu? ketika saya mencoba beberapa detik sumber daya seperti di bawah ini tidak berfungsi dan dengan kode ini, seseorang dapat menggunakan aws ec2 menggambarkan-keamanan-kelompok dan mendapatkan sedikit informasi tentang setiap grup keamanan
nsij22
1
Jika Anda melihat EC2ResponseError: 403 Kesalahan terlarang , tak lama setelah menyiapkan / memodifikasi kebijakan Anda, perhatikan bahwa perlu beberapa menit sebelum kebijakan saya berlaku
storm_m2138
12

Jika Anda ingin membatasi pengeditan pada grup keamanan tunggal, saya pikir Anda memerlukan 2 pernyataan, berikut ini berfungsi untuk saya:

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

JelaskanInstance mungkin tidak diperlukan tetapi dalam kasus saya saya menginginkannya, jadi belum diuji tanpa itu

Guillaume Gros
sumber
1
Saya dapat mengedit aturan SG tanpa aturan DescirbeInstance. Misalnya opsi global * hanya ditetapkan sebagai: "ec2:DescribeNetworkAcls", "ec2:DescribeSecurityGroups"
storm_m2138
1

Sepertinya grup keamanan Anda mungkin sedang digunakan oleh sebuah instance atau sumber daya EC2 lainnya. Bisakah kamu mencoba:

{
  "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/*"
      ]
    }
  ]
}
Rico
sumber
Terima kasih atas jawabannya tetapi itu tidak berhasil. Ya, grup keamanan sedang digunakan oleh beberapa kejadian - apakah penting bahwa mereka adalah "Grup Keamanan EC2" dan bukan "Grup Keamanan VPC"? - ATAU mungkin saya melakukan sesuatu yang salah karena ini tidak memungkinkan pengguna untuk melihat Mesin Virtual juga, yang saya setengah harapkan melakukannya.
Chris
1

Saya sedang mencari jawaban untuk pertanyaan yang @ nsij22 tanyakan dalam komentar jawaban yang diterima. Sayangnya, sepertinya itu tidak mungkin. Menurut Simulator Kebijakan IAM , hanya tindakan berikut dari jawaban @ DevMan14 yang dapat digunakan dengan sumber daya spesifik:

  • DeleteSecurityGroup
  • OtorisasiSecurityGroupEgress
  • OtorisasiSecurityGroupIngress
  • RevokeSecurityGroupEgress
  • RevokeSecurityGroupIngress

Untuk yang lainnya, Simulator Kebijakan IAM mengatakan:

Tindakan ini tidak mendukung izin tingkat sumber daya. Kebijakan yang memberikan akses harus menentukan "*" di elemen sumber daya.

Ini terlihat seperti ini:

tangkapan layar.

Semua "diizinkan" dan "ditolak" sama, jadi saya pisahkan mereka.

selurvedu
sumber