Uso de condições de política do IAM para controle de acesso refinado - 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á.

Uso de condições de política do IAM para controle de acesso refinado

Ao conceder permissões, é possível usar a linguagem da política do IAM para especificar as condições de quando uma política deverá 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.

Caso especifique várias condições ou chaves em uma única condição, todas as condições e chaves devem ser atendidas para que o EventBridge conceda permissão. Caso especifique uma única condição com vários valores para uma chave, o EventBridge concede permissão caso um dos valores seja 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 do usuário do IAM. Para obter mais informações sobre como especificar condições em uma linguagem de política do IAM, consulte Condição no Guia do usuário do IAM.

Por padrão, os usuários e perfis do IAM não podem acessar os eventos em sua conta. Para consumir eventos, um usuário deve ser autorizado para a ação de API PutRule. Se você conceder permissão a um usuário ou perfil do IAM para a ação events:PutRule, em sua respectiva política, eles poderão 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 ação events:PutTargets porque, se quiser que a regra faça mais do que publicar uma métrica do CloudWatch, também deve adicionar um destino a uma regra.

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

De modo semelhante, você pode fornecer uma condição na declaração de política do usuário ou perfil do IAM que permita criar uma regra que só corresponda 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 eventos do Amazon EC2 no EventBridge, usando uma declaração de negação na ação da API PutRule.

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

Chaves de condição do EventBridge

A tabela a seguir mostra as chaves de condição e os pares de chaves e valores que podem ser usados em uma política no EventBridge.

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

aws:SourceAccount

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

ID da conta, nulo

aws:SourceArn

O ARN da regra que está enviando o evento.

ARN, nulo

events:creatorAccount

"events:creatorAccount":"creatorAccount"

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

creatorAccount, Null

events:detail-type

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

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

Tipo de detalhe, nulo

events: detail.eventTypeCode

"events:detail.eventTypeCode":"eventTypeCode"

Em eventTypeCode, use a string literal do campo detail.eventTypeCode do evento, como "AWS_ABUSE_DOS_REPORT".

eventTypeCode, Null

eventos: detail.service

"events:detail.service":"service"

Em serviço, use a string literal do campo detail.service do evento, como "ABUSE".

serviço, Null

eventos: detail.userIdentity.principalId

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

Em principal-id é a string literal do campo detail.userIdentity.principalId do evento com o tipo de detalhe "AWS API Call via CloudTrail" como "AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName.".

Id principal, nulo

events:eventBusInvocation

"events:eventBusInvocation":"boolean"

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

eventBusInvocation, nula

events:ManagedBy

Usado internamente pelos serviços da AWS. Se uma regra for criada por um serviço da AWS em seu nome, o valor será o nome da entidade principal do serviço que criou a regra.

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

events:source

"events:source":"source "

Em que origem é a string literal para o campo de origem do evento, como "aws.ec2" e "aws.s3". Para ver mais valores possíveis para origem, consulte os eventos de exemplo em Eventos de AWS serviços.

Origem, nulo

events:TargetArn

"events:TargetArn":"target-arn "

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

ArrayOfARN, nulo

Para obter um exemplo de declarações de políticas para o EventBridge, consulte Como gerenciar permissões de acesso aos seus recursos do Amazon EventBridge.

Especificações do EventBridge Pipes

O EventBridge Pipes não é compatível com nenhuma chave adicional de condição de política do IAM.

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

A eventBusInvocation indica se a invocação se origina de um destino entre contas ou de uma solicitação de API PutEvents. 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 solicitação de API PutEvents. 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

Os exemplos de política a seguir podem ser anexados a um usuário do IAM. A política A permite a ação de API PutRule 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 a eventos do Amazon EC2.

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 apenas a partir do 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" ] }

Basicamente, o usuário com a política B só pode criar uma regra que corresponda aos eventos originados pelo Amazon EC2. Portanto, eles só podem acessar os eventos do Amazon EC2.

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 usuário ou perfil do IAM crie uma regra na qual a origem no EventPattern é o Amazon EC2 ou o Amazon ECS.

{ "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. Em outras palavras, um usuário ou perfil do IAM não pode criar uma regra com um EventPattern que não forneça uma origem 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 usuário ou perfil do IAM a criar regras apenas para eventos que têm um determinado valor no campo events:details.service. O valor de events:details.service não é necessariamente o nome de um serviço da AWS.

Esta condição de política é útil ao trabalhar com eventos do AWS Health que são relacionados a segurança ou abuso. 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 usuário ou perfil do IAM a criar regras apenas para eventos que têm um determinado valor no campo events:details.eventTypeCode. Esta condição de política é útil ao trabalhar com eventos do AWS Health que são relacionados a segurança ou abuso. 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 eventos do AWS CloudTrail para chamadas de API de um determinado PrincipalId sejam permitidos

Todos os eventos do AWS CloudTrail têm o PrincipalId do usuário que fez a chamada de API no caminho detail.userIdentity.principalId de um evento. Com a ajuda da chave de condição events:detail.userIdentity.principalId, é possível limitar o acesso de usuários ou perfis do IAM aos eventos do CloudTrail apenas para os próximos eventos 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 usuário ou perfil do IAM tiver a permissão events:PutTargets, poderá adicionar qualquer destino na mesma conta às regras que 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:*" } } } ] }