

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon EventBridge에서 IAM 정책 조건 사용
<a name="eb-use-conditions"></a>

권한을 부여하려면 정책 설명에서 IAM 정책 언어를 사용하여 정책이 적용되는 조건을 지정합니다. 예를 들어 특정 날짜 이후에만 적용되는 정책이 있을 수 있습니다.

정책 조건은 키-값 페어로 구성됩니다. 조건 키에는 대/소문자가 구분되지 않습니다.

단일 조건에 여러 조건이나 키를 지정하는 경우 EventBridge가 권한을 부여하려면 모든 조건 및 키를 충족해야 합니다. 조건 하나에서 키 하나에 여러 값을 지정하면 EventBridge는 값 중 하나가 충족되면 권한을 부여합니다.

조건을 지정할 때 자리 표시자나 *정책 변수*를 사용할 수 있습니다. 자세한 내용은 *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 작업에 대해 허가를 받아야 합니다. IAM 사용자 또는 역할에 `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"` *creatorAccount*의 경우 규칙을 생성한 계정의 계정 ID를 사용합니다. 이 조건을 사용하면 특정 계정의 규칙에 대한 API 직접 호출을 승인할 수 있습니다.  |  creatorAccount, Null  | 
|  events:detail-type  |  `"events:detail-type":"detail-type "` 여기서 *detail-type*은 `"AWS API Call via CloudTrail"` 및 `"EC2 Instance State-change Notification"`과 같은 이벤트의 **detail-type** 필드에 대한 리터럴 문자열입니다.  |  세부 유형, Null  | 
|  events: detail.eventTypeCode  |  `"events:detail.eventTypeCode":"eventTypeCode"` *eventTypeCode*의 경우 이벤트의 **detail.eventTypeCode** 필드에 대한 리터럴 문자열(예: `"AWS_ABUSE_DOS_REPORT"`)을 사용합니다.  |  eventTypeCode, Null  | 
|  events: detail.service  |  `"events:detail.service":"service"` *service*는 이벤트의 **detail.service** 필드에 대한 리터럴 문자열(예: `"ABUSE"`)을 사용합니다.  |  service, Null  | 
|  events: detail.userIdentity.principalId  |  `"events:detail.userIdentity.principalId":"principal-id"` *principal-id*의 경우 `"AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName."`과 같은 detail-type `"AWS API Call via CloudTrail"`이 있는 이벤트의 **detail.userIdentity.principalId** 필드에 리터럴 문자열을 사용합니다.  |  보안 주체 ID, Null  | 
|  events:eventBusInvocation  |  `"events:eventBusInvocation":"boolean"` *boolean*의 경우 규칙이 다른 계정의 이벤트 버스인 대상으로 이벤트를 보내는 경우 true를 사용합니다. `PutEvents` API 직접 호출을 사용할 때는 false를 사용하세요.  |  eventBusInvocation, Null  | 
|  events:ManagedBy  |   AWS 서비스에서 내부적으로 사용합니다. 사용자를 대신하여 AWS 서비스에서 생성한 규칙의 경우 값은 규칙을 생성한 서비스의 보안 주체 이름입니다.  |  고객 정책에 사용할 수 없습니다.  | 
|  events:source  |  `"events:source":"source "` `"aws.ec2"` 또는 `"aws.s3"` 같은 이벤트의 소스 필드를 위한 리터럴 문자열에 *source*를 사용합니다. *source*에 사용 가능한 값을 더 보려면 [AWS 서비스의 이벤트](eb-events.md#eb-service-event) 단원에서 예제 이벤트를 참조하세요.  |  소스, Null  | 
|  events:TargetArn  |  `"events:TargetArn":"target-arn "` 예를 들어 *target-arn*의 경우 대상의 ARN을 규칙에 사용합니다(예: `"arn:aws:lambda:*:*:function:*"`).  |  ArrayOfARN, Null  | 

EventBridge용 예제 정책 명령문은 [Amazon EventBridge 리소스에 대한 액세스 권한 관리](eb-manage-iam-access.md) 단원을 참조하세요.

**Topics**
+ [EventBridge 조건 키](#conditions-table)
+ [EventBridge 파이프 세부 사항](#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 파이프 세부 사항
<a name="eb-pipes-condition-diff"></a>

EventBridge 파이프는 추가 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` 조건을 사용할 때는 이 조건의 항목 중 적어도 하나가 반드시 정의되어 있어야 합니다.

------
#### [ 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>

IAM 사용자 또는 역할에 대해 `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>

IAM 사용자 또는 역할에 대해 `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:*"
                }
            }
        }
    ]
}
```

------