

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Controle do acesso aos recursos do Kinesis Video Streams usando o IAM
<a name="how-iam"></a>

Você pode usar o AWS Identity and Access Management (IAM) com o Amazon Kinesis Video Streams para controlar se os usuários da sua organização podem realizar uma tarefa usando operações específicas da API do Kinesis Video Streams e se podem usar recursos específicos. AWS 

Para obter mais informações sobre IAM, consulte o seguinte:
+ [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/)
+ [Introdução ao IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started.html)
+ [Guia do usuário do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/)

**Topics**
+ [Sintaxe da política](#policy-syntax)
+ [Ações para o Kinesis Video Streams](#kinesis-using-iam-actions)
+ [Nomes de recursos da Amazon (ARNs) para o Kinesis Video Streams](#kinesis-using-iam-arn-format)
+ [Conceder acesso a outras contas do IAM a um stream de vídeo do Kinesis](#how-iam-crossaccount)
+ [Exemplos de políticas para o Kinesis Video Streams](#how-iam-policies)

## Sintaxe da política
<a name="policy-syntax"></a>

A política do IAM é um documento JSON que consiste em uma ou mais declarações. Cada instrução é estruturada da seguinte maneira:

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

Existem vários elementos que compõem uma instrução:
+ **Efeito** — O *efeito* pode ser `Allow` ou`Deny`. Por padrão, os usuários não têm permissão para usar recursos e ações da API. Por isso, todas as solicitações são negadas. Um permitir explícito substitui o padrão. Uma negar explícito substitui todas as permissões.
+ **Ação** — A *ação* é a ação específica da API para a qual você está concedendo ou negando permissão.
+ **Recurso** — O recurso afetado pela ação. Para especificar um recurso na declaração, você deve usar o respectivo nome de recurso da Amazon (ARN).
+ **Condição**: as condições são opcionais. Elas podem ser usadas para controlar quando a política está em vigor.

Ao criar e gerenciar políticas do IAM, recomendamos que você use o [IAM Policy Generator](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-generator) e o [IAM Policy Simulator](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html).

## Ações para o Kinesis Video Streams
<a name="kinesis-using-iam-actions"></a>

Em uma declaração de política do IAM, é possível especificar qualquer ação de API de qualquer serviço que dê suporte ao IAM. Para Kinesis Video Streams, use o seguinte prefixo com o nome da ação da API:. `kinesisvideo:` Por exemplo: `kinesisvideo:CreateStream`, `kinesisvideo:ListStreams` e `kinesisvideo:DescribeStream`.

Para especificar várias ações em uma única instrução, separe-as com vírgulas, como segue:

```
"Action": ["kinesisvideo:action1", "kinesisvideo:action2"]
```

Também é possível especificar várias ações usando asteriscos. Por exemplo, é possível especificar todas as ações cujo nome começa com a palavra "Obter", conforme o seguinte:

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

Para especificar todas as operações do Kinesis Video Streams, use o curinga asterisco (\*), como a seguir:

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

Para obter a lista completa das ações da API do Kinesis Video Streams, consulte a [https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_Reference.html](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_Reference.html).

## Nomes de recursos da Amazon (ARNs) para o Kinesis Video Streams
<a name="kinesis-using-iam-arn-format"></a>

Cada declaração de política do IAM se aplica aos recursos especificados usando os ARNs.

Use o seguinte formato de recursos do ARN para os fluxos de dados do Kinesis Video Streams:

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

Por exemplo:

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

Você pode obter o ARN de um stream usando o. [DescribeStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_DescribeStream.html)

## Conceder acesso a outras contas do IAM a um stream de vídeo do Kinesis
<a name="how-iam-crossaccount"></a>

Talvez seja necessário conceder permissão a outras contas do IAM para realizar operações em streams no Kinesis Video Streams. A seguinte visão geral descreve as etapas para concessão de acesso aos streamings de vídeo em várias contas:

1. Obtenha o ID da conta de 12 dígitos da conta à qual você deseja conceder permissões para realizar operações no recurso de stream criado em sua conta. 

   **Exemplo:** nas etapas a seguir, usaremos 111111111111 como o ID da conta para a qual você deseja conceder permissão e 999999999999 como o ID do seu Kinesis Video Streams

1. Crie uma política gerenciada do IAM na conta proprietária do stream (999999999999) que permita o nível de acesso que você deseja conceder. 

   **Política de amostra:**

------
#### [ 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 outros exemplos de políticas para os recursos do Kinesis Video Streams[Exemplo de políticas](#how-iam-policies), consulte na próxima seção.

1. Crie uma função na conta proprietária do stream (999999999999) e especifique a conta para a qual você deseja conceder permissões (111111111111). Isso adicionará uma entidade confiável à função. 

   **Exemplo de política confiável:**

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

****  

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

------

   Anexe a política que você criou na etapa anterior a essa função.

   Agora você criou uma função na conta 999999999999 que tem permissão para operações como `DescribeStream``GetDataEndpoint`, e em `PutMedia` um ARN de recurso de stream na política gerenciada. Essa nova função também confia na outra conta, 111111111111, para assumir essa função. 
**Importante**  
Anote o ARN da função, você precisará dele na próxima etapa.

1. Crie uma política gerenciada na outra conta, 111111111111, que permita a `AssumeRole` ação na função que você criou na conta 999999999999 na etapa anterior. Você precisará mencionar o ARN da função na etapa anterior. 

   **Política de amostra:**

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

****  

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

------

1. Anexe a política criada na etapa anterior a uma entidade do IAM, como uma função ou um usuário na conta 111111111111. Esse usuário agora tem permissão para assumir a função `CustomRoleName` na conta 999999999999. 

   As credenciais desse usuário chamam a AWS STS `AssumeRole` API para obter as credenciais da sessão, que são usadas posteriormente para chamar as APIs do Kinesis Video Streams no stream criado na conta 999999999999.

   ```
   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. Defina a chave de acesso, a chave secreta e as credenciais da sessão com base no conjunto anterior no ambiente.

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

1. Execute as APIs do Kinesis Video Streams para descrever e obter o endpoint de dados do stream na conta 999999999999.

   ```
   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 obter instruções genéricas passo a passo sobre como conceder acesso entre contas, consulte [Delegar](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) acesso ao uso de funções do IAM. Contas da AWS 

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

Os exemplos de políticas a seguir demonstram como você pode controlar o acesso do usuário ao seu Kinesis Video Streams.

**Example 1: Permita que os usuários obtenham dados de qualquer stream de vídeo do Kinesis**  
Essa política permite que um usuário ou grupo realize as `ListTagsForStream` operações`DescribeStream`,`GetDataEndpoint`, `GetMedia``ListStreams`, e em qualquer stream de vídeo da Kinesis. É apropriada para usuários que podem obter dados de qualquer streaming de vídeo.     
****  

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

**Example 2: Permitir que um usuário crie um stream de vídeo do Kinesis e grave dados nele**  
Esta política permite que um usuário ou grupo execute as operações `CreateStream` e `PutMedia`. Esta política é apropriada para uma câmera de segurança que pode criar um streaming de vídeo e enviar dados para ele.  

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

**Example 3: Permitir que um usuário tenha acesso total a todos os recursos do Kinesis Video Streams**  
Esta política permite que um usuário ou grupo execute qualquer operação do Kinesis Video Streams em qualquer um dos recursos. Esta política é apropriada para administradores.    
****  

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

**Example 4: Permitir que um usuário grave dados em um stream de vídeo específico do Kinesis**  
Esta política permite que um usuário ou grupo grave dados em um determinado streaming. Esta política é apropriada para um dispositivo que pode enviar dados para um streaming único.    
****  

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