Alterações no IAM Policy Builder API 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 no IAM Policy Builder API da versão 1 para a versão 2

Este tópico detalha as alterações no IAM Policy Builder API 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

Instrução

IamPolicy

IamStatement

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

APImudanças

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 do 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

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

O exemplo a seguir mostra a SendMessage constante forSQSActions.

Action action = SQSActions.SendMessage;

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

v2

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

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

Você pode especificar um NotAction para uma instrução com v2, conforme mostrado no 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, a v1 SDK usa subclasses de. Condition

Cada Condition subclasse define um enum tipo de comparação para ajudar a definir a condição. Por exemplo, o exemplo a seguir mostra uma comparação de sequência de caracteres diferente 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 umaIamConditionOperator, que contém enums para todos os tipos.

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

Recursos

v1

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

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

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

v2

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

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

Um IamResource pode ser definido como NotResourceelemento, conforme mostrado no trecho a seguir.

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

IamResource.ALLrepresenta todos os recursos.

Entidades principais

v1

A v1 SDK oferece as seguintes Principal classes para representar tipos de diretores que incluem todos os membros:

  • AllUsers

  • AllServices

  • AllWebProviders

  • All

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

v2

Na v2, IamPrincipal.ALL representa todos os principais:

Para representar todos os membros em outros tipos de diretores, use as IamPrincipalType classes ao criar umIamPrincipal.

  • 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 addNotPrincipal método para representar um NotPrincipal elemento 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);