首页 > 解决方案 > 如何创建 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": "*"
        }
    ]
}

标签: amazon-web-servicespermissionsamazon-iam

解决方案


您应该在问题中包含您看到的错误,否则很难为您提供帮助。

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

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

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

  1. 他们真的需要 IAM 管理员吗?顺便说一句,为他们制定政策将如何付诸实践?
  2. 是否可以通过在组织范围内提供一个单独的帐户来解决其中的一些问题?组织可以帮助执行其中一些政策,例如区域限制、预算上限,但对这些帐户的管理员有很大的控制权。

推荐阅读