Amazon에서 IAM 정책 조건 사용 EventBridge - Amazon EventBridge

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

Amazon에서 IAM 정책 조건 사용 EventBridge

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

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

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

조건을 지정할 때 자리 표시자나 정책 변수를 사용할 수 있습니다. 자세한 내용은 IAM사용 설명서의 정책 변수를 참조하십시오. IAM정책 언어로 조건을 지정하는 방법에 대한 자세한 내용은 IAM사용 설명서의 조건을 참조하십시오.

기본적으로 IAM 사용자와 역할은 계정의 이벤트에 액세스할 수 없습니다. 이벤트에 액세스하려면 사용자에게 PutRule API 작업 권한이 있어야 합니다. IAM사용자 또는 역할에 events:PutRule 작업 권한이 부여되면 특정 이벤트와 일치하는 규칙을 만들 수 있습니다. 그러나 규칙을 유용하게 사용하려면 사용자에게 events:PutTargets 작업에 대한 권한도 있어야 합니다. 규칙이 CloudWatch 지표를 게시하는 것 이상의 역할을 하도록 하려면 규칙에도 대상을 추가해야 하기 때문입니다.

IAM사용자 또는 역할의 정책 설명에 특정 소스 및 이벤트 유형에만 일치하는 규칙을 만들 수 있는 조건을 사용자 또는 역할의 정책 설명에 제공할 수 있습니다. 특정 소스 및 유형의 이벤트에 대한 액세스 권한을 부여하려면 events:sourceevents: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

aws:SourceArn에서 지정한 규칙이 존재하는 계정입니다.

계정 ID, Null

예: 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" "EC2 Instance State-change Notification"

세부 유형, Null

이벤트: 세부 정보. eventTypeCode

"events:detail.eventTypeCode":"eventTypeCode"

... 에 대한 eventTypeCode세부 정보에는 리터럴 문자열을 사용하십시오. eventTypeCode이벤트 필드 (예:. "AWS_ABUSE_DOS_REPORT"

eventTypeCode, 무효

events: detail.service

"events:detail.service":"service"

양식 service이벤트의 detail.service 필드에는 리터럴 문자열을 사용하십시오 (예:). "ABUSE"

service, Null

이벤트: 세부 정보. userIdentity. principalId

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

... 에 대한 principal-id세부 정보에는 리터럴 문자열을 사용하십시오. userIdentity. principalId"AWS API Call via CloudTrail"다음과 같은 세부 유형이 있는 이벤트 필드. "AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName."

보안 주체 ID, Null

이벤트: eventBusInvocation

"events:eventBusInvocation":"boolean"

... 을 위해 boolean규칙이 다른 계정의 이벤트 버스인 대상으로 이벤트를 보낼 때는 true를 사용하십시오. PutEventsAPI호출을 사용할 때는 false를 사용하십시오.

eventBusInvocation, 널

이벤트: 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, 널

에 대한 정책 설명의 예는 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 조건 사용

는 호출이 교차 계정 대상에서 시작되었는지 아니면 요청에서 시작되었는지를 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" } } } ] }

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인 규칙을 생성할 수 있도록 허용합니다ECS. EventPattern

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

{ "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 액세스 제한

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

다음 표에는 이 정책에서 허용 또는 거부되는 이벤트 패턴의 몇 가지 예를 보여줍니다.

이벤트 패턴 정책에서 허용
{ "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 권한이 있는 경우 액세스가 허용된 규칙에 동일한 계정 아래의 모든 대상을 추가할 수 있습니다. 다음 정책은 사용자가 특정 규칙(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:*" } } } ] }