Wie schränke ich den Zugriff ein, sodass Benutzer Amazon EC2 Instances nur von markierten AMIs aus starten?

Lesedauer: 3 Minute
0

Ich möchte den Zugriff der Benutzer einschränken, sodass sie Amazon Elastic Compute Cloud (Amazon EC2) Instances nur von markierten Amazon Machine Images (AMIs) aus starten können.

Behebung

Um den Zugriff so einzuschränken, dass Benutzer EC2 Instances nur von markierten AMIs aus starten, führe eine der folgenden Aktionen aus:

  • Erstelle ein AMI aus einer vorhandenen Instance.
  • Verwende ein vorhandenes AMI und füge dem AMI dann ein Tag hinzu.

Erstelle dann eine benutzerdefinierte AWS Identity and Access Management (IAM)-Richtlinie. Die IAM-Richtlinie verwendet eine Tag-Bedingung, die Benutzerberechtigungen einschränkt, um nur Instances zu starten, die das markierte AMI verwenden.

In der folgenden Beispiel-IAM-Richtlinie werden diese SID-Werte (Statement-ID) verwendet:

  • ReadOnlyAccess erlaubt Benutzern, mithilfe von Describe* alle EC2-Ressourcen in deinem Konto einzusehen. Damit werden alle EC2-Aktionen eingeschlossen, die mit Describe beginnen. Mit ReadOnlyAccess können Benutzer außerdem Konsolenausgaben und -Screenshots einer EC2 Instance abrufen. Die Amazon-CloudWatch-Berechtigungen für DescribeAlarms und GetMetricStatistics ermöglichen die Anzeige grundlegender Zustandsinformationen über Instances in der Amazon-EC2-Konsole. Die IAM-Berechtigung für ListInstanceProfiles ermöglicht die Anzeige der vorhandenen Instance-Profile in der IAM-Rollenliste. Die IAM-Rollenliste wird auf der Seite Instance-Details konfigurieren angezeigt, wenn du eine Instance startest. Die ListInstanceProfiles API erlaubt Benutzern jedoch nicht, eine IAM-Rolle an eine EC2 Instance anzufügen.
  • ActionsRequiredToRunInstancesInVPC gewährt Benutzern die Erlaubnis, die RunInstances API auszuführen. Du kannst jede Instance, jedes Schlüsselpaar, jede Sicherheitsgruppe, jedes Volume, jede Netzwerkschnittstelle oder jedes Subnetz in der AWS-Region us-east-1 verwenden. Berechtigungen auf Ressourcenebene geben den ARN für jede Ressource an.
  • **LaunchingEC2WithAmisAndTags ** ermöglicht es Benutzern, ein AMI zum Starten von Instances zu verwenden. Das AMI muss über ein Environment Tag mit dem Wert Prod in der Region us-east-1 verfügen. Die Berechtigung auf Ressourcenebene wird für jedes AMI, das sich in der Region us-east-1 befindet, auf einen ARN gesetzt. Die Bedingung entspricht dem Wert des ec2:ResourceTag/Environment-Tag-Schlüssels und des Prod-Schlüsselwerts.

Die folgende IAM-Richtlinie verwendet unterstützte Berechtigungen auf Ressourcenebene für die Ressourcen, die für die RunInstances-API-Aktion erforderlich sind.

Hinweis :

  • Diese Richtlinie ermöglicht es Benutzern, Rollen aufzulisten, wenn sie eine Instance starten. Benutzer können eine Instance mit einer angehängten Rolle jedoch nur starten, wenn sie über die iam:PassRole-Berechtigung verfügen.
  • Diese Richtlinie erlaubt Benutzern nicht, neue Sicherheitsgruppen zu erstellen. Benutzer müssen eine vorhandene Sicherheitsgruppe auswählen, um eine EC2-Instance zu starten, sofern sie nicht über die EC2-Berechtigung CreateSecurityGroup verfügen. Die EC2:CreateSecurityGroup-API-Aktion gewährt Zugriff, um nur eine Sicherheitsgruppe zu erstellen. Durch die Aktion werden keine Regeln hinzugefügt oder geändert. Um Regeln für eingehenden Datenverkehr hinzuzufügen, benötigen Benutzer Berechtigungen für die EC2-API-Aktion für eingehenden Datenverkehr AuthorizeSecurityGroupIngress und die EC2-API-Aktion für ausgehenden Datenverkehr AuthorizeSecurityGroupEgress.
  • Diese Richtlinie erlaubt Benutzern nicht, den Instance-Namen anzuhängen oder Tags zu ändern und an die EC2-Instance-Ressource anzuhängen. Sofern Benutzer beim Erstellen der Instance nicht über die CreateTags-Berechtigung verfügen, müssen Benutzer die Tags und den Namen leer lassen.
{  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ReadOnlyAccess",
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "ec2:GetConsole*",
        "cloudwatch:DescribeAlarms",
        "cloudwatch:GetMetricStatistics",
        "iam:ListInstanceProfiles"
      ],
      "Resource": "*"
    },
    {
      "Sid": "ActionsRequiredtoRunInstancesInVPC",
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
        "arn:aws:ec2:us-east-1:AccountId:instance/*",
        "arn:aws:ec2:us-east-1:AccountId:key-pair/*",
        "arn:aws:ec2:us-east-1:AccountId:security-group/*",
        "arn:aws:ec2:us-east-1:AccountId:volume/*",
        "arn:aws:ec2:us-east-1:AccountId:network-interface/*",
        "arn:aws:ec2:us-east-1:AccountId:subnet/*"
      ]
    },
    {
      "Sid": "LaunchingEC2withAMIsAndTags",
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "arn:aws:ec2:us-east-1::image/ami-*",
      "Condition": {
        "StringEquals": {
          "ec2:ResourceTag/Environment": "Prod"
        }
      }
    }
  ]
}
AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr