

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.

# Crear un usuario y una política de IAM
<a name="tutorial-stock-data-kplkcl2-iam"></a>

Las mejores prácticas de seguridad para AWS dictar el uso de permisos detallados para controlar el acceso a los diferentes recursos. AWS Identity and Access Management (IAM) le permite administrar los usuarios y los permisos de los usuarios. AWS Una [política de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html) enumera de forma explícita las acciones que se pueden realizar y los recursos a los que se pueden aplicar dichas acciones.

A continuación se indican los permisos mínimos que suelen requerirse para los productores y consumidores de Kinesis Data Streams.


**Productor**  

| Acciones | Recurso | Finalidad | 
| --- | --- | --- | 
| DescribeStream, DescribeStreamSummary, DescribeStreamConsumer | Flujo de datos de Kinesis | Antes de intentar leer registros, el consumidor comprueba si la secuencia de datos existe y si está activa, y si los fragmentos se encuentran en la secuencia de datos. | 
| SubscribeToShard, RegisterStreamConsumer | Flujo de datos de Kinesis | Suscribe y registra a los consumidores en un fragmento. | 
| PutRecord, PutRecords | Flujo de datos de Kinesis | Escribe registros en Kinesis Data Streams. | 


**Consumidor**  

| **Acciones** | **Resource** | **Finalidad** | 
| --- | --- | --- | 
| DescribeStream | Flujo de datos de Kinesis | Antes de intentar leer registros, el consumidor comprueba si la secuencia de datos existe y si está activa, y si los fragmentos se encuentran en la secuencia de datos. | 
| GetRecords, GetShardIterator  | Flujo de datos de Kinesis | Lee registros de un fragmento. | 
| CreateTable, DescribeTable, GetItem, PutItem, Scan, UpdateItem | Tabla de Amazon DynamoDB | Si el consumidor se desarrolla con Kinesis Client Library (KCL) (versión 1.x o 2.x), necesita permisos en una tabla de DynamoDB para realizar un seguimiento del estado de procesamiento de la aplicación. | 
| DeleteItem | Tabla de Amazon DynamoDB | Para cuando el consumidor realiza split/merge operaciones en fragmentos de Kinesis Data Streams. | 
| PutMetricData |  CloudWatch Registro de Amazon | El KCL también carga métricas CloudWatch, que son útiles para monitorear la aplicación. | 

Para este tutorial, creará una única política de IAM que otorgue todos los permisos precedentes. En producción, es posible que desee crear dos políticas, una para los productores y otra para los consumidores.

**Para crear una política de IAM**

1. Busque el nombre de recurso de Amazon (ARN) del nuevo flujo de datos que creó en el paso anterior. Puede encontrar este ARN como **Stream ARN (ARN de la secuencia)** en la parte superior de la pestaña **Details (Detalles)**. El formato del ARN es el siguiente:

   ```
   arn:aws:kinesis:region:account:stream/name
   ```  
*region*  
El código de AWS región; por ejemplo,. `us-west-2` Para obtener más información, consulte [Conceptos de región y zona de disponibilidad](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-regions-availability-zones).  
*inscrita*  
El ID de la AWS cuenta, tal y como se muestra en la [configuración de la cuenta](https://console.aws.amazon.com/billing/home?#/account).  
*name*  
El nombre del flujo de datos que creó en el paso anterior, que es `StockTradeStream`.

1. Determine el ARN de la tabla de DynamoDB que utilizará el consumidor (y que creará la primera instancia de consumidor). Debe tener el siguiente formato:

   ```
   arn:aws:dynamodb:region:account:table/name
   ```

   La región y el ID de cuenta son idénticos a los valores del ARN del flujo de datos que se utiliza para este tutorial, pero el nombre es el *nombre* de la tabla de DynamoDB creada y utilizada por la aplicación del consumidor. KCL utiliza el nombre de la aplicación como nombre de tabla. En este paso, utilice `StockTradesProcessor` para el nombre de la tabla DynamoDB, ya que ese es el nombre de la aplicación utilizado en los pasos posteriores de este tutorial.

1. En la consola de IAM, en **Políticas** ([https://console.aws.amazon.com/iam/home \$1policies](https://console.aws.amazon.com/iam/home#policies)), selecciona **Crear política**. Si es la primera vez que trabaja con políticas de IAM, elija **Introducción**, **Crear política**.

1. Elija **Seleccionar** junto a **Generador de políticas**.

1. Elija **Amazon Kinesis** como servicio. AWS 

1. Seleccione `DescribeStream`, `GetShardIterator`, `GetRecords`, `PutRecord` y `PutRecords` como acciones permitidas.

1. Introduzca el ARN del flujo de datos que está utilizando en este tutorial.

1. Utilice **Add Statement (Añadir instrucción)** para cada uno de los siguientes:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/streams/latest/dev/tutorial-stock-data-kplkcl2-iam.html)

   El asterisco (`*`) que se utiliza cuando no es necesario especificar un ARN. En este caso, se debe a que no hay un recurso específico CloudWatch en el que se invoque la `PutMetricData` acción.

1. Elija **Paso siguiente**.

1. Cambie **Policy Name (Nombre de política)** a `StockTradeStreamPolicy`, revise el código y elija **Create Policy (Crear política)**.

El documento de política resultante debería tener el siguiente aspecto:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Stmt123",
            "Effect": "Allow",
            "Action": [
                "kinesis:DescribeStream",
                "kinesis:PutRecord",
                "kinesis:PutRecords",
                "kinesis:GetShardIterator",
                "kinesis:GetRecords",
                "kinesis:ListShards",
                "kinesis:DescribeStreamSummary",
                "kinesis:RegisterStreamConsumer"
            ],
            "Resource": [
                "arn:aws:kinesis:us-west-2:111122223333:stream/StockTradeStream"
            ]
        },
        {
            "Sid": "Stmt234",
            "Effect": "Allow",
            "Action": [
                "kinesis:SubscribeToShard",
                "kinesis:DescribeStreamConsumer"
            ],
            "Resource": [
                "arn:aws:kinesis:us-west-2:111122223333:stream/StockTradeStream/*"
            ]
        },
        {
            "Sid": "Stmt456",
            "Effect": "Allow",
            "Action": [
                "dynamodb:*"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:111122223333:table/StockTradesProcessor"
            ]
        },
        {
            "Sid": "Stmt789",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

**Para crear un usuario de IAM**

1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En la página **Users (Usuarios)**, elija **Add user (Añadir usuario)**.

1. En **Nombre de usuario**, escriba `StockTradeStreamUser`.

1. En **Access type (Tipo de acceso)**, elija **Programmatic access (Acceso por programa)** y, a continuación, elija **Next: Permissions (Siguiente: Permisos)**.

1. Elija **Asociar políticas existentes directamente**.

1. Busque la política que creó en el procedimiento precedente por su nombre (`StockTradeStreamPolicy`. Seleccione la casilla situada a la izquierda del nombre de la política y, a continuación, elija **Next: Review (Siguiente: Revisión)**.

1. Revise los detalles y el resumen y, a continuación, elija **Create user (Crear usuario)**.

1. Copie el valor de **Access key ID (ID de clave de acceso)** y guárdelo de modo confidencial. En **Secret access key (Clave de acceso secreta)**, elija **Show (Mostrar)** y guarde también esa clave de forma confidencial.

1. Pegue las claves de acceso y secreta en un archivo local en una ubicación segura a la que solo pueda obtener acceso usted. Para esta aplicación, cree un archivo denominado ` ~/.aws/credentials` (con permisos estrictos). El archivo debe tener el siguiente formato:

   ```
   [default]
   aws_access_key_id=access key
   aws_secret_access_key=secret access key
   ```

**Asociar una política de IAM a un usuario**

1. En la consola de IAM, abra [Políticas](https://console.aws.amazon.com/iam/home?#policies) y elija **Acciones de política**. 

1. Elija `StockTradeStreamPolicy` y **Asociar**.

1. Elija `StockTradeStreamUser` y **Asociar política**.

## Siguientes pasos
<a name="tutorial-stock-data-kplkcl2-iam-next"></a>

[Descargar y compilar el código](tutorial-stock-data-kplkcl2-download.md)