

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.

# Seguridad en Amazon Kinesis Video Streams
<a name="security"></a>

La seguridad en la nube AWS es la máxima prioridad. Como AWS cliente, se beneficiará de una arquitectura de centro de datos y red diseñada para cumplir con los requisitos de las organizaciones más sensibles a la seguridad.

La seguridad es una responsabilidad compartida entre usted AWS y usted. El [modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/) la describe como seguridad *de* la nube y seguridad *en* la nube:
+ **Seguridad de la nube**: AWS es responsable de proteger la infraestructura que ejecuta AWS los servicios en la AWS nube. AWS también le proporciona servicios que puede utilizar de forma segura. Auditores externos prueban y verifican periódicamente la eficacia de nuestra seguridad en el marco de los [Programas de conformidad de AWS](https://aws.amazon.com/compliance/programs/). Para obtener más información sobre los programas de conformidad que se aplican a Kinesis Video Streams, consulte Servicios de [AWS en el ámbito del programa de conformidad.](https://aws.amazon.com/compliance/services-in-scope/).
+ **Seguridad en la nube**: su responsabilidad viene determinada por el AWS servicio que utilice. Usted también es responsable de otros factores, incluida la confidencialidad de los datos, los requisitos de la empresa y la legislación y los reglamentos aplicables. 

Esta documentación le ayuda a entender cómo aplicar el modelo de responsabilidad compartida al utilizar Kinesis Video Streams. En los temas siguientes se muestra cómo configurar Kinesis Video Streams para cumplir sus objetivos de seguridad y conformidad. También aprenderá a utilizar otros AWS servicios que pueden ayudarle a supervisar y proteger sus recursos de Kinesis Video Streams. 

**Topics**
+ [Protección de datos en Kinesis Video Streams](how-kms.md)
+ [Control del acceso a los recursos de Kinesis Video Streams mediante IAM](how-iam.md)
+ [Control del acceso a los recursos de Kinesis Video Streams mediante AWS IoT](how-iot.md)
+ [Validación de conformidad para Amazon Kinesis Video Streams](akda-java-compliance.md)
+ [Resiliencia en Amazon Kinesis Video Streams](disaster-recovery-resiliency.md)
+ [Seguridad de infraestructura en Kinesis Video Streams](infrastructure-security.md)
+ [Mejores prácticas de seguridad para Kinesis Video Streams](security-best-practices.md)

# Protección de datos en Kinesis Video Streams
<a name="how-kms"></a>

Puede utilizar el cifrado del lado del servidor (SSE) mediante claves AWS Key Management Service (AWS KMS) para cumplir con los estrictos requisitos de administración de datos cifrando los datos en reposo en Amazon Kinesis Video Streams.

**Topics**
+ [¿Qué es el cifrado del lado del servidor para Kinesis Video Streams?](#what-is-sse-akvs)
+ [Cuestiones sobre costos, regiones y rendimiento](#costs-performance-akvs)
+ [¿Cómo puedo comenzar a usar el cifrado en el servidor?](#getting-started-with-sse-akvs)
+ [Creación y uso de una clave gestionada por el cliente](#creating-using-sse-master-keys-akvs)
+ [Permisos para usar una clave administrada por el cliente](#permissions-user-key-KMS-akvs)

## ¿Qué es el cifrado del lado del servidor para Kinesis Video Streams?
<a name="what-is-sse-akvs"></a>

El cifrado del lado del servidor es una función de Kinesis Video Streams que cifra automáticamente los datos antes de almacenarlos en reposo mediante una AWS KMS clave que usted especifique. Los datos se cifran antes de escribirlos en la capa de almacenamiento del flujo de Kinesis Video Streams y se descifran después de recuperarlos del almacenamiento. Como resultado, los datos siempre se cifran en reposo en el servicio de Kinesis Video Streams.

Con el cifrado del lado del servidor, los productores y consumidores de transmisiones de vídeo de Kinesis no necesitan gestionar las claves de KMS ni las operaciones criptográficas. Si la retención de datos está habilitada, los datos se cifran automáticamente al entrar y salir de Kinesis Video Streams, por lo que los datos en reposo se cifran. AWS KMS proporciona todas las claves que utiliza la función de cifrado del lado del servidor. AWS KMS optimiza el uso de una clave KMS para Kinesis Video Streams que se administra AWS mediante una clave AWS KMS especificada por el usuario importada al servicio. AWS KMS 

## Cuestiones sobre costos, regiones y rendimiento
<a name="costs-performance-akvs"></a>

Al aplicar el cifrado del lado del servidor, está sujeto al uso de la AWS KMS API y a los costes de las claves. A diferencia de AWS KMS las claves personalizadas, la clave `aws/kinesisvideo` KMS predeterminada se ofrece de forma gratuita. Sin embargo, debe seguir pagando en su nombre los costes de uso de la API en los que incurra Kinesis Video Streams.

Los costes de uso de la API se aplican a todas las claves de KMS, incluidas las personalizadas. Los AWS KMS costes aumentan en función del número de credenciales de usuario que utilice en sus productores y consumidores de datos, ya que cada credencial de usuario requiere una llamada a AWS KMS la API única. 

A continuación se describen los costos por recurso:

**Claves**
+ La clave KMS para Kinesis Video Streams gestionada AWS por (alias `aws/kinesisvideo` =) es gratuita.
+ Las claves KMS generadas por los usuarios están sujetas a costes AWS KMS key . Para obtener más información, consulte [AWS Key Management Service Precios](https://aws.amazon.com/kms/pricing/#Keys).

### AWS KMS Uso de API
<a name="api-usage"></a>

Las solicitudes de la API para generar nuevas claves de cifrado de datos o recuperar las claves de cifrado existentes aumentan a medida que aumenta el tráfico y están sujetas a los costes de AWS KMS uso. Para obtener más información, consulte [AWS Key Management Service Precios: uso](https://aws.amazon.com/kms/pricing/#Usage).

Kinesis Video Streams genera solicitudes clave incluso cuando la retención está establecida en 0 (sin retención).

### Disponibilidad del cifrado en el servidor por región
<a name="sse-regions-akvs"></a>

El cifrado del lado del servidor de las transmisiones de vídeo de Kinesis está disponible en todos los sitios donde esté disponible Kinesis Regiones de AWS Video Streams.

## ¿Cómo puedo comenzar a usar el cifrado en el servidor?
<a name="getting-started-with-sse-akvs"></a>

El cifrado del lado del servidor siempre está activado en Kinesis Video Streams. Si no se especifica una clave proporcionada por el usuario al crear la transmisión, se utiliza la Clave administrada de AWS (proporcionada por Kinesis Video Streams).

Se debe asignar una clave KMS proporcionada por el usuario a una transmisión de vídeo de Kinesis al crearla. No podrá asignar una clave diferente a una transmisión mediante la [UpdateStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_UpdateStream.html)API más adelante.

Puede asignar una clave KMS proporcionada por el usuario a una transmisión de vídeo de Kinesis de dos maneras:
+ Al crear una transmisión de vídeo de Kinesis en Consola de administración de AWS, especifique la clave KMS en la pestaña **Cifrado** de la página **Crear una nueva transmisión de vídeo**.
+ Al crear una transmisión de vídeo de Kinesis mediante la [CreateStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_CreateStream.html)API, especifique el ID de clave en el `KmsKeyId` parámetro.

## Creación y uso de una clave gestionada por el cliente
<a name="creating-using-sse-master-keys-akvs"></a>

En esta sección se describe cómo crear y utilizar sus propias claves de KMS en lugar de utilizar la clave administrada por Amazon Kinesis Video Streams.

### Creación de una clave administrada por el cliente
<a name="creating-sse-master-keys-akvs"></a>

Para obtener información sobre cómo crear sus propias claves, consulte [Creación de claves](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) en la *Guía para AWS Key Management Service desarrolladores*. Tras crear las claves para su cuenta, el servicio Kinesis Video Streams las devuelve a la lista de claves **gestionadas por el cliente**.

### Uso de claves administradas por el cliente
<a name="using-sse-master-keys-akvs"></a>

Una vez que se hayan aplicado los permisos correctos a sus consumidores, productores y administradores, podrá utilizar las claves KMS personalizadas propias Cuenta de AWS o Cuenta de AWS ajenas. Todas las claves KMS de su cuenta aparecen en la lista de **claves administradas por el cliente** de la consola.

Para usar claves KMS personalizadas que estén ubicadas en otra cuenta, debe tener permisos para usarlas. Asimismo, debe crear la transmisión utilizando la API `CreateStream`. No puedes usar claves de KMS de cuentas diferentes en las transmisiones creadas en la consola.

**nota**  
No se accede a la clave KMS hasta que se realiza la `GetMedia` operación `PutMedia` o. Así, se obtienen los siguientes resultados:  
Si la clave que especificas no existe, la `CreateStream` operación se realiza correctamente, pero `PutMedia` las `GetMedia` operaciones de la transmisión fallan.
Si utilizas la clave proporcionada (`aws/kinesisvideo`), la clave no estará en tu cuenta hasta que no realices la primera `PutMedia` `GetMedia` operación.

## Permisos para usar una clave administrada por el cliente
<a name="permissions-user-key-KMS-akvs"></a>

Para poder usar el cifrado del lado del servidor con una clave administrada por el cliente, debe configurar las políticas de claves de KMS para permitir el cifrado de las transmisiones y el cifrado y descifrado de los registros de las transmisiones. Para ver ejemplos y más información sobre AWS KMS los permisos, consulte Permisos de [AWS KMS API: referencia sobre acciones y recursos](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html). 

**nota**  
El uso de la clave de servicio predeterminada para el cifrado no requiere la aplicación de permisos de IAM personalizados.

Antes de usar una clave administrada por el cliente, compruebe que los productores y consumidores de transmisiones de vídeo de Kinesis (principales de IAM) sean usuarios de la AWS KMS política de claves predeterminada. De lo contrario, las labores de escritura y lectura de una secuencia producirán un error, lo que, en definitiva, podría resultar en pérdida de datos, retrasos en el procesamiento, aplicaciones colgadas. Puede administrar los permisos para las claves de KMS con las políticas de IAM. Para obtener más información, consulte [Uso de políticas de IAM con](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html). AWS KMS

### Ejemplo de permisos para productores
<a name="example-producer-permissions-akvs"></a>

Los productores de transmisiones de vídeo de Kinesis deben tener el `kms:GenerateDataKey` permiso para:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "kms:GenerateDataKey"
        ],
        "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    }, 
    {
        "Effect": "Allow",
        "Action": [
            "kinesisvideo:PutMedia"
        ],
        "Resource": "arn:aws:kinesisvideo:*:123456789012:stream/MyStream/*"
    }
  ]
}
```

------

### Ejemplo de permisos de consumo
<a name="example-consumer-permissions-akvs"></a>

Los consumidores de streaming de vídeo de Kinesis deben tener el `kms:Decrypt` permiso para:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "kms:Decrypt"
        ],
        "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    }, 
    {
        "Effect": "Allow",
        "Action": [
            "kinesisvideo:GetMedia"
        ],
        "Resource": "arn:aws:kinesisvideo:*:123456789012:stream/MyStream/*"
    }
  ]
}
```

------

# 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 (ARNs) 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 (\$1) 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 (ARNs) para Kinesis Video Streams
<a name="kinesis-using-iam-arn-format"></a>

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

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 Kinesis Video APIs 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 del conjunto anterior en el entorno.

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

1. Ejecute Kinesis Video APIs 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 step-by-step instrucciones genéricas 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"
        }
    ]
}
```

# Control del acceso a los recursos de Kinesis Video Streams mediante AWS IoT
<a name="how-iot"></a>

En esta sección se describe cómo permitir que un dispositivo (por ejemplo, una cámara) envíe datos de audio y vídeo únicamente a una transmisión de vídeo de Kinesis concreta. Para ello, utilice el proveedor de AWS IoT credenciales y un rol AWS Identity and Access Management (IAM).

Los dispositivos pueden usar certificados X.509 para conectarse AWS IoT mediante protocolos de autenticación mutua TLS. Otros Servicios de AWS (por ejemplo, Kinesis Video Streams) no admiten la autenticación basada en certificados, pero se les puede llamar AWS con credenciales AWS en formato Signature Version 4. El algoritmo Signature, versión 4, normalmente requiere que la persona que llama tenga un identificador de clave de acceso y una clave de acceso secreta. AWS IoT tiene un proveedor de credenciales que le permite utilizar el certificado X.509 integrado como identidad única del dispositivo para autenticar AWS las solicitudes (por ejemplo, las solicitudes a Kinesis Video Streams). Esto elimina la necesidad de almacenar un identificador de clave de acceso y una clave de acceso secreta en el dispositivo. 

El proveedor de credenciales autentica un cliente (en este caso, un SDK de Kinesis Video Streams que se ejecuta en la cámara y al que desea enviar datos a una transmisión de vídeo) mediante un certificado X.509 y emite un token de seguridad temporal con privilegios limitados. Puede usar el token para firmar y autenticar cualquier AWS solicitud (en este caso, una llamada a Kinesis Video Streams). Para obtener más información, consulte [Autorizar llamadas directas a los servicios](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.html). AWS 

Esta forma de autenticar las solicitudes de la cámara a Kinesis Video Streams requiere que cree y configure una función de IAM y adjunte las políticas de IAM adecuadas a la función para que el proveedor de credenciales pueda asumir AWS IoT la función en su nombre. 

[Para obtener más información al respecto AWS IoT, consulte la documentación.AWS IoT Core](https://docs.aws.amazon.com/iot/?id=docs_gateway) Para obtener más información acerca del uso de (IAM), consulte [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/).

**Topics**
+ [AWS IoT ThingName como nombre de flujo](#how-iot-thingnamestreamname)
+ [AWS IoT CertificateId como nombre de transmisión](#how-iot-iotcertstreamname)
+ [Utilice AWS IoT las credenciales para transmitir a un nombre de transmisión codificado](#how-iot-hard-coded-stream)

## AWS IoT ThingName como nombre de flujo
<a name="how-iot-thingnamestreamname"></a>

**Topics**
+ [Paso 1: Crea cualquier tipo de AWS IoT cosa y cualquier AWS IoT cosa](#how-iot-create-thing-type)
+ [Paso 2: Cree un rol de IAM para que lo asuma AWS IoT](#how-iot-add-iot-policy)
+ [Paso 3: Crear y configurar el certificado X.509](#how-iot-create-cert-keys)
+ [Paso 4: Pruebe las AWS IoT credenciales con la transmisión de vídeo de Kinesis](#how-iot-test-it)
+ [Paso 5: implementar AWS IoT certificados y credenciales en el sistema de archivos de la cámara y transmitir los datos a la transmisión de vídeo](#how-iot-deploy)

### Paso 1: Crea cualquier tipo de AWS IoT cosa y cualquier AWS IoT cosa
<a name="how-iot-create-thing-type"></a>

En AWS IoT, una cosa es una representación de un dispositivo o entidad lógica específicos. En este caso, AWS IoT algo representa la transmisión de vídeo de Kinesis y quiere configurar el control de acceso a nivel de recursos. Para crear una cosa, primero debe crear un AWS IoT tipo de cosa. Puede usar los tipos de AWS IoT cosas para almacenar la información de descripción y configuración que es común a todas las cosas asociadas al mismo tipo de cosa.

1. El siguiente comando de ejemplo crea un tipo de objeto `kvs_example_camera`:

   ```
   aws --profile default iot create-thing-type --thing-type-name kvs_example_camera > iot-thing-type.json
   ```

1. Este comando de ejemplo crea la `kvs_example_camera_stream` cosa del tipo de `kvs_example_camera` cosa:

   ```
   aws --profile default  iot create-thing --thing-name kvs_example_camera_stream --thing-type-name kvs_example_camera > iot-thing.json
   ```

### Paso 2: Cree un rol de IAM para que lo asuma AWS IoT
<a name="how-iot-add-iot-policy"></a>

Las funciones de IAM son similares a las de los usuarios, ya que una función es una AWS identidad con políticas de permisos que determinan lo que la identidad puede y no puede hacer en ella. AWS Cualquier persona que lo necesite puede asumir un rol. Cuando se asume un rol, este proporciona credenciales de seguridad temporales para la sesión del rol.

La función que cree en este paso se puede utilizar AWS IoT para obtener credenciales temporales del servicio de token de seguridad (STS) al realizar solicitudes de autorización de credenciales desde el cliente. En este caso, el cliente es el SDK de Kinesis Video Streams que se ejecuta en la cámara. 

Realice los siguientes pasos para crear y configurar este rol de IAM:

1. Crear un rol de IAM.

   El siguiente comando de ejemplo crea un rol de IAM denominado `KVSCameraCertificateBasedIAMRole`:

   ```
   aws --profile default iam create-role --role-name KVSCameraCertificateBasedIAMRole --assume-role-policy-document 'file://iam-policy-document.json' > iam-role.json
   ```

   Puede utilizar el siguiente JSON de política de confianza para `iam-policy-document.json`:

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "credentials.iot.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. A continuación, adjunte una política de permisos al rol de IAM que creó anteriormente. Esta política de permisos permite el control de acceso selectivo (un subconjunto de operaciones compatibles) a un AWS recurso. En este caso, el AWS recurso es la transmisión de vídeo a la que desea que su cámara envíe datos. En otras palabras, una vez completados todos los pasos de configuración, esta cámara podrá enviar datos únicamente a esta secuencia de vídeo.

   ```
   aws --profile default iam put-role-policy --role-name KVSCameraCertificateBasedIAMRole --policy-name KVSCameraIAMPolicy --policy-document 'file://iam-permission-document.json' 
   ```

   Puede utilizar la siguiente política de IAM (JSON) para: `iam-permission-document.json`

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "kinesisvideo:DescribeStream",
                   "kinesisvideo:PutMedia",
                   "kinesisvideo:TagStream",
                   "kinesisvideo:GetDataEndpoint"
               ],
               "Resource": "arn:aws:kinesisvideo:*:*:stream/${credentials-iot:ThingName}/*"
           }
       ]
   }
   ```

------

   Tenga en cuenta que esta política autoriza las acciones especificadas solo en una transmisión de vídeo (AWS recurso) especificada por el marcador de posición. `(${credentials-iot:ThingName})` Este marcador de posición adopta el valor del atributo AWS IoT Thing `ThingName` cuando el proveedor de AWS IoT credenciales envía el nombre de la transmisión de vídeo en la solicitud. 

1. A continuación, cree un alias de rol para su rol de IAM. El alias de rol es un modelo de datos alternativo que apunta al rol de IAM. La solicitud de un proveedor de AWS IoT credenciales debe incluir un alias de rol que indique qué rol de IAM debe asumir para obtener las credenciales temporales del STS.

   El siguiente comando de ejemplo crea un alias de rol denominado `KvsCameraIoTRoleAlias`.

   ```
   aws --profile default iot create-role-alias --role-alias KvsCameraIoTRoleAlias --role-arn $(jq --raw-output '.Role.Arn' iam-role.json) --credential-duration-seconds 3600 > iot-role-alias.json
   ```

1. Ahora puede crear la política que le permitirá AWS IoT asumir el rol con el certificado (una vez que esté adjunto) utilizando el alias del rol. 

   El siguiente comando de ejemplo crea una política para AWS IoT call`KvsCameraIoTPolicy`.

   ```
   aws --profile default iot create-policy --policy-name KvsCameraIoTPolicy --policy-document 'file://iot-policy-document.json'
   ```

   Puede usar el siguiente comando para crear el `iot-policy-document.json` documento JSON:

   ```
   cat > iot-policy-document.json <<EOF
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "iot:AssumeRoleWithCertificate"
               ],
               "Resource": "$(jq --raw-output '.roleAliasArn' iot-role-alias.json)"
           }
       ]
   }
   EOF
   ```

### Paso 3: Crear y configurar el certificado X.509
<a name="how-iot-create-cert-keys"></a>

La comunicación entre un dispositivo (su transmisión de vídeo) y AWS IoT está protegida mediante el uso de certificados X.509. 

1. Cree el certificado al que debe adjuntar la política AWS IoT que creó anteriormente.

   ```
   aws --profile default iot create-keys-and-certificate --set-as-active --certificate-pem-outfile certificate.pem --public-key-outfile public.pem.key --private-key-outfile private.pem.key > certificate
   ```

1. Adjunte la política para AWS IoT (`KvsCameraIoTPolicy`creada anteriormente) a este certificado.

   ```
   aws --profile default iot attach-policy --policy-name KvsCameraIoTPolicy --target $(jq --raw-output '.certificateArn' certificate)
   ```

1. Adjunta tu AWS IoT cosa (`kvs_example_camera_stream`) al certificado que acabas de crear: 

   ```
   aws --profile default iot attach-thing-principal --thing-name kvs_example_camera_stream --principal $(jq --raw-output '.certificateArn' certificate)
   ```

1. Para autorizar las solicitudes a través del proveedor de AWS IoT credenciales, necesitas el punto final de AWS IoT credenciales, que es exclusivo de tu Cuenta de AWS ID. Puedes usar el siguiente comando para obtener el punto final de las AWS IoT credenciales.

   ```
   aws --profile default iot describe-endpoint --endpoint-type iot:CredentialProvider --output text > iot-credential-provider.txt
   ```

1. Además del certificado X.509 creado anteriormente, también debe tener un certificado de CA para establecer la confianza con el servicio de backend a través de TLS. Puede obtener el certificado de CA utilizando el siguiente comando:

   ```
   curl --silent 'https://www.amazontrust.com/repository/SFSRootCAG2.pem' --output cacert.pem
   ```

### Paso 4: Pruebe las AWS IoT credenciales con la transmisión de vídeo de Kinesis
<a name="how-iot-test-it"></a>

Ahora puede probar las AWS IoT credenciales que ha configurado hasta ahora. 

1. En primer lugar, cree una secuencia de vídeo de Kinesis con la que desee probar esta configuración.
**importante**  
Cree una transmisión de vídeo con un nombre idéntico al nombre de la AWS IoT cosa que creó en el paso anterior (`kvs_example_camera_stream`).

   ```
   aws kinesisvideo create-stream --data-retention-in-hours 24 --stream-name kvs_example_camera_stream
   ```

1. A continuación, llama al proveedor de AWS IoT credenciales para obtener las credenciales temporales:

   ```
   curl --silent -H "x-amzn-iot-thingname:kvs_example_camera_stream" --cert certificate.pem --key private.pem.key https://IOT_GET_CREDENTIAL_ENDPOINT/role-aliases/KvsCameraIoTRoleAlias/credentials --cacert ./cacert.pem > token.json
   ```
**nota**  
Puede usar el siguiente comando para obtener`IOT_GET_CREDENTIAL_ENDPOINT`:  

   ```
   IOT_GET_CREDENTIAL_ENDPOINT=`cat iot-credential-provider.txt`
   ```

   El JSON de salida contiene el `accessKey``secretKey`, y el`sessionToken`, que puede utilizar para acceder a Kinesis Video Streams.

1. Para la prueba, puede utilizar estas credenciales para invocar la API de Kinesis Video `DescribeStream` Streams para la transmisión de vídeo de `kvs_example_camera_stream` muestra.

   ```
   AWS_ACCESS_KEY_ID=$(jq --raw-output '.credentials.accessKeyId' token.json) AWS_SECRET_ACCESS_KEY=$(jq --raw-output '.credentials.secretAccessKey' token.json) AWS_SESSION_TOKEN=$(jq --raw-output '.credentials.sessionToken' token.json) aws kinesisvideo describe-stream --stream-name kvs_example_camera_stream
   ```

### Paso 5: implementar AWS IoT certificados y credenciales en el sistema de archivos de la cámara y transmitir los datos a la transmisión de vídeo
<a name="how-iot-deploy"></a>

**nota**  
Los pasos de esta sección describen el envío de contenido multimedia a una transmisión de vídeo de Kinesis desde una cámara que utiliza. [Utilice la biblioteca de productores de C\$1\$1](producer-sdk-cpp.md)

1. Copie el certificado X.509, la clave privada y el certificado de CA generados en los pasos anteriores en el sistema de archivos de la cámara. Especifique las rutas en las que se almacenan estos archivos, el nombre del alias de la función y el punto final de AWS IoT las credenciales para ejecutar el `gst-launch-1.0` comando o la aplicación de muestra. 

1. El siguiente comando de ejemplo utiliza la autorización de AWS IoT un certificado para enviar vídeo a Kinesis Video Streams: 

   ```
   gst-launch-1.0 rtspsrc location=rtsp://YourCameraRtspUrl short-header=TRUE ! rtph264depay ! video/x-h264,format=avc,alignment=au ! h264parse ! kvssink stream-name="kvs_example_camera_stream" aws-region="YourAWSRegion" iot-certificate="iot-certificate,endpoint=credential-account-specific-prefix.credentials.iot.aws-region.amazonaws.com,cert-path=/path/to/certificate.pem,key-path=/path/to/private.pem.key,ca-path=/path/to/cacert.pem,role-aliases=KvsCameraIoTRoleAlias"
   ```

## AWS IoT CertificateId como nombre de transmisión
<a name="how-iot-iotcertstreamname"></a>

Para representar su dispositivo (por ejemplo, su cámara) mediante una AWS IoT cosa, pero autorizar un nombre de transmisión diferente, puede utilizar el AWS IoT `certificateId` atributo como nombre de la transmisión y proporcionar permisos a Kinesis Video Streams en la transmisión AWS IoT mediante. Los pasos para lograrlo son similares a los descritos anteriormente, con algunos cambios.
+ Modifique la política de permisos para su función de IAM (`iam-permission-document.json`) de la siguiente manera:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "kinesisvideo:DescribeStream",
                  "kinesisvideo:PutMedia",
                  "kinesisvideo:TagStream",
                  "kinesisvideo:GetDataEndpoint"
              ],
              "Resource": "arn:aws:kinesisvideo:*:*:stream/${credentials-iot:AwsCertificateId}/*" 
          }
      ]
  }
  ```

------
**nota**  
El ARN del recurso utiliza un ID de certificado como marcador de posición del nombre de secuencia. El permiso de IAM funcionará cuando utilices el ID del certificado como nombre de la transmisión. Obtenga el ID del certificado del certificado para poder usarlo como nombre de flujo en la siguiente descripción de la llamada a la API de transmisión.  

  ```
  export CERTIFICATE_ID=`cat certificate | jq --raw-output '.certificateId'`
  ```
+ Verifique este cambio utilizando el comando describe-stream de Kinesis Video Streams en la CLI:

  ```
  AWS_ACCESS_KEY_ID=$(jq --raw-output '.credentials.accessKeyId' token.json) AWS_SECRET_ACCESS_KEY=$(jq --raw-output '.credentials.secretAccessKey' token.json) AWS_SESSION_TOKEN=$(jq --raw-output '.credentials.sessionToken' token.json) aws kinesisvideo describe-stream --stream-name ${CERTIFICATE_ID}
  ```
+ Pase el CertificateID al proveedor de credenciales de AWS IoT la aplicación de [ejemplo del SDK de C\$1\$1 de](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/samples/kvs_gstreamer_sample.cpp) Kinesis Video Streams: 

  ```
  credential_provider = make_unique<IotCertCredentialProvider>(iot_get_credential_endpoint,
          cert_path,
          private_key_path,
          role_alias,
          ca_cert_path,
          certificateId);
  ```
**nota**  
Tenga en cuenta que lo está pasando `thingname` al proveedor de credenciales. AWS IoT Se puede utilizar `getenv` para pasar el nombre de la cosa a la aplicación de demostración de forma similar a como se pasan los demás AWS IoT atributos. Utilice el ID de certificado como nombre de secuencia en los parámetros de la línea de comandos cuando ejecute la aplicación de ejemplo.

## Utilice AWS IoT las credenciales para transmitir a un nombre de transmisión codificado
<a name="how-iot-hard-coded-stream"></a>

Para representar su dispositivo (por ejemplo, su cámara) a través de una AWS IoT cosa, pero autorizar la transmisión a una transmisión de vídeo específica de Amazon Kinesis, proporcione los permisos de Amazon Kinesis Video Streams en la transmisión mediante. AWS IoT El proceso es similar al de las secciones anteriores, con algunos cambios.

Modifique la política de permisos para su función de IAM (`iam-permission-document.json`) de la siguiente manera:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesisvideo:DescribeStream",
                "kinesisvideo:PutMedia",
                "kinesisvideo:TagStream",
                "kinesisvideo:GetDataEndpoint"
            ],
            "Resource": "arn:aws:kinesisvideo:*:*:stream/YourStreamName/*" 
        }
    ]
}
```

------

Copie el certificado X.509, la clave privada y el certificado de CA generados en los pasos anteriores en el sistema de archivos de la cámara. 

Especifique las rutas en las que se almacenan estos archivos, el nombre del alias de la función, el nombre AWS IoT del objeto y el punto final de AWS IoT las credenciales para ejecutar el `gst-launch-1.0` comando o la aplicación de muestra.

El siguiente comando de ejemplo utiliza la autorización de un AWS IoT certificado para enviar vídeo a Amazon Kinesis Video Streams:

```
gst-launch-1.0 rtspsrc location=rtsp://YourCameraRtspUrl short-header=TRUE ! rtph264depay ! video/x-h264,format=avc,alignment=au ! h264parse ! kvssink stream-name="YourStreamName" aws-region="YourAWSRegion" iot-certificate="iot-certificate,endpoint=credential-account-specific-prefix.credentials.iot.aws-region.amazonaws.com,cert-path=/path/to/certificate.pem,key-path=/path/to/private.pem.key,ca-path=/path/to/cacert.pem,role-aliases=KvsCameraIoTRoleAlias,iot-thing-name=YourThingName"
```

# Validación de conformidad para Amazon Kinesis Video Streams
<a name="akda-java-compliance"></a>

Para saber si un programa de cumplimiento Servicio de AWS está dentro del ámbito de aplicación de programas de cumplimiento específicos, consulte [Servicios de AWS Alcance por programa de cumplimiento Servicios de AWS](https://aws.amazon.com/compliance/services-in-scope/) y elija el programa de cumplimiento que le interese. Para obtener información general, consulte Programas de [AWS cumplimiento > Programas AWS](https://aws.amazon.com/compliance/programs/) .

Puede descargar informes de auditoría de terceros utilizando AWS Artifact. Para obtener más información, consulte [Descarga de informes en AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html) .

Su responsabilidad de cumplimiento al Servicios de AWS utilizarlos viene determinada por la confidencialidad de sus datos, los objetivos de cumplimiento de su empresa y las leyes y reglamentos aplicables. Para obtener más información sobre su responsabilidad de conformidad al utilizarlos Servicios de AWS, consulte [AWS la documentación de seguridad](https://docs.aws.amazon.com/security/).

# Resiliencia en Amazon Kinesis Video Streams
<a name="disaster-recovery-resiliency"></a>

La infraestructura AWS global se basa en AWS regiones y zonas de disponibilidad. AWS Las regiones proporcionan varias zonas de disponibilidad aisladas y separadas físicamente, que están conectadas mediante redes de baja latencia, alto rendimiento y alta redundancia. Con las zonas de disponibilidad, puede diseñar y utilizar aplicaciones y bases de datos que realizan una conmutación por error automática entre zonas de disponibilidad sin interrupciones. Las zonas de disponibilidad tienen una mayor disponibilidad, tolerancia a errores y escalabilidad que las infraestructuras tradicionales de centros de datos únicos o múltiples. 

[Para obtener más información sobre AWS las regiones y las zonas de disponibilidad, consulte Infraestructura global.AWS](https://aws.amazon.com/about-aws/global-infrastructure/)

# Seguridad de infraestructura en Kinesis Video Streams
<a name="infrastructure-security"></a>

Como servicio gestionado, Amazon Kinesis Video Streams está protegido por AWS los procedimientos de seguridad de red global que se describen en [el documento técnico Amazon Web Services: Overview of Security Processes](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf).

Utilice las llamadas a la API AWS publicadas para acceder a Kinesis Video Streams a través de la red. Los clientes deben ser compatibles con Transport Layer Security (TLS) 1.2 o una versión posterior. Los clientes también deben ser compatibles con conjuntos de cifrado con confidencialidad directa total (PFS) tales como Ephemeral Diffie-Hellman (DHE) o Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). La mayoría de los sistemas modernos, como Java 7 y posteriores, son compatibles con estos modos. 

Además, las solicitudes deben firmarse con un identificador de clave de acceso y una clave de acceso secreta que estén asociadas a una entidad principal de IAM. También puede utilizar [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) para generar credenciales de seguridad temporales para firmar solicitudes.

# Mejores prácticas de seguridad para Kinesis Video Streams
<a name="security-best-practices"></a>

Amazon Kinesis Video Streams ofrece una serie de características de seguridad que debe tener en cuenta a la hora de desarrollar e implementar sus propias políticas de seguridad. Las siguientes prácticas recomendadas son directrices generales y no constituyen una solución de seguridad completa. Puesto que es posible que estas prácticas recomendadas no sean adecuadas o suficientes para el entorno, considérelas como consideraciones útiles en lugar de como normas. 

Para consultar las prácticas recomendadas de seguridad de dispositivos remotos, consulte [Prácticas recomendadas de seguridad para agentes de dispositivos](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-DetectMetricsMessagesBestPract.html).

## Implementación del acceso a los privilegios mínimos
<a name="security-best-practices-privileges"></a>

Cuando concede permisos, debe decidir a quién concede cada permiso y para qué recursos de Kinesis Video Streams se lo concede. Habilite las acciones específicas que desea permitir en dichos recursos. Por lo tanto, debe conceder únicamente los permisos obligatorios para realizar una tarea. La implementación del acceso con privilegios mínimos es esencial a la hora de reducir los riesgos de seguridad y el impacto que podrían causar los errores o los intentos malintencionados. 

Por ejemplo, un productor que envía datos a Kinesis Video Streams únicamente requiere `PutMedia`, `GetStreamingEndpoint`, y `DescribeStream`. No conceda permisos a las aplicaciones productoras para todas las acciones (`*`) o para otras acciones, como `GetMedia`.

Para obtener más información, consulte [¿Qué son los privilegios mínimos y por qué los necesita?](https://www.beyondtrust.com/blog/entry/what-is-least-privilege)

## Uso de roles de IAM
<a name="security-best-practices-roles"></a>

Las aplicaciones de productor y cliente deben tener credenciales válidas para acceder a Kinesis Video Streams. No debe almacenar las credenciales de AWS directamente en una aplicación de cliente o en un bucket de Amazon S3. Se trata de credenciales de larga duración que no se rotan automáticamente y que podrían tener un impacto empresarial significativo si se ven comprometidas. 

En su lugar, debe utilizar un rol de IAM para administrar las credenciales temporales de sus aplicaciones de productor y cliente para acceder a Kinesis Video Streams. Cuando utiliza un rol, no tiene que usar credenciales de larga duración (como un nombre de usuario y una contraseña o claves de acceso) para acceder a otros recursos.

Para obtener más información, consulte los siguientes temas de la *guía del usuario de IAM*:
+ [Roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)
+ [Situaciones habituales con los roles: usuarios, aplicaciones y servicios](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios.html)

## Se usa CloudTrail para monitorear las llamadas a la API
<a name="security-best-practices-cloudtrail"></a>

Kinesis Video Streams funciona AWS CloudTrail con un servicio que proporciona un registro de las acciones realizadas por un usuario, un rol o Servicio de AWS una persona en Kinesis Video Streams.

Puede usar la información recopilada por CloudTrail para determinar la solicitud que se realizó a Kinesis Video Streams, la dirección IP desde la que se realizó la solicitud, quién la realizó, cuándo se realizó y detalles adicionales.

Para obtener más información, consulte [Registre las llamadas a la API de Amazon Kinesis Video Streams con AWS CloudTrail](monitoring-cloudtrail.md).