

# Políticas de solução de problemas do IAM
<a name="troubleshoot_policies"></a>

Uma [política](access_policies.md) é uma entidade da AWS que, quando associada a uma identidade ou recurso, define suas permissões. A AWS avalia essas políticas quando uma principal, como um usuário, faz uma solicitação. As permissões nas políticas determinam se a solicitação será permitida ou negada. As políticas são armazenadas na AWS como documentos JSON anexados a entidades principais como *políticas baseadas em identidade* ou a recursos como *políticas baseadas em recursos*. Você pode anexar uma política baseada em identidade a uma entidade (ou identidade), como um grupo, usuário ou função do IAM. As políticas baseadas em identidade incluem as políticas gerenciadas pela AWS, as políticas gerenciadas pelo cliente e as políticas em linha. Você pode criar e editar políticas gerenciadas pelo cliente no Console de gerenciamento da AWS usando ambas as opções de editor **Visual** e **JSON**. Quando você visualiza uma política no Console de gerenciamento da AWS, pode ver um resumo das permissões concedidas por essa política. Você pode usar o editor visual e os resumos das políticas para ajudar a diagnosticar e corrigir os erros comuns encontrados no gerenciamento das políticas do IAM.

Lembre-se de que todas as políticas do IAM são armazenadas usando uma sintaxe que começa com as regras da [Notação de objetos JavaScript](http://www.json.org) (JSON). Não é preciso entender esta sintaxe para criar ou gerenciar políticas. É possível criar e editar uma política usando o editor visual no Console de gerenciamento da AWS. Para saber mais sobre a sintaxe JSON nas políticas do IAM, consulte [Gramática da linguagem das políticas de JSON do IAM](reference_policies_grammar.md).

**Solução de problemas de tópicos das políticas do IAM**
+ [Solução de problemas usando o editor visual](#troubleshoot_policies-viseditor)
  + [Reestruturação da política](#troubleshoot_viseditor-restructure)
  + [Escolher um ARN de recurso no editor visual](#troubleshoot_policies-resource-arn)
  + [Negar permissões no editor visual](#troubleshoot_policies-switch-deny)
  + [Especificar vários serviços no editor visual](#troubleshoot_policies-multiple-services)
  + [Reduzir o tamanho da política no editor visual](#troubleshoot_policy-size)
  + [Corrigir serviços, ações ou tipos de recursos desconhecidos no editor visual](#troubleshoot_policies-unrecognized-visual)
+ [Solucionar problemas com resumos de políticas](#troubleshoot_policies-polsum)
  + [Resumo de política ausente](#missing-policy-summary)
  + [O resumo de política inclui serviços, ações ou tipos de recursos desconhecidos](#unrecognized-services-actions)
  + [O serviço não oferece suporte a resumos de política do IAM](#unsupported-services-actions)
  + [Minha política não concede as permissões esperadas](#policy-summary-not-grant-permissions)
+ [Solução de problemas de gerenciamento de políticas](#troubleshoot_policies-policy-manage)
  + [Anexar ou desanexar uma política em uma conta do IAM](#troubleshoot_roles_cant-attach-detach-policy)
  + [Alterar políticas de suas identidades do IAM com base em sua atividade](#troubleshoot_change-policies-based-on-activity)
+ [Solução de problemas de documentos de políticas JSON](#troubleshoot_policies-json)
  + [Validar suas políticas](#usepolicyvalidation)
  + [Não tenho permissões para validação de política no editor JSON](#nopermsforpolicyvalidation)
  + [Mais de um objeto de política JSON](#morethanonepolicyblock)
  + [Mais de um elemento de instrução JSON](#morethanonestatement)
  + [Mais de um efeito, ação ou elemento de recurso em um elemento de instrução JSON](#duplicateelement)
  + [Elemento de versão JSON ausente](#missing-version)

## Solução de problemas usando o editor visual
<a name="troubleshoot_policies-viseditor"></a>

Ao criar ou editar uma política gerenciada pelo cliente, você pode usar as informações no editor **Visual** para ajudá-lo a solucionar erros na política. Para visualizar um exemplo de como usar o editor visual para criar uma política, consulte [Controle de acesso a identidades](access_controlling.md#access_controlling-identities).

### Reestruturação da política
<a name="troubleshoot_viseditor-restructure"></a>

Quando você cria uma política, a AWS valida, processa e transforma a política antes de armazená-la. Quando a política é recuperada, a AWS a transforma de volta para um formato legível por humanos sem alterar as permissões. Isso pode resultar em diferenças no que diz respeito ao que você vê no editor visual de política ou na guia **JSON**.
+ Blocos de permissões do editor visual podem ser adicionados, removidos ou reorganizados, e o conteúdo dentro de um bloco pode ser otimizado.
+ Na guia **JSON**, espaços em branco insignificantes podem ser removidos e os elementos dentro dos mapas JSON podem ser reordenados. Além disso, os IDs da Conta da AWS nos elementos de entidade principal podem ser substituídos pelo nome do recurso da Amazon (ARN) do Usuário raiz da conta da AWS.

Devido a essas possíveis alterações, você não deve comparar documentos de políticas JSON como strings.

Ao criar uma política gerenciada pelo cliente no Console de gerenciamento da AWS, você pode optar por trabalhar exclusivamente no editor **JSON**. Se você nunca alterar a política no editor **Visual** e escolher **Avançar** no editor **JSON**, a probabilidade de que a política seja reestruturada é menor. Ao usar o editor **Visual**, o IAM pode reestruturar a política para otimizar a aparência. Essa reestruturação existe somente na sua sessão de edição e não é salva automaticamente.

Se a sua política for reestruturada em uma sessão de edição, o IAM determinará se a reestruturação deve ser salva com base nas seguintes situações:


| Usar essa opção de editor | Se você editar a política | E depois escolher ***Avançar*** nesta guia | Quando você escolher ***Salvar alterações*** | 
| --- | --- | --- | --- | 
| Visual | Editada | Visual | A política será reestruturada | 
| Visual | Editada | JSON | A política será reestruturada | 
| Visual | Não editada | Visual | A política será reestruturada | 
| JSON | Editada | Visual | A política será reestruturada | 
| JSON | Editada | JSON | A estrutura da política não será alterada | 
| JSON | Não editada | JSON | A estrutura da política não será alterada | 

O IAM pode reestruturar políticas complexas ou políticas que têm blocos de permissões ou instruções que permitam vários serviços, tipos de recursos ou chaves de condição.

### Escolher um ARN de recurso no editor visual
<a name="troubleshoot_policies-resource-arn"></a>

Ao criar ou editar uma política usando o editor visual, você deve primeiro escolher um serviço e, em seguida, selecionar as ações do serviço. Se o serviço e as ações que você selecionou oferecerem suporte à escolha de [recursos específicos](access_controlling.md#access_controlling-resources), o editor visual apresentará uma lista dos tipos de recurso compatíveis. Em seguida, você poderá escolher **Adicionar ARN** para fornecer detalhes sobre seu recurso. Você pode escolher as opções a seguir para adicionar um ARN a um tipo de recurso.
+ **Uso do builder de ARN**: dependendo do tipo de recurso, você pode ver campos diferentes para construir seu ARN. Você também pode escolher **Qualquer** para fornecer permissão para qualquer valor na configuração especificada. Por exemplo, se você tiver selecionado o grupo do nível de acesso **Read** (Leitura) do Amazon EC2, as ações da política oferecerão suporte ao tipo de recurso `instance`. Forneça os valores **Região**, **Conta** e **InstanceId** para o recurso. A política concede permissões para qualquer instância na sua conta se você fornecer o ID da conta e escolher **Qualquer** para a região e ID da instância.
+ **Digitar ou colar o ARN**: você pode especificar recursos pelo [nome do recurso da Amazon (ARN)](reference_identifiers.md#identifiers-arns). Você pode incluir um caractere curinga (**\$1**) em qualquer campo do ARN entre cada par de dois-pontos. Para obter mais informações, consulte [Elementos de política JSON do IAM: Resource](reference_policies_elements_resource.md).

### Negar permissões no editor visual
<a name="troubleshoot_policies-switch-deny"></a>

Por padrão, uma política criada usando o editor visual permite as ações que você escolhe. Para negar as ações escolhidas, selecione **Alternar para negar permissões**. Como as solicitações são *negadas por padrão*, recomendamos que você conceda permissões somente às ações e aos recursos dos quais um usuário precisa. Você só precisa criar uma instrução de negação se quiser substituir uma permissão concedida por outra instrução ou política. Recomendamos que você limite ao mínimo o número de permissões de negação, pois elas podem aumentar a dificuldade de solucionar problemas nas permissões. Para obter mais informações sobre como o IAM avalia a lógica de políticas, consulte [Lógica da avaliação de política](reference_policies_evaluation-logic.md).

**nota**  
Por padrão, somente o Usuário raiz da conta da AWS tem acesso a todos os recursos na conta. Portanto, se você não estiver conectado como usuário raiz, você deverá ter as permissões concedidas por uma política.

### Especificar vários serviços no editor visual
<a name="troubleshoot_policies-multiple-services"></a>

Quando você usa o editor visual para criar uma política, só pode selecionar um serviço por vez. Esta é uma prática recomendada, pois o editor visual permite que você escolha as ações para esse serviço específico. Em seguida, você escolhe os recursos compatíveis com esse serviço e as ações selecionadas. Isso facilita a criação e a solução de problemas na sua política. 

Você também pode usar um caractere curinga (\$1) para especificar manualmente vários serviços. Por exemplo, digite **Code\$1** para fornecer permissões para todos os serviços que comecem com `Code`, como `CodeBuild` e `CodeCommit`. No entanto, você deve, em seguida, inserir as ações e os ARNs dos recursos para concluir sua política. Além disso, quando você salvar a política, ela poderá ser [reestruturada](#troubleshoot_viseditor-restructure) a fim de incluir cada serviço em um bloco de permissões separado.

Ou então, para usar a sintaxe JSON (como caracteres curinga) para serviços, crie, edite e salve a política usando a opção de editor **JSON**.

### Reduzir o tamanho da política no editor visual
<a name="troubleshoot_policy-size"></a>

Quando você usa o editor visual para criar uma política, o IAM cria um documento JSON para armazenar sua política. Você pode visualizar este documento mudando para a opção de editor **JSON**. Se este documento JSON exceder o limite de tamanho de uma política, o editor visual exibirá uma mensagem de erro. Você não poderá revisar e salvar a política. Para visualizar a limitação do IAM quanto ao tamanho de uma política gerenciada, consulte [Limites de caracteres do IAM e do STS](reference_iam-quotas.md#reference_iam-quotas-entity-length). 

Para reduzir o tamanho de uma política no editor visual, edite a política ou mova blocos de permissões para outra política. A mensagem de erro inclui o número de caracteres que o documento da política contém. Você pode usar essas informações para ajudar a reduzir o tamanho da política.

### Corrigir serviços, ações ou tipos de recursos desconhecidos no editor visual
<a name="troubleshoot_policies-unrecognized-visual"></a>

Você pode ver um aviso no editor visual de que sua política inclui um serviço, ação ou tipo de recurso não reconhecido.

**nota**  
O IAM revisa nomes de serviço, ações e tipos de recurso para serviços que oferecem suporte a resumos de políticas. Contudo, seu resumo de política pode incluir um valor de recurso ou uma condição que não existe. Sempre teste as políticas com o [simulador de políticas](access_policies_testing-policies.md).

Se a sua política inclui serviços, ações ou tipos de recurso desconhecidos, ocorreu um dos seguintes erros:
+ **Serviço de pré-visualização**: serviços que estão em pré-visualização não oferecem suporte ao editor visual. Se estiver participando da pré-visualização, você deverá inserir manualmente as ações e os ARNs dos recursos para concluir sua política. Você pode ignorar qualquer aviso e continuar. Ou então, você pode escolher a opção de editor **JSON** e digitar ou colar um documento de política JSON.
+ **Serviço personalizado**: serviços personalizados não oferecem suporte ao editor visual. Se estiver usando um serviço personalizado, você deverá inserir manualmente as ações e os ARNs dos recursos para concluir sua política. Você pode ignorar qualquer aviso e continuar. Ou então, você pode escolher a opção de editor **JSON** e digitar ou colar um documento de política JSON.
+ **O serviço não é compatível com o editor visual**: se sua política incluir um serviço em disponibilidade geral (GA) que não seja compatível com o editor visual, você deverá inserir manualmente as ações e os ARNs dos recursos para concluir sua política. Você pode ignorar qualquer aviso e continuar. Ou então, você pode escolher a opção de editor **JSON** e digitar ou colar um documento de política JSON. 

  Os serviços disponíveis são serviços que são lançados publicamente e não são serviços personalizados ou de visualização. Se o serviço desconhecido for um serviço disponível para o público geral e seu nome estiver digitado corretamente, isso significa que o serviço não oferece suporte ao editor visual. Para saber como solicitar suporte a um resumo de políticas ou ao editor visual para um serviço disponível para o público, consulte [O serviço não oferece suporte a resumos de política do IAM](#unsupported-services-actions).
+ **A ação não é compatível com o editor visual**: se sua política incluir um serviço compatível com uma ação incompatível, você deverá inserir manualmente as ações e os ARNs dos recursos para concluir sua política. Você pode ignorar qualquer aviso e continuar. Ou então, você pode escolher a opção de editor **JSON** e digitar ou colar um documento de política JSON.

  Se a política incluir um serviço com suporte com uma ação sem suporte, isso significa que o serviço não oferece suporte completo ao editor visual. Para saber como solicitar suporte a um resumo de políticas ou ao editor visual para um serviço disponível para o público, consulte [O serviço não oferece suporte a resumos de política do IAM](#unsupported-services-actions).
+ **O tipo de recurso não oferece suporte ao editor visual**: se a política incluir uma ação com suporte com um tipo de recurso sem suporte, você poderá ignorar o aviso e prosseguir. No entanto, como o IAM não pode confirmar se você incluiu recursos para todas as ações selecionadas, você poderá receber avisos adicionais.
+ **Erro de digitação**: quando você insere manualmente um serviço, uma ação ou um recurso no editor visual, é possível criar uma política que inclua um erro de digitação. Recomendamos usar o editor visual selecionando os serviços e ações da lista. Em seguida, preencha a seção de recursos de acordo com os prompts. Se um serviço não for totalmente compatível com o editor visual, talvez você tenha de inserir partes da política manualmente. 

  Se você tiver certeza de que sua política não contém nenhum dos erros acima, ela poderá incluir um erro de digitação. Verifique se há os seguintes problemas:
  + Nomes de serviço, ação e tipo de recurso com erros de digitação, como `s2` em vez de `s3` ou `ListMyBuckets` em vez de `ListAllMyBuckets`
  + Texto desnecessário em ARNs, como `arn:aws:s3: : :*`
  + Dois pontos ausentes em ações, como `iam.CreateUser`

  Você pode avaliar uma política que pode incluir erros de digitação selecionando **Avançar** para revisar o resumo da política. Em seguida, confirme se a política fornece as permissões que você espera.

## Solucionar problemas com resumos de políticas
<a name="troubleshoot_policies-polsum"></a>

Você pode diagnosticar e resolver problemas relacionados aos resumos de políticas.

### Resumo de política ausente
<a name="missing-policy-summary"></a>

O console do IAM inclui tabelas do *resumo de políticas* que descrevem o nível de acesso, os recursos e as condições permitidas ou negadas para cada serviço em uma política. As políticas são resumidas em três tabelas: o [resumo de políticas](access_policies_understand-policy-summary.md), o [resumo de serviços](access_policies_understand-service-summary.md) e o [resumo de ações](access_policies_understand-action-summary.md). A tabela de *resumo da política* inclui uma lista de serviços e resumos das permissões que são definidas pela política escolhida. Você pode visualizar o [resumo da política](access_policies_understand.md) de qualquer política anexada a uma entidade na página **Detalhes da política** daquela política. Visualize o resumo de políticas para políticas gerenciadas na página **Políticas**. Se a AWS não puder renderizar um resumo para uma política, você verá o documento da política JSON e o seguinte erro:

**Não é possível gerar um resumo para esta política. Você ainda pode visualizar ou editar o documento da política JSON.**

Se a política não incluir um resumo, terá ocorrido um dos seguintes erros:
+ **Elemento de política sem suporte**: o IAM não oferece suporte à geração de resumos de políticas para políticas que incluem um dos seguintes [elementos de política](reference_policies_elements.md):
  + `Principal`
  + `NotPrincipal`
  + `NotResource`
+ **Nenhuma permissão de política**: se uma política não fornecer permissões efetivas, o resumo da política não poderá ser gerado. Por exemplo, se uma política inclui uma única instrução com o elemento `"NotAction": "*"`, ela concede acesso a todas as ações, exceto "todas as ações" (\$1). Isso significa que ela `Deny` ou `Allow` acesso a nada.
**nota**  
Tenha cuidado ao usar esses elementos de políticas, como `NotPrincipal`, `NotAction` e `NotResource`. Para obter mais informações sobre o uso de elementos de política, consulte [Referência de elemento de política JSON do IAM](reference_policies_elements.md).

  Se você fornecer serviços e recursos incompatíveis, poderá criar uma política que não concede permissões eficazes. Isso pode ocorrer quando você especifica ações em um serviço e recursos de outro serviço. Nesse caso, o resumo de políticas aparecerá. A única indicação de que há um problema é que a coluna de recursos no resumo pode incluir um recurso de um serviço diferente. Se essa coluna incluir um recurso incompatível, será necessário analisar sua política para busca de erros. Teste suas políticas com o [simulador de políticas](access_policies_testing-policies.md) para melhor entendê-las.

### O resumo de política inclui serviços, ações ou tipos de recursos desconhecidos
<a name="unrecognized-services-actions"></a>

No console do IAM, se um [resumo de política](access_policies_understand.md) incluir um símbolo de aviso (![\[Warning hazard sign icon with yellow triangle background.\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/console-alert-icon.console.png)), a política poderá incluir um serviço, ação ou tipo de recurso desconhecido. Para saber mais sobre os avisos de um resumo de políticas, consulte [Resumo da política (lista de serviços)](access_policies_understand-policy-summary.md). 

**nota**  
O IAM revisa nomes de serviço, ações e tipos de recurso para serviços que oferecem suporte a resumos de políticas. Contudo, seu resumo de política pode incluir um valor de recurso ou uma condição que não existe. Sempre teste as políticas com o [simulador de políticas](access_policies_testing-policies.md).

Se a sua política inclui serviços, ações ou tipos de recurso desconhecidos, ocorreu um dos seguintes erros:
+ **Serviço de pré-visualização**: serviços que estão em pré-visualização não oferecem suporte a resumos de política.
+ **Serviço personalizado**: serviços personalizados não oferecem suporte a resumos de política.
+ **O serviço não oferece suporte a resumos**: se a política incluir um serviço disponível para o público (GA) que não ofereça suporte a resumos de política, o serviço é incluído na seção **Unrecognized services** (Serviços desconhecidos) da tabela do resumo da política. Os serviços disponíveis são serviços que são lançados publicamente e não são serviços personalizados ou de visualização. Se um serviço desconhecido estiver disponível para o público e o nome estiver escrito corretamente, o serviço não oferecerá suporte a resumos de política do IAM. Para saber como solicitar suporte para um resumo de políticas para um serviço disponível, consulte [O serviço não oferece suporte a resumos de política do IAM](#unsupported-services-actions).
+ **A ação não oferece suporte a resumos**: se a política incluir um serviço compatível com uma ação incompatível, a ação será incluída na seção **Unrecognized actions** (Ações desconhecidas) da tabela do resumo do serviço. Para saber mais sobre os avisos de um resumo de serviços, consulte [Resumo do serviço (lista de ações)](access_policies_understand-service-summary.md).
+ **O tipo de recurso não oferece suporte a resumos**: se a política incluir uma ação compatível com um tipo de recurso incompatível, o recurso será incluído na seção **Unrecognized resource types** (Tipos de recurso desconhecidos) da tabela do resumo do serviço. Para saber mais sobre os avisos de um resumo de serviços, consulte [Resumo do serviço (lista de ações)](access_policies_understand-service-summary.md).
+ **Erro de digitação**: a AWS verifica se o JSON está sintaticamente correto e se a política não inclui erros de digitação ou outros erros como parte da [validação de política](access_policies_policy-validator.md).

**nota**  
Como [prática recomendada](best-practices.md), recomendamos que você use o IAM Access Analyzer para validar suas políticas do IAM a fim de garantir permissões seguras e funcionais. Recomendamos que você abra as políticas existentes e analise e resolva todas as recomendações de validação de política.

### O serviço não oferece suporte a resumos de política do IAM
<a name="unsupported-services-actions"></a>

É possível que resumos de políticas do IAM ou o editor visual não sejam compatíveis com uma ação ou um serviço em disponibilidade geral (GA). Os serviços disponíveis são serviços lançados publicamente e não serviços personalizados ou de visualização. Se o serviço desconhecido for um serviço disponível para o público e seu nome estiver digitado corretamente, então o serviço não oferece suporte a esses recursos. Se a política incluir um serviço compatível com uma ação incompatível, o serviço não oferecerá suporte completo a resumos de política do IAM.

**Para solicitar que um serviço adicione suporte ao resumo de política do IAM ou ao editor visual**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Localize a política que inclui o serviço sem suporte:
   + Se a política for uma política gerenciada, escolha **Políticas** no painel de navegação. Na lista de políticas, escolha o nome da política que deseja visualizar.
   + Se a política for uma política em linha anexada ao usuário, escolha **Usuários** no painel de navegação. Na lista de usuários, escolha o nome do usuário cuja política deseja visualizar. Na tabela de políticas do usuário, expanda o cabeçalho do resumo de políticas que deseja visualizar.

1. No lado esquerdo do rodapé do Console de gerenciamento da AWS, escolha **Comentários**. Na caixa **Feedback para o IAM**, digite **I request that the <ServiceName> service add support for IAM policy summaries and the visual editor**. Se quiser que mais de um serviço ofereça suporte aos resumos, digite **I request that the <ServiceName1>, <ServiceName2>, and <ServiceName3> services add support for IAM policy summaries and the visual editor**.

**Para solicitar que um serviço adicione suporte ao resumo de política do IAM para uma ação ausente**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Localize a política que inclui o serviço sem suporte:
   + Se a política for uma política gerenciada, escolha **Políticas** no painel de navegação. Na lista de políticas, escolha o nome da política que deseja visualizar.
   + Se a política for uma política em linha anexada ao usuário, escolha **Usuários** no painel de navegação. Na lista de usuários, escolha o nome do usuário cuja política deseja visualizar. Na tabela de políticas do usuário, escolha o nome da política que deseja visualizar para expandir o resumo de políticas.

1. No resumo de políticas, escolha o nome do serviço que inclua uma ação sem suporte.

1. No lado esquerdo do rodapé do Console de gerenciamento da AWS, escolha **Comentários**. Na caixa **Feedback para o IAM**, digite **I request that the <ServiceName> service add IAM policy summary and the visual editor support for the <ActionName> action**. Se quiser relatar mais de uma ação sem suporte, digite **I request that the <ServiceName> service add IAM policy summary and the visual editor support for the <ActionName1>, <ActionName2>, and <ActionName3> actions**. 

Para solicitar que outro serviço inclua ações ausentes, repita as três últimas etapas.

### Minha política não concede as permissões esperadas
<a name="policy-summary-not-grant-permissions"></a>

Para atribuir permissões a um usuário, grupo, função ou recurso, você cria uma *política*, que é um documento que define as permissões. Um documento de política inclui os seguintes elementos:
+ **Effect** (Efeito): se a política permite ou nega acesso
+ **Action** (Ação): a lista de ações permitidas ou negadas pela política
+ **Resource** (Recurso): a lista de recursos nos quais as ações podem ocorrer
+ **Condition** (Condição) (opcional): as circunstâncias sob as quais a política concede a permissão

Para saber mais sobre este e outros elementos de política, consulte [Referência de elemento de política JSON do IAM](reference_policies_elements.md). 

Para conceder acesso, sua política deve definir uma ação com um recurso compatível. Se a política também inclui uma condição, essa condição deve incluir uma [chave de condição global](reference_policies_condition-keys.md) ou deve se aplicar à ação. Para saber quais recursos são compatíveis com uma ação, consulte a [documentação da AWS](https://docs.aws.amazon.com/) para o seu serviço. Para saber quais condições são compatíveis com uma ação, consulte [Ações, recursos e chaves de condição de serviços da AWS](reference_policies_actions-resources-contextkeys.html).

Verifique se sua política define uma ação, recurso ou condição que não concede permissões. Veja o [resumo da política](access_policies_understand-policy-summary.md) de sua política usando o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). Você pode usar resumos de políticas para identificar e corrigir problemas em sua política.

Há vários motivos pelos quais um elemento pode não conceder permissões, apesar de ser definido na política do IAM:
+ [**Uma ação é definida sem um recurso aplicável**](#mismatch_action-no-resource)
+ [**Um recurso é definido sem uma ação aplicável**](#mismatch_resource-no-action)
+ [**Uma condição é definida sem uma ação aplicável**](#mismatch_condition-no-match)

Para ver exemplos de resumos de política que incluem avisos, consulte [Resumo da política (lista de serviços)](access_policies_understand-policy-summary.md).

#### Uma ação é definida sem um recurso aplicável
<a name="mismatch_action-no-resource"></a>

A política abaixo define todas as ações `ec2:Describe*` e define um recurso específico. Nenhuma das ações `ec2:Describe` é concedida porque nenhuma dessas ações é compatível com as permissões no nível de serviço. Permissões no nível de recurso significam que a ação é compatível com recursos que usam [ARNs](reference_identifiers.md#identifiers-arns) no elemento [`Resource`](reference_policies_elements_resource.md) da política. Se uma ação não é compatível com as permissões no nível de recurso, a instrução na política deve usar um curinga (`*`) no elemento `Resource`. Para saber quais serviços da são compatíveis com permissões em nível do recurso, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "arn:aws:ec2:us-east-2:111122223333:instance/*"
        }
    ]
}
```

------

Esta política não fornece permissões, e o resumo da política inclui o seguinte erro:

`This policy does not grant any permissions. To grant access, policies must have an action that has an applicable resource or condition.`

Para corrigir essa política, você deve usar `*` no elemento `Resource`.

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

****  

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

------

#### Um recurso é definido sem uma ação aplicável
<a name="mismatch_resource-no-action"></a>

A política abaixo define um recurso de bucket do Amazon S3, mas não inclui uma ação do S3 que pode ser executada nesse recurso. Esta política também concede acesso completo a todas as ações do Amazon CloudFront.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
        "Effect": "Allow",
        "Action": "cloudfront:*",
        "Resource": [
            "arn:aws:cloudfront:*",
            "arn:aws:s3:::amzn-s3-demo-bucket"
        ]
        }
    ]
}
```

------

Esta política fornece permissões para todas as ações do CloudFront. Mas como a política define o recurso do S3 `amzn-s3-demo-bucket` sem definir ações do S3, o resumo da política inclui o seguinte aviso:

`This policy defines some actions, resources, or conditions that do not provide permissions. To grant access, policies must have an action that has an applicable resource or condition.`

Para corrigir essa política para fornecer as permissões de bucket do S3, você deve definir as ações do S3 que podem ser executadas em um recurso de bucket.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudfront:*",
                "s3:CreateBucket",
                "s3:ListBucket*",
                "s3:PutBucket*",
                "s3:GetBucket*"
            ],
            "Resource": [
                "arn:aws:cloudfront:*",
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        }
    ]
}
```

------

Como alternativa, para corrigir essa política para fornecer apenas as permissões do CloudFront, remova o recurso do S3.

#### Uma condição é definida sem uma ação aplicável
<a name="mismatch_condition-no-match"></a>

A política abaixo define duas ações do Amazon S3 para todos os recursos do S3, se o prefixo do S3 for igual a `custom` e o ID da versão for igual a `1234`. No entanto, a chave de condição `s3:VersionId` é usada para a marcação da versão do objeto e não é suportada pelas ações do bucket definidas. Para saber quais condições são compatíveis com uma ação, consulte [Actions, Resources, and Condition Keys for AWS Services](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) e escolha o serviço para visualizar a documentação do serviço sobre chaves de condição.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucketVersions",
                "s3:ListBucket"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "s3:prefix": [
                        "custom"
                    ],
                    "s3:VersionId": [
                        "1234"
                    ]
                }
            }
        }
    ]
}
```

------

Esta política fornece permissões para a ação `s3:ListBucketVersions` e a ação `s3:ListBucket` se o nome do bucket inclui o prefixo `custom`. Mas, como a condição `s3:VersionId` não é compatível com nenhuma das ações definidas, o resumo da política inclui o seguinte erro:

`This policy does not grant any permissions. To grant access, policies must have an action that has an applicable resource or condition.`

Para corrigir essa política para usar a identificação de versão do objeto do S3, você deve definir uma ação do S3 compatível com a chave de condição `s3:VersionId`. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucketVersions",
                "s3:ListBucket",
                "s3:GetObjectVersion"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "s3:prefix": [
                        "custom"
                    ],
                    "s3:VersionId": [
                        "1234"
                    ]
                }
            }
        }
    ]
}
```

------

Esta política fornece permissões para cada ação e condição na política. No entanto, a política ainda não fornece permissões, pois não há casos em que uma única ação corresponde a ambas as condições. Em vez disso, você deve criar duas instruções separadas e cada uma deve incluir apenas as ações com as condições às quais se aplicam.

Para corrigir essa política, crie duas instruções. A primeira declaração inclui as ações que suportam a condição `s3:prefix` e a segunda instrução inclui as ações que suportam a condição `s3:VersionId`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucketVersions",
                "s3:ListBucket"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "s3:prefix": "custom"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "s3:GetObjectVersion",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "s3:VersionId": "1234"
                }
            }
        }
    ]
}
```

------

## Solução de problemas de gerenciamento de políticas
<a name="troubleshoot_policies-policy-manage"></a>

Você pode diagnosticar e resolver problemas relacionados ao gerenciamento de políticas.

### Anexar ou desanexar uma política em uma conta do IAM
<a name="troubleshoot_roles_cant-attach-detach-policy"></a>

Algumas políticas gerenciadas da AWS estão vinculadas a um serviço. Essas políticas são usadas apenas com uma [função vinculada ao serviço](id_roles.md#iam-term-service-linked-role) desse serviço. No console do IAM, quando você visualiza a página **Detalhes da política**, a página inclui um banner para indicar que a política está vinculada a um serviço. Não é possível anexar essa política a um usuário, grupo ou função no IAM. Quando você cria uma função vinculada ao serviço para o serviço, essa política é automaticamente anexada a sua nova função. Como a política é necessária, não é possível desanexar a política da função vinculada ao serviço. 

### Alterar políticas de suas identidades do IAM com base em sua atividade
<a name="troubleshoot_change-policies-based-on-activity"></a>

Você pode atualizar as políticas para suas identidades (usuários, grupos e funções) do IAM com base em sua atividade. Para fazer isso, visualize os eventos da sua conta no **Event history** (Histórico de eventos) do CloudTrail. Os logs de eventos do CloudTrail incluem informações de eventos detalhadas que você pode usar para alterar as permissões da política.

**Um usuário ou perfil está tentando realizar uma ação na AWS e essa solicitação está sendo negada.**  
Considere que o usuário ou o perfil tem permissão para realizar a ação. Se esse for o caso, você poderá adicionar a ação e até mesmo o ARN do recurso que eles tentou para acessar a sua política.

**Um usuário ou um perfil tem permissões que não estão sendo usadas.**  
Considere remover essas permissões da política deles. Certifique-se de que suas políticas concedem o [menor privilégio](best-practices.md#grant-least-privilege) necessário para executar apenas as ações necessárias.

Para obter mais informações sobre o uso do CloudTrail, consulte[Visualizar eventos do CloudTrail no console do CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events-console.html) no*Guia do usuário do AWS CloudTrail*.

## Solução de problemas de documentos de políticas JSON
<a name="troubleshoot_policies-json"></a>

Você pode diagnosticar e resolver problemas relacionados aos documentos de políticas JSON.

### Validar suas políticas
<a name="usepolicyvalidation"></a>

 Quando você cria ou edita uma política JSON, o IAM pode executar a validação de políticas para ajudar você a criar uma política eficaz. O IAM identifica erros de sintaxe JSON, enquanto o IAM Access Analyzer fornece verificações de políticas adicionais com recomendações para ajudar você a refinar ainda mais suas políticas. Para saber mais sobre validação de política, consulte [Validação de política do IAM](access_policies_policy-validator.md). Para saber mais sobre as verificações de política do IAM Access Analyzer e as recomendações práticas, consulte [Validação de política do IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html). 

### Não tenho permissões para validação de política no editor JSON
<a name="nopermsforpolicyvalidation"></a>

No Console de gerenciamento da AWS, você pode receber o seguinte erro se não tiver permissões para visualizar os resultados da validação da política do IAM Access Analyzer:

`You need permissions. You do not have the permissions required to perform this operation. Ask your administrator to add permissions.`

Para corrigir este erro, peça ao administrador para adicionar a permissão `access-analyzer:ValidatePolicy` para você.

### Mais de um objeto de política JSON
<a name="morethanonepolicyblock"></a>

Uma política do IAM deve consistir em um único objeto JSON. Você denota um objeto colocando chaves \$1 \$1 em torno. Você pode aninhar outros objetos dentro de um objeto JSON incorporando chaves adicionais \$1 \$1 dentro do par externo. Uma política deve conter somente um par externo de chaves \$1 \$1. O exemplo a seguir é incorreto, pois contém dois objetos no nível superior (destacados em *vermelho*):

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

****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": 
      {
         "Effect":"Allow",
         "Action":"ec2:Describe*",
         "Resource":"*"
      }
    }
    { 
      "Statement": {
         "Effect": "Allow",
         "Action": "s3:*",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
      }
    }
```

------

No entanto, você pode atender à intenção do exemplo anterior com o uso da gramática correta da política. Em vez de incluir dois objetos completos da política, cada um com seu próprio elemento `Statement`, você pode combinar dois blocos em um único elemento `Statement`. O elemento `Statement` tem um conjunto de dois objetos como seu valor, como mostrado no seguinte exemplo (destacado em **negrito**): 

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

****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "ec2:Describe*",
          "Resource":"*"
        },
        {
          "Effect": "Allow",
          "Action": "s3:*",
          "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
      ]
    }
```

------

### Mais de um elemento de instrução JSON
<a name="morethanonestatement"></a>

À primeira vista, esse erro pode parecer uma variação da seção anterior. No entanto, sintaticamente é um tipo diferente de erro. No exemplo a seguir, há somente um objeto da política, conforme indicado por um único par de chaves \$1 \$1 no nível superior. No entanto, esse objeto contém dois elementos `Statement` dentro de si.

 Uma política do IAM deve conter apenas um elemento `Statement`, consistindo no nome (`Statement`) que aparece à esquerda do sinal de dois pontos, seguido pelo valor à direita. O valor de um elemento `Statement` deve ser um objeto, denotado por chaves \$1 \$1, contendo um elemento `Effect`, um elemento `Action` e um elemento `Resource`. O exemplo a seguir é incorreto, pois contém dois elementos `Statement` no objeto da política (destacados em *vermelho*):

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

****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": {
        "Effect": "Allow",
        "Action": "ec2:Describe*",
        "Resource": "*"
      },
      "Statement": {
        "Effect": "Allow",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
      }
    }
```

------

Um objeto de valor pode ser um conjunto de vários objetos de valor. Para resolver esse problema, combine os dois elementos `Statement` em um elemento com um conjunto de objetos, conforme mostrado no seguinte exemplo (destacado em **negrito**):

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

****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "ec2:Describe*",
          "Resource":"*"
        },
        {
          "Effect": "Allow",
          "Action": "s3:*",
          "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
     ]
    }
```

------

O valor do elemento `Statement` é uma matriz de objetos. O conjunto nesse exemplo consiste em dois objetos, sendo que cada um deles por si só é um valor correto para um elemento `Statement`. Cada objeto na matriz é separado por vírgulas.

### Mais de um efeito, ação ou elemento de recurso em um elemento de instrução JSON
<a name="duplicateelement"></a>

No lado do valor do nome/valor `Statement`, o objeto deve conter apenas em um elemento `Effect`, um elemento `Action` e um elemento `Resource`. A política a seguir está incorreta, pois contém dois elementos `Effect` na `Statement`:

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

****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": {
        "Effect": "Deny",
        "Effect": "Allow",     
        "Action": "ec2:* ",
        "Resource": "*"
      }
    }
```

------

**nota**  
O mecanismo de política não permite tais erros em políticas novas ou editadas. No entanto, o mecanismo de política continua a permitir a execução de políticas que foram salvas antes da atualização do mecanismo. O comportamento das políticas existentes com o erro é o seguinte:  
Vários elementos `Effect`: apenas o último elemento `Effect` é observado. Os outros são ignorados.
Elementos `Action` múltiplos: todos os elementos `Action` são combinados internamente e tratados como se fossem uma lista única.
Elementos `Resource` múltiplos: todos os elementos `Resource` são combinados internamente e tratados como se fossem uma lista única.
O mecanismo da política não permite salvar qualquer política com erros de sintaxe. Corrija os erros na política antes de salvá-los. Revise e corrija todas as recomendações de [validação de políticas](access_policies_policy-validator.md) para suas políticas.

 Em cada caso, a solução é remover o elemento extra incorreto. Para elementos `Effect`, é simples: se você deseja que o exemplo anterior *negue* permissões para instâncias do Amazon EC2, remova a linha `"Effect": "Allow",` da política da seguinte forma:

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

****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": {
        "Effect": "Deny",
        "Action": "ec2:*",
        "Resource": "*"
      }
    }
```

------

No entanto, se o elemento duplicado é `Action` ou `Resource`, a resolução pode ser mais complicada. Você pode ter várias ações que deseja permitir (ou negar) ou você pode controlar o acesso de vários recursos. Por exemplo, o exemplo a seguir está incorreto porque tem vários elementos `Resource` (destacados em *vermelho*):

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

****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": {
        "Effect": "Allow",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
      }
    }
```

------

Cada um dos elementos necessários em um objeto de valor em um elemento `Statement` pode estar presente somente uma vez. A solução é colocar cada valor em um conjunto. O exemplo a seguir ilustra isso transformando dois elementos separados do recurso em um elemento `Resource` com uma matriz como o objeto de valor (destacado em **negrito**):

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

****  

```
{	
      "Version":"2012-10-17",		 	 	 
      "Statement": {
        "Effect": "Allow",
        "Action": "s3:*",
        "Resource": [
          "arn:aws:s3:::amzn-s3-demo-bucket",
          "arn:aws:s3:::amzn-s3-demo-bucket/*"
        ]
      }
    }
```

------

### Elemento de versão JSON ausente
<a name="missing-version"></a>

Um elemento de política `Version` é diferente de uma versão de política. O elemento de política `Version` é usado em uma política e define a versão da linguagem da política. Em comparação, uma versão da política é criada quando você altera uma política gerenciada pelo cliente no IAM. A política alterada não substitui a política existente. Em vez disso, o IAM cria uma nova versão da política gerenciada. Para saber mais sobre o elemento de política `Version`, consulte [Elementos de política JSON do IAM: Version](reference_policies_elements_version.md). Para saber mais sobre as versões de política, consulte [Versionamento de políticas do IAM](access_policies_managed-versioning.md).

À medida que os recursos da AWS evoluem, novos recursos são adicionados às políticas do IAM para oferecer suporte a esses recursos. Às vezes, uma atualização da sintaxe da política inclui um novo número de versão. Se você usar os recursos mais recentes da gramática da política na sua política, será necessário saber qual versão do mecanismo de análise de política você está usando. A versão de política padrão é "2008-10-17." Se você deseja usar qualquer recurso de política que foi introduzido posteriormente, será necessário especificar o número da versão que dá suporte ao recurso desejado. Recomendamos que você *sempre* inclua o número da versão da sintaxe de política mais recente, que atualmente é `"Version": "2012-10-17"`. Por exemplo, a política a seguir está incorreta, pois usa uma variável `${...}` de política no ARN para um recurso. Mas ela não especifica uma versão de sintaxe de política que ofereça suporte às variáveis de política (realçada em *vermelho*):

```
{
  "Statement": 
  {
    "Action": "iam:*AccessKey*",
    "Effect": "Allow",
    "Resource": "arn:aws:iam::123456789012:user/${aws:username}"
  }
}
```

Adicionar um elemento `Version` na parte superior da política com o valor `2012-10-17`, a primeira versão da API do IAM que oferece suporte às variáveis de política, resolve este problema (destacado em **negrito**):

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": 
  {
    "Action": "iam:*AccessKey*",
    "Effect": "Allow",
    "Resource": "arn:aws:iam::123456789012:user/${aws:username}"
  }
}
```

------