Mit IAM dem Benutzer erlauben, AWS / EC2-Sicherheitsgruppen zu bearbeiten?

16

Ich versuche, einer IAM-Gruppe die Möglichkeit zum Bearbeiten unserer EC2-Sicherheitsgruppen zu gewähren, konnte dies jedoch nicht zum Funktionieren bringen, ohne Zugriff auf alles in EC2 zu gewähren.

Ich habe verschiedene Versionen davon ausprobiert:

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

Wenn ich mich jedoch mit dem IAM-Benutzer anmelde, wird auf der Seite "Sicherheitsgruppe" die Meldung "Sie sind nicht berechtigt, diesen Vorgang auszuführen" angezeigt.

Ich weiß, dass der Benutzer / die Gruppe arbeitet, da der Benutzer bei Auswahl der IAM-Richtlinienvorlage für "Amazon EC2-Vollzugriff" auf alles in EC2 zugreifen kann.

Ich habe offensichtlich nicht viel Erfahrung mit IAM, jede Hilfe wäre sehr dankbar.

Chris
quelle

Antworten:

13

Damit dies funktioniert, müssen Sie explizit Folgendes ERLAUBEN:

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

Die oben genannte JSON-Richtlinie legt grundsätzlich fest, dass der Benutzer NUR Zugriff auf die oben genannten Informationen hat. Sie haben KEINEN Zugriff auf etwas anderes. Dazu gehören ec2-Instanzen, S3, IAM, Cloudfront usw.

Scott Moore
quelle
1
Das hat funktioniert. Danke. Der Benutzer kann alle Instanzdaten sehen, aber nicht starten / stoppen / erstellen, sodass dies nah genug ist. Denken Sie, dass es eine Möglichkeit gibt, genau anzugeben, auf welche Sicherheitsgruppen sie zugreifen können, oder muss ich sie für alle Sicherheitsgruppen offen lassen?
Chris
@ DevMan14 Gibt es also eine Möglichkeit, bestimmte Sicherheitsgruppen anzugeben? Wenn ich eine Sekunde versuche, funktioniert die unten aufgeführte Ressource nicht und mit diesem Code kann jemand aws ec2 describe-security-groups verwenden und ein
paar
1
Wenn Sie EC2ResponseError: 403 Forbidden Errors kurz nach dem Einrichten / Ändern Ihrer Richtlinie sehen, beachten Sie, dass es einige Minuten
gedauert hat,
12

Wenn Sie die Bearbeitung auf eine einzelne Sicherheitsgruppe beschränken möchten, sind meines Erachtens 2 Anweisungen erforderlich, die folgenden haben bei mir funktioniert:

{
    "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 wird möglicherweise nicht benötigt, aber in meinem Fall wollte ich es, habe es also nicht ohne getestet

Guillaume Gros
quelle
1
Ich konnte SG-Regeln ohne die DescirbeInstance-Regeln bearbeiten . ZB die globalen * Optionen werden nur gesetzt als: "ec2:DescribeNetworkAcls", "ec2:DescribeSecurityGroups"
storm_m2138
1

Ihre Sicherheitsgruppe wird möglicherweise von einer Instanz oder einer anderen EC2-Ressource verwendet. Kannst du es versuchen:

{
  "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
quelle
Vielen Dank für die Antwort, aber das hat nicht funktioniert. Ja, die Sicherheitsgruppen werden von mehreren Instanzen verwendet. Ist es wichtig, dass es sich um "EC2-Sicherheitsgruppen" und nicht um "VPC-Sicherheitsgruppen" handelt? - ODER vielleicht mache ich etwas anderes falsch, weil dies dem Benutzer auch nicht erlaubt, die Instanzen zu sehen, was ich zur Hälfte erwartet habe.
Chris
1

Ich suchte nach einer Antwort auf eine Frage , die @ nsij22 in den Kommentaren der akzeptierten Antwort gestellt hat. Schaut leider so aus ist das nicht möglich. Laut IAM Policy Simulator können nur die folgenden Aktionen aus der Antwort von @ DevMan14 mit bestimmten Ressourcen verwendet werden:

  • DeleteSecurityGroup
  • AuthorizeSecurityGroupEgress
  • AuthorizeSecurityGroupIngress
  • RevokeSecurityGroupEgress
  • RevokeSecurityGroupIngress

Für alles andere sagt IAM Policy Simulator:

Diese Aktion unterstützt keine Berechtigungen auf Ressourcenebene. Richtlinien, die Zugriff gewähren, müssen im Ressourcenelement "*" angeben.

Es sieht aus wie das:

Bildschirmfoto.

Alle "erlaubten" und "verweigerten" sind gleich, also habe ich sie reduziert.

selurvedu
quelle