

# Usar políticas do IAM para o Amazon Kinesis Data Streams e Amazon DynamoDB
<a name="kds_iam"></a>

Na primeira vez que você habilitar o Amazon Kinesis Data Streams para Amazon DynamoDB, o DynamoDB criará automaticamente uma função vinculada ao serviço do AWS Identity and Access Management (IAM) para você. Esta função, `AWSServiceRoleForDynamoDBKinesisDataStreamsReplication`, permite que o DynamoDB gerencie a replicação de alterações em nível de item no Kinesis Data Streams em seu nome. Não exclua essa função vinculada ao serviço.

Para ter mais informações sobre perfis vinculados ao serviço, consulte [Criar um perfil vinculado ao serviço](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html) no *Guia do usuário do IAM*.

**nota**  
O DynamoDB não oferece suporte a condições baseadas em etiqueta para políticas do IAM.

Para habilitar o Amazon Kinesis Data Streams para o Amazon DynamoDB, é necessário ter as seguintes permissões na tabela:
+ `dynamodb:EnableKinesisStreamingDestination`
+ `kinesis:ListStreams`
+ `kinesis:PutRecords`
+ `kinesis:DescribeStream`

A fim de descrever o Amazon Kinesis Data Streams para Amazon DynamoDB para determinada tabela do DynamoDB, é necessário ter as permissões a seguir na tabela.
+ `dynamodb:DescribeKinesisStreamingDestination`
+ `kinesis:DescribeStreamSummary`
+ `kinesis:DescribeStream`

A fim de desabilitar o Amazon Kinesis Data Streams para o Amazon DynamoDB, é necessário ter permissões a seguir na tabela.
+ `dynamodb:DisableKinesisStreamingDestination`

Para atualizar o Amazon Kinesis Data Streams para o Amazon DynamoDB, é necessário ter as permissões a seguir na tabela.
+ `dynamodb:UpdateKinesisStreamingDestination`

Os exemplos a seguir mostram como usar políticas do IAM para conceder permissões para o Amazon Kinesis Data Streams para Amazon DynamoDB.

## Exemplo: habilitar o Amazon Kinesis Data Streams para Amazon DynamoDB
<a name="access-policy-kds-example1"></a>

A política do IAM a seguir concede permissões para habilitar o Amazon Kinesis Data Streams para o Amazon DynamoDB na tabela `Music`: Ela não concede permissões para desabilitar, atualizar ou descrever o Kinesis Data Streams para o DynamoDB na tabela `Music`. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/kinesisreplication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBKinesisDataStreamsReplication",
            "Condition": {
                "StringLike": {
                    "iam:AWSServiceName": "kinesisreplication.dynamodb.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:EnableKinesisStreamingDestination"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:111122223333:table/Music"
        }
    ]
}
```

------

## Exemplo: Atualizar o Amazon Kinesis Data Streams para o Amazon DynamoDB
<a name="access-policy-kds-example2"></a>

A política do IAM a seguir concede permissões para atualizar o Amazon Kinesis Data Streams para o Amazon DynamoDB na tabela `Music`: Ela não concede permissões para habilitar, desabilitar ou descrever o Amazon Kinesis Data Streams para o Amazon DynamoDB na tabela `Music`. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:UpdateKinesisStreamingDestination"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:111122223333:table/Music"
        }
    ]
}
```

------

## Exemplo: desabilitar o Amazon Kinesis Data Streams para Amazon DynamoDB
<a name="access-policy-kds-example2"></a>

A política do IAM a seguir concede permissões para desabilitar o Amazon Kinesis Data Streams para o Amazon DynamoDB na tabela `Music`: Ela não concede permissões para habilitar, atualizar ou descrever o Amazon Kinesis Data Streams para o Amazon DynamoDB na tabela `Music`. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:DisableKinesisStreamingDestination"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:111122223333:table/Music"
        }
    ]
}
```

------

## Exemplo: aplicar seletivamente permissões para o Amazon Kinesis Data Streams para Amazon DynamoDB com base no recurso
<a name="access-policy-kds-example3"></a>

A política do IAM a seguir concede permissões para habilitar e descrever o Amazon Kinesis Data Streams para o Amazon DynamoDB na tabela `Music` e nega permissões para desabilitar o Amazon Kinesis Data Streams para o Amazon DynamoDB na tabela `Orders`. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:EnableKinesisStreamingDestination",
                "dynamodb:DescribeKinesisStreamingDestination"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:111122223333:table/Music"
        },
        {
            "Effect": "Deny",
            "Action": [
                "dynamodb:DisableKinesisStreamingDestination"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:111122223333:table/Orders"
        }
    ]
}
```

------

## Usar funções vinculadas ao serviço para o Kinesis Data Streams para DynamoDB
<a name="kds-service-linked-roles"></a>

O Amazon Kinesis Data Streams para Amazon DynamoDB usa [funções vinculadas ao serviço](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) do AWS Identity and Access Management (IAM). A função vinculada ao serviço é um tipo exclusivo de perfil do IAM vinculada diretamente ao Kinesis Data Streams para DynamoDB. As funções vinculadas a serviços são predefinidas pelo Kinesis Data Streams para DynamoDB e incluem todas as permissões que o serviço requer para chamar outros serviços da AWS em seu nome. 

Uma função vinculada ao serviço facilita a configuração do Kinesis Data Streams para DynamoDB porque você não precisa adicionar as permissões necessárias manualmente. O Kinesis Data Streams para DynamoDB define as permissões de suas funções vinculadas a serviços e, exceto se definido de outra forma, somente o Kinesis Data Streams para DynamoDB pode assumir suas funções. As permissões definidas incluem a política de confiança e a política de permissões, que não pode ser anexada a nenhuma outra entidade do IAM.

Para saber mais sobre outros serviços compatíveis com funções vinculadas a serviços, consulte [Serviços da AWS compatíveis com o IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) e procure os serviços que contenham **Sim **na coluna **Função vinculada a serviço**. Escolha um **Sim** com um link para visualizar a documentação da função vinculada a esse serviço.

### Permissões de função vinculada ao serviço para o Kinesis Data Streams para DynamoDB
<a name="slr-permissions"></a>

O Kinesis Data Streams para DynamoDB usa a função vinculada ao serviço chamada **AWSServiceRoleForDynamoDBKinesisDataStreamsReplication**. O objetivo dessa função vinculada ao serviço é permitir que o Amazon DynamoDB gerencie a replicação de alterações em nível de item no Kinesis Data Streams em seu nome.

O perfil vinculado ao serviço `AWSServiceRoleForDynamoDBKinesisDataStreamsReplication` confia nos seguintes serviços para aceitar o perfil:
+ `kinesisreplication.dynamodb.amazonaws.com`

A política de permissões da função permite que o Kinesis Data Streams for DynamoDB conclua as seguintes ações nos recursos especificados:
+ Ação: `Put records and describe` em `Kinesis stream`
+ Ação: `Generate data keys` no `AWS KMS` para colocar dados em fluxos do Kinesis que são criptografados usando chaves do AWS KMS geradas pelo usuário.

Para obter o conteúdo exato do documento de política, consulte [DynamoDBKinesisReplicationServiceRolePolicy](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/aws-service-role/DynamoDBKinesisReplicationServiceRolePolicy).

Você deve configurar permissões para que uma entidade do IAM (por exemplo, um usuário, grupo ou função) crie, edite ou exclua um perfil vinculado a serviço. Para saber mais, consulte [Permissões de Função Vinculadas ao Serviço](https://docs.aws.amazon.com/IAM/latest/UserGuide/contributorinsights-service-linked-roles.html#service-linked-role-permissions) no *Guia do Usuário do IAM*.

### Criar uma função vinculada ao serviço para o Kinesis Data Streams para DynamoDB
<a name="create-slr"></a>

Não é necessário criar manualmente uma função vinculada ao serviço. Quando você habilita o Kinesis Data Streams para DynamoDB no Console de gerenciamento da AWS, na AWS CLI ou na API da AWS, o Kinesis Data Streams para DynamoDB cria a função vinculada ao serviço para você. 

Se excluir essa função vinculada ao serviço e precisar criá-la novamente, você poderá usar esse mesmo processo para recriar a função em sua conta. Quando você habilita o Kinesis Data Streams para DynamoDB, o Kinesis Data Streams para DynamoDB cria a função vinculada ao serviço para você. 

### Editar uma função vinculada ao serviço para o Kinesis Data Streams para DynamoDB
<a name="edit-slr"></a>

O Kinesis Data Streams para DynamoDB não permite editar a função vinculada ao serviço `AWSServiceRoleForDynamoDBKinesisDataStreamsReplication`. Depois que criar um perfil vinculado ao serviço, você não poderá alterar o nome do perfil, pois várias entidades podem fazer referência a ele. No entanto, será possível editar a descrição do perfil usando o IAM. Para saber mais, consulte [Editar uma função vinculada a serviço](https://docs.aws.amazon.com/IAM/latest/UserGuide/contributorinsights-service-linked-roles.html#edit-service-linked-role) no *Guia do usuário do IAM*.

### Excluir uma função vinculada ao serviço para o Kinesis Data Streams para DynamoDB
<a name="delete-slr"></a>

Também é possível usar o console do IAM, a AWS CLI ou a API da AWS para excluir manualmente a função vinculada ao serviço. Para isso, primeiro você deve limpar manualmente os recursos de sua função vinculada ao serviço e depois excluí-la manualmente.

**nota**  
Se o serviço Kinesis Data Streams para DynamoDB estiver usando a função quando você tenta excluir os recursos, a exclusão poderá falhar. Se isso acontecer, espere alguns minutos e tente a operação novamente.

**Para excluir manualmente a função vinculada ao serviço usando o IAM**

Use o console do IAM, a AWS CLI ou a API da AWS para excluir a função vinculada ao serviço `AWSServiceRoleForDynamoDBKinesisDataStreamsReplication`. Para obter mais informações, consulte [Excluir uma função vinculada ao serviço](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html) no *Guia do usuário do IAM*.