Solução de problemas de políticas do IAM - AWS Identity and Access Management

Solução de problemas de políticas do IAM

Uma política é 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 é consentida 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 principal (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 tanto a guia Editor visual quanto a guia 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 ajudá-lo 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 (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 de políticas JSON do IAM .

Solução de problemas de tópicos das políticas do IAM

Solução de problemas usando o editor visual

Ao criar ou editar uma política gerenciada pelo cliente, você pode usar as informações na guia Editor visual para ajudá-lo a solucionar erros em sua política. Para visualizar um exemplo de como usar o editor visual para criar uma política, consulte Controlar o acesso às identidades.

Reestruturação da política

Quando você cria uma política, a AWS valida, processa e transforma a política antes de armazená-la. Quando a AWS apresenta a política em resposta a uma consulta de usuário ou a exibe no console, a AWS converte a política de volta a um formato legível sem alterar as permissões concedidas por ela. Isso pode resultar em diferenças no que diz respeito ao que você vê no editor visual de política ou na guia JSON: no editor visual, blocos de permissões podem ser adicionados, removidos ou reordenados, e o conteúdo em 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 de conta da AWS nos elementos principais podem ser substituídos pelo 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 do início ao fim na guia JSON. Se você nunca faz alterações na guia Editor visual e escolhe Revisar política na guia JSON, é menos provável que a política seja reestruturada. No entanto, se você criar uma política e usar a guia Editor visual para fazer qualquer modificação, ou escolher Revisar política na guia Editor visual, é possível que o IAM reestruture a política para otimizar sua aparência no editor visual.

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:

Nesta guia Se você editar a política E, em seguida, escolha Revisar política nessa guia Quando você escolher Salvar alterações
Editor visual Editada Editor visual A política será reestruturada
Editor visual Editada JSON A política será reestruturada
Editor visual Não editada Editor visual A política será reestruturada
JSON Editada Editor 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 recurso ou chaves de condição.

Escolher um ARN de recurso no editor visual

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, 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.

  • Usar o gerador de ARN – Dependendo do tipo de recurso, você pode ver campos diferentes para criar seu ARN. Você também pode escolher Qualquer para fornecer permissão para qualquer valor na configuração especificada. Por exemplo, se você selecionou o grupo do nível de acesso Leitura do Amazon EC2, as ações da política oferecem suporte ao tipo de recurso instance. Será preciso fornecer os valores Região, Conta e InstanceId para o recurso. Se você fornecer o ID de sua conta mas escolher Any (Qualquer) para a região e para o ID da instância, a política concederá permissões para qualquer instância em sua conta.

  • Digitar ou colar o ARN – você pode especificar um recurso pelo seu nome de recurso da Amazon (ARN). Você pode incluir um caractere curinga (*) 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.

Negar permissões no editor visual

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 como melhor prática de segurança que você conceda permissões somente às ações e aos recursos dos quais o usuário precisa. Às vezes, isso é chamado de "autorização". Você só precisa criar uma instrução para negar permissões ("lista negra") se deseja substituir, separadamente, uma permissão que é concedida por uma 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.

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, deve possuir as permissões concedidas por uma política.

Especificar vários serviços no editor visual

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.

Se você estiver familiarizado com a sintaxe JSON, também poderá usar um caractere curinga (*) para especificar manualmente vários serviços. Por exemplo, digite Code* 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 a fim de incluir cada serviço em um bloco de permissões separado.

Como alternativa, para usar a sintaxe JSON (como caracteres curinga) para serviços, crie, edite e salve a política usando a guia JSON.

Reduzir o tamanho da política no editor visual

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 guia JSON. Se este documento JSON exceder o limite de tamanho de uma política, o editor visual exibirá uma mensagem de erro e não permitirá que você revise e salve sua política. Para visualizar a limitação de tamanho de uma política gerenciada no IAM, consulte Cotas de caracteres do IAM e do STS.

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, e você pode usar essa informação para ajudá-lo a reduzir o tamanho da política.

Corrigir serviços, ações ou tipos de recursos desconhecidos no editor visual

Quando você cria ou edita uma política no editor visual, pode receber um aviso de que a política inclui um serviço, ação ou tipo de recurso desconhecido.

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.

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 você estiver participando da pré-visualização, poderá ignorar o aviso e prosseguir. Entretanto, você deverá inserir manualmente as ações e os ARNs dos recursos para concluir sua política. Como alternativa, você pode escolher a guia 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 você estiver usando um serviço personalizado, poderá ignorar o aviso e prosseguir. Entretanto, você deverá inserir manualmente as ações e os ARNs dos recursos para concluir sua política. Como alternativa, você pode escolher a guia JSON e digitar ou colar um documento de política JSON.

  • Serviço não oferece suporte ao editor visual – Se sua política incluir um serviço disponível para o público geral (GA) que não oferece suporte ao editor visual, você poderá ignorar o aviso e prosseguir. Entretanto, você deverá inserir manualmente as ações e os ARNs dos recursos para concluir sua política. Como alternativa, você pode escolher a guia JSON e digitar ou colar um documento de política JSON.

    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 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 é compatível com os resumos de políticas do IAM.

  • Ação não oferece suporte ao editor visual – Se sua política incluir um serviço com suporte com uma ação que não tenha suporte, você poderá ignorar o aviso e prosseguir. Entretanto, você deverá inserir manualmente as ações e os ARNs dos recursos para concluir sua política. Como alternativa, você pode escolher a guia 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 é compatível com os resumos de políticas do IAM.

  • Tipo de recurso não oferece suporte ao editor visual – Se a política inclui 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ê pode receber avisos adicionais.

  • Erro de digitação – Quando você insere manualmente um serviço, ação ou recurso no editor visual, pode criar uma política que inclui um erro de digitação. Como uma prática recomendada, use o editor visual selecionando os serviços e ações a partir da lista e, em seguida, conclua a seção de recursos de acordo com as solicitações. No entanto, se um serviço não oferece suporte total ao editor visual, pode ser necessário que você insira 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 a ortografia de nomes de serviço, ação e tipos de recurso. Por exemplo, você pode usar s2 em vez de s3 e ListMyBuckets em vez de ListAllMyBuckets. Outro erro de ortografia comum é a inclusão de texto desnecessário nos ARNs, como, por exemplo, arn:aws:s3: : :*ou a falta de pontuação, como iam.CreateUser. Avalie uma política que pode incluir erros de digitação selecionando Revisar política para revisar o resumo da política e confirmar se a política fornece as permissões que você espera.

Solução de problemas usando resumos de políticas

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

Resumo de política ausente

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 na política. As políticas são resumidas em três tabelas: o resumo de políticas, o resumo de serviços e o resumo de ações. 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. Visualize o resumo de políticas de qualquer política anexada a um usuário na página Usuários. Visualize o resumo de políticas para políticas gerenciadas na página Políticas. Se a AWS for incapaz de renderizar um resumo para uma política, você verá o documento da política JSON, em vez do resumo, e receberá a seguinte mensagem de erro:

Um resumo para esta política não pode ser gerado. 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 da políticas para políticas que incluem um dos seguintes elementos de política:

    • Principal

    • NotPrincipal

    • NotResource

  • Nenhuma permissão de política – Se uma política não fornece permissões efetivas, o resumo da política não pode 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" (*). Isso significa que ela Deny ou Allow acesso a nada.

    nota

    É necessário 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 elementos de política JSON do IAM.

    Você pode criar uma política que não fornece permissões eficazes se você fornecer serviços e recursos incompatíveis. Isso pode ocorrer se você especificar 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. Para compreender melhor suas políticas, sempre teste-as com o simulador de políticas.

O resumo de política inclui serviços, ações ou tipos de recursos desconhecidos

No console do IAM, se um resumo da política incluir um símbolo de aviso ( ), a política poderá incluir um serviço, ação ou tipo de recurso não reconhecido. Para saber mais sobre os avisos de um resumo de políticas, consulte Resumo da política (lista de serviços).

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.

Se a sua política inclui serviços, ações ou tipos de recurso desconhecidos, ocorreu um dos seguintes erros:

  • Visualizar serviço – Serviços que estão em visualização não oferecem suporte aos resumos da política.

  • Serviço personalizado – Serviços personalizados não oferecem suporte aos resumos da política.

  • Serviço não oferece suporte aos resumos – Se a política inclui um serviço com disponibilidade geral (GA) que não ofereça suporte aos resumos da política, o serviço é incluído na seção 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 e o nome estiver digitado corretamente, então o serviço não oferecerá suporte aos resumos de políticas 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 é compatível com os resumos de políticas do IAM.

  • Ação não oferece suporte aos resumos – Se a política incluir um serviço que ofereça suporte a uma ação sem suporte, a ação será incluída na seção 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).

  • O tipo de recurso não oferece suporte a resumos – Se a política incluir uma ação que ofereça suporte a um tipo de recurso sem suporte, a ação será incluída na seção 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).

  • Erro de ortografia – Como o validador da política na AWS verifica apenas que o JSON está sintaticamente correto, você pode criar uma política que inclua erros de ortografia. 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 a ortografia de nomes de serviço, ação e tipos de recurso. Por exemplo, você pode usar s2 em vez de s3 e ListMyBuckets em vez de ListAllMyBuckets. Outro erro de ortografia comum é a inclusão de texto desnecessário nos ARNs, como, por exemplo, arn:aws:s3: : :*ou a falta de pontuação, como iam.CreateUser. Avalie uma política que pode incluir erros ortográficos usando o simulador de políticas para confirmar se a política fornece as permissões que você espera.

O serviço não é compatível com os resumos de políticas do IAM

Quando um serviço disponível para o público (GA) ou ação não é reconhecido pelos resumos de políticas do IAM ou pelo editor visual, é possível que o serviço não ofereça suporte a esses recursos. 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 com suporte com uma ação sem suporte, o serviço não oferece suporte completo aos resumos de políticas do IAM.

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

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

  2. 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.

  3. No lado esquerdo do rodapé do Console de gerenciamento da AWS, escolha Comentários. Na caixa Conte-nos sobre sua experiência:, 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íticas do IAM para uma ação ausente

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

  2. 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.

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

  4. No lado esquerdo do rodapé do Console de gerenciamento da AWS, escolha Comentários. Na caixa Conte-nos sobre sua experiência:, 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

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:

  • Efeito – se a política permite ou nega acesso

  • Ação – a lista de ações permitidas ou negadas pela política

  • Recurso – a lista de recursos nos quais as ações podem ocorrer

  • 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 elementos de política JSON do IAM.

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 ou deve se aplicar à ação. Para saber quais recursos são compatíveis com uma ação, consulte a documentação da AWS 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.

Para saber se sua política define uma ação, recurso ou condição que não concede permissões, você pode visualizar o resumo da política para a sua política usando o console do IAM em 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:

Para ver exemplos de resumos de política que incluem avisos, consulte Resumo da política (lista de serviços).

Uma ação é definida sem um recurso aplicável

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 no elemento Resource 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 suportam permissões no nível de recurso, consulte Serviços da AWS compatíveis com o IAM.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "arn:aws:ec2:us-east-2:ACCOUNT-ID: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.

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

Um recurso é definido sem uma ação aplicável

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 no recurso. Esta política também concede acesso completo a todas as ações do Amazon CloudFront.

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

Esta política fornece permissões para todas as ações do CloudFront. Mas como a política define o recurso do S3 examplebucket 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.

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

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 política abaixo define duas ações do Amazon S3 para todos os recursos do S3, se o prefixo do S3 equivaler a custom e o ID da versão equivaler 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 Ações, recursos e chaves de condição de serviços da AWS e siga o link para a documentação do serviço de chaves de condição.

{ "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.

{ "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.

{ "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

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

Anexar ou desanexar uma política em uma conta do IAM

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 desse serviço. No console do IAM, quando você visualizar a página Resumo de uma política, a página incluirá 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 suas atividades

Você pode atualizar as políticas para suas identidades do IAM (usuários, grupos e funções) com base em sua atividade. Para fazer isso, visualize os eventos da sua conta no Histórico de eventos do CloudTrail. Os logs de eventos do CloudTrail incluem informações detalhadas que você pode usar para alterar as permissões da política. Você pode descobrir que um usuário ou função está tentando executar uma ação na AWS e essa solicitação está sendo negada. Nesse caso, você pode considerar que o usuário ou a função tem permissão para executar 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. Opcionalmente, se o usuário ou a função tiver permissões que eles não estão usando, você poderá considerar remover essas permissões da sua política. Certifique-se de que suas políticas concedem o menor privilégio necessário para executar apenas as ações necessárias. Para obter mais informações sobre como usar o CloudTrail, consulte Exibição de eventos do CloudTrail no console do CloudTrail no Guia do Usuário do AWS CloudTrail.

Solução de problemas de documentos de políticas JSON

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

Mais de um objeto de política JSON

Uma política do IAM deve consistir em apenas um único objeto JSON. Você denota um objeto colocando chaves { } em torno. Embora você possa aninhar outros objetos dentro de um objeto JSON incorporando { } adicionais dentro do par de chaves externas, uma política pode conter apenas um par mais externo de { } chaves. O exemplo a seguir é incorreto, pois contém dois objetos no nível superior (destacados em vermelho):

{ "Version": "2012-10-17", "Statement": { "Effect":"Allow", "Action":"ec2:Describe*", "Resource":"*" } } { "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::my-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):

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

Mais de um elemento de instrução JSON

À 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 { } 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, que inclui o 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 { }, 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):

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" }, "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::my-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):

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource":"*" }, { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::my-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

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 no objeto de valor de Statement:

{ "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 única lista.

  • Elementos Resource múltiplos: todos os elementos Resource são combinados internamente e tratados como se fossem uma única lista.

O mecanismo da política não permite salvar qualquer política com erros de sintaxe. É necessário corrigir os erros na política antes de salvá-los. A ferramenta Validador de política pode ajudar a encontrar todas as políticas mais antigas com erros e recomendar correções para elas.

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

{ "Version": "2012-10-17", "Statement": { "Efect": "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):

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::my-bucket", "Resource": "arn:aws:s3:::my-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):

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

Elemento de versão JSON ausente

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. A versão da política, por outro lado, é criada quando você faz alterações em 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. Para saber mais sobre as versões de política, consulte Versionamento de políticas do IAM.

Como os recursos da AWS evoluem, novos recursos são adicionados às políticas do IAM políticas 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 dá suporte às variáveis de políticas, resolve o problema (destacado em negrito):

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