Kullanıcının AWS / EC2 Güvenlik Gruplarını Düzenlemesine İzin Vermek İçin IAM Kullanılsın mı?


16

Bir IAM grubuna EC2 Güvenlik Gruplarımızı düzenleme yeteneği vermeye çalışıyorum, ancak EC2'deki her şeye erişim izni vermeden bu çalışmayı başaramadım.

Bunun birkaç sürümünü denedim:

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

Ancak IAM kullanıcısıyla giriş yaptığımda, Güvenlik Grubu sayfasında "Bu işlemi gerçekleştirme yetkiniz yok" mesajını alıyorum.

"Amazon EC2 Tam Erişim" için IAM Politika Şablonu'nu seçersem, kullanıcı EC2'deki her şeye erişebildiğinden, kullanıcının / grubun çalıştığını biliyorum.

Açıkçası IAM ile çok fazla deneyimim yok, herhangi bir yardım büyük mutluluk duyacağız.

Yanıtlar:


13

Bunun çalışması için aşağıdakileri açıkça İZİN VERmeniz gerekir:

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

Yukarıdaki JSON politikası temel olarak kullanıcının SADECE yukarıdakilere erişimi olduğunu şart koşar. Başka bir şeye erişemeyecekler. Buna ec2 örnekleri, S3, IAM, cloudfront vb. Dahildir.


1
Bu çalıştı. Teşekkür ederim. Kullanıcı tüm Örnek verilerini görebilir ancak başlatamaz / durduramaz / oluşturamaz, bu yüzden yeterince yakındır. Hangi Güvenlik Gruplarına tam olarak erişebileceklerini belirtmenin bir yolu olduğunu mu düşünüyorsunuz yoksa tüm Güvenlik Gruplarına açık bırakmam gerekiyor mu?
Chris

@ DevMan14 özel güvenlik gruplarını belirtmenin bir yolu var mı? i gibi bir kaynak deneyin aşağıdaki gibi çalışmıyor ve bu kod ile, birisi aws ec2 tanımlamak-güvenlik-grupları kullanmak ve her güvenlik grubu hakkında adil bir bilgi almak mümkün
nsij22

1
EC2ResponseError: 403 Yasak hatalar görüyorsanız , politikanızı oluşturduktan / değiştirdikten kısa bir süre sonra, politikamın yürürlüğe girmesinin birkaç dakika sürdüğünü unutmayın
storm_m2138

12

Düzenlemeyi tek bir güvenlik grubuyla sınırlamak istiyorsanız, 2 ifadeye ihtiyacınız olduğunu düşünüyorum, aşağıdakiler benim için çalıştı:

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

Anlayış gerekli olmayabilir, ancak benim durumumda bunu istedim, bu yüzden onsuz test etmedim


1
SG kurallarını DescirbeInstance kuralları olmadan düzenleyebildim . Örneğin, global * seçenekler yalnızca şu şekilde ayarlanır: "ec2:DescribeNetworkAcls", "ec2:DescribeSecurityGroups"
storm_m2138

1

Güvenlik grubunuz belki bir örnek veya başka bir EC2 kaynağı tarafından kullanılıyor gibi görünüyor. Deneyebilir misin:

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

Cevabınız için teşekkür ederim ama işe yaramadı. Evet, güvenlik grupları birden fazla örnek tarafından kullanılıyor - "VPC Güvenlik Grupları" değil "EC2 Güvenlik Grupları" olmaları önemli mi? - VEYA belki başka bir şey yanlış yapıyorum çünkü bu, kullanıcının yapmasını beklediğim Örnekleri de görmesine izin vermiyor.
Chris

1

Ben bir yanıtı bulmaya soruya o @ nsij22 kabul cevabım yorumlarında istedi. Ne yazık ki, bu mümkün değil gibi görünüyor. Göre IAM Politikası Simülatörü dan sadece aşağıdaki eylemleri DevMan14 @ 'ın cevabı belli kaynaklarla kullanılabilir:

  • DeleteSecurityGroup
  • AuthorizeSecurityGroupEgress
  • AuthorizeSecurityGroupIngress
  • RevokeSecurityGroupEgress
  • RevokeSecurityGroupIngress

Diğer her şey için, IAM Policy Simulator şunları söylüyor:

Bu eylem, kaynak düzeyinde izinleri desteklemez. Erişim izni veren politikalar, kaynak öğede "*" belirtmelidir.

Şöyle görünüyor:

ekran görüntüsü.

Tüm "izin verilen" ve "reddedilen" aynıdır, bu yüzden onları daralttım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.