Direkt zum Inhalt

Wie erstelle ich eine IAM-Richtlinie, um explizit Berechtigungen zum Erstellen und Verwalten von EC2-Instances in einer angegebenen VPC mit Tags zu gewähren?

Lesedauer: 4 Minute
0

Ich möchte eine AWS Identity and Access Management (IAM)-Richtlinie erstellen, die IAM-Identitäten explizit Berechtigungen zur Verwaltung von Amazon Elastic Compute Cloud (Amazon EC2)-Instances in einer Virtual Private Cloud (VPC) gewährt.

Kurzbeschreibung

Die IAM-Richtlinie muss die Berechtigungen der IAM-Identität zur Verwaltung der Instances in der VPC einschränken, die über Tags verfügen.

Amazon EC2 bietet teilweise Berechtigungen auf Ressourcenebene, aber es gibt mehrere Aktionen, Ressourcen und Bedingungen auf Service-Ebene, die du verwenden kannst. Verwende Ressourcen-Tags, um den Zugriff auf EC2-Ressourcen zu steuern.

Behebung

Erstelle eine Richtlinie, die Berechtigungen zum Starten der Instances in der VPC gewährt, aber die Berechtigungen der IAM-Identität zur Verwaltung der Instances einschränkt. Verwende die Richtlinienbedingung ec2:ResourceTag, um die Verwaltung von Instances einzuschränken.

Verwaltete Richtlinie zum Anhängen an die IAM-Identitäten erstellen, die deine Instances starten

Führe die folgenden Schritte aus:

  1. Öffne die IAM-Konsole.

  2. Wähle Richtlinien und dann Richtlinie erstellen.

  3. Wähle die Registerkarte JSON aus und gib dann die folgende benutzerdefinierte Richtlinie ein:

    {  "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "GrantIAMPassRoleOnlyForEC2",
          "Action": [
            "iam:PassRole"
          ],
          "Effect": "Allow",
          "Resource": [
            "arn:aws:iam::account_number:role/role_name",
            "arn:aws:iam::account_number:role/role_nameE"
          ],
          "Condition": {
            "StringEquals": {
              "iam:PassedToService": "ec2.amazonaws.com"
            }
          }
        },
        {
          "Sid": "ReadOnlyEC2WithNonResource",
          "Action": [
            "ec2:Describe*",
            "iam:ListInstanceProfiles"
          ],
          "Effect": "Allow",
          "Resource": "*"
        },
        {
          "Sid": "ModifyingEC2WithNonResource",
          "Action": [
            "ec2:CreateKeyPair",
            "ec2:CreateSecurityGroup"
          ],
          "Effect": "Allow",
          "Resource": "*"
        },
        {
          "Sid": "RunInstancesWithTagRestrictions",
          "Effect": "Allow",
          "Action": "ec2:RunInstances",
          "Resource": [
            "arn:aws:ec2:region:a:instance/*",
            "arn:aws:ec2:region:account_number:volume/*"
          ],
          "Condition": {
            "StringEquals": {
              "aws:RequestTag/TAG-KEY": "tag_value"
            }
          }
        },
        {
          "Sid": "RemainingRunInstancePermissionsNonResource",
          "Effect": "Allow",
          "Action": "ec2:RunInstances",
          "Resource": [
            "arn:aws:ec2:REGION::image/*",
            "arn:aws:ec2:REGION::snapshot/*",
            "arn:aws:ec2:region:account_number:network-interface/*",
            "arn:aws:ec2:region:account_number:key-pair/*",
            "arn:aws:ec2:region:account_number:security-group/*"
          ]
        },
        {
          "Sid": "EC2RunInstancesVpcSubnet",
          "Effect": "Allow",
          "Action": "ec2:RunInstances",
          "Resource": "arn:aws:ec2:region:account_number:subnet/*",
          "Condition": {
            "StringEquals": {
              "ec2:Vpc": "arn:aws:ec2:region:account_number:vpc/VPC-ID"
            }
          }
        },
        {
          "Sid": "EC2VpcNonResourceSpecificActions",
          "Effect": "Allow",
          "Action": [
            "ec2:DeleteNetworkAcl",
            "ec2:DeleteNetworkAclEntry",
            "ec2:DeleteRoute",
            "ec2:DeleteRouteTable",
            "ec2:AuthorizeSecurityGroupEgress",
            "ec2:AuthorizeSecurityGroupIngress",
            "ec2:RevokeSecurityGroupEgress",
            "ec2:RevokeSecurityGroupIngress",
            "ec2:DeleteSecurityGroup",
            "ec2:CreateNetworkInterfacePermission",
            "ec2:CreateRoute",
            "ec2:UpdateSecurityGroupRuleDescriptionsEgress",
            "ec2:UpdateSecurityGroupRuleDescriptionsIngress"
          ],
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "ec2:Vpc": "arn:aws:ec2:region:account_number:vpc/VPCID"
            }
          }
        },
        {
          "Sid": "AllowInstanceActionsTagBased",
          "Effect": "Allow",
          "Action": [
            "ec2:RebootInstances",
            "ec2:StopInstances",
            "ec2:TerminateInstances",
            "ec2:StartInstances",
            "ec2:AttachVolume",
            "ec2:DetachVolume",
            "ec2:AssociateIamInstanceProfile",
            "ec2:DisassociateIamInstanceProfile",
            "ec2:GetConsoleScreenshot",
            "ec2:ReplaceIamInstanceProfileAssociation"
          ],
          "Resource": [
            "arn:aws:ec2:region:account_number:instance/*",
            "arn:aws:ec2:region:account_number:volume/*"
          ],
          "Condition": {
            "StringEquals": {
              "ec2:ResourceTag/TAG-KEY": "Tag_key"
            }
          }
        },
        {
          "Sid": "AllowCreateTagsOnlyLaunching",
          "Effect": "Allow",
          "Action": [
            "ec2:CreateTags"
          ],
          "Resource": [
            "arn:aws:ec2:region:account_number:instance/*",
            "arn:aws:ec2:region:account_number:volume/*"
          ],
          "Condition": {
            "StringEquals": {
              "ec2:CreateAction": "RunInstances"
            }
          }
        }
      ]
    }

    Hinweis: Ersetze die Parameter account_number, region,tag_key, tag_value,VPC-ID und role_name durch deine Werte.

  4. Wähle Richtlinie überprüfen aus und gib dann einen Namen ein.

  5. Wähle Richtlinie erstellen aus.
    Hinweis: Du musst einige Elemente durch bestimmte Ressourcen aus deiner Umgebung ersetzen. Weitere Informationen findest du unter AWS-Ressourcen mit Amazon-Ressourcennamen (ARNs) identifizieren.

Richtlinie an eine Gruppe anhängen

Führe die folgenden Schritte aus:

  1. Öffne die IAM-Konsole.
  2. Wähle im Navigationsbereich Benutzergruppen und dann den Gruppennamen aus.
    Hinweis: Es hat sich bewährt, Richtlinien an Benutzergruppen anzuhängen und den Benutzer dann der entsprechenden Gruppe hinzuzufügen.
  3. Wähle Berechtigungen hinzufügen und dann Richtlinien anhängen aus.
  4. Gib den Namen der Richtlinie ein und wähle dann deine Richtlinie aus.
  5. Wähle Richtlinie anhängen aus.

Wenn du die benutzerdefinierte Richtlinie anhängst, kann die IAM-Identität auf die AWS-Managementkonsole zugreifen. Die IAM-Identität kann dann das EC2-Dashboard öffnen und eine EC2-Instance starten. Die IAM-Identität muss das Subnetz, die VPC und das Tag angeben, um die EC2-Instance zu starten.

Die Bedingung ec2:ResourceTags schränkt die folgenden Aktionen ein:

  • Eine Instance starten.
  • Eine Instance stoppen.
  • Eine Instance neustarten.
  • Eine Instance beenden.
  • Ein Volume an die Instance anhängen.
  • Ein Volume von der Instance trennen.
  • Trennen des IAM-Instance-Profils von der Instance.
  • Ein Instance-Profil zuordnen.
  • Die IAM-Instance-Profilzuordnung für die Instance ersetzen.
  • Einen Konsolen-Screenshot der Instance abrufen.

Die Richtlinie schränkt die folgenden Aktionen gegen die VPC ein:

  • Sicherheitsgruppen löschen.
  • Routen erstellen und löschen.
  • Routing-Tabellen löschen.
  • Gültige Netzwerk-Zugriffskontrolllisten (Netzwerk-ACL) löschen.
  • Netzwerk-ACL-Einträge löschen.
  • Regeln für eingehenden und ausgehenden Zugriff von Sicherheitsgruppen autorisieren oder widerrufen.
  • Netzwerkschnittstellenberechtigungen erstellen.
  • Sicherheitsgruppenbeschreibung für Eingangs- und Ausgangsregeln aktualisieren.

Ähnliche Informationen

Wie steuern die Bedingungsschlüssel PrincipalTag, ResourceTag, RequestTag und TagKeys den Zugriff in IAM-Richtlinien?

Elemente der IAM-Richtlinie: Variablen und Tags

Anzeigename und Pfad