

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
<a name="controlling-access"></a>

AWS Identity and Access Management (IAM) le permite hacer lo siguiente:
+ Cree usuarios y grupos en su cuenta AWS 
+ Asigne credenciales de seguridad únicas a cada usuario de su AWS cuenta
+ Controle los permisos de cada usuario para realizar tareas utilizando AWS los recursos
+ Permita que los usuarios de otra AWS cuenta compartan sus AWS recursos
+ Cree funciones para su AWS cuenta y defina los usuarios o servicios que pueden asumirlas
+ Usa las identidades existentes en tu empresa para conceder permisos para realizar tareas con AWS recursos

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

Si está desarrollando una aplicación con la biblioteca cliente de Kinesis (KCL), su política debe incluir los permisos para Amazon DynamoDB y Amazon CloudWatch; la KCL usa DynamoDB para rastrear la información de estado de la aplicación y enviar las métricas de KCL en su CloudWatch nombre. CloudWatch Para obtener más información sobre KCL, consulte [Desarrollar consumidores de KCL 1.x](developing-consumers-with-kcl.md).

Para obtener más información sobre IAM, consulte lo siguiente:
+ [AWS Identity and Access Management (IAM) ](https://aws.amazon.com/iam/)
+ [Cómo empezar con IAM ](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started.html)
+ [Guía del usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/)

Para más información acerca de IAM y DynamoDB, consulte [Uso de IAM para controlar el acceso a recursos de Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/UsingIAMWithDDB.html) en la *Guía para desarrolladores de Amazon DynamoDB*. 

Para obtener más información sobre IAM y Amazon CloudWatch, consulte Cómo [ controlar el acceso de los usuarios a su AWS cuenta ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/UsingIAM.html) en la Guía del CloudWatch usuario de * Amazon. *

**Topics**
+ [Sintaxis de la política](#policy-syntax)
+ [Acciones para Kinesis Data Streams](#kinesis-using-iam-actions)
+ [Nombres de recursos de Amazon (ARN) para Kinesis Data Streams](#kinesis-using-iam-arn-format)
+ [Ejemplo de políticas para Kinesis Data Streams](#kinesis-using-iam-examples)
+ [Compartir su flujo de datos con otra cuenta](#sharing-data-streams)
+ [Configure un AWS Lambda función para leer datos de Kinesis Data Streams en otra cuenta](#sharing-data-streams-example)
+ [Compartir acceso mediante políticas basadas en recursos](resource-based-policy-examples.md)

## Sintaxis de la política
<a name="policy-syntax"></a>

Una política de IAM es un documento JSON que contiene una o varias instrucciones. 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, los usuarios de IAM no tienen permiso para utilizar los recursos y las acciones de la API, 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.
+ **Action**: el valor de *action* es la acción de la API para la que concede o deniega permisos.
+ **Resource**: el recurso al que afecta la acción. Para especificar un recurso en la instrucción, debe usar el 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 las políticas de IAM, es posible que quiera utilizar el [generador de políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-generator) y el [simulador de política de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html).

## Acciones para Kinesis Data Streams
<a name="kinesis-using-iam-actions"></a>

En una instrucción de política de IAM, puede especificar cualquier acción de API de cualquier servicio que sea compatible con IAM. Para Kinesis Data Streams, utilice el prefijo siguiente con el nombre de la acción de la API: `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 obtener la lista completa de las acciones de la API de Kinesis Data Streams, consulte [Referencia de la API de Amazon Kinesis](https://docs.aws.amazon.com/kinesis/latest/APIReference/).

## Nombres de recursos de Amazon (ARN) para Kinesis Data Streams
<a name="kinesis-using-iam-arn-format"></a>

Cada instrucción de política de IAM se aplica a los recursos especificados utilizando sus ARN.

Utilice el siguiente formato de recurso de ARN para los flujos de datos de Kinesis:

```
arn:aws:kinesis:{{region}}:{{account-id}}:stream/{{stream-name}}
```

Por ejemplo:

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

## Ejemplo de políticas para Kinesis Data Streams
<a name="kinesis-using-iam-examples"></a>

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 ]

**Example**  
 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 ]

**Example**  
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 ]

**Example**  
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 ]

**Example**  
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/*"
            ]
        }
    ]
}
```

------

## Compartir su flujo de datos con otra cuenta
<a name="sharing-data-streams"></a>

**nota**  
 Actualmente, Kinesis Producer Library no admite la especificación de un ARN de flujo al escribir en un flujo de datos. Usa el AWS SDK si quieres escribir en un flujo de datos entre cuentas. 

Adjunte una política [ basada en recursos ](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based) a su transmisión de datos para conceder acceso a otra cuenta, usuario de IAM o rol de IAM. Resource-based las políticas son documentos de políticas de JSON que se adjuntan a un recurso, como un flujo de datos. Estas políticas conceden a la [entidad principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) 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 principales pueden incluir cuentas, usuarios, roles, usuarios federados o AWS servicios. Puede configurar políticas en la consola, la API o el SDK de Kinesis Data Streams. 

Tenga en cuenta que compartir el acceso con consumidores registrados, como [Enhanced Fan Out](https://docs.aws.amazon.com/streams/latest/dev/enhanced-consumers.html), requiere una política tanto en el ARN del flujo de datos como en el ARN del consumidor. 

### Habilitar acceso entre cuentas
<a name="sharing-data-streams-enabling"></a>

Para habilitar el acceso entre cuentas, puedes especificar toda una cuenta o entidades de IAM de otra cuenta como la entidad principal de una política en función de 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 debe usar una política basada en la identidad para conceder al principal acceso al recurso. Sin embargo, si la política basada en recursos concede 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 acceso entre cuentas, consulte [Acceso entre cuentas por recurso en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html).

Los administradores de flujos 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 elemento `Action` de una política JSON describe las acciones que puede utilizar para conceder o denegar el acceso en una política. Las acciones de política suelen tener el mismo nombre que la operación de AWS API asociada. 

Acciones de Kinesis Data Streams que se pueden compartir:


| Acción de  | Nivel de acceso | 
| --- | --- | 
| [DescribeStreamConsumer](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStreamConsumer.html) | Consumidor | 
| [DescribeStreamSummary](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStreamSummary.html) | Flujo de datos | 
| [GetRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetRecords.html) | Flujo de datos | 
| [GetShardIterator](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetShardIterator.html) | Flujo de datos | 
| [ListShards](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListShards.html) | Flujo de datos | 
| [PutRecord](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html) | Flujo de datos | 
| [PutRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html) | Flujo de datos | 
| [SubscribeToShard](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_SubscribeToShard.html) | 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 entre cuentas, debe especificar el ARN del flujo para el acceso al flujo de datos y el ARN del consumidor para el acceso de los consumidores registrados. 

### Ejemplo de políticas basadas en recursos para Kinesis Data Streams
<a name="kinesis-stream-sharing-iam-examples"></a>

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"}`
Usuario de IAM: `{"AWS": "arn:aws:iam::123456789012:user/user-name"}`
Rol de IAM: `{"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 ]

**Example**    
****  

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

**Example**    
****  

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

**Example**  
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::{{111122223333}}: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::{{111122223333}}: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. 

------

### Gestione la política de su flujo de datos mediante programación
<a name="sharing-data-streams-managing-policy"></a>

Además de eso Consola de administración de AWS, Kinesis Data Streams tiene tres API para administrar su política de transmisión de datos: 
+ [PutResourcePolicy](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutResourcePolicy.html)
+ [GetResourcePolicy](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetResourcePolicy.html)
+ [DeleteResourcePolicy](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DeleteResourcePolicy.html)

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
<a name="sharing-data-streams-validating"></a>

Las políticas de recursos de Kinesis Data Streams tienen las siguientes restricciones: 
+ No se admiten caracteres comodín (\*) para ayudar a evitar que se otorgue acceso amplio mediante las políticas de recursos que están directamente vinculadas con un flujo de datos o un consumidor registrado. Además, analice detenidamente las siguientes políticas para confirmar que no otorgan acceso amplio:
  + Identity-based políticas asociadas a los AWS directores asociados (por ejemplo, las funciones de IAM)
  + Resource-based políticas asociadas a los AWS recursos asociados (por ejemplo, las claves de AWS Key Management Service KMS)
+ AWS Los directores de servicio no admiten directores de servicio para evitar posibles confusiones entre los diputados[. ](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) 
+ No se admiten entidades principales federadas. 
+ No se admiten los ID de usuario canónicos. 
+ El tamaño de la política no puede superar los 20 KB. 

### Compartir acceso a datos cifrados
<a name="sharing-access-to-encrypted-data-1"></a>

Si ha habilitado el cifrado del lado del servidor para un flujo de datos con una clave KMS AWS administrada y desea compartir el acceso mediante una política de recursos, debe cambiar a usar la clave administrada por el cliente (CMK). Para obtener más información, consulte [¿Qué es el cifrado del lado del servidor para Kinesis Data Streams?](what-is-sse.md). Además, debe permitir que las entidades principales compartidas tengan acceso a su CMK mediante las capacidades de uso compartido entre cuentas de KMS. Asegúrese de realizar también el cambio en las políticas de IAM para las entidades principales compartidas. Para obtener más información, consulte [Allowing users in other accounts to use a KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html) (Permitir que los usuarios de otras cuentas utilicen una clave KMS).

## Configure un AWS Lambda función para leer datos de Kinesis Data Streams en otra cuenta
<a name="sharing-data-streams-example"></a>

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 varias cuentas AWS Lambda funciones](resource-based-policy-examples.md#Resource-based-policy-examples-lambda). 