기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon에서 IAM 정책 조건 사용 EventBridge
권한을 부여하려면 IAM 정책 설명의 정책 언어를 사용하여 정책이 적용되는 조건을 지정합니다. 예를 들어 특정 날짜 이후에만 적용되는 정책이 있을 수 있습니다.
정책 조건은 키-값 페어로 구성됩니다. 조건 키에는 대/소문자가 구분되지 않습니다.
단일 조건에 여러 조건이나 키를 지정하는 경우 권한을 EventBridge 부여하려면 모든 조건과 키가 충족되어야 합니다. 키 하나에 여러 값이 있는 단일 조건을 지정하는 경우 값 중 하나가 충족되면 권한을 EventBridge 부여합니다.
조건을 지정할 때 자리 표시자나 정책 변수를 사용할 수 있습니다. 자세한 내용은 IAM사용 설명서의 정책 변수를 참조하십시오. IAM정책 언어로 조건을 지정하는 방법에 대한 자세한 내용은 IAM사용 설명서의 조건을 참조하십시오.
기본적으로 IAM 사용자와 역할은 계정의 이벤트에 액세스할 수 없습니다. 이벤트에 액세스하려면 사용자에게 PutRule
API 작업 권한이 있어야 합니다. IAM사용자 또는 역할에 events:PutRule
작업 권한이 부여되면 특정 이벤트와 일치하는 규칙을 만들 수 있습니다. 그러나 규칙을 유용하게 사용하려면 사용자에게 events:PutTargets
작업에 대한 권한도 있어야 합니다. 규칙이 CloudWatch 지표를 게시하는 것 이상의 역할을 하도록 하려면 규칙에도 대상을 추가해야 하기 때문입니다.
IAM사용자 또는 역할의 정책 설명에 특정 소스 및 이벤트 유형에만 일치하는 규칙을 만들 수 있는 조건을 사용자 또는 역할의 정책 설명에 제공할 수 있습니다. 특정 소스 및 유형의 이벤트에 대한 액세스 권한을 부여하려면 events:source
및 events:detail-type
조건 키를 사용하세요.
마찬가지로 사용자 또는 역할의 정책 설명에 IAM 사용자 또는 역할이 계정의 특정 리소스와만 일치하는 규칙을 만들 수 있는 조건을 제공할 수 있습니다. 특정 리소스에 대한 액세스 권한을 부여하려면 events:TargetArn
조건 키를 사용하세요.
다음은 PutRule
API 작업에 대한 거부 명령문을 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 |
|
계정 ID, Null |
예: SourceArn |
이벤트를 보내는 규칙입니다. ARN |
ARN, Null |
이벤트: creatorAccount |
... 을 위해 |
creatorAccount, Null |
events:detail-type |
위치 |
세부 유형, Null |
이벤트: 세부 정보. eventTypeCode |
... 에 대한 |
eventTypeCode, 무효 |
events: detail.service |
양식 |
service, Null |
이벤트: 세부 정보. userIdentity. principalId |
... 에 대한 |
보안 주체 ID, Null |
이벤트: eventBusInvocation |
... 을 위해 |
eventBusInvocation, 널 |
이벤트: ManagedBy |
AWS 서비스에서 내부적으로 사용됩니다. AWS 서비스에서 사용자를 대신하여 생성한 규칙의 경우 값은 규칙을 만든 서비스의 기본 이름입니다. |
고객 정책에 사용할 수 없습니다. |
events:source |
사용 |
소스, Null |
이벤트: TargetArn |
... 을 위해 |
ArrayOfARN, 널 |
에 대한 정책 설명의 예는 EventBridge 을 참조하십시오Amazon EventBridge 리소스에 대한 액세스 권한 관리.
주제
- EventBridge 파이프 세부 사항
- 예: creatorAccount 조건 사용
- 예: eventBusInvocation 조건 사용
- 예제: 특정 소스에 대한 액세스 제한
- 예제: 이벤트 패턴에서 개별적으로 사용할 수 있는 소스를 여러 개 정의
- 예제: 이벤트 패턴에서 사용할 수 있는 소스 및 DetailType 정의
- 예제: 소스가 이벤트 패턴에 정의되어 있는지 확인
- 예제: 소스가 여러 개인 이벤트 패턴에서 허용되는 소스의 목록을 정의
- 예: detail.service에 의한 PutRule 액세스 제한
- 예: detail.eventTypeCode에 의한 PutRule 액세스 제한
- 예: 특정 API 전화에 대한 AWS CloudTrail 이벤트만 PrincipalId 허용되도록 설정
- 예제: 대상에 대한 액세스 제한
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
조건 사용
는 호출이 교차 계정 대상에서 시작되었는지 아니면 요청에서 시작되었는지를 eventBusInvocation
나타냅니다. PutEvents
API 대상이 다른 계정의 이벤트 버스인 경우와 같이 교차 계정 대상이 포함된 규칙에서 간접 호출이 발생한 경우 이 값은 true입니다. 요청으로 인한 호출 결과인 경우 값은 false입니다. PutEvents
API 다음 예는 교차 계정 대상으로부터의 간접 호출을 나타냅니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountInvocationEventsOnly", "Effect": "Allow", "Action": "events:PutEvents", "Resource": "*", "Condition": { "BoolIfExists": { "events:eventBusInvocation": "true" } } } ] }
예제: 특정 소스에 대한 액세스 제한
다음 예제 정책을 IAM 사용자에게 첨부할 수 있습니다. 정책 A는 모든 이벤트에 대한 PutRule
API 작업을 허용하는 반면, 정책 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" } } } ] }
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에서 허용 |
---|---|---|
|
예 |
예 |
|
예 |
아니요(소스 aws.s3이 허용되지 않음) |
|
예 |
예 |
|
예 |
아니요(소스를 지정해야 함) |
예제: 이벤트 패턴에서 개별적으로 사용할 수 있는 소스를 여러 개 정의
다음 정책은 IAM 사용자 또는 역할이 소스가 Amazon EC2 또는 Amazon인 규칙을 생성할 수 있도록 허용합니다ECS. EventPattern
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleIfSourceIsEC2OrECS", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEquals": { "events:source": [ "aws.ec2", "aws.ecs" ] } } } ] }
다음 표에는 이 정책에서 허용 또는 거부되는 이벤트 패턴의 몇 가지 예를 보여줍니다.
이벤트 패턴 | 정책에서 허용 |
---|---|
|
예 |
|
예 |
|
아니요 |
|
아니요 |
|
아니요 |
예제: 이벤트 패턴에서 사용할 수 있는 소스 및 DetailType
정의
다음 정책은 DetailType
가 EC2 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" } } } ] }
다음 표에는 이 정책에서 허용 또는 거부되는 이벤트 패턴의 몇 가지 예를 보여줍니다.
이벤트 패턴 | 정책에서 허용 |
---|---|
|
아니요 |
|
아니요 |
|
예 |
|
아니요 |
|
아니요 |
예제: 소스가 이벤트 패턴에 정의되어 있는지 확인
다음 정책은 사용자가 소스 필드가 있는 EventPatterns
으로 규칙만 생성하도록 허용합니다. 이 정책을 사용하면 IAM 사용자 또는 역할이 특정 소스를 제공하지 EventPattern
않는 규칙을 생성할 수 없습니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleIfSourceIsSpecified", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "Null": { "events:source": "false" } } } ] }
다음 표에는 이 정책에서 허용 또는 거부되는 이벤트 패턴의 몇 가지 예를 보여줍니다.
이벤트 패턴 | 정책에서 허용 |
---|---|
|
예 |
|
예 |
|
아니요 |
예제: 소스가 여러 개인 이벤트 패턴에서 허용되는 소스의 목록을 정의
다음 정책은 사용자가 여러 소스가 포함된 EventPatterns
으로 규칙을 생성하는 것을 허용합니다. 이벤트 패턴의 각 소스는 해당 조건에서 제공되는 목록의 구성원이어야 합니다. ForAllValues
조건을 사용할 때는 이 조건의 항목 중 적어도 하나가 반드시 정의되어 있어야 합니다.
{ "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" } } } ] }
다음 표에는 이 정책에서 허용 또는 거부되는 이벤트 패턴의 몇 가지 예를 보여줍니다.
이벤트 패턴 | 정책에서 허용 |
---|---|
|
예 |
|
예 |
|
아니요 |
|
아니요 |
예: detail.service
에 의한 PutRule
액세스 제한
events:details.service
필드에 특정 값이 있는 이벤트에 대해서만 규칙을 생성하도록 IAM 사용자 또는 역할을 제한할 수 있습니다. 의 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
액세스 제한
events:details.eventTypeCode
필드에 특정 값이 있는 이벤트에 대해서만 규칙을 만들도록 IAM 사용자 또는 역할을 제한할 수 있습니다. 이 정책 조건은 보안 또는 남용과 관련된 이벤트를 처리할 때 유용합니다. 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" ] } } } ] }
다음 표에는 이 정책에서 허용 또는 거부되는 이벤트 패턴의 몇 가지 예를 보여줍니다.
이벤트 패턴 | 정책에서 허용 |
---|---|
|
아니요 |
|
예 |
|
아니요 |
예제: 대상에 대한 액세스 제한
IAM사용자 또는 역할에 events:PutTargets
권한이 있는 경우 액세스가 허용된 규칙에 동일한 계정 아래의 모든 대상을 추가할 수 있습니다. 다음 정책은 사용자가 특정 규칙(123456789012
계정 하의 MyRule
)에만 대상을 추가하도록 제한합니다.
{ "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:*" } } } ] }