使用资源级权限来限制AWS中的用户访问

时间:2018-02-20 16:07:41

标签: amazon-web-services amazon-s3 amazon-ec2 amazon-iam

我有一个在EC2实例上运行的Elastic Beanstalk应用程序,目前我已经为所有同事提供了管理员权限。但是现在我想添加其他环境和Web应用程序,我不希望我的同事有权访问。我一直在看Resource-Level Permissions,但是我正在试着让它发挥作用。有时它间歇性地工作,我正在寻找有关如何从以前有经验的人那里实现这一目标的建议。

简而言之:我有[应用程序A]我希望用户可以访问。我还有[应用程序B]和[应用程序C],我想限制访问,所以只有我可以看到并对其进行更改。

这是我目前的IAM政策JSON;

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "ecs:*",
            "ecr:*",
            "elasticloadbalancing:*",
            "autoscaling:*",
            "cloudwatch:*",
            "sns:*",
            "cloudformation:*",
            "dynamodb:*",
            "rds:*",
            "sqs:*",
            "iam:GetPolicyVersion",
            "iam:ListRolePolicies",
            "iam:ListAttachedRolePolicies",
            "iam:ListInstanceProfiles",
            "iam:ListRoles",
            "iam:ListServerCertificates",
            "acm:DescribeCertificate",
            "acm:ListCertificates",
            "codebuild:CreateProject",
            "codebuild:DeleteProject",
            "codebuild:BatchGetBuilds",
            "codebuild:StartBuild"
        ],
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": [
            "ec2:*"
        ],
        "Resource": [
            "arn:aws:ec2:myregion:myaccountid:instance/*"
        ],
        "Condition": {
            "StringEquals": {
                "ec2:ResourceTag/Name":"mytag"
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": [
            "elasticbeanstalk:*"
        ],
        "Resource": [
            "arn:aws:elasticbeanstalk:myregion:myaccountid:environment/myapp/myenv"
        ],
        "Condition": {}
    }
  ]
}

派生自here。如果有更多IAM政策经验的人能够确定我做错了什么以及如何正确地做到这一点,我将非常感激。如果有一种更简单的方法,我也很乐意听到它!

谢谢!

1 个答案:

答案 0 :(得分:0)

由于您的同事已拥有管理员权限,因此您需要拒绝政策。 以下策略明确拒绝访问除列出的资源之外的所有Amazon EB资源

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Deny",
    "Action": "elasticbeanstalk:*",
    "NotResource": [
      "<Application A ARN>"
    ]
  }
}