如何创建IAM策略以授予特定区域的完全管理员访问权限?

时间:2019-12-16 16:46:59

标签: amazon-web-services permissions amazon-iam

我需要授予特定区域的完全管理员访问权限(所有AWS资源,而不仅仅是少数资源)。 以下是配置的IAM策略。无论如何访问其他资源,都会产生错误。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "rds:*",
                "apigateway:*",
                "s3:*",
                "lambda:*",
                "dynamodb:*",
                "ec2:*",
                "cognito-idp:*",
                "sns:*",
                "sqs:*",
                "cloudwatch:*",
                "cloudfront:*",
                "cloudformation:*",
                "ses:*",
                "codepipeline:*",
                "codebuild:*",
                "logs:*",
                "iam:*"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestedRegion": "ap-northeast-1"
                }
            }
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:DescribeAlarms",
                "cloudformation:DescribeStacks",
                "logs:DescribeLogGroups",
                "logs:CreateLogGroup"
            ],
            "Resource": "*"
        }
    ]
}

1 个答案:

答案 0 :(得分:0)

您应该包括所看到的错误以及问题,否则很难为您提供帮助。

尽管我粗略地看了一眼,但是您将iam:*包含在具有区域条件的语句中。 IAM是一项全球资源,因此从表面上我可以看到为什么该政策不起作用(我自己不能尝试)。我会将其分解成一个没有区域条件的单独语句,但随后他们就可以对您整个IAM进行管理员访问(安全性令人恐惧!)。

如果您想提供受限制的管理员,我将首先减少对他们实际需要执行的操作的某些权限(* vs CreateGroup)。然后像示例here "arn:aws:iam::ACCOUNT-ID-WITHOUT-HYPHENS:policy/TEAM-A/*"那样使用命名空间进行委派。您可以将其与属性标记条件结合使用。 Demonstrated here。这将使他们能够相当自由地移动,但仅在某些情况下才可以。话虽如此,限制这些上下文对于您(超级管理员)而言可能变得相当复杂。

可能还有其他需要考虑的事情:

  1. 他们真的需要IAM管理员吗?在实践中如何为他们制定政策?
  2. 是否可以通过在组织和组织下提供单独的帐户来解决部分痛苦?组织可以帮助强制执行其中一些政策like regional restrictions,即最高预算,但可以为这些帐户的管理员提供很多控制权。