Alterações da API do Compilador de Políticas do IAM da versão 1 para a versão 2 - AWS SDK for Java 2.x

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Alterações da API do Compilador de Políticas do IAM da versão 1 para a versão 2

Este tópico detalha as alterações na API do Compilador de Políticas do IAM da versão 1 (v1) para a versão 2 (v2).

Alterações de alto nível

Alteração v1 v2

Dependências do 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>
Nome do pacote com.amazonaws.auth.policy software.amazon.awssdk.policybuilder.iam
Nomes da classe

Política

Declaração

IamPolicy

IamStatement

1 Versão mais recente. 2 Versão mais recente.

Alterações de API

Configuração v1 v2

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

Definir ID

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

Definir versão

N/A: usa a versão padrão de 2012-10-17
policyBuilder.version(...);

Criar declaração

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()

Definir declaração

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

Diferenças na construção de uma declaração

Ações

v1

O SDK v1 tem tipos de enum para ações de serviço que representam elementos Action em uma declaração de política. Os tipos de enum a seguir são alguns exemplos.

O exemplo a seguir mostra a constante SendMessage para SQSActions.

Action action = SQSActions.SendMessage;

Você não pode especificar um elemento NotAction para uma declaração na v1.

v2

Na v2, a interface IamAction representa todas as ações. Para especificar um elemento de ação específico do serviço, passe uma string para o método create conforme mostrado no código a seguir.

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

Você pode especificar um NotAction para uma declaração com v2, como mostra o código a seguir.

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

Condições

v1

Para representar as condições da declaração, o SDK v1 usa subclasses de Condition.

Cada subclasse Condition define um tipo enum de comparação para ajudar a definir a condição. Por exemplo, veja a seguir uma comparação de string do tipo diferente de para uma condição.

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

v2

Na v2, você cria uma condição para uma declaração de política usando IamCondition e fornece um IamConditionOperator, que contém enums para todos os tipos.

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

Recursos

v1

O elemento Resource de uma declaração de política é representado pela classe Resource do SDK. Você fornece o ARN como uma string no construtor. As subclasses a seguir fornecem construtores de conveniência.

Na v1, você pode especificar um elemento NotResource para um Resource chamando o método withIsNotType conforme mostrado na declaração a seguir.

Resource resource = new Resource("arn:aws:s3:::amzn-s3-demo-bucket").withIsNotType(true);

v2

Na v2, você cria um elemento Resource passando um ARN para o método IamResource.create.

IamResource resource = IamResource.create("arn:aws:s3:::amzn-s3-demo-bucket");

Um IamResource pode ser definido como o elemento NotResource, conforme mostrado no trecho a seguir.

IamResource resource = IamResource.create("arn:aws:s3:::amzn-s3-demo-bucket"); IamStatement.builder().addNotResource(resource);

IamResource.ALL representa todos os recursos.

Entidades principais

v1

O SDK v1 oferece as seguintes classes Principal para representar tipos de entidades principais que incluem todos os membros:

  • AllUsers

  • AllServices

  • AllWebProviders

  • All

Você não pode adicionar um elemento NotPrincipal a uma declaração.

v2

Na v2, IamPrincipal.ALL representa todas as entidades principais:

Para representar todos os membros em outros tipos de entidades principais, use as classes IamPrincipalType ao criar um IamPrincipal.

  • IamPrincipal.create(IamPrincipalType.AWS,"*") para todos os usuários.

  • IamPrincipal.create(IamPrincipalType.SERVICE,"*") para todos os serviços.

  • IamPrincipal.create(IamPrincipalType.FEDERATED,"*") para todos os provedores da web.

  • IamPrincipal.create(IamPrincipalType.CANONICAL_USER,"*") para todos os usuários canônicos.

Você pode usar o método addNotPrincipal para representar um elemento NotPrincipal ao criar uma declaração de política, conforme mostrado na declaração a seguir.

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