Änderungen im IAM Policy Builder API von Version 1 zu Version 2 - AWS SDK for Java 2.x

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Änderungen im IAM Policy Builder API von Version 1 zu Version 2

In diesem Thema werden die Änderungen im IAM Policy Builder API von Version 1 (v1) zu Version 2 (v2) beschrieben.

Änderungen auf hoher Ebene

Änderung v1 v2

Maven-Abhängigkeiten

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

Richtlinie

Statement

IamPolicy

IamStatement

1 Letzte Version. 2 Letzte Version.

APIÄnderungen

Einstellung v1 v2

Instanziieren Sie eine Richtlinie
Policy policy = new Policy();
IamPolicy.Builder policyBuilder = IamPolicy.builder(); ... IamPolicy policy = policyBuilder.build();

ID festlegen

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

Version festlegen

N/A — verwendet die Standardversion von 2012-10-17
policyBuilder.version(...);

Aussage erstellen

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

Aussage festlegen

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

Unterschiede beim Aufbau einer Aussage

Aktionen

v1

In Version 1 enumgibt SDK es Typen für Serviceaktionen, die Action Elemente einer Grundsatzerklärung darstellen. Die folgenden enum Typen sind einige Beispiele.

Das folgende Beispiel zeigt die SendMessage Konstante fürSQSActions.

Action action = SQSActions.SendMessage;

In Version 1 können Sie kein NotAction Element für eine Anweisung angeben.

v2

In Version 2 repräsentiert die IamActionSchnittstelle alle Aktionen. Um ein dienstspezifisches Aktionselement anzugeben, übergeben Sie eine Zeichenfolge an die create Methode, wie im folgenden Code gezeigt.

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

Sie können a NotAction für eine Anweisung mit v2 angeben, wie im folgenden Code gezeigt.

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

Bedingungen

v1

Zur Darstellung von Anweisungsbedingungen SDK verwendet die Version 1 Unterklassen von Condition.

Jede Condition Unterklasse definiert einen enum Vergleichstyp, der bei der Definition der Bedingung hilft. Im Folgenden wird beispielsweise ein Vergleich einer Zeichenfolge, die nicht ähnlich ist, für eine Bedingung dargestellt.

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

v2

In Version 2 erstellen Sie eine Bedingung für eine Richtlinienanweisung, indem Sie eineIamConditionOperator, die enums für alle Typen enthält, verwenden IamCondition und bereitstellen.

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

Ressourcen

v1

Das Resource Element einer Grundsatzerklärung wird durch die Resource Klasse SDK s repräsentiert. Sie geben das ARN als Zeichenfolge im Konstruktor an. Die folgenden Unterklassen bieten praktische Konstruktoren.

In Version 1 können Sie ein NotResource Element für a angeben, Resource indem Sie die withIsNotType Methode aufrufen, wie in der folgenden Anweisung gezeigt.

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

v2

In v2 erstellen Sie ein Resource Element, indem Sie ein ARN an die IamResource.create Methode übergeben.

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

An IamResource kann als NotResourceElement festgelegt werden, wie im folgenden Snippet gezeigt.

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

IamResource.ALLsteht für alle Ressourcen.

Auftraggeber

v1

Die Version 1 SDK bietet die folgenden Principal Klassen, um Typen von Prinzipalen darzustellen, die alle Mitglieder umfassen:

  • AllUsers

  • AllServices

  • AllWebProviders

  • All

Sie können einer Aussage kein NotPrincipal Element hinzufügen.

v2

Steht in v2 IamPrincipal.ALL für alle Prinzipale:

Um alle Mitglieder in anderen Typen von Prinzipalen darzustellen, verwenden Sie die IamPrincipalType Klassen, wenn Sie eine erstellen. IamPrincipal

  • IamPrincipal.create(IamPrincipalType.AWS,"*")für alle Benutzer.

  • IamPrincipal.create(IamPrincipalType.SERVICE,"*")für alle Dienste.

  • IamPrincipal.create(IamPrincipalType.FEDERATED,"*")für alle Webprovider.

  • IamPrincipal.create(IamPrincipalType.CANONICAL_USER,"*")für alle kanonischen Benutzer.

Sie können die addNotPrincipal Methode verwenden, um ein NotPrincipal Element darzustellen, wenn Sie eine Richtlinienerklärung erstellen, wie in der folgenden Anweisung gezeigt.

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