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 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 AWS Management Console usando ambas as opções de editor Visual e JSON. Quando você visualiza uma política no AWS Management Console, 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 (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 AWS Management Console. Para saber mais sobre a sintaxe JSON nas políticas do IAM, consulte Gramática da linguagem das políticas de 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 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.

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 da Conta da AWS nos elementos de entidade principal 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 AWS Management Console, você pode optar por trabalhar exclusivamente no editor JSON. Se você nunca fizer alterações no editor Visual e escolher Avançar no editor JSON, a probabilidade de que a política seja reestruturada é menor. Porém, se você criar uma política e usar o editor Visual para fazer qualquer modificação ou escolher Avançar na opção de editor Visual, o IAM poderá reestruturar 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:

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

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ê 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. 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 recursos pelo nome do 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. Você só precisa criar uma instrução para negar permissões, se quiser 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, você deverá ter 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.

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

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 e não permitirá que você revise e salve sua 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 .

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. 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 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. 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 oferece suporte ao editor visual: se sua política incluir um serviço disponível para o público (GA) que não oferece suporte ao editor visual, você poderá ignorar o aviso e prosseguir. Entretanto, você deverá digitar manualmente as ações e os ARNs dos recursos para concluir sua política. 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.

  • A ação não oferece suporte ao editor visual: se sua política incluir um serviço compatível com uma ação incompatível, você poderá ignorar o aviso e prosseguir. Entretanto, você deverá digitar manualmente os ARNs dos recursos para concluir sua política. 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.

  • 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. Para evitar isso, convém usar editor visual, selecionando entre os serviços e as ações na lista e, em seguida, conclua a seção de recursos de acordo com os prompts. 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. Você pode avaliar uma política que pode incluir erros de digitação selecionando Avançar para revisar o resumo da política e confirmar se a política fornece as permissões que você pretendia.

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 em uma 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. Você pode visualizar o resumo da política 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 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:

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:

    • 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" (*). 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 de política incluir um símbolo de aviso ( ), a política poderá incluir um serviço, uma ação ou um 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).

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

  • 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).

  • 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).

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

nota

Como prática recomendada, 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

Quando um serviço disponível para o público (GA) ou uma 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 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 AWS Management Console e abra o console do 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 AWS Management Console, 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 AWS Management Console e abra o console do 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 AWS Management Console, 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

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 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, um recurso ou uma 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 que funcionam 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 nesse 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 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 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ê visualiza a página Detalhes da política de uma 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

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. 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 o uso do CloudTrail, consulteVisualizar eventos do CloudTrail no console do CloudTrail noGuia 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.

Validar suas políticas

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íticas do IAM. 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.

Não tenho permissões para validação de política no editor JSON

No AWS Management Console, 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

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, 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 { }, 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. Você deve corrigir os erros na política antes de salvá-la. Recomendamos revisar e corrigir todas as recomendações de validação de política para as 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:

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

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

À 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):

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