EventBridge에 대한 자격 증명 기반 정책(IAM 정책) 사용 - Amazon EventBridge

EventBridge에 대한 자격 증명 기반 정책(IAM 정책) 사용

이 단원에서는 계정 관리자가 IAM 자격 증명(즉 사용자, 그룹, 역할)에 권한 정책을 연결할 수 있는 자격 증명 기반 정책의 예를 제시합니다.

다음 예제는 사용자가 Kinesis에 이벤트 데이터를 입력할 수 있는 권한 정책을 보여줍니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchEventsInvocationAccess", "Effect": "Allow", "Action": [ "kinesis:PutRecord" ], "Resource": "*" } ] }

이 주제의 단원에서는 다음 내용을 학습합니다.

CloudWatch 콘솔 사용에 필요한 권한

사용자가 CloudWatch 콘솔에서 EventBridge를 작업하려면 자신의 계정에 대해 다른 AWS 리소스를 설명할 수 있는 최소한의 권한이 있어야 합니다. CloudWatch 콘솔에서 EventBridge를 완전히 사용하려면 다음 서비스에도 권한이 있어야 합니다.

  • 자동화

  • Amazon EC2 Auto Scaling

  • AWS CloudTrail

  • CloudWatch

  • EventBridge

  • IAM

  • Kinesis

  • Lambda

  • Amazon SNS

  • Amazon SWF

최소 필수 권한보다 더 제한적인 IAM 정책을 만들면 콘솔에서는 해당 IAM 정책에 연결된 사용자에 대해 의도대로 작동하지 않습니다. 이 사용자가 CloudWatch 콘솔을 사용할 수 있도록 하려면 CloudWatchEventsReadOnlyAccess 관리형 정책을 사용자에게 연결합니다(EventBridge에 대한 AWS 관리형(미리 정의된) 정책 참조).

AWS CLI 또는 CloudWatch API만 호출하는 사용자에게 최소 콘솔 권한을 허용할 필요가 없습니다.

CloudWatch 콘솔에서 작업을 수행하는 데 필요한 전체 권한 세트는 아래와 같습니다.

  • automation:CreateAction

  • automation:DescribeAction

  • automation:UpdateAction

  • autoscaling:DescribeAutoScalingGroups

  • cloudtrail:DescribeTrails

  • ec2:DescribeInstances

  • ec2:DescribeVolumes

  • events:DeleteRule

  • events:DescribeRule

  • events:DisableRule

  • events:EnableRule

  • events:ListRuleNamesByTarget

  • events:ListRules

  • events:ListTargetsByRule

  • events:PutEvents

  • events:PutRule

  • events:PutTargets

  • events:RemoveTargets

  • events:TestEventPattern

  • iam:ListRoles

  • kinesis:ListStreams

  • lambda:AddPermission

  • lambda:ListFunctions

  • lambda:RemovePermission

  • sns:GetTopicAttributes

  • sns:ListTopics

  • sns:SetTopicAttributes

  • swf:DescribeAction

  • swf:ReferenceAction

  • swf:RegisterAction

  • swf:RegisterDomain

  • swf:UpdateAction

EventBridge에 대한 AWS 관리형(미리 정의된) 정책

AWS는 AWS에서 생성하고 관리하는 독립형 IAM 정책을 제공하여 많은 일반 사용 사례를 처리합니다. 관리형 정책은 사용자가 필요한 권한을 조사할 필요가 없도록 일반 사용 사례에 필요한 권한을 부여합니다. 자세한 내용은 IAM 사용 설명서AWS 관리형 정책 단원을 참조하십시오.

계정의 사용자에게 연결할 수 있는 다음 AWS 관리형 정책은 EventBridge에 고유합니다.

  • CloudWatchEventsFullAccess – EventBridge에 대한 전체 액세스 권한을 부여합니다.

  • CloudWatchEventsInvocationAccess – EventBridge가 계정에서 Amazon Kinesis Data Streams의 스트림에 이벤트를 릴레이하도록 허용합니다.

  • CloudWatchEventsReadOnlyAccess – EventBridge에 대한 읽기 전용 액세스 권한을 부여합니다.

  • CloudWatchEventsBuiltInTargetExecutionAccess – EventBridge의 기본 제공 대상이 사용자를 대신하여 Amazon EC2 작업을 수행하도록 허용합니다.

이벤트 전송을 위한 IAM 역할

EventBridge가 Kinesis 스트림 대상에 이벤트를 릴레이하려면 IAM 역할을 생성해야 합니다.

EventBridge를 전송하기 위한 IAM 역할을 생성하려면

  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. IAM 사용 설명서AWS 서비스에 대한 권한을 위임할 역할 생성 단계에 따라 IAM 역할을 생성합니다. 해당 단계에 따라 역할을 생성할 때 다음을 수행하십시오.

    • 역할 이름에서 계정 내의 고유한 이름(예: CloudWatchEventsSending)을 사용합니다.

    • Select Role Type(역할 유형 선택)에서 AWS Service Roles(AWS 서비스 역할)을 선택한 후 Amazon EventBridge를 선택합니다. 이렇게 하면 역할을 수임할 EventBridge 권한이 부여됩니다.

    • 정책 연결에서 CloudWatchEventsInvocationAccess를 선택합니다.

EventBridge 작업 및 리소스에 대한 권한을 허용하는 고유의 사용자 지정 IAM 정책을 생성할 수도 있습니다. 해당 권한이 필요한 IAM 사용자 또는 그룹에 이러한 사용자 지정 정책을 연결할 수 있습니다. IAM 정책에 대한 자세한 내용은 IAM 사용 설명서IAM 정책 개요를 참조하십시오. 사용자 지정 IAM 정책 관리 및 생성에 대한 자세한 내용은 IAM 사용 설명서IAM 정책 관리 단원을 참조하십시오.

EventBridge가 특정 대상을 액세스하는 데 필요한 권한

EventBridge가 특정 대상에 액세스하려면 해당 대상에 액세스하기 위한 IAM 역할을 지정해야 하고, 해당 역할에는 특정한 정책이 연결되어야 합니다.

대상이 Kinesis 스트림이면 그 대상에게 이벤트 데이터를 전송하는 데 사용된 역할에 다음 정책이 포함되어야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:PutRecord" ], "Resource": "*" } ] }

대상이 시스템 관리자 Run Command이고 해당 명령에 하나 이상의 InstanceIds 값을 지정하는 경우에는 지정한 역할에 다음 정책이 반드시 포함되어야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": "ssm:SendCommand", "Effect": "Allow", "Resource": [ "arn:aws:ec2:{{region}}:{{accountId}}:instance/[[instanceIds]]", "arn:aws:ssm:{{region}}:*:document/{{documentName}}" ] } ] }

대상이 시스템 관리자 Run Command이고 해당 명령에 하나 이상의 태그를 지정하는 경우에는 지정한 역할에 다음 정책이 반드시 포함되어야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": "ssm:SendCommand", "Effect": "Allow", "Resource": [ "arn:aws:ec2:{{region}}:{{accountId}}:instance/*" ], "Condition": { "StringEquals": { "ec2:ResourceTag/*": [ "[[tagValues]]" ] } } }, { "Action": "ssm:SendCommand", "Effect": "Allow", "Resource": [ "arn:aws:ssm:{{region}}:*:document/{{documentName}}" ] } ] }

대상이 AWS Step Functions 상태 시스템인 경우에는 지정한 역할에 다음 정책이 포함되어야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:*:*:stateMachine:*" ] } ] }

대상이 ECS 작업인 경우에는 지정한 역할에 다음 정책이 포함되어야 합니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ecs:RunTask" ], "Resource": [ "arn:aws:ecs:*:{{account-id}}:task-definition/{{task-definition-name}}" ], "Condition": { "ArnLike": { "ecs:cluster": "arn:aws:ecs:*:{{account-id}}:cluster/{{cluster-name}}" } } }] }

고객 관리형 정책 예

이 단원에서는 다양한 EventBridge 작업에 대한 권한을 부여하는 사용자 정책의 예를 찾을 수 있습니다. 이러한 정책은 EventBridge API, AWS SDK 또는 AWS CLI를 사용하는 경우에 적용됩니다.

참고

모든 예는 미국 서부(오레곤) 지역(us-west-2)을 사용하며 가상의 계정 ID를 포함합니다.

다음 샘플 IAM 정책을 사용하면 IAM 사용자 및 역할에 대한 EventBridge 액세스를 제한할 수 있습니다.

예제 1: CloudWatchEventsBuiltInTargetExecutionAccess

다음 정책은 EventBridge의 기본 제공 대상이 사용자를 대신하여 Amazon EC2 작업을 수행하도록 허용합니다.

중요

기본 제공 대상을 통한 규칙 생성은 AWS Management 콘솔에서만 지원됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchEventsBuiltInTargetExecutionAccess", "Effect": "Allow", "Action": [ "ec2:Describe*", "ec2:RebootInstances", "ec2:StopInstances", "ec2:TerminateInstances", "ec2:CreateSnapshot" ], "Resource": "*" } ] }

예제 2: CloudWatchEventsInvocationAccess

다음 정책은 EventBridge가 계정에서 Kinesis 스트림에 이벤트를 릴레이하도록 허용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchEventsInvocationAccess", "Effect": "Allow", "Action": [ "kinesis:PutRecord" ], "Resource": "*" } ] }

예제 3: CloudWatchEventsConsoleAccess

다음 정책은 IAM 사용자가 EventBridge 콘솔을 사용할 수 있도록 해줍니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchEventsConsoleAccess", "Effect": "Allow", "Action": [ "automation:CreateAction", "automation:DescribeAction", "automation:UpdateAction", "autoscaling:DescribeAutoScalingGroups", "cloudtrail:DescribeTrails", "ec2:DescribeInstances", "ec2:DescribeVolumes", "events:*", "iam:ListRoles", "kinesis:ListStreams", "lambda:AddPermission", "lambda:ListFunctions", "lambda:RemovePermission", "sns:GetTopicAttributes", "sns:ListTopics", "sns:SetTopicAttributes", "swf:DescribeAction", "swf:ReferenceAction", "swf:RegisterAction", "swf:RegisterDomain", "swf:UpdateAction" ], "Resource": "*" }, { "Sid": "IAMPassRoleForCloudWatchEvents", "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::*:role/AWS_Events_Invoke_Targets", "arn:aws:iam::*:role/AWS_Events_Actions_Execution" ] } ] }

예제 4: CloudWatchEventsFullAccess

다음 정책은 AWS CLI 및 SDK를 통해 EventBridge에 대한 작업을 수행하도록 허용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchEventsFullAccess", "Effect": "Allow", "Action": "events:*", "Resource": "*" }, { "Sid": "IAMPassRoleForCloudWatchEvents", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/AWS_Events_Invoke_Targets" } ] }

예제 5: CloudWatchEventsReadOnlyAccess

다음 정책은 EventBridge에 대한 읽기 전용 액세스 권한을 제공합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchEventsReadOnlyAccess", "Effect": "Allow", "Action": [ "events:Describe*", "events:List*", "events:TestEventPattern" ], "Resource": "*" } ] }

예제 6: 태그 지정을 사용하여 특정 규칙에 대한 액세스 제어

사용자에게 지정된 EventBridge 규칙에 대한 액세스 권한을 부여하고 동시에 다른 규칙에는 액세스하지 못하게 할 수 있습니다. 이렇게 하려면 규칙에 태그를 지정하고 해당 태그를 참조하는 IAM 정책을 사용하십시오.

EventBridge 리소스 태그 지정에 대한 자세한 내용은 Amazon EventBridge 리소스에 태그 지정 단원을 참조하십시오.

EventBridge 규칙에 태그를 지정할 때 특정 태그가 있는 규칙에만 액세스할 수 있도록 사용자에게 IAM 정책에 대한 권한을 부여할 수 있습니다. 예를 들어, 다음 정책 명령문은 태그 키 Stack에 대한 값이 Prod인 규칙에만 액세스하도록 권한을 부여합니다.

{ "Statement": [ { "Effect": "Allow", "Action": "events:*", "Resource": "*", "Condition": { "StringEquals": { "events:ResourceTag/Stack": "Prod" } } } ] }

IAM 정책 명령문 사용에 대한 자세한 내용은 IAM 사용 설명서정책을 사용하여 액세스 제어를 참조하십시오.