本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
IAM 策略生成器 API 从版本 1 到版本 2 的更改
本主题详细介绍了 IAM 策略生成器 API 从版本 1 (v1) 到版本 2 (v2) 的变化。
高级别更改
| 更改 | v1 | v2 |
|---|---|---|
|
Maven 依赖项 |
|
|
| 程序包名称 | com.amazonaws.auth.policy |
software.amazon.awssdk.policybuilder.iam |
| 类名 |
API 变更
| 设置 | v1 | v2 |
|---|---|---|
实例化策略 |
|
|
|
设置标识 |
|
|
|
设置版本 |
不适用-使用默认版本的 2012-10-17 |
|
|
创建声明 |
|
|
|
设置陈述 |
|
|
建立陈述的差异
操作
v1
v1 SDK 具有代表政策声明中Action元素的服务操作enum类型。以下enum类型是一些示例。
以下示例显示了的SendMessage常量SQSActions。
Action action = SQSActions.SendMessage;
在 v1 中,您无法为语句指定NotAction元素。
v2
在 v2 中,IamActioncreate方法传递一个字符串,如以下代码所示。
IamAction action = IamAction.create("sqs:SendMessage");
您可以使用 v2 为 NotAction for 语句指定,如以下代码所示。
IamAction action = IamAction.create("sqs:SendMessage"); IamStatement.builder().addNotAction(action);
条件
v1
为了表示语句条件,v1 SDK 使用了的子类。Condition
每个Condition子类都定义一个比较enum类型来帮助定义条件。例如,下面显示了条件的不相似字符串比较。
Condition condition = new StringCondition(StringComparisonType.StringNotLike, "key", "value");
v2
在 v2 中,您可以使用策略声明创建条件IamConditionOperator,IamCondition并提供包含所有类型的enums条件。
IamCondition condition = IamCondition.create(IamConditionOperator.STRING_NOT_LIKE, "key", "value");
资源
v1
策略声明的Resource元素由 SDK 的Resource类表示。在构造函数中将 ARN 作为字符串提供。以下子类提供了便捷的构造函数。
在 v1 中,您可以Resource通过调用withIsNotType方法为指定NotResource元素,如以下语句所示。
Resource resource = new Resource("arn:aws:s3:::amzn-s3-demo-bucket").withIsNotType(true);
v2
在 v2 中,您可以通过将 ARN 传递给方法来IamResource.create创建Resource元素。
IamResource resource = IamResource.create("arn:aws:s3:::amzn-s3-demo-bucket");
IamResource可以将设置为NotResource元素,如以下代码段所示。
IamResource resource = IamResource.create("arn:aws:s3:::amzn-s3-demo-bucket"); IamStatement.builder().addNotResource(resource);
IamResource.ALL代表所有资源。
主体
v1
v1 SDK 提供以下Principal类来表示包含所有成员的主体类型:
-
AllUsers -
AllServices -
AllWebProviders -
All
不能在语句中添加NotPrincipal元素。
v2
在 v2 中,IamPrincipal.ALL代表所有主体:
要表示其他类型的委托人中的所有成员,请在创建IamPrincipal时使用这些IamPrincipalType类。
-
IamPrincipal.create(IamPrincipalType.AWS,"*")适用于所有用户。 -
IamPrincipal.create(IamPrincipalType.SERVICE,"*")适用于所有服务。 -
IamPrincipal.create(IamPrincipalType.FEDERATED,"*")适用于所有网络提供商。 -
IamPrincipal.create(IamPrincipalType.CANONICAL_USER,"*")适用于所有规范用户。
在创建策略声明时,您可以使用addNotPrincipal方法来表示NotPrincipal元素,如以下语句所示。
IamPrincipal principal = IamPrincipal.create(IamPrincipalType.AWS, "arn:aws:iam::444455556666:root"); IamStatement.builder().addNotPrincipal(principal);