Verwenden von IAM-Richtlinienbedingungen für die differenzierte Zugriffskontrolle - Amazon EventBridge

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden von IAM-Richtlinienbedingungen für die differenzierte Zugriffskontrolle

Zum Erteilen von Berechtigungen geben Sie mithilfe der IAM-Richtliniensprache in einer Richtlinienanweisung die Bedingungen an, unter denen die Richtlinie wirksam werden soll. Beispielsweise kann festgelegt werden, dass eine Richtlinie erst ab einem bestimmten Datum gilt.

Eine Bedingung in einer Richtlinie besteht aus Schlüssel-Wert-Paaren. Bedingungsschlüssel unterscheiden nicht zwischen Groß- und Kleinschreibung.

Wenn Sie mehrere Bedingungen oder Schlüssel in einer einzelnen Bedingung angeben, müssen alle Bedingungen und Schlüssel erfüllt sein, damit EventBridge die Berechtigung erteilt. Wenn Sie eine einzelne Bedingung mit mehreren Werten für einen Schlüssel angeben, wird von EventBridge eine Genehmigung erteilt, wenn einer der Werte erfüllt ist.

Sie können Platzhalter oder Richtlinienvariablen verwenden, wenn Sie Bedingungen angeben. Weitere Informationen finden Sie unter Richtlinienvariablen im IAM-Benutzerhandbuch. Weitere Informationen zum Angeben von Bedingungen in einer IAM-Richtliniensprache finden Sie unter Bedingung im IAM-Benutzerhandbuch.

Standardmäßig können IAM-Benutzer und -Rollen nicht auf die Ereignisse in Ihrem Konto zugreifen. Damit Benutzer auf Ereignisse zugreifen können, müssen sie für die PutRule-API-Aktion autorisiert sein. Wenn IAM-Benutzer oder -Rollen für die events:PutRule-Aktion autorisiert sind, können diese eine Regel erstellen, die mit bestimmten Ereignissen übereinstimmt. Damit die Regel jedoch nützlich ist, muss der Benutzer auch über Berechtigungen für die events:PutTargets-Aktion verfügen, denn wenn Sie möchten, dass die Regel mehr kann als eine CloudWatch-Metrik zu veröffentlichen, müssen Sie auch ein Ziel zu einer Regel hinzufügen.

Sie können eine Bedingung in der Richtlinienanweisung eines IAM-Benutzers oder einer IAM-Rolle bereitstellen, mit der der Benutzer oder die Rolle eine Regel erstellen kann, die nur für eine bestimmte Gruppe von Quellen und bestimmte Ereignistypen gilt. Zum Gewähren von Zugriff auf bestimmte Quellen und Ereignistypen verwenden Sie die Bedingungsschlüssel events:source und events:detail-type.

Ebenso können Sie eine Bedingung in der Richtlinienanweisung eines IAM-Benutzers oder einer IAM-Rolle bereitstellen, mit der der Benutzer oder die Rolle eine Regel erstellen kann, die nur für eine bestimmte Ressource in Ihren Konten gilt. Zum Gewähren von Zugriff auf eine bestimmte Ressource verwenden Sie den Bedingungsschlüssel events:TargetArn.

Das folgende Beispiel ist eine Richtlinie, die es Benutzern ermöglicht, mithilfe einer Verweigerungsanweisung für die PutRule-API-Aktion auf alle Ereignisse außer Amazon-EC2-Ereignissen in EventBridge zuzugreifen.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyPutRuleForAllEC2Events", "Effect": "Deny", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEquals": { "events:source": "aws.ec2" } } } ] }

EventBridge-Bedingungsschlüssel

Die folgende Tabelle zeigt die Bedingungsschlüssel und Schlüssel-Wert-Paare, die Sie in einer Richtlinie in EventBridge verwenden können.

Bedingungsschlüssel Schlüssel-Wert-Paar Bewertungstypen

aws:SourceAccount

Das Konto, in dem die von aws:SourceArn angegebene Regel vorhanden ist.

Account Id, Null

aws:SourceArn

Der ARN der Regel, die das Ereignis sendet.

ARN, Null

events:creatorAccount

"events:creatorAccount":"creatorAccount"

Verwenden Sie für creatorAccount die Konto-ID für das Konto, das die Regel erstellt hat. Verwenden Sie diese Bedingung, um API-Aufrufe für Regeln aus einem bestimmten Konto zu autorisieren.

creatorAccount, Null

events:detail-type

"events:detail-type":"detail-type "

Dabei ist detail-type die Literalzeichenfolge für das Feld detail-type des Ereignisses, wie z. B. "AWS API Call via CloudTrail" und "EC2 Instance State-change Notification".

Detailtyp, Null

events:detail.eventTypeCode

"events:detail.eventTypeCode":"eventTypeCode"

Verwenden Sie für eventTypeCode die Literalzeichenfolge für das Feld detail.eventTypeCode des Ereignisses, wie z. B. "AWS_ABUSE_DOS_REPORT".

eventTypeCode, Null

events:detail.service

"events:detail.service":"service"

Verwenden Sie für service die Literalzeichenfolge für das Feld detail.service des Ereignisses, wie z. B. "ABUSE".

service, Null

events:detail.userIdentity.principalId

"events:detail.userIdentity.principalId":"principal-id"

Verwenden Sie für principal-id die Literalzeichenfolge für das Feld detail.userIdentity.principalId des Ereignisses mit dem Detailtyp "AWS API Call via CloudTrail", z. B. "AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName.".

Principal-ID, Null

events:eventBusInvocation

"events:eventBusInvocation":"boolean"

Verwenden Sie für boolean true, wenn eine Regel ein Ereignis an ein Ziel sendet, bei dem es sich um einen Event Bus in einem anderen Konto handelt. Verwenden Sie false, wenn ein PutEvents-API-Aufruf verwendet wird.

eventBusInvocation, Null

events:ManagedBy

Wird intern von AWS-Services verwendet. Für eine Regel, die von einem AWS-Service in Ihrem Namen erstellt wird, ist der Wert der Prinzipalname des Service, der die Regel erstellt hat.

Nicht für die Verwendung in Kundenrichtlinien vorgesehen.

events:source

"events:source":"source "

Verwenden Sie für source die Literalzeichenfolge für das Quellfeld des Ereignisses, wie z. B. "aws.ec2" und "aws.s3". Weitere mögliche Werte für source finden Sie in den Beispielereignissen in Ereignisse im Zusammenhang mit Dienstleistungen AWS.

Quelle, Null

events:TargetArn

"events:TargetArn":"target-arn "

Verwenden Sie für target-arn den ARN des Ziels für die Regel, z. B. "arn:aws:lambda:*:*:function:*".

ArrayOfARN, Null

Beispiele mit Richtlinienanweisungen für EventBridge finden Sie unter Verwalten der Zugriffsberechtigungen für Ihre Amazon-EventBridge-Ressourcen.

Einzelheiten zu EventBridge Pipes

EventBridge Pipes unterstützt keine zusätzlichen IAM-Richtlinienbedingungsschlüssel.

Beispiel: Verwenden der Bedingung creatorAccount

Das folgende Beispiel für eine Richtlinienanweisung zeigt, wie die Bedingung creatorAccount in einer Richtlinie verwendet wird, um die Erstellung von Regeln nur zuzulassen, wenn das als creatorAccount angegebene Konto das Konto ist, das die Regel erstellt hat.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleForOwnedRules", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEqualsIfExists": { "events:creatorAccount": "${aws:PrincipalAccount}" } } } ] }

Beispiel: Verwenden der Bedingung eventBusInvocation

Der eventBusInvocation gibt an, ob der Aufruf von einem kontoübergreifenden Ziel oder einer PutEvents-API-Anfrage stammt. Der Wert ist true, wenn der Aufruf aus einer Regel resultiert, die ein kontoübergreifendes Ziel beinhaltet, z. B. wenn es sich bei dem Ziel um einen Event Bus in einem anderen Konto handelt. Der Wert ist false, wenn der Aufruf aus einer PutEvents-API-Anfrage resultiert. Das folgende Beispiel zeigt einen Aufruf von einem kontoübergreifenden Ziel an.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountInvocationEventsOnly", "Effect": "Allow", "Action": "events:PutEvents", "Resource": "*", "Condition": { "BoolIfExists": { "events:eventBusInvocation": "true" } } } ] }

Beispiel: Einschränken des Zugriffs auf eine bestimmte Quelle

Folgende Beispielrichtlinien können einem IAM-Benutzer zugeordnet werden. Richtlinie A ermöglicht die PutRule-API-Aktion für alle Ereignisse, während Richtlinie B PutRule nur dann zulässt, wenn das Ereignismuster der erstellten Regel mit den Amazon-EC2-Ereignissen übereinstimmt.

Richtlinie A: alle Ereignisse zulassen

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleForAllEvents", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*" } ] }

Richtlinie B: nur Ereignisse von Amazon EC2 zulassen

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleForAllEC2Events", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEquals": { "events:source": "aws.ec2" } } } ] }

EventPattern ist ein obligatorisches Argument für PutRule. Wenn der Benutzer mit Richtlinie B PutRule mit einem Ereignismuster wie dem folgenden aufruft, gilt daher Folgendes.

{ "source": [ "aws.ec2" ] }

Die Regel würde erstellt werden, da die Richtlinie diese bestimmte Quelle zulässt, d. h. "aws.ec2". Wenn der Benutzer mit Richtlinie B jedoch PutRule mit einem Ereignismuster wie dem folgenden aufruft, wird die Erstellung der Regel abgelehnt, da die Richtlinie diese bestimmte Quelle nicht zulässt, d. h. "aws.s3".

{ "source": [ "aws.s3" ] }

Im Wesentlichen darf der Benutzer mit Richtlinie B nur eine Regel erstellen, die mit den Ereignissen aus Amazon EC2 übereinstimmt, weshalb er nur Zugriff auf die Ereignisse aus Amazon EC2 erhält.

In der folgenden Tabelle finden Sie einen Vergleich von Richtlinie A und Richtlinie B.

Ereignismuster Zulässig durch Richtlinie A Zulässig durch Richtlinie B
{ "source": [ "aws.ec2" ] }

Ja

Ja

{ "source": [ "aws.ec2", "aws.s3" ] }

Ja

Nein (die Quelle aws.s3 ist nicht zulässig)

{ "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance State-change Notification" ] }

Ja

Ja

{ "detail-type": [ "EC2 Instance State-change Notification" ] }

Ja

Keine (Quelle muss angegeben werden)

Beispiel: Definieren mehrerer Quellen, die einzeln in einem Ereignismuster verwendet werden können

Die folgende Richtlinie ermöglicht es einem IAM-Benutzer oder einer IAM-Rolle, eine Regel zu erstellen, deren Quelle im EventPattern entweder Amazon EC2 oder Amazon ECS ist.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleIfSourceIsEC2OrECS", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEquals": { "events:source": [ "aws.ec2", "aws.ecs" ] } } } ] }

Die folgende Tabelle zeigt einige Beispiele für Ereignismuster, die durch diese Richtlinie zugelassen oder abgelehnt werden.

Ereignismuster Zulässig durch die Richtlinie
{ "source": [ "aws.ec2" ] }

Ja

{ "source": [ "aws.ecs" ] }

Ja

{ "source": [ "aws.s3" ] }

Nein

{ "source": [ "aws.ec2", "aws.ecs" ] }

Nein

{ "detail-type": [ "AWS API Call via CloudTrail" ] }

Nein

Beispiel: Definieren einer Quelle und eines DetailType zur Verwendung in einem Ereignismuster

Mit der folgenden Richtlinie werden nur Ereignisse von der aws.ec2-Quelle mit dem DetailType gleich EC2 instance state change notification zugelassen.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleIfSourceIsEC2AndDetailTypeIsInstanceStateChangeNotification", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEquals": { "events:source": "aws.ec2", "events:detail-type": "EC2 Instance State-change Notification" } } } ] }

Die folgende Tabelle zeigt einige Beispiele für Ereignismuster, die durch diese Richtlinie zugelassen oder abgelehnt werden.

Ereignismuster Zulässig durch die Richtlinie
{ "source": [ "aws.ec2" ] }

Nein

{ "source": [ "aws.ecs" ] }

Nein

{ "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance State-change Notification" ] }

Ja

{ "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance Health Failed" ] }

Nein

{ "detail-type": [ "EC2 Instance State-change Notification" ] }

Nein

Beispiel: Sicherstellen, dass die Quelle im Ereignismuster definiert ist

Die folgende Richtlinie ermöglicht Benutzern nur das Erstellen von Regeln mit EventPatterns, die über ein Quellfeld verfügen. Mit dieser Richtlinie können IAM-Benutzer oder IAM-Rollen keine Regel mit einem EventPattern erstellen, das keine bestimmte Quelle angibt.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleIfSourceIsSpecified", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "Null": { "events:source": "false" } } } ] }

Die folgende Tabelle zeigt einige Beispiele für Ereignismuster, die durch diese Richtlinie zugelassen oder abgelehnt werden.

Ereignismuster Zulässig durch die Richtlinie
{ "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance State-change Notification" ] }

Ja

{ "source": [ "aws.ecs", "aws.ec2" ] }

Ja

{ "detail-type": [ "EC2 Instance State-change Notification" ] }

Nein

Beispiel: Definieren einer Liste der zulässigen Quellen in einem Ereignismuster mit mehreren Quellen

Die folgende Richtlinie ermöglicht Benutzern das Erstellen von Regeln mit EventPatterns, die über ein Quellfeld verfügen. Jede Quelle im Ereignismuster muss Mitglied der in der Bedingung angegebenen Liste sein. Wenn Sie die Bedingung ForAllValues verwenden, müssen Sie mindestens eines der Elemente in der Bedingungsliste definieren.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleIfSourceIsSpecifiedAndIsEitherS3OrEC2OrBoth", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "events:source": [ "aws.ec2", "aws.s3" ] }, "Null": { "events:source": "false" } } } ] }

Die folgende Tabelle zeigt einige Beispiele für Ereignismuster, die durch diese Richtlinie zugelassen oder abgelehnt werden.

Ereignismuster Zulässig durch die Richtlinie
{ "source": [ "aws.ec2" ] }

Ja

{ "source": [ "aws.ec2", "aws.s3" ] }

Ja

{ "source": [ "aws.ec2", "aws.autoscaling" ] }

Nein

{ "detail-type": [ "EC2 Instance State-change Notification" ] }

Nein

Beispiel: Beschränken des PutRule-Zugriffs durch detail.service

Sie können einen IAM-Benutzer oder eine IAM-Rolle zum Erstellen von Regeln nur für Ereignisse beschränken, die einen bestimmten Wert im Feld events:details.service aufweisen. Der Wert von events:details.service ist nicht unbedingt der Name eines AWS-Service.

Diese Richtlinienbedingung ist hilfreich, wenn Sie mit Ereignissen von AWS Health arbeiten, die sich auf Sicherheit oder Missbrauch beziehen. Durch die Verwendung dieser Richtlinienbedingung können Sie den Zugriff auf diese sensiblen Warnungen auf ausschließlich diejenigen Benutzer einschränken, die diese unbedingt sehen müssen.

Beispiel: Die folgende Richtlinie ermöglicht das Erstellen von Regeln nur für Ereignisse, in denen der Wert von events:details.service ABUSE ist.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleEventsWithDetailServiceEC2", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEquals": { "events:detail.service": "ABUSE" } } } ] }

Beispiel: Beschränken des PutRule-Zugriffs durch detail.eventTypeCode

Sie können einen IAM-Benutzer oder eine IAM-Rolle zum Erstellen von Regeln nur für Ereignisse beschränken, die einen bestimmten Wert im Feld events:details.eventTypeCode aufweisen. Diese Richtlinienbedingung ist hilfreich, wenn Sie mit Ereignissen von AWS Health arbeiten, die sich auf Sicherheit oder Missbrauch beziehen. Durch die Verwendung dieser Richtlinienbedingung können Sie den Zugriff auf diese sensiblen Warnungen auf ausschließlich diejenigen Benutzer einschränken, die diese unbedingt sehen müssen.

Beispiel: Die folgende Richtlinie ermöglicht das Erstellen von Regeln nur für Ereignisse, in denen der Wert von events:details.eventTypeCode AWS_ABUSE_DOS_REPORT ist.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleEventsWithDetailServiceEC2", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEquals": { "events:detail.eventTypeCode": "AWS_ABUSE_DOS_REPORT" } } } ] }

Beispiel: Sicherstellen, dass nur AWS CloudTrail-Ereignisse für API-Aufrufe von einer bestimmten PrincipalId zulässig sind

Alle AWS CloudTrail-Ereignisse haben die PrincipalId des Benutzers, der den API-Aufruf im detail.userIdentity.principalId-Pfad eines Ereignisses ausgeführt hat. Mithilfe des events:detail.userIdentity.principalId-Bedingungsschlüssels können Sie den Zugriff durch IAM-Benutzer oder IAM-Rollen auf CloudTrail-Ereignisse nur für Benutzer oder Rollen eines bestimmten Kontos einschränken.

"Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleOnlyForCloudTrailEventsWhereUserIsASpecificIAMUser", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEquals": { "events:detail-type": [ "AWS API Call via CloudTrail" ], "events:detail.userIdentity.principalId": [ "AIDAJ45Q7YFFAREXAMPLE" ] } } } ] }

Die folgende Tabelle zeigt einige Beispiele für Ereignismuster, die durch diese Richtlinie zugelassen oder abgelehnt werden.

Ereignismuster Zulässig durch die Richtlinie
{ "detail-type": [ "AWS API Call via CloudTrail" ] }

Nein

{ "detail-type": [ "AWS API Call via CloudTrail" ], "detail.userIdentity.principalId": [ "AIDAJ45Q7YFFAREXAMPLE" ] }

Ja

{ "detail-type": [ "AWS API Call via CloudTrail" ], "detail.userIdentity.principalId": [ "AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName" ] }

Nein

Beispiel: Einschränken des Zugriffs auf Ziele

Wenn ein IAM-Benutzer oder eine IAM-Rolle events:PutTargets-berechtigt ist, kann er oder sie im selben Konto den Regeln, auf die er oder sie zugreifen kann, beliebige Ziele hinzufügen. Die folgende Richtlinie beschränkt Benutzer darauf, Ziele nur einer bestimmten Regel hinzuzufügen: MyRule im Konto 123456789012.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutTargetsOnASpecificRule", "Effect": "Allow", "Action": "events:PutTargets", "Resource": "arn:aws:events:us-east-1:123456789012:rule/MyRule" } ] }

Mit dem events:TargetArn-Bedingungsschlüssel legen Sie fest, welches Ziel der Regel hinzugefügt werden darf. Sie haben die Möglichkeit, Ziele nur auf Lambda-Funktionen zu beschränken (siehe folgendes Beispiel).

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutTargetsOnASpecificRuleAndOnlyLambdaFunctions", "Effect": "Allow", "Action": "events:PutTargets", "Resource": "arn:aws:events:us-east-1:123456789012:rule/MyRule", "Condition": { "ArnLike": { "events:TargetArn": "arn:aws:lambda:*:*:function:*" } } } ] }