如何使用无法创建新用户或组的 AdministratorAccess 访问权限创建管理员组

How to Create a Admin Group with AdministratorAccess access that CANNOT create new users or groups

我是 AWS 的新手,发现它不必要地混乱和复杂。

我想授予开发人员 AdministratorAccess 级别的帐户访问权限,但通过不允许他创建其他用户或组来限制该访问权限。在不限制这一点的情况下,他可以创建有权访问计费的用户。我想确保没有人有权访问帐单或可以创建可以访问帐单的用户。

我该怎么做?

您可以根据管理员访问权限创建客户管理的 IAM 策略并添加类似于以下内容的显式 Deny 语句:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*"
        },
        {
            "Effect": "Deny",
            "Action": [
                "iam:CreateGroup",
                "iam:CreateUser",
                ...
            ],
            "Resource": "*"
        }
    ]
}

注意:以上限制是不够的,它们只是说明了一般原则。要有效地限制用户,您还必须拒绝将托管策略附加到用户或组或将内联策略放入用户或组的操作,以及更改已附加策略的操作。

一般来说,建议遵循最小权限原则,只给用户真正需要的权限。只有在极少数情况下,您才应该从 AdministratorAccess 开始,然后逐步限制权限。最佳做法是从无权限开始,然后逐步添加所需内容。


P.S.: 您还可以实施一种机制,自动将以下策略附加到所有用户,以有效拒绝所有成本浏览器和 billing-related 操作:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "aws-portal:*Billing",
                "aws-portal:*Usage",
                "aws-portal:*PaymentMethods",
                "ce:UpdatePreferences",
                "ce:CreateReport",
                "ce:UpdateReport",
                "ce:DeleteReport",
                "ce:CreateNotificationSubscription",
                "ce:UpdateNotificationSubscription",
                "ce:DeleteNotificationSubscription",
                "cur:DescribeReportDefinitions",
                "cur:PutReportDefinition",
                "cur:ModifyReportDefinition",
                "cur:DeleteReportDefinition",
                "purchase-orders:*PurchaseOrders"
            ],
            "Resource": "*"
        }
    ]
}