# 限制使用AdministratorAccess策略的用户或者角色

创建超级管理员时一般会关联绑定一个AWS内置策略AdministratorAccess，这个权限允许进行任何操作，一旦泄漏，会带来严重的安全风险，被勒索攻击或者服务器被用于挖矿，给企业带来严重的损失。

因此，可以通过以下方式减小超级管理员泄漏的风险：

## 1-修改信任策略trust policy

[ IAM 角色信任策略示例](https://github.com/aws-samples/data-perimeter-policy-examples/blob/main/resource_based_policies/iam_role_trust_policy.json)&#x20;

在原来的信任策略基础上增加condition条件：

限制能够使用超级管理员角色的组织范围或者账号范围：

```
         "Condition": {
                "StringNotEqualsIfExists": {
                    "aws:PrincipalOrgID": "<my-org-id>",
                    "aws:PrincipalAccount": [
                        "<third-party-account-a>",
                        "<third-party-account-b>"
                    ]
                },
                "BoolIfExists": {
                    "aws:PrincipalIsAWSService": "false"
                }
            }
```

## 2-增加SCP

创建如下SCP限制类似于IAM管理，KMS管理这类高危安全管理仅允许安全管理员操作。

参考：[限制高危操作使用条件](https://aws-gcr-wwso-security.gitbook.io/an-quan-zui-jia-shi-jian/1.-iam-shen-fen-shi-bie-yu-fang-wen-kong-zhi/data-perimeters-shu-ju-fang-hu-bian-jie/scpservice-control-policies-shi-li-ce-le/xian-zhi-gao-wei-cao-zuo)

```json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DenyIAMandKMS",
            "Effect": "Deny",
            "Action": [
                "IAM:*",
                "KMS:*"
            ],
            "Resource": "*",
            "Condition": {
                "ArnNotLikeIfExists": {
                    "aws:PrincipalArn": "<role or user Arn>"
                },
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": false
                }
            }
        }
    ]
}
```

## 3 - 单独的IAM管理员和安全审计员

IAM管理员可以直接使用AWS托管策略：IAMFullAccess

安全审计员也可以直接使用AWS托管策略：SecurityAudit
