

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

# Amazon EventBridge での IAM ポリシー条件の使用
<a name="eb-use-conditions"></a>

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

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

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

条件を指定する際にプレースホルダー、つまり*ポリシー変数*も使用できます。詳細については、*IAM ユーザーガイド* の「[ポリシー変数](https://docs.aws.amazon.com/IAM/latest/UserGuide/policyvariables.html)」を参照してください。IAM ポリシー言語での条件の指定の詳細については、*IAM ユーザーガイド*の「[条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/AccessPolicyLanguage_ElementDescriptions.html#Condition)」を参照してください。

デフォルトでは、IAM ユーザー/ロールはお客様のアカウントの[イベント](eb-events.md)にアクセスすることはできません。イベントにアクセスするには、ユーザーは `PutRule` API アクションに対するアクセス権限が必要です。ユーザーまたはロールは、`events:PutRule` アクションが許可されている場合、特定のイベントに一致する[ルール](eb-rules.md)を作成できます。ただし、ルールが有用であるためには、ユーザーは `events:PutTargets` アクションに対するアクセス許可も必要です。なぜなら、ルールによって CloudWatch メトリクスの発行以上のことを行いたい場合は、ルールに[ターゲット](eb-targets.md)を追加する必要もあるからです。

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

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

## EventBridge の条件キー
<a name="conditions-table"></a>

EventBridge のポリシーで使用できる条件キーおよび、キーと値のペアは、次の表のとおりです。


| 条件キー | キーと値のペア | 評価の種類 | 
| --- | --- | --- | 
| aws:SourceAccount | `aws:SourceArn` によって指定されたルールが存在するアカウント。 | アカウント ID、Null | 
| aws:SourceArn | イベントを送信しているルールの ARN。 | ARN、Null | 
| events:creatorAccount | `"events:creatorAccount":"{{creatorAccount}}"`<br />{{creatorAccount}} には、ルールを作成したアカウントのアカウント ID を使用します。特定のアカウントからのルールに対する API コールを認可するには、この条件を使用します。 | creatorAccount、Null | 
| events:detail-type | `"events:detail-type":"{{detail-type}} "`<br />ここで、{{detail-type}} は、イベントの [**detail-type**] フィールドのリテラル文字列 (`"AWS API Call via CloudTrail"` や `"EC2 Instance State-change Notification"` など) です。 | 詳細タイプ、Null | 
| events: detail.eventTypeCode | `"events:detail.eventTypeCode":"{{eventTypeCode}}"`<br />{{eventTypeCode}} には、イベントの **detail.eventTypeCode** フィールドのリテラル文字列、例えば `"AWS_ABUSE_DOS_REPORT"` などを使用します。 | eventTypeCode、Null | 
| events: detail.service | `"events:detail.service":"{{service}}"`<br />{{service}} には、イベントの **detail.service** フィールドのリテラル文字列、例えば `"ABUSE"` などを使用します。 | サービス、Null | 
| events: detail.userIdentity.principalId | `"events:detail.userIdentity.principalId":"{{principal-id}}"`<br />{{principal-id}} には、detail-type が `"AWS API Call via CloudTrail"` のイベントの **detail.userIdentity.principalId** フィールドのリテラル文字列、例えば `"AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName."` などを使用します。 | プリンシパル ID、Null | 
| events:eventBusInvocation | `"events:eventBusInvocation":"{{boolean}}"`<br />{{boolean}} には、ルールが他のアカウントのイベントバスであるターゲットにイベントを送信する場合、true を使用します。`PutEvents` API コールを使用する場合は、false を使用します。 | eventBusInvocation、Null | 
| events:ManagedBy |  AWS サービスによって内部的に使用されます。ユーザーに代わって AWS サービスによって作成されたルールの場合、値はルールを作成したサービスのプリンシパル名です。 | カスタマーポリシーで使用することは想定されていません。 | 
| events:source | `"events:source":"{{source}} "`<br />イベントのソースフィールドを表すリテラル文字列 (`"aws.ec2"` または `"aws.s3"`) には {{source}} を使用します。{{source}} に指定できるその他の値については、[AWS サービスからのイベント](eb-events.md#eb-service-event) のイベント例を参照してください。 | ソース、Null | 
| events:TargetArn | `"events:TargetArn":"{{target-arn}} "`<br />{{target-arn}} には、ルールのターゲットの ARN、例えば `"arn:aws:lambda:*:*:function:*"` などを使用します。 | ArrayoFarn、Null | 

Eventbridge のポリシーステートメントの例については、[Amazon EventBridge リソースへのアクセス許可の管理](eb-manage-iam-access.md) を参照してください。

**Topics**
+ [EventBridge の条件キー](#conditions-table)
+ [EventBridge Pipes の詳細](#eb-pipes-condition-diff)
+ [例: `creatorAccount` 条件を使用する](#eb-events-creator-account)
+ [例: `eventBusInvocation` 条件を使用する](#eb-events-bus-invocation)
+ [例: 特定のソースへのアクセスの制限](#eb-events-limit-access-control)
+ [例: イベントパターンで個々に使用できる複数のソースの定義](#eb-events-pattern-sources)
+ [例: ソースがイベントパターンで定義されていることを確認する](#eb-source-defined-events-pattern)
+ [例: イベントパターンに複数のソースがある場合にのみ許可されるソースのリストを定義する](#eb-allowed-sources-events-pattern)
+ [例: `detail.service` による `PutRule` アクセスの制限](#eb-limit-rule-by-service)
+ [例: `detail.eventTypeCode` による `PutRule` アクセスの制限](#eb-limit-rule-by-type-code)
+ [例: 特定の からの API コールの AWS CloudTrail イベントのみ`PrincipalId`が許可されるようにする](#eb-consume-specific-events)
+ [例: ターゲットへのアクセスの制限](#eb-limiting-access-to-targets)

## EventBridge Pipes の詳細
<a name="eb-pipes-condition-diff"></a>

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

## 例: `creatorAccount` 条件を使用する
<a name="eb-events-creator-account"></a>

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

------
#### [ JSON ]

****  

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

------

## 例: `eventBusInvocation` 条件を使用する
<a name="eb-events-bus-invocation"></a>

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

------
#### [ JSON ]

****  

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

------

## 例: 特定のソースへのアクセスの制限
<a name="eb-events-limit-access-control"></a>

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

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

------
#### [ JSON ]

****  

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

------

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

------
#### [ JSON ]

****  

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

------

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

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

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

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

基本的に、ポリシー B が適用されるユーザーのみが、Amazon EC2 から発生したイベントに一致するルールの作成を許可されます。そのため、Amazon EC2 から発生したイベントのみへのアクセスを許可されます。

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


| イベントパターン | ポリシー A で許可 | ポリシー B で許可 | 
| --- | --- | --- | 
|  <pre>{<br />    "source": [ "aws.ec2" ]<br />}</pre>  | はい  | はい | 
|  <pre>{<br />    "source": [ "aws.ec2", "aws.s3" ]<br />}</pre>  | はい | いいえ (ソース aws.s3 は許可されない) | 
|  <pre>{<br />    "source": [ "aws.ec2" ],<br />    "detail-type": [ "EC2 Instance State-change Notification" ]<br />}</pre>  | はい  | はい | 
|  <pre>{<br />    "detail-type": [ "EC2 Instance State-change Notification" ]<br />}</pre>  | はい | いいえ（ソースの指定が必要） | 

## 例: イベントパターンで個々に使用できる複数のソースの定義
<a name="eb-events-pattern-sources"></a>

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

------
#### [ JSON ]

****  

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

------

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


| イベントパターン | ポリシーで許可 | 
| --- | --- | 
|  <pre>{<br />    "source": [ "aws.ec2" ]<br />}</pre>  | はい  | 
|  <pre>{<br />    "source": [ "aws.ecs" ]<br />}</pre>  | あり | 
|  <pre>{<br />    "source": [ "aws.s3" ]<br />}</pre>  | なし | 
|  <pre>{<br />    "source": [ "aws.ec2", "aws.ecs" ]<br />}</pre>  | なし | 
|  <pre>{<br />    "detail-type": [ "AWS API Call via CloudTrail" ]<br />}</pre>  | いいえ | 

## 例: ソースがイベントパターンで定義されていることを確認する
<a name="eb-source-defined-events-pattern"></a>

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

------
#### [ JSON ]

****  

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

------

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


| イベントパターン | ポリシーで許可 | 
| --- | --- | 
|  <pre>{<br />    "source": [ "aws.ec2" ],<br />    "detail-type": [ "EC2 Instance State-change Notification" ]<br />}</pre>  | はい  | 
|  <pre>{<br />    "source": [ "aws.ecs", "aws.ec2" ]<br />}</pre>  | あり | 
|  <pre>{<br />    "detail-type": [ "EC2 Instance State-change Notification" ]<br />}</pre>  | なし | 

## 例: イベントパターンに複数のソースがある場合にのみ許可されるソースのリストを定義する
<a name="eb-allowed-sources-events-pattern"></a>

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

------
#### [ JSON ]

****  

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

------

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


| イベントパターン | ポリシーで許可 | 
| --- | --- | 
|  <pre>{<br />    "source": [ "aws.ec2" ]<br />}</pre>  | はい  | 
|  <pre>{<br />    "source": [ "aws.ec2", "aws.s3" ]<br />}</pre>  | あり | 
|  <pre>{<br />    "source": [ "aws.ec2", "aws.autoscaling" ]<br />}</pre>  | なし | 
|  <pre>{<br />    "detail-type": [ "EC2 Instance State-change Notification" ]<br />}</pre>  | いいえ | 

## 例: `detail.service` による `PutRule` アクセスの制限
<a name="eb-limit-rule-by-service"></a>

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

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

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

------
#### [ JSON ]

****  

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

------

## 例: `detail.eventTypeCode` による `PutRule` アクセスの制限
<a name="eb-limit-rule-by-type-code"></a>

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

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

------
#### [ JSON ]

****  

```
{
    "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`が許可されるようにする
<a name="eb-consume-specific-events"></a>

すべての 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" ]
                }
            }
        }
    ]
}
```

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


| イベントパターン | ポリシーで許可 | 
| --- | --- | 
|  <pre>{<br />    "detail-type": [ "AWS API Call via CloudTrail" ]<br />}</pre>  | いいえ | 
|  <pre>{<br />    "detail-type": [ "AWS API Call via CloudTrail" ],<br />    "detail.userIdentity.principalId": [ "AIDAJ45Q7YFFAREXAMPLE" ]<br />}</pre>  | あり | 
|  <pre>{<br />    "detail-type": [ "AWS API Call via CloudTrail" ],<br />    "detail.userIdentity.principalId": [ "AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName" ]<br />}</pre>  | なし | 

## 例: ターゲットへのアクセスの制限
<a name="eb-limiting-access-to-targets"></a>

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

------
#### [ JSON ]

****  

```
{
    "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 関数だけに制限できます。

------
#### [ JSON ]

****  

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

------