Cambios en el IAM Policy Builder API de la versión 1 a la versión 2 - AWS SDK for Java 2.x

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Cambios en el IAM Policy Builder API de la versión 1 a la versión 2

En este tema se detallan los cambios en el IAM Policy Builder API desde la versión 1 (v1) a la versión 2 (v2).

Cambios de alto nivel

Cambio v1 v2

dependencias Maven

<dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-bom</artifactId> <version>1.12.5871</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-core</artifactId> </dependency> </dependencies>
<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.27.212</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>iam-policy-builder</artifactId> </dependency> </dependencies>
Package name com.amazonaws.auth.policy software.amazon.awssdk.policybuilder.iam
Nombres de clase

Política

Instrucción

IamPolicy

IamStatement

1 Última versión. 2 Última versión.

APIcambios

Opción v1 v2

Instanciar una política
Policy policy = new Policy();
IamPolicy.Builder policyBuilder = IamPolicy.builder(); ... IamPolicy policy = policyBuilder.build();

Establecer una identificación

policy.withtId(...); policy.setId(...);
policyBuilder.id(...);

Establecer versión

N/A: usa la versión predeterminada de 2012-10-17
policyBuilder.version(...);

Crear declaración

Statement statement = new Statement(Effect.Allow) .withActions(...) .withConditions(...) .withId(...) .withPrincipals(...) .withResources(...);
IamStatement statement = IamStatement.builder() .effect(IamEffect.ALLOW) .actions(...) .notActions(...) .conditions(...) .sid(...) .principals(...) .notPrincipals(...) .resources(...) .notResources(...) .build()

Establecer declaración

policy.withStatements(statement); policy.setStatements(statement);
policyBuilder.addStatement(statement);

Diferencias en la construcción de una declaración

Acciones

v1

La versión 1 SDK tiene enumtipos de acciones de servicio que representan Action elementos de una declaración de política. Los siguientes enum tipos son algunos ejemplos.

En el siguiente ejemplo se muestra la SendMessage constante deSQSActions.

Action action = SQSActions.SendMessage;

No se puede especificar un NotAction elemento en una sentencia en la v1.

v2

En la versión 2, la IamActioninterfaz representa todas las acciones. Para especificar un elemento de acción específico del servicio, pase una cadena al create método, tal y como se muestra en el código siguiente.

IamAction action = IamAction.create("sqs:SendMessage");

Puede especificar a NotAction para una sentencia con v2, como se muestra en el código siguiente.

IamAction action = IamAction.create("sqs:SendMessage"); IamStatement.builder().addNotAction(action);

Condiciones

v1

Para representar las condiciones de la declaración, la v1 SDK usa subclases de Condition.

Cada Condition subclase define un enum tipo de comparación para ayudar a definir la condición. Por ejemplo, a continuación se muestra una comparación de cadenas diferentes de una condición.

Condition condition = new StringCondition(StringComparisonType.StringNotLike, "key", "value");

v2

En la versión 2, se crea una condición para una declaración de política utilizando IamCondition y proporcionando unaIamConditionOperator, que contiene todos enums los tipos.

IamCondition condition = IamCondition.create(IamConditionOperator.STRING_NOT_LIKE, "key", "value");

Recursos

v1

El Resource elemento de una declaración de política está representado por SDK la Resource clase. Se proporciona ARN como una cadena en el constructor. Las siguientes subclases proporcionan constructores de conveniencia.

En la versión 1, puede especificar un NotResource elemento para a Resource llamando al withIsNotType método, tal como se muestra en la siguiente declaración.

Resource resource = new Resource("arn:aws:s3:::mybucket").withIsNotType(true);

v2

En la versión 2, se crea un Resource elemento pasando una ARN al IamResource.create método.

IamResource resource = IamResource.create("arn:aws:s3:::mybucket");

IamResourceSe puede establecer un NotResourceelemento como elemento, tal y como se muestra en el siguiente fragmento.

IamResource resource = IamResource.create("arn:aws:s3:::mybucket"); IamStatement.builder().addNotResource(resource);

IamResource.ALLrepresenta todos los recursos.

Entidades principales

v1

La versión 1 SDK ofrece las siguientes Principal clases para representar los tipos de directores que incluyen a todos los miembros:

  • AllUsers

  • AllServices

  • AllWebProviders

  • All

No se puede añadir un NotPrincipal elemento a una declaración.

v2

En la versión 2, IamPrincipal.ALL representa todos los principios:

Para representar a todos los miembros de otros tipos de principios, utilice las IamPrincipalType clases al crear un. IamPrincipal

  • IamPrincipal.create(IamPrincipalType.AWS,"*")para todos los usuarios.

  • IamPrincipal.create(IamPrincipalType.SERVICE,"*")para todos los servicios.

  • IamPrincipal.create(IamPrincipalType.FEDERATED,"*")para todos los proveedores web.

  • IamPrincipal.create(IamPrincipalType.CANONICAL_USER,"*")para todos los usuarios canónicos.

Puede utilizar el addNotPrincipal método para representar un NotPrincipal elemento al crear una declaración de política, como se muestra en la siguiente declaración.

IamPrincipal principal = IamPrincipal.create(IamPrincipalType.AWS, "arn:aws:iam::444455556666:root"); IamStatement.builder().addNotPrincipal(principal);