Solución de problemas de políticas de control de servicio (SCP) con AWS Organizations - AWS Organizations

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 (JSON). JSON describe un objeto con pares de nombre y valor que componen el objeto. La gramática de las políticas de IAM se basa en la definición de nombres y valores que tengan significado y puedan ser entendidos por los Servicios de AWS que usan políticas para conceder permisos.

AWS Organizations utiliza un subconjunto de la sintaxis y la gramática de IAM. Para obtener más información, consulte Sintaxis de SCP.

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.