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?
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 Sie verwenden können. Verwenden Sie Ressourcen-Tags, um den Zugriff auf EC2-Ressourcen zu steuern.
Behebung
Erstellen Sie 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. Verwenden Sie die Richtlinienbedingung ec2:ResourceTag, um die Verwaltung von Instances einzuschränken.
Erstellen einer verwalteten Richtlinie zum Anhängen an die IAM-Identitäten, die Ihre Instances starten
Führen Sie die folgenden Schritte aus:
-
Öffnen Sie die IAM-Konsole, wählen Sie Richtlinien und dann Richtlinie erstellen aus.
-
Wählen Sie die Registerkarte JSON und geben Sie dann die folgende benutzerdefinierte Richtlinie ein:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GrantIAMPassRoleOnlyForEC2", "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": [ "arn:aws:iam::ACCOUNTNUMBER:role/ROLENAME", "arn:aws:iam::ACCOUNTNUMBER:role/ROLENAME" ], "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:ACCOUNTNUMBER:instance/*", "arn:aws:ec2:REGION:ACCOUNTNUMBER: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:ACCOUNTNUMBER*:network-interface/*", "arn:aws:ec2:REGION:ACCOUNTNUMBER*:key-pair/*", "arn:aws:ec2:REGION:ACCOUNTNUMBER*:security-group/*" ] }, { "Sid": "EC2RunInstancesVpcSubnet", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:REGION:ACCOUNTNUMBER:subnet/*", "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:REGION:ACCOUNTNUMBER: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:ACCOUNTNUMBER:vpc/VPC-ID" } } }, { "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:ACCOUNTNUMBER:instance/*", "arn:aws:ec2:REGION:ACCOUNTNUMBER:volume/*" ], "Condition": { "StringEquals": { "ec2:ResourceTag/TAG-KEY": "TAG-VALUE" } } }, { "Sid": "AllowCreateTagsOnlyLaunching", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:REGION:ACCOUNTNUMBER:instance/*", "arn:aws:ec2:REGION:ACCOUNTNUMBER:volume/*" ], "Condition": { "StringEquals": { "ec2:CreateAction": "RunInstances" } } } ] }
Hinweis: Ersetzen Sie die Parameter ACCOUNTNUMBER, REGION, TAG-KEY, TAG-VALUE, VPC-ID und ROLENAME durch Ihre Werte.
-
(Optional) Um die Richtlinie nur IAM-Benutzern oder -Gruppen zuzuweisen, ersetzen Sie die Parameter TAG-KEY oder TAG-VALUE durch die IAM-Richtlinienvariable ${aws:username}. Diese Richtlinienvariable ermöglicht es IAM, die Parameter vorab mit dem Anzeigenamen des IAM-Benutzers auszufüllen. IAM-Benutzer können eine Instance nur in der angegebenen VPC starten und ihre eigenen Instances steuern.
-
Wählen Sie Richtlinie überprüfen aus, und geben Sie dann einen Namen ein. Geben Sie beispielsweise VPC_Lockdown_VPC-ID ein.
-
Wählen Sie Richtlinie erstellen.
Hinweis: Sie müssen einige Element durch bestimmte Ressourcen aus Ihrer Umgebung ersetzen. Weitere Informationen finden Sie unter Amazon Resource Names (ARNs).
Die Richtlinie einem Benutzer, einer Gruppe oder Rolle zuordnen
Führen Sie die folgenden Schritte aus:
- Öffnen Sie die IAM-Konsole.
- Wählen Sie im Navigationsbereich Benutzer, Gruppen oder Rollen und dann die IAM-Identität aus.
- Wählen Sie Berechtigungen hinzufügen und dann Richtlinien anhängen aus.
- Geben Sie den Namen der Richtlinie ein, und wählen Sie dann Ihre Richtlinie aus.
- Wählen Sie Richtlinie anhängen aus.
Wenn die benutzerdefinierte Richtlinie angehängt ist, kann sich die IAM-Identität bei der AWS-Managementkonsole anmelden, 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
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 10 Monaten
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 3 Jahren