IAM:允许或拒绝以编程方式和在控制台中访问多个服务
此示例说明了如何创建基于身份的策略,以允许完全访问多个服务并在 IAM 中进行有限的自我管理访问。该策略还会拒绝对 Amazon S3 logs
存储桶或 Amazon EC2 i-1234567890abcdef0
实例的访问。此策略定义了程序访问和控制台访问的权限。要使用此策略,请将示例策略中的斜体占位符文本
替换为您自己的信息。然后,按照创建策略或编辑策略中的说明操作。
警告
该策略允许完全访问多个服务中的每个操作和资源。只应将该策略应用于受信任的管理员。
您可以将该策略作为权限边界,以定义基于身份的策略可以为 IAM 用户授予的最大权限。有关更多信息,请参阅 使用权限边界将责任委派给其他人。在将策略作为用户的权限边界时,这些语句定义以下边界:
-
AllowServices
语句允许完全访问指定的 Amazon 服务。这意味着,用户在这些服务中的操作仅受附加到用户的权限策略的限制。 -
AllowIAMConsoleForCredentials
语句允许访问以列出所有 IAM 用户。要在 Amazon Web Services Management Console中导航用户页面,此访问权限是必需的。它还允许查看账户的密码要求,这是用户更改自己的密码所必需的。 -
AllowManageOwnPasswordAndAccessKeys
语句允许用户仅管理其自己的控制台密码和编程访问密钥。这是非常重要的,因为如果另一个策略为用户授予完全 IAM 访问权限,该用户可能会更改自己或其他用户的权限。此语句可防止这种情况的发生。 -
DenyS3Logs
语句显式拒绝对logs
存储桶的访问。该策略对用户实施公司限制。 -
DenyEC2Production
语句显式拒绝对i-1234567890abcdef0
实例的访问。
该策略不允许访问其他服务或操作。在将策略作为用户的权限边界时,即使附加到用户的其他策略允许这些操作,Amazon 也会拒绝请求。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowServices", "Effect": "Allow", "Action": [ "s3:*", "cloudwatch:*", "ec2:*" ], "Resource": "*" }, { "Sid": "AllowIAMConsoleForCredentials", "Effect": "Allow", "Action": [ "iam:ListUsers", "iam:GetAccountPasswordPolicy" ], "Resource": "*" }, { "Sid": "AllowManageOwnPasswordAndAccessKeys", "Effect": "Allow", "Action": [ "iam:*AccessKey*", "iam:ChangePassword", "iam:GetUser", "iam:*LoginProfile*" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "DenyS3Logs", "Effect": "Deny", "Action": "s3:*", "Resource": [ "arn:aws:s3:::
logs
", "arn:aws:s3:::logs
/*" ] }, { "Sid": "DenyEC2Production", "Effect": "Deny", "Action": "ec2:*", "Resource": "arn:aws:ec2:*:*:instance/i-1234567890abcdef0
" } ] }