Solución de problemas de políticas de control de servicio (SCP) con AWS Organizations
Utilice la información que se indica aquí para diagnosticar y corregir errores comunes en las políticas de control de servicio (SCP).
Las políticas de control de servicios (SCP) de AWS Organizations son similares a las políticas de IAM y tienen una sintaxis común. Esta sintaxis comienza con las reglas de JavaScript Object Notation
AWS Organizations utiliza un subconjunto de la sintaxis y la gramática de IAM. Para obtener más información, consulte Sintaxis de SCP.
Errores de políticas comunes
Más de un objeto de política
Una SCP debe constar de uno y un solo objeto JSON. Los objetos se indican incluyéndolos en llaves { }. Aunque puede anidar otros objetos dentro de un objeto JSON añadiendo llaves ({}) adicionales en el par exterior, una política solo puede contener un par exterior de llaves { }. El siguiente ejemplo es incorrecto porque contiene dos objetos en la parte superior (indicados en rojo
):
{
"Version": "2012-10-17",
"Statement":
{
"Effect":"Allow",
"Action":"ec2:Describe*",
"Resource":"*"
}
}
{
"Statement": {
"Effect": "Deny",
"Action": "s3:*",
"Resource": "*"
}
}
Sin embargo, podría satisfacer la intención del ejemplo anterior con el uso de la gramática de políticas correcta. En lugar de incluir dos objetos de política completos, cada uno con su propio elemento Statement
, puede combinar los dos bloques en un único elemento Statement
. El elemento Statement
tiene una matriz de dos objetos como su valor, tal y como se muestra en el ejemplo siguiente:
{ "Version": "2012-10-17",
"Statement": [
{ "Effect": "Allow", "Action": "ec2:Describe*", "Resource":" *" }, { "Effect": "Deny", "Action": "s3:*", "Resource": "*" }] }
Este ejemplo no se puede comprimir en una instrucción Statement
con un solo elemento, porque los dos elementos tienen efectos diferentes. Por lo general, solo puede combinar instrucciones cuando los elementos Effect
y Resource
de cada instrucción sean idénticos.
Más de un elemento Statement
Este error podría parecer a simple vista una variante del error de la sección anterior. Sin embargo, es un tipo de error diferente desde el punto de vista sintáctico. En el siguiente ejemplo, solo hay un objeto de política indicado por un único par de llaves { } en el nivel superior. Sin embargo, ese objeto contiene dos elementos Statement
en su interior.
Una SCP debe contener solo un elemento Statement
, que consta del nombre (Statement
) que aparece a la izquierda de un carácter de punto y coma, seguido de su valor a la derecha. El valor de un elemento Statement
debe ser un objeto, identificado por llaves { }, que contiene un elemento Effect
, un elemento Action
y un elemento Resource
. El siguiente ejemplo es incorrecto porque contiene dos elementos Statement
en el objeto de política:
{
"Version": "2012-10-17",
"Statement
": {
"Effect": "Allow",
"Action": "ec2:Describe*",
"Resource": "*"
},
"Statement
": {
"Effect": "Deny",
"Action": "s3:*",
"Resource": "*"
}
}
Como un objeto de valor puede ser una matriz de varios objetos de valor, puede resolver este problema combinando los dos elementos Statement
en un elemento con una matriz de objetos, tal y como se muestra en el ejemplo siguiente:
{ "Version": "2012-10-17", "Statement":
[
{ "Effect": "Allow", "Action": "ec2:Describe*", "Resource":"*" },
{ "Effect": "Deny", "Action": "s3:*", "Resource": "*" }]
}
El valor del elemento Statement
es una matriz de objetos. La matriz del ejemplo se compone de dos objetos, cada uno de los cuales es un valor correcto para un elemento Statement
. Cada objeto de la matriz está separado por comas.
El documento de política supera el tamaño máximo
El tamaño máximo de un documento de SCP es 5120 bytes. Este tamaño máximo incluye todos los caracteres, incluido el espacio en blanco. Para reducir el tamaño de su SCP, puede eliminar todos los caracteres de espacio en blanco (como espacios y saltos de línea) que estén fuera de las comillas.
nota
Si guarda la política con la AWS Management Console, los espacios en blanco adicionales entre elementos JSON y fuera de las comillas se eliminan y no se tienen en cuenta. Si guarda la política mediante una operación de SDK o el AWS CLI, la política se guarda exactamente como usted proporcionó y no se produce la eliminación automática de caracteres.