Durch die Nutzung von AWS re:Post stimmt du den AWS re:Post Nutzungsbedingungen

Wie kann ich IAM-Richtlinien-Tags verwenden, um einzuschränken, wie eine EC2-Instance oder ein EBS-Volume erstellt und darauf zugegriffen werden kann?

Lesedauer: 5 Minute
0

Ich möchte Identitäten von AWS Identity and Access Management (IAM) Zugriff gewähren, um neue Amazon Elastic Compute Cloud (Amazon EC2)-Instances zu starten. Ich möchte IAM-Identitäten auch den Zugriff ermöglichen, um neue Amazon Elastic Block Store (Amazon EBS)-Volumes zu erstellen, wenn sie bestimmte Tags anwenden.

Kurzbeschreibung

Geben Sie Tags für EC2-Instances und Amazon EBS-Volumes als Teil des API-Aufrufs an, der die Ressourcen erstellt. Wenden Sie Bedingungen auf die IAM-Richtlinie an, um IAM-Benutzer dazu zu verpflichten, bestimmte Ressourcen zu kennzeichnen.

Die folgenden Beispielrichtlinien erlauben es Benutzern nicht, Sicherheitsgruppen oder Schlüsselpaare zu erstellen. Daher müssen Benutzer vorhandene Sicherheitsgruppen und Schlüsselpaare auswählen.

Die folgenden Beispiel-IAM-Richtlinien ermöglichen Benutzern das Starten von Instances mit den folgenden Konfigurationen:

  • Passende Tag-Schlüssel und -Werte
  • Mindestens ein passendes Tag und ein passender Wert
  • Mindestens ein passender Tag-Schlüssel
  • Nur die angegebene Liste von Tags

Mit den IAM-Beispielrichtlinien können Benutzer auch Instances und Volumes verwalten, die über übereinstimmende Tag-Schlüssel und -Werte verfügen.

**Hinweis:**Um die Beispielrichtlinien zu verwenden, ersetzen Sie die Beispielwerte durch Ihre Werte.

Lösung

Beschränken Sie die Erstellung von EC2-Instances und EBS-Volumes auf der Grundlage von Tags

Die folgenden Beispielrichtlinien ermöglichen es einem Benutzer, eine Instance zu starten und ein Volume auf der Grundlage von Tags zu erstellen.

Starten Sie EC2-Instances mit passenden Tag-Schlüsseln und -Werten

In der folgenden Beispielrichtlinie steuert die Bedingung RequestTag die Tag-Durchsetzung. Wenn der Benutzer ein Tag anwendet, das nicht in der Richtlinie enthalten ist, wird die Aktion verweigert. Um die Berücksichtigung der Groß- und Kleinschreibung zu erzwingen, verwenden Sie die Bedingung aws:TagKeys:

{  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowToDescribeAll",
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowRunInstances",
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
        "arn:aws:ec2:*::image/*",
        "arn:aws:ec2:*::snapshot/*",
        "arn:aws:ec2:*:*:subnet/*",
        "arn:aws:ec2:*:*:network-interface/*",
        "arn:aws:ec2:*:*:security-group/*",
        "arn:aws:ec2:*:*:key-pair/*"
      ]
    },
    {
      "Sid": "AllowRunInstancesWithRestrictions",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateVolume",
        "ec2:RunInstances"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:ec2:*:*:instance/*",
        "arn:aws:ec2:*:*:network-interface/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/key1": "value1",
          "aws:RequestTag/key2": "value2"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "key1",
            "key2"
          ]
        }
      }
    },
    {
      "Sid": "AllowCreateTagsOnlyLaunching",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:ec2:*:*:instance/*",
        "arn:aws:ec2:*:*:network-interface/*"
      ],
      "Condition": {
        "StringEquals": {
          "ec2:CreateAction": [
            "RunInstances",
            "CreateVolume"
          ]
        }
      }
    }
  ]
}

Wichtig: Um EC2-Instances erfolgreich zu starten, muss die vorherige Richtlinie übereinstimmende Tag-Schlüssel und -Werte enthalten. Wenn die Schlüssel- und Wertepaare nicht übereinstimmen, erhalten Sie die Fehlermeldung Start fehlgeschlagen oder eine ähnliche API-Fehlermeldung.

Beispielergebnisse

Schlüssel/WertErgebnis
key1/value1 und key2/value2zulassen
key1/value1ablehnen
key1/value2ablehnen
keine Schlüssel und Werteablehnen

Starten Sie EC2-Instances, die über mindestens einen passenden Tag-Schlüssel verfügen

Ersetzen Sie in der folgenden Beispielrichtlinie den Bedingungsblock AllowRunInstancesWithRestrictions, wenn mindestens ein Tag-Schlüssel den Namen key1 hat. Für das key1-Tag ist kein bestimmter Wert erforderlich, und Sie können der Anforderung RunInstances Tags hinzufügen:

"Condition": {  "StringEquals": {
    "aws:RequestTag/key1": "value1"
  },
  "ForAnyValue:StringEquals": {
    "aws:TagKeys": [
      "key1"
    ]
  }
}

Beispielergebnisse

Schlüssel/WertErgebnis
key1/value1 und key2/value2zulassen
key1/value1zulassen
key1/value2zulassen
keine Schlüssel und Werteablehnen

Starten Sie EC2-Instances, die nur die angegebene Liste von Tags haben

Ersetzen Sie in der folgenden Beispielrichtlinie den Bedingungsblock AllowRunInstancesWithRestrictions, wenn die Tag-Schlüssel key1 und key2 in der Anforderung bereitgestellt werden. Für keinen der Tag-Schlüssel ist ein bestimmter Wert erforderlich, und Sie können der Anforderung RunInstances keine Tags hinzufügen:

"Condition": {  "StringLike": {
      "aws:RequestTag/key1": "*",
      "aws:RequestTag/key2": "*"
  },
  "ForAllValues:StringEquals": {
    "aws:TagKeys": [
        "key1",
        "key2"
    ]
  }
}

**Hinweis:**In der vorherigen Richtlinie ist die Bedingung StringLike erforderlich, damit die Werte Platzhalter für Übereinstimmungen mit mehreren Zeichen (*) enthalten können.

Beispielergebnisse

Schlüssel/WertErgebnis
key1/AnyValue und key2/AnyValueZulassen
key1/AnyValueAblehnen
key2/AnyValueAblehnen
Keine Schlüssel oder WerteAblehnen
key1/AnyValue, key2/AnyValue, key3/AnyValueAblehnen

Beschränken des EC2-Instance- und EBS-Volume-Managements auf der Grundlage von Tag-Schlüsseln und -Werten

Die folgenden Beispielrichtlinien schränken die Benutzerverwaltung von Instances und Volumes auf der Grundlage von Tag-Schlüsseln und -Werten ein.

Verwalten von EC2-Instances, die passende Tag-Schlüssel und -Werte haben

Die folgende Beispielrichtlinie beschränkt den Zugriff auf eine IAM-Identität auf das Starten, Stoppen oder Neustarten von EC2-Instances. Die Instance muss einen Schlüssel-Tag Eigentümer mit dem Tag-Wert Bob haben:

{  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:Describe*",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:StartInstances",
        "ec2:StopInstances",
        "ec2:RebootInstances"
      ],
      "Resource": [
        "arn:aws:ec2:*:111122223333:instance/*"
      ],
      "Condition": {
        "StringEquals": {
          "ec2:ResourceTag/Owner": "Bob"
        }
      }
    }
  ]
}

Hinweis: Ersetzen Sie Eigentümer durch Ihren Tag-Schlüssel, Bob durch den Namen Ihres IAM-Benutzers und den Ressourcen-ARN durch den ARN Ihrer Ressource.

Weitere Informationen finden Sie unter Kann ich den Zugriff einer IAM-Identität auf bestimmte Amazon-EC2-Ressourcen einschränken?

EBS-Volumes verwalten, die übereinstimmende Tag-Schlüssel und -Werte haben

Die folgende Beispielrichtlinie ermöglicht es der IAM-Identität, ein EBS-Volume zu trennen oder zu löschen. Für die API-Aktion DeleteVolume muss das Volume einen Tag-Schlüssel Eigentümer mit dem Tag-Wert Mary haben. Für die API-Aktion DetachVolume müssen sowohl die Instance als auch das Volume denselben Tag-Schlüssel Eigentümer mit dem Tag-Wert Mary haben:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Action": [
                "ec2:DetachVolume",
                "ec2:DeleteVolume"
            ],
            "Resource": [
                "arn:aws:ec2:*:111122223333:volume/*",
                "arn:aws:ec2:*:111122223333:instance/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Owner": "Mary"
                }
            }
        }
    ]
}

Hinweis: Ersetzen Sie Eigentümer durch Ihren Tag-Schlüssel, Mary durch den Namen Ihres IAM-Benutzers und den Ressourcen-ARN durch den ARN Ihrer Ressource.

Ähnliche Informationen

Wie erstelle ich eine IAM-Richtlinie, um den Zugriff auf Amazon EC2-Ressourcen mithilfe von Tags zu steuern?

Beispiel für identitätsbasierte IAM-Richtlinien

Kennzeichnen Sie Ihre Amazon EC2-Ressourcen

Aktionen, Ressourcen und Bedingungsschlüssel für Amazon EC2

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Monaten