Políticas de solução de problemas 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
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 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 AWS Management Console, 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
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.
-
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). Você pode incluir um caractere curinga (
*
) em qualquer campo do ARN entre cada par de dois-pontos. Para ter 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 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.
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.
Você também pode 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. 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 .
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
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.
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 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 oferece suporte a resumos de política do IAM.
-
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.
-
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 des3
ouListMyBuckets
em vez deListAllMyBuckets
-
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
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 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:
-
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 elaDeny
ouAllow
acesso a nada.nota
Tenha cuidado ao usar esses elementos de políticas, como
NotPrincipal
,NotAction
eNotResource
. Para obter mais informações sobre o uso de elementos de política, consulte Referência de elemento de política JSON do IAM.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 para melhor entendê-las.
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, 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).
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 lançados publicamente e nã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
É 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
Faça login no AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/
. -
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.
-
-
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, digiteI 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
Faça login no AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/
. -
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.
-
-
No resumo de políticas, escolha o nome do serviço que inclua uma ação sem suporte.
-
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, digiteI 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 elemento 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.
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 de sua política usando o console do IAM em https://console.aws.amazon.com/iam/
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:::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.
{
"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 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 e escolha o serviço para visualizar a documentação do serviço sobre 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, 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.
- 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 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ítica 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 um único objeto JSON. Você denota um objeto colocando chaves { } em torno. Você pode aninhar outros objetos dentro de um objeto JSON incorporando chaves adicionais { } dentro do par externo. Uma política deve conter somente um par 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:::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):
{ "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
À 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:::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):
{ "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
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
:
{
"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 elementoEffect
é observado. Os outros são ignorados. -
Elementos
Action
múltiplos: todos os elementosAction
são combinados internamente e tratados como se fossem uma lista única. -
Elementos
Resource
múltiplos: todos os elementosResource
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 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:
{ "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:::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):
{ "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
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. 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}" } }