Amazon でのIAMポリシー条件の使用 EventBridge - Amazon EventBridge

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon でのIAMポリシー条件の使用 EventBridge

アクセス許可を付与するには、IAMポリシーステートメントでポリシー言語を使用して、ポリシーを有効にする条件を指定します。例えば、特定の日付の後にのみ適用されるポリシーを設定することができます。

ポリシーの条件は、キーと値のペアで構成されます。条件キーは大文字小文字を区別しません。

1 つの条件で複数の条件またはキーを指定する場合、 がアクセス許可を付与 EventBridge するには、すべての条件とキーが満たされている必要があります。1 つのキーに複数の値を持つ 1 つの条件を指定すると、いずれかの値が満たされた場合に アクセス許可 EventBridge が付与されます。

条件を指定する際にプレースホルダー、つまりポリシー変数も使用できます。詳細については、「 IAMユーザーガイド」の「ポリシー変数」を参照してください。IAM ポリシー言語での条件の指定の詳細については、「 IAMユーザーガイド」の「条件」を参照してください。

デフォルトでは、IAMユーザーとロールはアカウントのイベントにアクセスできません。イベントにアクセスするには、ユーザーに PutRuleAPIアクションの権限が必要です。IAM ユーザーまたはロールがevents:PutRuleアクションに対して承認されている場合、特定のイベントに一致するルールを作成できます。ただし、ルールが役立つようにするには、ユーザーに events:PutTargetsアクションのアクセス許可も必要です。これは、ルールで CloudWatch メトリクスを公開する以上の操作を行う場合は、ルールにターゲットを追加する必要があるためです。

ユーザーまたはロールのポリシーステートメントに条件を指定して、IAM特定のソースとイベントタイプのセットにのみ一致するルールをユーザーまたはロールに作成させることができます。特定タイプのソースやイベントへのアクセスを許可するには、events:source および events:detail-type の条件キーを使用します。

同様に、IAMユーザーまたはロールのポリシーステートメントに条件を指定して、アカウント内の特定のリソースにのみ一致するルールを作成できるようにします。特定のリソースへのアクセスを許可するには、events:TargetArn の条件キーを使用します。

次の例は、 PutRuleAPIアクションで拒否ステートメント EventBridge を使用して、 の Amazon イベントを除くすべてのEC2イベントへのアクセスをユーザーに許可するポリシーです。

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

EventBridge 条件キー

次の表は、 のポリシーで使用できる条件キーとキーと値のペアを示しています EventBridge。

条件キー キーと値のペア 評価の種類

aws:SourceAccount

aws:SourceArn によって指定されたルールが存在するアカウント。

アカウント ID、Null

aws:SourceArn

イベントを送信しているルールARNの 。

ARN、Null

イベント:creatorAccount

"events:creatorAccount":"creatorAccount"

[ creatorAccount、ルールを作成したアカウントのアカウント ID を使用します。この条件を使用して、特定のアカウントからのルールのAPI呼び出しを承認します。

creatorAccount、Null

events:detail-type

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

各パラメータの意味は次のとおりです。detail-type は、 "AWS API Call via CloudTrail"や などのイベントの detail-type フィールドのリテラル文字列です"EC2 Instance State-change Notification"

詳細タイプ、Null

events: 詳細。eventTypeCode

"events:detail.eventTypeCode":"eventTypeCode"

[ eventTypeCode、 など、イベントの フィールドの詳細eventTypeCodeにリテラル文字列を使用します"AWS_ABUSE_DOS_REPORT"

eventTypeCode、Null

events: detail.service

"events:detail.service":"service"

[ service、 など、イベントの detail.service フィールドにリテラル文字列を使用します"ABUSE"

サービス、Null

events: 詳細userIdentity。principalId

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

[ principal-id、詳細にはリテラル文字列を使用します。 などの detail-type を持つイベントの userIdentityprincipalIdフィールド"AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName.""AWS API Call via CloudTrail"

プリンシパル ID、Null

イベント:eventBusInvocation

"events:eventBusInvocation":"boolean"

[ booleanルールが別のアカウントのイベントバスであるターゲットにイベントを送信する場合は、true を使用します。PutEvents API 呼び出しが使用されるときは false を使用します。

eventBusInvocation、Null

イベント:ManagedBy

AWS サービスによって内部的に使用されます。ユーザーに代わって AWS サービスによって作成されたルールの場合、値はルールを作成したサービスのプリンシパル名です。

カスタマーポリシーで使用することは想定されていません。

events:source

"events:source":"source "

使用アイテム source または などのイベントのソースフィールドのリテラル文字列の "aws.ec2" "aws.s3"。のより可能な値については source、「」のイベント例を参照してくださいAmazon AWS のサービスからのイベント EventBridge

ソース、Null

イベント:TargetArn

"events:TargetArn":"target-arn "

[ target-arn、ルールのターゲットARNの を使用します。例えば、 です"arn:aws:lambda:*:*:function:*"

ArrayOfARN、Null

のポリシーステートメントの例については EventBridge、「」を参照してくださいAmazon EventBridge リソースへのアクセス許可の管理

EventBridge パイプの詳細

EventBridge Pipes は追加のIAMポリシー条件キーをサポートしていません。

例: creatorAccount 条件を使用する

次のポリシーステートメントの例では、ポリシーで creatorAccount 条件を使用し、creatorAccount として指定されているアカウントがルールを作成したアカウントである場合にのみ、ルールの作成を許可する方法を示しています。

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

例: eventBusInvocation 条件を使用する

は、呼び出しがクロスアカウントターゲットまたはPutEventsAPIリクエストのどちらから発信されたかeventBusInvocationを示します。この値は、ターゲットが他のアカウントのイベントバスである場合など、クロスアカウントターゲットを含むルールからの呼び出しの結果である場合、true になります。呼び出しがPutEventsAPIリクエストの結果である場合、値は false です。次の例は、クロスアカウントターゲットからの呼び出しを示しています。

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

例: 特定のソースへのアクセスの制限

次のポリシー例は、 IAM ユーザーにアタッチできます。ポリシー A はすべてのイベントに対して PutRuleAPIアクションを許可しますが、ポリシー B は、作成されるルールのイベントパターンが Amazon EC2イベントと一致するPutRule場合にのみ を許可します。

ポリシー A: すべてのイベントを許可

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

ポリシー B: — Amazon からのイベントのみを許可する EC2

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

EventPatternPutRule の必須引数です。そのため、ポリシー B が適用されるユーザーが以下のようなイベントパターンで PutRule を呼び出すとします。

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

この場合、ポリシーではこの特定のソース "aws.ec2" を許可するため、ルールが作成されます。ただし、ポリシー B のユーザーが次のようなイベントパターンで PutRule を呼び出した場合、ポリシーはこの特定のソース "aws.s3" を許可しないため、ルールの作成は拒否されます。

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

基本的に、ポリシー B を持つユーザーは、Amazon から発信されるイベントと一致するルールの作成のみが許可されますEC2。したがって、Amazon からのイベントへのアクセスのみが許可されますEC2。

ポリシー A とポリシー B の比較については、以下の表を参照してください。

イベントパターン ポリシー A で許可 ポリシー B で許可
{ "source": [ "aws.ec2" ] }

はい

はい

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

あり

いいえ (ソース aws.s3 は許可されない)

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

はい

はい

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

あり

いいえ(ソースの指定が必要)

例: イベントパターンで個々に使用できる複数のソースの定義

次のポリシーでは、 IAM ユーザーまたはロールが、 のソースが Amazon EC2または Amazon のいずれかEventPatternであるルールを作成することを許可しますECS。

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

以下の表で、このポリシーで許可または拒否されるイベントパターンを示しています。

イベントパターン ポリシーで許可
{ "source": [ "aws.ec2" ] }

はい

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

はい

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

いいえ

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

いいえ

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

なし

例: イベントパターンで使用できるソースと DetailType を定義する

以下のポリシーでは、DetailTypeEC2 instance state change notification に等しい aws.ec2 ソースからのイベントのみを許可します。

{ "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" } } } ] }

以下の表で、このポリシーで許可または拒否されるイベントパターンを示しています。

イベントパターン ポリシーで許可
{ "source": [ "aws.ec2" ] }

なし

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

いいえ

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

はい

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

いいえ

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

なし

例: ソースがイベントパターンで定義されていることを確認する

以下のポリシーでは、ソースフィールドがある EventPatterns に対するルールの作成のみを許可します。このポリシーでは、IAMユーザーまたはロールは、特定のソースを提供しEventPatternない を使用してルールを作成できません。

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

以下の表で、このポリシーで許可または拒否されるイベントパターンを示しています。

イベントパターン ポリシーで許可
{ "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance State-change Notification" ] }

はい

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

はい

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

なし

例: イベントパターンに複数のソースがある場合にのみ許可されるソースのリストを定義する

以下のポリシーでは、複数のソースがある EventPatterns に対してのみルールの作成を許可します。イベントパターンにある各ソースは、条件に指定されたリストに含まれている必要があります。ForAllValues 条件を使用するときは、条件リストの少なくとも 1 つの項目が定義されていることを確認してください。

{ "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" } } } ] }

以下の表で、このポリシーで許可または拒否されるイベントパターンを示しています。

イベントパターン ポリシーで許可
{ "source": [ "aws.ec2" ] }

はい

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

はい

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

いいえ

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

なし

例: detail.service による PutRule アクセスの制限

ユーザーIAMまたはロールは、 events:details.serviceフィールドで特定の値を持つイベントに対してのみルールを作成するように制限できます。の値はevents:details.service、必ずしも AWS サービスの名前ではありません。

このポリシー条件は、セキュリティまたは不正使用に関連する AWS Health からのイベントを操作する場合に役立ちます。このポリシー条件を使用すると、これらの機密性の高いアラートへのアクセスを、必要があるユーザーのみに制限することができます。

たとえば、次のポリシーでは、events:details.service の値が ABUSE であるイベントのみにルールを作成することができます。

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

例: detail.eventTypeCode による PutRule アクセスの制限

ユーザーIAMまたはロールは、 events:details.eventTypeCodeフィールドに特定の値を持つイベントに対してのみルールを作成するように制限できます。このポリシー条件は、セキュリティまたは不正使用に関連する AWS Health からのイベントを操作する場合に役立ちます。このポリシー条件を使用すると、これらの機密性の高いアラートへのアクセスを、必要があるユーザーのみに制限することができます。

たとえば、次のポリシーでは、events:details.eventTypeCode の値が AWS_ABUSE_DOS_REPORT であるイベントのみにルールを作成することができます。

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

例: 特定の からのAPI呼び出しの AWS CloudTrail イベントのみが許可されるようにPrincipalIdする

すべての AWS CloudTrail イベントには、イベントのdetail.userIdentity.principalIdパスでAPI呼び出しを行った PrincipalId ユーザーの があります。events:detail.userIdentity.principalId 条件キーを使用すると、IAMユーザーまたはロールのアクセスを、特定の アカウントからの CloudTrail イベントのみに制限できます。

"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" ] } } } ] }

以下の表で、このポリシーで許可または拒否されるイベントパターンを示しています。

イベントパターン ポリシーで許可
{ "detail-type": [ "AWS API Call via CloudTrail" ] }

なし

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

はい

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

なし

例: ターゲットへのアクセスの制限

IAM ユーザーまたはロールに アクセスevents:PutTargets許可がある場合、同じアカウント内の任意のターゲットを、アクセスが許可されているルールに追加できます。次のポリシーでは、ターゲットを特定のルール (アカウント 123456789012MyRule) のみに追加することができます。

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

ルールに追加できるターゲットを制限するには、events:TargetArn 条件キーを使用します。次のように、ターゲットを Lambda 関数だけに制限できます。

{ "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:*" } } } ] }