Control del acceso a los recursos de Amazon Kinesis Data Streams mediante IAM - Amazon Kinesis Data Streams

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Control del acceso a los recursos de Amazon Kinesis Data Streams mediante IAM

AWS Identity and Access Management (IAM) le permite hacer lo siguiente:

  • Cree usuarios y grupos en su AWS cuenta

  • Asigna credenciales de seguridad únicas a cada usuario de tu AWS cuenta

  • Controle los permisos de cada usuario para realizar tareas utilizando AWS los recursos

  • Permite que los usuarios de otra AWS cuenta compartan tus AWS recursos

  • Cree roles para su AWS cuenta y defina los usuarios o servicios que pueden asumirlos

  • Utilice las identidades existentes de su empresa a fin de conceder permisos para realizar tareas con AWS recursos

Al usarlo IAM con Kinesis Data Streams, puede controlar si los usuarios de su organización pueden realizar una tarea mediante acciones específicas de Kinesis Data API Streams y si pueden usar recursos específicos. AWS

Si está desarrollando una aplicación con la biblioteca de clientes de Kinesis (KCL), su política debe incluir permisos para Amazon DynamoDB y Amazon CloudWatch; además, KCL utiliza DynamoDB para realizar un seguimiento de la información de estado de la aplicación y para enviar las métricas en su nombre. CloudWatch KCL CloudWatch Para obtener más información acerca de, consulte. KCL Desarrolle KCL consumidores 1.x

Para obtener más información al respectoIAM, consulte lo siguiente:

Para obtener más información sobre IAM Amazon DynamoDB, consulte IAM Uso para controlar el acceso a los recursos de Amazon DynamoDB en la Guía para desarrolladores de Amazon DynamoDB.

Para obtener más información sobre IAM Amazon CloudWatch, consulta Cómo controlar el acceso de los usuarios a tu AWS cuenta en la Guía del CloudWatch usuario de Amazon.

Sintaxis de la política

Una IAM política es un JSON documento que consta de una o más declaraciones. Cada instrucción tiene la estructura siguiente:

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

Una instrucción está compuesta por varios elementos:

  • Effect: el valor de effect puede ser Allow o Deny. De forma predeterminada, IAM los usuarios no tienen permiso para usar recursos y API acciones, por lo que se deniegan todas las solicitudes. Si se concede un permiso explícito se anula el valor predeterminado. Una denegación explícita invalida cualquier permiso concedido.

  • Acción: la acción es la API acción específica para la que se concede o deniega el permiso.

  • Resource: el recurso al que afecta la acción. Para especificar un recurso en la declaración, debe usar su nombre de recurso de Amazon (ARN).

  • Condition: las condiciones son opcionales. Se pueden usar para controlar cuándo entrará en vigor la política.

Al crear y administrar IAM políticas, es posible que desee utilizar el generador de IAM políticas y el simulador IAM de políticas.

Acciones para Kinesis Data Streams

En una declaración de IAM política, puede especificar cualquier API acción de cualquier servicio compatibleIAM. Para Kinesis Data Streams, utilice el siguiente prefijo con el nombre de API la acción:. kinesis: Por ejemplo, kinesis:CreateStream, kinesis:ListStreams y kinesis:DescribeStreamSummary.

Para especificar varias acciones en una única instrucción, sepárelas con comas del siguiente modo:

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

También puede utilizar caracteres comodín para especificar varias acciones. Por ejemplo, puede especificar todas las acciones cuyo nombre comience por la palabra "Get" del siguiente modo:

"Action": "kinesis:Get*"

Para especificar todas las acciones de Kinesis Data Streams, utilice el carácter comodín * del siguiente modo:

"Action": "kinesis:*"

Para ver la lista completa de las acciones de Kinesis Data API Streams, consulte la referencia de API Amazon Kinesis.

Nombres de recursos de Amazon (ARNs) para Kinesis Data Streams

Cada declaración IAM de política se aplica a los recursos que especifique mediante su ARNs uso.

Utilice el siguiente formato de ARN recursos para las transmisiones de datos de Kinesis:

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

Por ejemplo:

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

Ejemplos de políticas para Kinesis Data Streams

Los siguientes ejemplos de políticas demuestran cómo puede controlar el acceso de los usuarios a sus flujos de datos Kinesis.

Example 1: Allow users to get data from a stream

Esta política permite a un usuario o grupo realizar las operaciones DescribeStreamSummary, GetShardIterator y GetRecords en la secuencia especificada y ListStreams en cualquier secuencia. Esta política podría aplicarse a los usuarios que puedan obtener los datos de una determinada secuencia.

{ "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 a un usuario o grupo usar la operación PutRecord con cualquiera de las secuencias de la cuenta. Esta política podría aplicarse a usuarios que puedan agregar registros de datos a todas las secuencias de una cuenta.

{ "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 a un usuario o grupo utilizar cualquier operación de Kinesis Data Streams en el flujo especificado. Esta política podría aplicarse a usuarios que deberían tener control administrativo en una secuencia específica.

{ "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 a un usuario o grupo utilizar cualquier operación de Kinesis Data Streams en cualquier flujo de la cuenta. Dado que esta política concede acceso completo a todas las secuencias, debe restringirla solo a los administradores.

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

Comparta su transmisión de datos con otra cuenta

nota

Actualmente, la biblioteca de productores de Kinesis no admite la especificación de una transmisión ARN al escribir en una transmisión de datos. Utilice la AWS SDK si desea escribir en una transmisión de datos multicuenta.

Adjunta una política basada en recursos a tu flujo de datos para conceder acceso a otra cuenta, IAM usuario o rol. IAM Las políticas basadas en recursos son documentos JSON de política que se adjuntan a un recurso, como un flujo de datos. Estas políticas conceden a la entidad principal especificada el permiso para ejecutar acciones concretas en el recurso y definen en qué condiciones son aplicables. Una política puede tener varias declaraciones. Debe especificar una entidad principal en una política basada en recursos. Los principios pueden incluir cuentas, usuarios, roles, usuarios federados o servicios. AWS Puede configurar las políticas en la consola de Kinesis Data StreamsAPI, SDK o.

Tenga en cuenta que compartir el acceso con consumidores registrados, como Enhanced Fan Out, requiere una política tanto para el flujo ARN de datos como para el consumidorARN.

Habilite el acceso entre cuentas

Para habilitar el acceso entre cuentas, puede especificar una cuenta completa o IAM entidades de otra cuenta como principales en una política basada en recursos. Añadir a una política en función de recursos una entidad principal entre cuentas es solo una parte del establecimiento de una relación de confianza. Cuando el principal y el recurso están en AWS cuentas distintas, también debes usar una política basada en la identidad para conceder al principal acceso al recurso. Sin embargo, si la política en función de recursos concede el acceso a una entidad principal de la misma cuenta, no es necesaria una política basada en identidad adicional.

Para obtener más información sobre el uso de políticas basadas en recursos para el acceso entre cuentas, consulte Acceso a recursos entre cuentas en. IAM

Los administradores del flujo de datos pueden usar AWS Identity and Access Management políticas para especificar quién tiene acceso a qué. Es decir, qué entidad principal puede realizar acciones en qué recursos y en qué condiciones. El Action elemento de una JSON política describe las acciones que puede utilizar para permitir o denegar el acceso a una política. Las acciones de política suelen tener el mismo nombre que la AWS API operación asociada.

Acciones de Kinesis Data Streams que se pueden compartir:

Acción de Nivel de acceso
DescribeStreamConsumer Consumidor
DescribeStreamSummary Flujo de datos
GetRecords Flujo de datos
GetShardIterator Flujo de datos
ListShards Flujo de datos
PutRecord Flujo de datos
PutRecords Flujo de datos
SubscribeToShard Consumidor

A continuación, se muestran ejemplos de uso de una política basada en recursos para conceder acceso entre cuentas a su flujo de datos o a un consumidor registrado.

Para realizar una acción multicuenta, debe especificar el flujo ARN para el acceso al flujo de datos y el consumidor ARN para el acceso de los consumidores registrados.

Ejemplos de políticas basadas en recursos para transmisiones de datos de Kinesis

Compartir un consumidor registrado implica tanto una política de flujo de datos como una política de consumidor, debido a las medidas necesarias.

nota

Los siguientes son ejemplos de valores válidos de Principal:

  • {"AWS": "123456789012"}

  • IAMUsuario: {"AWS": "arn:aws:iam::123456789012:user/user-name"}

  • IAMFunción — {"AWS":["arn:aws:iam::123456789012:role/role-name"]}

  • Múltiples entidades principales (puede ser una combinación de cuenta, usuario o rol): {"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

Declaración de política de flujo de datos:

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

Declaración 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" } ] }

No se admite el comodín (*) para las acciones o el campo principal a fin de mantener el principio del privilegio mínimo.

Administre la política de su flujo de datos de forma programática

Además de eso AWS Management Console, Kinesis Data Streams tiene APIS tres para administrar su política de transmisión de datos:

Use PutResourePolicy para adjuntar o sobrescribir una política para un flujo de datos o un consumidor. Use GetResourcePolicy para comprobar y ver una política para el flujo de datos o el consumidor especificado. Use DeleteResourcePolicy para eliminar una política para el flujo de datos o el consumidor especificado.

Límites de políticas

Las políticas de recursos de Kinesis Data Streams tienen las siguientes restricciones:

  • No se admiten los caracteres comodín (*) para evitar que se conceda un acceso amplio a través de las políticas de recursos que se adjuntan directamente a un flujo de datos o a un consumidor registrado. Además, inspeccione detenidamente las siguientes políticas para confirmar que no conceden un acceso amplio:

    • Políticas basadas en la identidad asociadas a los AWS directores asociados (por ejemplo, las funciones) IAM

    • Políticas basadas en recursos asociadas a los AWS recursos asociados (por ejemplo, claves) AWS Key Management Service KMS

  • AWS No se admite a los directores de servicio como directores para evitar posibles confusiones entre los diputados.

  • No se admiten entidades principales federadas.

  • No se admiten usuarios IDs canónicos.

  • El tamaño de la política no puede superar los 20 KB.

Comparte el acceso a los datos cifrados

Si ha activado el cifrado del lado del servidor para un flujo de datos con KMS clave AWS gestionada y desea compartir el acceso mediante una política de recursos, debe cambiar a utilizar la clave gestionada por el cliente (). CMK Para obtener más información, consulte ¿Qué es el cifrado del lado del servidor para Kinesis Data Streams?. Además, debe permitir que las entidades principales que comparten acceso a la suyaCMK, utilizando las funciones de uso compartido entre cuentasKMS. Asegúrese también de realizar el cambio en IAM las políticas para las entidades principales que comparten información. Para obtener más información, consulte Permitir que los usuarios de otras cuentas usen una KMS clave.

Configurar una AWS Lambda función para leer contenido de Kinesis Data Streams en otra cuenta

Si necesita ver un ejemplo de cómo configurar una función de Lambda para leer contenido de Kinesis Data Streams en otra cuenta, consulte Comparta el acceso con funciones multicuenta AWS Lambda.