

# IAM：允许或拒绝以编程方式和在控制台中访问多个服务
<a name="reference_policies_examples_iam_multiple-services-console"></a>

此示例说明了如何创建基于身份的策略，以允许完全访问多个服务并在 IAM 中进行有限的自我管理访问。该策略还会拒绝对 Amazon S3 `logs` 存储桶或 Amazon EC2 `i-1234567890abcdef0` 实例的访问。此策略定义了程序访问和控制台访问的权限。要使用此策略，请将示例策略中的*斜体占位符文本*替换为您自己的信息。然后，按照[创建策略](access_policies_create.md)或[编辑策略](access_policies_manage-edit.md)中的说明操作。

**警告**  
该策略允许完全访问多个服务中的每个操作和资源。只应将该策略应用于受信任的管理员。

您可以将该策略作为权限边界，以定义基于身份的策略可以为 IAM 用户授予的最大权限。有关更多信息，请参阅 [使用权限边界将责任委派给其他人](access_policies_boundaries.md#access_policies_boundaries-delegate)。在将策略作为用户的权限边界时，这些语句定义以下边界：
+ `AllowServices` 语句允许完全访问指定的 AWS 服务。这意味着，用户在这些服务中的操作仅受附加到用户的权限策略的限制。
+ `AllowIAMConsoleForCredentials` 语句允许访问以列出所有 IAM 用户。要在 AWS 管理控制台中导航**用户**页面，此访问权限是必需的。它还允许查看账户的密码要求，这是用户更改自己的密码所必需的。
+ `AllowManageOwnPasswordAndAccessKeys` 语句允许用户仅管理其自己的控制台密码和编程访问密钥。这是非常重要的，因为如果另一个策略为用户授予完全 IAM 访问权限，该用户可能会更改自己或其他用户的权限。此语句可防止这种情况的发生。
+ `DenyS3Logs` 语句显式拒绝对 `logs` 存储桶的访问。该策略对用户实施公司限制。
+ `DenyEC2Production` 语句显式拒绝对 `i-1234567890abcdef0` 实例的访问。

该策略不允许访问其他服务或操作。在将策略作为用户的权限边界时，即使附加到用户的其他策略允许这些操作，AWS 也会拒绝请求。

------
#### [ JSON ]

****  

```
{
    "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"
        }
    ]
}
```

------