可在 AWS 中使用以下策略类型,它们按使用频率顺序列出。有关更多详细信息,请参阅下面有关各种策略类型的各部分。
-
基于身份的策略 – 将托管策略和内联策略附加到 IAM 身份(用户、用户所属组或角色)。基于身份的策略向身份授予权限。
-
基于资源的策略 – 将内联策略附加到资源。基于资源的策略的最常见示例是 Amazon S3 存储桶策略和 IAM 角色信任策略。基于资源的策略向在策略中指定的委托人实体授予权限。委托人可以与资源位于同一个账户中,也可以位于其他账户中。
-
权限边界 – 使用托管策略作为 IAM 实体(用户或角色)的权限边界。该策略定义基于身份的策略可以授予实体的最大权限,但不授予权限。权限边界不定义基于资源的策略可以授予实体的最大权限。
-
组织 SCP – 使用 AWS Organizations 服务控制策略 (SCP) 为组织或组织单元 (OU) 的账户成员定义最大权限。SCP 限制基于身份的策略或基于资源的策略授予账户中实体(用户或角色)的权限,但不授予权限。
-
访问控制列表 (ACL) – 使用 ACL 来控制其他账户中的哪些委托人可以访问 ACL 附加到的资源。ACL 类似于基于资源的策略,但它们是唯一不使用 JSON 策略文档结构的策略类型。ACL 是跨账户的权限策略,向指定的委托人实体授予权限。ACL 不能向同一账户内的实体授予权限。
-
会话策略 – 在您使用 AWS CLI 或 AWS API 担任某个角色或联合身份用户时,传递高级会话策略。会话策略限制角色或用户的基于身份的策略授予会话的权限。会话策略限制所创建会话的权限,但不授予权限。
JSON 策略文档结构
语句中的信息均含在一系列的元素内。
-
Version – 指定要使用的策略语言的版本。作为最佳实践,请使用最新的
2012-10-17
版本。 -
Statement – 使用此主要策略元素作为以下元素的容器。可以在一个策略中包含多个语句。
-
Sid – 包含可选的语句 ID 来区分您的语句。
-
Effect – 使用
Allow
或Deny
来指示策略是允许还是拒绝访问。 -
Principal – 指示要允许或拒绝访问的账户、用户、角色或联合身份用户。如果要创建策略以附加到用户或角色,则不能包含此元素。委托人暗示为该用户或角色。
-
Action – 包含策略允许或拒绝的操作的列表。
-
Resource – 指定操作应用于的资源的列表。
-
Condition(可选)– 指定策略在哪些情况下授予权限。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "FirstStatement",
"Effect": "Allow",
"Action": ["iam:ChangePassword"],
"Resource": "*"
},
{
"Sid": "SecondStatement",
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
},
{
"Sid": "ThirdStatement",
"Effect": "Allow",
"Action": [
"s3:List*",
"s3:Get*"
],
"Resource": [
"arn:aws:s3:::confidential-data",
"arn:aws:s3:::confidential-data/*"
],
"Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
}
]
}