Resolução de problemas das políticas de controle de serviço (SCPs) com o AWS Organizations - AWS Organizations

Resolução de problemas das políticas de controle de serviço (SCPs) com o AWS Organizations

Use as informações aqui para ajudar no diagnostico e na correção de erros comuns encontrados nas políticas de controle de serviços (SCP).

Políticas de controle de serviço (SCPs) no AWS Organizations são parecidas com as políticas do IAM e têm uma sintaxe comum. Essa sintaxe começa com as regras de JavaScript Object Notation (JSON). JSON descreve um objeto com pares de nome e valor que compõem o objeto. A gramática da política do IAM aproveita isso, definindo os nomes e valores, que têm significado e são compreendidos pelos Serviços da AWS que usam políticas para conceder permissões.

O AWS Organizations usa um subconjunto de sintaxe e gramática do IAM. Para obter detalhes, consulte Sintaxe de SCP.

Mais de um objeto de política

Uma SCP deve conter 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": "Deny", "Action": "s3:*", "Resource": "*" } }

No entanto, você pode atender a intenção do exemplo anterior com o uso de gramática correta da política. Em vez de incluir dois objetos de política completos, 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 exemplo a seguir:

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

Esse exemplo não pode ser mais compactado em um Statement com um elemento, porque os dois elementos têm diferentes efeitos. Em geral, você pode combinar instruções apenas quando os elementos Effect e Resource em cada instrução forem idênticos.

Mais de um elemento de declaração

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

Uma SCP 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:

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

Como um objeto de valor pode ser um conjunto de vários objetos de valor, você pode resolver esse problema combinando os dois elementos Statement em um único elemento com uma matriz de objetos, como mostrado no exemplo a seguir:

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

O valor do elemento Statement é uma matriz de objetos. A matriz no exemplo consiste em dois objetos, sendo que cada um deles é um valor correto para um elemento Statement. Cada objeto na matriz é separado por vírgulas.

O documento da política excedeu o tamanho máximo

O tamanho máximo de um documento de SCP é de 5.120 caracteres. Este tamanho máximo inclui todos os caracteres, também os espaços em branco. Para reduzir o tamanho da SCP, você poderá remover todos os caracteres de espaço em branco (como espaços e quebras de linha) que estão fora das aspas.

nota

Se você salva a política usando o AWS Management Console, os espaços em branco entre elementos em JSON e fora das aspas são removidos e não são contados. Se você salvar a política usando uma operação de SDK ou o AWS CLI, a política é salva exatamente como você forneceu e nenhuma remoção automática de caracteres ocorre.