

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 Kinesis Video Streams mediante IAM
<a name="how-iam"></a>

Puede usar AWS Identity and Access Management (IAM) con Amazon Kinesis Video Streams para controlar si los usuarios de su organización pueden realizar una tarea mediante operaciones específicas de la API de Kinesis Video Streams y si pueden usar recursos específicos. AWS 

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/)

**Topics**
+ [Sintaxis de la política](#policy-syntax)
+ [Acciones para Kinesis Video Streams](#kinesis-using-iam-actions)
+ [Nombres de recursos de Amazon (ARN) para Kinesis Video Streams](#kinesis-using-iam-arn-format)
+ [Otorgar acceso a otras cuentas de IAM a una transmisión de vídeo de Kinesis](#how-iam-crossaccount)
+ [Ejemplos de políticas para Kinesis Video Streams](#how-iam-policies)

## 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:
+ **Efecto**: el *efecto* puede ser `Allow` o`Deny`. De forma predeterminada, los usuarios 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.
+ **Acción**: la *acción* es la acción específica de la API para la que se concede o deniega el permiso.
+ **Recurso**: el recurso al que afecta la acción. Para especificar un recurso en la instrucción debe utilizar el nombre de recurso de Amazon (ARN).
+ **Condición**: las condiciones son opcionales. Se pueden usar para controlar cuándo está en vigor la política.

Al crear y gestionar las políticas de IAM, le recomendamos que utilice el [generador de políticas de IAM y el simulador de políticas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-generator) de [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html).

## Acciones para Kinesis Video 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 Video Streams, utilice el siguiente prefijo con el nombre de la acción de la API:. `kinesisvideo:` Por ejemplo, `kinesisvideo:CreateStream`, `kinesisvideo:ListStreams` y `kinesisvideo:DescribeStream`.

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

```
"Action": ["kinesisvideo:action1", "kinesisvideo: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": "kinesisvideo:Get*"
```

Para especificar todas las operaciones de Kinesis Video Streams use el carácter comodín de asterisco (\*) del siguiente modo:

```
"Action": "kinesisvideo:*"
```

Para obtener la lista completa de las acciones de la API de Kinesis Video Streams, consulte [https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_Reference.html](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_Reference.html).

## Nombres de recursos de Amazon (ARN) para Kinesis Video 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 la Kinesis Video Streams:

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

Por ejemplo:

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

Puede obtener el ARN de una transmisión usando. [DescribeStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_DescribeStream.html)

## Otorgar acceso a otras cuentas de IAM a una transmisión de vídeo de Kinesis
<a name="how-iam-crossaccount"></a>

Puede que necesite conceder permiso a otras cuentas de IAM para realizar operaciones en las transmisiones de Kinesis Video Streams. En la siguiente información general se describen los pasos generales para conceder acceso a las transmisiones de vídeo a otras cuentas:

1. Obtenga el ID de cuenta de 12 dígitos de la cuenta a la que quiere conceder permisos para realizar operaciones en el recurso de transmisión creado en su cuenta. 

   **Ejemplo:** En los siguientes pasos, utilizaremos 1111 como ID de cuenta de la cuenta a la que quiere conceder permiso y 9999 como ID de Kinesis Video Streams.

1. Cree una política gestionada por IAM en la cuenta propietaria de la transmisión (9999) que permita el nivel de acceso que desee conceder. 

   **Ejemplo de política:**

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "kinesisvideo:GetDataEndpoint",
                   "kinesisvideo:DescribeStream",
                   "kinesisvideo:PutMedia"
               ],
               "Resource": "arn:aws:kinesisvideo:us-west-2:{{999999999999}}:stream/custom-stream-name/1613732218179"
           }
       ]
   }
   ```

------

   Para ver otros ejemplos de políticas para los recursos de Kinesis Video Streams, [Ejemplos de políticas](#how-iam-policies) consulte la siguiente sección.

1. Cree un rol en la cuenta propietaria de la transmisión (9999) y especifique la cuenta a la que quiere conceder permisos (1111). Esto añadirá una entidad de confianza al rol. 

   **Ejemplo de política de confianza:**

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::{{111111111111}}:root"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

   Adjunta la política que creaste en el paso anterior a este rol.

   Ahora ha creado un rol en la cuenta 7139999 que tiene permiso para realizar operaciones como `DescribeStream``GetDataEndpoint`, y `PutMedia` en un ARN de recurso de transmisión en la política administrada. Este nuevo rol también confía en que la otra cuenta, 1111, asuma este rol. 
**importante**  
Toma nota del ARN del rol, lo necesitarás en el siguiente paso.

1. Crea una política gestionada en la otra cuenta (1111) que permita realizar `AssumeRole` acciones en el rol que creaste en la cuenta 9999 en el paso anterior. Deberás mencionar la función ARN del paso anterior. 

   **Ejemplo de política:**

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRole",
           "Resource": "arn:aws:iam::{{999999999999}}:role/CustomRoleName"
       }
   }
   ```

------

1. Adjunta la política creada en el paso anterior a una entidad de IAM, como un rol o un usuario en la cuenta 1111. Este usuario ahora tiene permiso para asumir un rol `CustomRoleName` en la cuenta 7139999. 

   Las credenciales de este usuario llaman a la AWS STS `AssumeRole` API para obtener las credenciales de sesión, que posteriormente se utilizan para llamar a las API de Kinesis Video Streams en la transmisión creada en la cuenta 9999.

   ```
   aws sts assume-role --role-arn "arn:aws:iam::{{999999999999}}:role/CustomRoleName" --role-session-name "kvs-cross-account-assume-role"
   {
       "Credentials": {
           "AccessKeyId": "",
           "SecretAccessKey": "",
           "SessionToken": "",
           "Expiration": ""
       },
       "AssumedRoleUser": {
           "AssumedRoleId": "",
           "Arn": ""
       }
   }
   ```

1. Establezca la clave de acceso, la clave secreta y las credenciales de sesión en función de las configuraciones anteriores en el entorno.

   ```
   set AWS_ACCESS_KEY_ID=
   set AWS_SECRET_ACCESS_KEY=
   set AWS_SESSION_TOKEN=
   ```

1. Ejecute las API de Kinesis Video Streams para describir y obtener el punto final de datos de la transmisión en la cuenta ⟶ 9999.

   ```
   aws kinesisvideo describe-stream --stream-arn "arn:aws:kinesisvideo:us-west-2:{{999999999999}}:stream/custom-stream-name/1613732218179"
   {
       "StreamInfo": {
           "StreamName": "custom-stream-name",
           "StreamARN": "arn:aws:kinesisvideo:us-west-2:{{999999999999}}:stream/custom-stream-name/1613732218179",
           "KmsKeyId": "arn:aws:kms:us-west-2:{{999999999999}}:alias/aws/kinesisvideo",
           "Version": "abcd",
           "Status": "ACTIVE",
           "CreationTime": "2018-02-19T10:56:58.179000+00:00",
           "DataRetentionInHours": 24
       }
   }
   
   aws kinesisvideo get-data-endpoint --stream-arn "arn:aws:kinesisvideo:us-west-2:{{999999999999}}:stream/custom-stream-name/1613732218179" --api-name "PUT_MEDIA"
   {
       "DataEndpoint": "https://s-b12345.kinesisvideo.us-west-2.amazonaws.com"
   }
   ```

Para obtener instrucciones genéricas paso a paso sobre cómo conceder el acceso a varias cuentas, consulte [Delegar el acceso a Cuentas de AWS través](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) de funciones de IAM.

## Ejemplos de políticas para Kinesis Video Streams
<a name="how-iam-policies"></a>

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

**Example 1: Permita a los usuarios obtener datos de cualquier transmisión de vídeo de Kinesis**  
Esta política permite a un usuario o grupo realizar las `ListTagsForStream` operaciones`DescribeStream`, `GetDataEndpoint` `GetMedia``ListStreams`, y en cualquier transmisión de vídeo de Kinesis. Esta política es adecuada para los usuarios que pueden recibir datos de cualquier transmisión de vídeo.     
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesisvideo:Describe*",
                "kinesisvideo:Get*",
                "kinesisvideo:List*"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example 2: Permitir a un usuario crear una transmisión de vídeo de Kinesis y escribir datos en ella**  
Esta política permite a un usuario o grupo realizar las operaciones `CreateStream` y `PutMedia`. Esta política es adecuada para una cámara de seguridad que pueda crear una transmisión de vídeo y enviar datos a la misma.  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesisvideo:CreateStream",
                "kinesisvideo:PutMedia"            
            ],
            "Resource": "*"
        }
    ]
}
```

**Example 3: Permitir a un usuario el acceso total a todos los recursos de Kinesis Video Streams**  
Esta política permite a un usuario o grupo realizar cualquier operación de Kinesis Video Streams en cualquier recurso. Esta política es adecuada para los administradores.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kinesisvideo:*",
            "Resource": "*"
        }
    ]
}
```

**Example 4: Permitir a un usuario escribir datos en una transmisión de vídeo de Kinesis específica**  
Esta política permite a un usuario o a un grupo escribir datos en una transmisión de vídeo específica. Esta política es adecuada para un dispositivo que pueda enviar datos a una única transmisión.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kinesisvideo:PutMedia",
            "Resource": "arn:aws:kinesisvideo:us-west-2:123456789012:stream/your_stream/0123456789012"
        }
    ]
}
```