Usando as condições IAM da política na Amazon EventBridge - Amazon EventBridge

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando as condições IAM da política na Amazon EventBridge

Para conceder permissões, você usa a linguagem da IAM política em uma declaração de política para especificar as condições em que uma política deve entrar em vigor. Por exemplo, é possível ter uma política que será aplicada somente após uma data específica.

Uma condição em uma política consiste em pares de chave/valor. As chaves de condição não fazem distinção entre maiúsculas e minúsculas.

Se você especificar várias condições ou chaves em uma única condição, todas as condições e chaves deverão ser atendidas EventBridge para conceder permissão. Se você especificar uma única condição com vários valores para uma chave, EventBridge concederá permissão se um dos valores for atendido.

É possível usar espaço reservado ou variáveis de política ao especificar as condições. Para obter mais informações, consulte Variáveis de política no Guia IAM do usuário. Para obter mais informações sobre a especificação de condições em um idioma IAM de política, consulte Condição no Guia do IAM Usuário.

Por padrão, IAM usuários e funções não podem acessar os eventos em sua conta. Para acessar eventos, um usuário deve estar autorizado para a PutRule API ação. Se um IAM usuário ou função for autorizado para a events:PutRule ação, ele poderá criar uma regra que corresponda a determinados eventos. No entanto, para que a regra seja útil, o usuário também deve ter permissões para a events:PutTargets ação porque, se você quiser que a regra faça mais do que publicar uma CloudWatch métrica, você também deve adicionar um alvo a uma regra.

Você pode fornecer uma condição na declaração de política de um IAM usuário ou função que permita que o usuário ou função crie uma regra que corresponda somente a um conjunto específico de fontes e tipos de eventos. Para conceder acesso a origens e tipos específicos de eventos, use as chaves de condição events:source e events:detail-type.

Da mesma forma, você pode fornecer uma condição na declaração de política de um IAM usuário ou função que permita que o usuário ou função crie uma regra que corresponda apenas a um recurso específico em suas contas. Para conceder acesso a um recurso específico, use a chave de condição events:TargetArn.

O exemplo a seguir é uma política que permite que os usuários acessem todos os eventos, exceto os EC2 eventos da Amazon, EventBridge usando uma declaração de negação sobre a PutRule API ação.

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

EventBridge chaves de condição

A tabela a seguir mostra as chaves de condição e os pares de chaves e valores que você pode usar em uma política em EventBridge.

Chave de condição Par de chave/valor Tipos de avaliação

leis: SourceAccount

A conta na qual a regra especificada por aws:SourceArn existe.

ID da conta, nulo

leis: SourceArn

A ARN da regra que está enviando o evento.

ARN, Nulo

eventos: creatorAccount

"events:creatorAccount":"creatorAccount"

Para creatorAccount, use o ID da conta que criou a regra. Use essa condição para autorizar API chamadas em regras de uma conta específica.

creatorAccount, Nulo

events:detail-type

"events:detail-type":"detail-type "

Em que detail-type é a string literal para o campo de tipo de detalhe do evento, como e. "AWS API Call via CloudTrail" "EC2 Instance State-change Notification"

Tipo de detalhe, nulo

eventos: detalhe. eventTypeCode

"events:detail.eventTypeCode":"eventTypeCode"

Para eventTypeCode, use a string literal para os detalhes. eventTypeCodecampo do evento, como"AWS_ABUSE_DOS_REPORT".

eventTypeCode, Nulo

eventos: detail.service

"events:detail.service":"service"

Para service, use a string literal para o campo detail.service do evento, como. "ABUSE"

serviço, Null

eventos: detalhe. userIdentity. principalId

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

Para principal-id, use a string literal para os detalhes. userIdentity. principalIdcampo do evento com tipo de detalhe, "AWS API Call via CloudTrail" como. "AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName."

Id principal, nulo

eventos: eventBusInvocation

"events:eventBusInvocation":"boolean"

Para boolean, use true quando uma regra envia um evento para um destino que é um barramento de eventos em outra conta. Use false quando uma PutEvents API chamada for usada.

eventBusInvocation, Nulo

eventos: ManagedBy

Usado internamente pelos AWS serviços. Para uma regra criada por um AWS serviço em seu nome, o valor é o nome principal do serviço que criou a regra.

Não se destina ao uso nas políticas do cliente.

events:source

"events:source":"source "

Use source para a string literal do campo de origem do evento, como "aws.ec2" ou"aws.s3". Para obter mais valores possíveis para source, veja os exemplos de eventos emEventos de AWS serviços na Amazon EventBridge.

Origem, nulo

eventos: TargetArn

"events:TargetArn":"target-arn "

Para target-arn, use o ARN do alvo para a regra, por exemplo"arn:aws:lambda:*:*:function:*".

ArrayOfARN, Nulo

Por exemplo, declarações de política para EventBridge, consulteGerenciando permissões de acesso aos seus EventBridge recursos da Amazon.

EventBridge Especificações de tubos

EventBridge O Pipes não oferece suporte a nenhuma chave IAM de condição de política adicional.

Exemplo: como usar a condição creatorAccount

O exemplo de declaração de política a seguir mostra como usar a condição creatorAccount em uma política para permitir a criação de regras somente se a conta especificada como creatorAccount for a conta que criou a regra.

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

Exemplo: como usar a condição eventBusInvocation

eventBusInvocationIndica se a invocação se origina de um destino entre contas ou de uma solicitação. PutEvents API O valor é verdadeiro quando a invocação resulta de uma regra que inclui um destino entre contas, como quando o destino é um barramento de eventos em outra conta. O valor é falso quando a invocação resulta de uma PutEvents API solicitação. O exemplo a seguir indica uma invocação de um destino entre contas.

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

Exemplo: como limitar o acesso a uma origem específica

O exemplo de políticas a seguir pode ser anexado a um IAM usuário. A política A permite a PutRule API ação para todos os eventos, enquanto a política B permite PutRule somente se o padrão de evento da regra que está sendo criada corresponder aos EC2 eventos da Amazon.

Política A: permitir todos os eventos

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

Política B: —permitir eventos somente da Amazon EC2

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

EventPattern é um argumento obrigatório para PutRule. Portanto, se o usuário com a Política B chamar PutRule com um padrão de evento como o seguinte.

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

A regra será criada, pois a política permite essa origem específica, que é, "aws.ec2". No entanto, se o usuário com a Política B chamar PutRule com um padrão de evento como o seguinte, a criação da regra será negada porque a política não permite essa origem específica: ou seja, "aws.s3".

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

Essencialmente, o usuário com a Política B só pode criar uma regra que corresponda aos eventos originários da AmazonEC2; portanto, ele só tem permissão para acessar os eventos da AmazonEC2.

Consulte a tabela a seguir para obter uma comparação das Políticas A e B.

Padrão de evento Permitido pela Política A Permitido pela Política B
{ "source": [ "aws.ec2" ] }

Sim

Sim

{ "source": [ "aws.ec2", "aws.s3" ] }

Sim

Não (A origem aws.s3 não é permitida)

{ "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance State-change Notification" ] }

Sim

Sim

{ "detail-type": [ "EC2 Instance State-change Notification" ] }

Sim

Não (a origem deve ser especificado)

Exemplo: como definir várias origens que podem ser usadas em um padrão de evento individualmente

A política a seguir permite que um IAM usuário ou função crie uma regra em que a origem no EventPattern seja a Amazon EC2 ou a AmazonECS.

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

Consulte a tabela a seguir para obter exemplos de padrões de eventos que seriam permitidos ou negados por essa política.

Padrão de evento Permitido pela política
{ "source": [ "aws.ec2" ] }

Sim

{ "source": [ "aws.ecs" ] }

Sim

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

Não

{ "source": [ "aws.ec2", "aws.ecs" ] }

Não

{ "detail-type": [ "AWS API Call via CloudTrail" ] }

Não

Exemplo: como definir uma origem e um DetailType que podem ser usados em um padrão de evento

A política a seguir permite apenas eventos da origem aws.ec2 com DetailType igual a EC2 instance state change notification.

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

Consulte a tabela a seguir para obter exemplos de padrões de eventos que seriam permitidos ou negados por essa política.

Padrão de evento Permitido pela política
{ "source": [ "aws.ec2" ] }

Não

{ "source": [ "aws.ecs" ] }

Não

{ "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance State-change Notification" ] }

Sim

{ "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance Health Failed" ] }

Não

{ "detail-type": [ "EC2 Instance State-change Notification" ] }

Não

Exemplo: como verificar se a origem está definida no padrão de evento

A seguinte política permite que usuários somente criem regras com EventPatterns, que devem ter o campo de origem. Com essa política, um IAM usuário ou função não pode criar uma regra com uma EventPattern que não forneça uma fonte específica.

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

Consulte a tabela a seguir para obter exemplos de padrões de eventos que seriam permitidos ou negados por essa política.

Padrão de evento Permitido pela política
{ "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance State-change Notification" ] }

Sim

{ "source": [ "aws.ecs", "aws.ec2" ] }

Sim

{ "detail-type": [ "EC2 Instance State-change Notification" ] }

Não

Exemplo: como definir uma lista de origens permitidas em um padrão de evento com várias origens

A política a seguir permite criar que usuários criem regras com EventPatterns que podem ter várias origens. Cada origem no padrão de evento deve ser um membro da lista fornecida na condição. Ao usar a condição ForAllValues, certifique-se de que pelo menos um dos itens na lista de condições esteja definido.

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

Consulte a tabela a seguir para obter exemplos de padrões de eventos que seriam permitidos ou negados por essa política.

Padrão de evento Permitido pela política
{ "source": [ "aws.ec2" ] }

Sim

{ "source": [ "aws.ec2", "aws.s3" ] }

Sim

{ "source": [ "aws.ec2", "aws.autoscaling" ] }

Não

{ "detail-type": [ "EC2 Instance State-change Notification" ] }

Não

Exemplo: como limitar o acesso PutRule por detail.service

Você pode restringir um IAM usuário ou função à criação de regras somente para eventos que tenham um determinado valor no events:details.service campo. O valor de events:details.service não é necessariamente o nome de um AWS serviço.

Essa condição de política é útil quando você trabalha com eventos relacionados à segurança ou abuso. AWS Health Ao usar essa condição de política, você pode limitar o acesso a esses alertas confidenciais apenas aos usuários que precisam vê-los.

Por exemplo, a política a seguir permite a criação de regras apenas para eventos nos quais o valor de events:details.service é ABUSE.

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

Exemplo: como limitar o acesso PutRule por detail.eventTypeCode

Você pode restringir um IAM usuário ou função à criação de regras somente para eventos que tenham um determinado valor no events:details.eventTypeCode campo. Essa condição de política é útil quando você trabalha com eventos relacionados à segurança ou abuso. AWS Health Ao usar essa condição de política, você pode limitar o acesso a esses alertas confidenciais apenas aos usuários que precisam vê-los.

Por exemplo, a política a seguir permite a criação de regras apenas para eventos nos quais o valor de 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" } } } ] }

Exemplo: garantir que somente AWS CloudTrail eventos para API chamadas de um determinado PrincipalId sejam permitidos

Todos os AWS CloudTrail eventos têm o PrincipalId nome do usuário que fez a API chamada no detail.userIdentity.principalId caminho de um evento. Usando a chave de events:detail.userIdentity.principalId condição, você pode limitar o acesso de IAM usuários ou funções aos CloudTrail eventos somente para aqueles provenientes de uma conta específica.

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

Consulte a tabela a seguir para obter exemplos de padrões de eventos que seriam permitidos ou negados por essa política.

Padrão de evento Permitido pela política
{ "detail-type": [ "AWS API Call via CloudTrail" ] }

Não

{ "detail-type": [ "AWS API Call via CloudTrail" ], "detail.userIdentity.principalId": [ "AIDAJ45Q7YFFAREXAMPLE" ] }

Sim

{ "detail-type": [ "AWS API Call via CloudTrail" ], "detail.userIdentity.principalId": [ "AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName" ] }

Não

Exemplo: como limitar o acesso a destinos

Se um IAM usuário ou função tiver events:PutTargets permissão, ele poderá adicionar qualquer alvo na mesma conta às regras que ele tem permissão para acessar. A seguinte política limita usuários de adicionarem destinos a apenas uma regra específica: MyRule na conta 123456789012.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutTargetsOnASpecificRule", "Effect": "Allow", "Action": "events:PutTargets", "Resource": "arn:aws:events:us-east-1:123456789012:rule/MyRule" } ] }

Para limitar o destino que pode ser adicionado à regra, use a chave de condição events:TargetArn. Por exemplo, é possível limitar destinos a funções do Lambda, como no exemplo a seguir.

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