Controle do acesso aos recursos do Amazon Kinesis Data Streams usando IAM - Amazon Kinesis Data Streams

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á.

Controle do acesso aos recursos do Amazon Kinesis Data Streams usando IAM

AWS Identity and Access Management (IAM) permite que você faça o seguinte:

  • Crie usuários e grupos em sua AWS conta

  • Atribua credenciais de segurança exclusivas a cada usuário em sua conta AWS

  • Controle as permissões de cada usuário para realizar tarefas usando AWS recursos

  • Permita que os usuários de outra AWS conta compartilhem seus AWS recursos

  • Crie funções para sua AWS conta e defina os usuários ou serviços que podem assumi-las

  • Use identidades existentes para sua empresa para conceder permissões para realizar tarefas usando recursos AWS

Ao usar IAM com o Kinesis Data Streams, você pode controlar se os usuários da sua organização podem realizar uma tarefa usando ações específicas do API Kinesis Data Streams e se podem usar recursos específicos. AWS

Se você estiver desenvolvendo um aplicativo usando a Kinesis Client Library (KCL), sua política deve incluir permissões para o Amazon DynamoDB e a Amazon CloudWatch; eles KCL usam o DynamoDB para rastrear informações de estado do aplicativo e enviar métricas em seu nome. CloudWatch KCL CloudWatch Para obter mais informações sobre o KCL, consulte Desenvolva KCL consumidores 1.x.

Para obter mais informações sobre o IAM, consulte o seguinte:

Para obter mais informações sobre o IAM Amazon DynamoDB, consulte Como IAM usar para controlar o acesso aos recursos do Amazon DynamoDB no Amazon DynamoDB Developer Guide.

Para obter mais informações sobre IAM a Amazon CloudWatch, consulte Controlando o acesso do usuário à sua AWS conta no Guia CloudWatch do usuário da Amazon.

Sintaxe da política

Uma IAM política é um JSON documento que consiste em uma ou mais declarações. Cada instrução é estruturada da seguinte maneira:

{ "Statement":[{ "Effect":"effect", "Action":"action", "Resource":"arn", "Condition":{ "condition":{ "key":"value" } } } ] }

Existem vários elementos que compõem uma instrução:

  • Efeito: o efeito pode ser Allow ou Deny. Por padrão, IAM os usuários não têm permissão para usar recursos e API ações, então todas as solicitações são negadas. Um permitir explícito substitui o padrão. Uma negar explícito substitui todas as permissões.

  • Ação: A ação é a API ação específica para a qual você está concedendo ou negando permissão.

  • Recurso: o recurso afetado pela ação. Para especificar um recurso na declaração, você precisa usar seu Amazon Resource Name (ARN).

  • Condição: condições são opcionais. Elas podem ser usadas para controlar quando as políticas entrarão em vigor.

Ao criar e gerenciar IAM políticas, talvez você queira usar o IAMPolicy Generator e o IAM Policy Simulator.

Ações para o Kinesis Data Streams

Em uma declaração IAM de política, você pode especificar qualquer API ação de qualquer serviço que ofereça suporteIAM. Para Kinesis Data Streams, use o seguinte prefixo com o nome API da ação:. kinesis: Por exemplo: kinesis:CreateStream, kinesis:ListStreams e kinesis:DescribeStreamSummary.

Para especificar várias ações em uma única instrução, separe-as com vírgulas, como segue:

"Action": ["kinesis:action1", "kinesis:action2"]

Também é possível especificar várias ações usando asteriscos. Por exemplo, é possível especificar todas as ações cujo nome começa com a palavra "Obter", conforme o seguinte:

"Action": "kinesis:Get*"

Para especificar todas as operações do Kinesis Data Streams, use o curinga *, como a seguir:

"Action": "kinesis:*"

Para ver a lista completa das ações do Kinesis API Data Streams, consulte a Referência do Amazon API Kinesis.

Nomes de recursos da Amazon (ARNs) para Kinesis Data Streams

Cada declaração IAM de política se aplica aos recursos que você especifica usando seusARNs.

Use o seguinte formato ARN de recurso para streams de dados do Kinesis:

arn:aws:kinesis:region:account-id:stream/stream-name

Por exemplo:

"Resource": arn:aws:kinesis:*:111122223333:stream/my-stream

Exemplos de políticas para o Kinesis Data Streams

As políticas de exemplo a seguir demonstram como é possível controlar o acesso do usuário aos fluxos de dados do Kinesis.

Example 1: Allow users to get data from a stream

Esta política permite que um usuário ou grupo execute as operações DescribeStreamSummary, GetShardIterator e GetRecords no fluxo especificado e ListStreams em qualquer stream. Esta política pode ser aplicada a usuários que devem conseguir obter dados de um fluxo específico.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:Get*", "kinesis:DescribeStreamSummary" ], "Resource": [ "arn:aws:kinesis:us-east-1:111122223333:stream/stream1" ] }, { "Effect": "Allow", "Action": [ "kinesis:ListStreams" ], "Resource": [ "*" ] } ] }
Example 2: Allow users to add data to any stream in the account

Esta política permite que um usuário ou grupo use a operação PutRecord com qualquer um dos streams da conta. Esta política pode ser aplicada a usuários que devem conseguir adicionar registros de dados a todos os streams em uma conta.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:PutRecord" ], "Resource": [ "arn:aws:kinesis:us-east-1:111122223333:stream/*" ] } ] }
Example 3: Allow any Kinesis Data Streams action on a specific stream

Esta política permite que um usuário ou grupo use qualquer operação do Kinesis Data Streams no fluxo especificado. Esta política poderia ser aplicada a usuários que devem ter controle administrativo por meio de um fluxo específico.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesis:*", "Resource": [ "arn:aws:kinesis:us-east-1:111122223333:stream/stream1" ] } ] }
Example 4: Allow any Kinesis Data Streams action on any stream

Esta política permite que um usuário ou grupo use qualquer operação do Kinesis Data Streams em qualquer fluxo em uma conta. Como esta política concede acesso total a todos os fluxos, deve-se restringi-la somente aos administradores.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesis:*", "Resource": [ "arn:aws:kinesis:*:111122223333:stream/*" ] } ] }

Compartilhe seu fluxo de dados com outra conta

nota

Atualmente, a Kinesis Producer Library não oferece suporte à especificação de um stream ARN ao gravar em um stream de dados. Use o AWS SDK se quiser gravar em um fluxo de dados entre contas.

Anexe uma política baseada em recursos ao seu fluxo de dados para conceder acesso a outra conta, IAM usuário ou IAM função. Políticas baseadas em recursos são documentos JSON de política que você anexa a um recurso, como um fluxo de dados. Essas políticas concedem permissão para a entidade principal especificada executar ações específicas nesse recurso e definem sob quais condições isso se aplica. Uma política pode ter várias declarações. É necessário especificar um principal em uma política baseada em recursos. Os diretores podem incluir contas, usuários, funções, usuários federados ou AWS serviços. Você pode configurar políticas no console do Kinesis Data Streams API ou. SDK

Observe que compartilhar o acesso a consumidores registrados, como o Enhanced Fan Out, exige uma política tanto sobre o fluxo de dados ARN quanto sobre o consumidorARN.

Habilitar o acesso entre contas

Para permitir o acesso entre contas, você pode especificar uma conta inteira ou as entidades do IAM em outra conta como o principal em uma política baseada em recurso. Adicionar uma entidade principal entre contas à política baseada em recurso é apenas metade da tarefa de estabelecimento da relação de confiança. Quando o principal e o recurso estão em AWS contas separadas, você também deve usar uma política baseada em identidade para conceder ao principal acesso ao recurso. No entanto, se uma política baseada em recurso conceder acesso a uma entidade principal na mesma conta, nenhuma política baseada em identidade adicional será necessária.

Para obter mais informações sobre o uso de políticas baseadas em recursos para acesso entre contas, consulte Acesso a recursos entre contas em. IAM

Os administradores de fluxo de dados podem usar AWS Identity and Access Management políticas para especificar quem tem acesso ao quê. Ou seja, qual entidade principal pode executar ações em quais recursos, e em que condições. O Action elemento de uma JSON política descreve as ações que você pode usar para permitir ou negar acesso em uma política. As ações de política geralmente têm o mesmo nome da AWS API operação associada.

Ações do Kinesis Data Streams que podem ser compartilhadas:

Ação Nível de acesso
DescribeStreamConsumer Consumidor
DescribeStreamSummary Fluxo de dados
GetRecords Fluxo de dados
GetShardIterator Fluxo de dados
ListShards Fluxo de dados
PutRecord Fluxo de dados
PutRecords Fluxo de dados
SubscribeToShard Consumidor

Veja a seguir exemplos do uso de uma política baseada em recursos para conceder acesso entre contas ao fluxo de dados ou ao consumidor registrado.

Para realizar uma ação entre contas, você deve especificar o fluxo ARN para acesso ao fluxo de dados e o consumidor ARN para acesso de consumidor registrado.

Exemplo de políticas baseadas em recursos para fluxos de dados do Kinesis

Compartilhar um consumidor registrado envolve uma política de fluxo de dados e uma política de consumidor devido às ações necessárias.

nota

Veja os seguintes exemplos de valores válidos para Principal:

  • {"AWS": "123456789012"}

  • IAMUsuário — {"AWS": "arn:aws:iam::123456789012:user/user-name"}

  • IAMFunção — {"AWS":["arn:aws:iam::123456789012:role/role-name"]}

  • Várias entidades principais (pode ser uma combinação de contas, usuários, perfis): {"AWS":["123456789012", "123456789013", "arn:aws:iam::123456789012:user/user-name"]}

Example 1: Write access to the data stream
{ "Version": "2012-10-17", "Id": "__default_write_policy_ID", "Statement": [ { "Sid": "writestatement", "Effect": "Allow", "Principal": { "AWS": "Account12345" }, "Action": [ "kinesis:DescribeStreamSummary", "kinesis:ListShards", "kinesis:PutRecord", "kinesis:PutRecords" ], "Resource": "arn:aws:kinesis:us-east-2:123456789012:stream/datastreamABC" } ] }
Example 2: Read access to the data stream
{ "Version": "2012-10-17", "Id": "__default_sharedthroughput_read_policy_ID", "Statement": [ { "Sid": "sharedthroughputreadstatement", "Effect": "Allow", "Principal": { "AWS": "Account12345" }, "Action": [ "kinesis:DescribeStreamSummary", "kinesis:ListShards", "kinesis:GetRecords", "kinesis:GetShardIterator" ], "Resource": "arn:aws:kinesis:us-east-2:123456789012:stream/datastreamABC" } ] }
Example 3: Share enhanced fan-out read access to a registered consumer

Declaração de política de fluxo de dados:

{ "Version": "2012-10-17", "Id": "__default_sharedthroughput_read_policy_ID", "Statement": [ { "Sid": "consumerreadstatement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account12345:role/role-name" }, "Action": [ "kinesis:DescribeStreamSummary", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:us-east-2:123456789012:stream/datastreamABC" } ] }

Declaração de política de consumidor:

{ "Version": "2012-10-17", "Id": "__default_efo_read_policy_ID", "Statement": [ { "Sid": "eforeadstatement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account12345:role/role-name" }, "Action": [ "kinesis:DescribeStreamConsumer", "kinesis:SubscribeToShard" ], "Resource": "arn:aws:kinesis:us-east-2:123456789012:stream/datastreamABC/consumer/consumerDEF:1674696300" } ] }

Não há suporte para o caractere curinga (*) no campo de ações ou entidade principal, a fim de manter o princípio do privilégio mínimo.

Gerencie a política do seu fluxo de dados de forma programática

Além do AWS Management Console, o Kinesis Data Streams APIS tem três para gerenciar sua política de stream de dados:

Use PutResourePolicy para anexar ou substituir uma política de um fluxo de dados ou consumidor. Use GetResourcePolicy para verificar e visualizar uma política do fluxo de dados ou consumidor especificado. Use DeleteResourcePolicy para excluir uma política do fluxo de dados ou consumidor especificado.

Limites de políticas

As políticas de recursos do Kinesis Data Streams têm as restrições a seguir.

  • Não há suporte para curingas (*) para ajudar a impedir que um amplo acesso seja concedido por meio das políticas de recursos diretamente vinculadas a um fluxo de dados ou a um consumidor registrado. Além disso inspecione com cuidado as seguintes políticas para garantir que elas não concedam acesso amplo:

    • Políticas baseadas em identidade vinculadas aos AWS diretores associados (por exemplo, funções) IAM

    • Políticas baseadas em recursos anexadas aos AWS recursos associados (por exemplo, AWS Key Management Service KMS chaves)

  • AWS Os diretores de serviço não recebem suporte para diretores para evitar possíveis deputados confusos.

  • Não há suporte para entidades principais federadas.

  • Usuários canônicos não IDs são suportados.

  • O tamanho da política não pode exceder 20 kB.

Compartilhe o acesso a dados criptografados

Se você habilitou a criptografia do lado do servidor para um fluxo de dados com KMS chave AWS gerenciada e deseja compartilhar o acesso por meio de uma política de recursos, deve passar a usar a chave gerenciada pelo cliente (). CMK Para obter mais informações, consulte O que é criptografia no lado do servidor para o Kinesis Data Streams?. Além disso, você deve permitir que suas entidades principais de compartilhamento tenham acesso às suasCMK, usando recursos de compartilhamento KMS entre contas. Certifique-se também de fazer a alteração nas IAM políticas das entidades principais de compartilhamento. Para obter mais informações, consulte Permitir que usuários de outras contas usem uma KMS chave.

Configurar uma AWS Lambda função para ler do Kinesis Data Streams em outra conta

Para ver um exemplo de como configurar uma função do Lambda para ler do Kinesis Data Streams em outra conta, consulte Compartilhe o acesso com funções entre contas AWS Lambda.