本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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);
Conditions
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:::mybucket").withIsNotType(true);
v2
在 v2 中,您可以通过向IamResource.create
方法传递ARN来创建Resource
元素。
IamResource resource = IamResource.create("arn:aws:s3:::mybucket");
IamResource
可以将设置为NotResource
元素,如以下代码段所示。
IamResource resource = IamResource.create("arn:aws:s3:::mybucket"); 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);