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
O AWS Organizations usa um subconjunto de sintaxe e gramática do IAM. Para obter detalhes, consulte Sintaxe de SCP.
Erros de política comuns
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.