IAMを使用して、ユーザーがAWS / EC2セキュリティグループを編集できるようにしますか?


16

IAMグループにEC2セキュリティグループを編集する権限を付与しようとしていますが、EC2のすべてへのアクセスを許可しない限り、これを機能させることはできません。

私はこれのいくつかのバージョンを試しました:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1392336685000",
      "Effect": "Allow",
      "Action": [
        "ec2:*"
      ],
      "Resource": [
        "arn:aws:ec2:us-east-1:<MYACCOUNTHERE>:security-group/*"
      ]
    }
  ]
}

しかし、IAMユーザーでログインすると、セキュリティグループページに「この操作を実行する権限がありません」というメッセージが表示されます。

「Amazon EC2フルアクセス」にIAMポリシーテンプレートを選択すると、ユーザーはEC2のすべてにアクセスできるため、ユーザー/グループが機能していることを知っています。

私は明らかにIAMの経験があまりないので、どんな助けも大歓迎です。

回答:


13

これが機能するには、以下を明示的に許可する必要があります。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1392679134000",
      "Effect": "Allow",
      "Action": [
        "ec2:AuthorizeSecurityGroupEgress",
        "ec2:AuthorizeSecurityGroupIngress",
        "ec2:CreateSecurityGroup",
        "ec2:DeleteSecurityGroup",
        "ec2:DescribeInstanceAttribute",
        "ec2:DescribeInstanceStatus",
        "ec2:DescribeInstances",
        "ec2:DescribeNetworkAcls",
        "ec2:DescribeSecurityGroups",
        "ec2:RevokeSecurityGroupEgress",
        "ec2:RevokeSecurityGroupIngress"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

上記のJSONポリシーは、基本的に、ユーザーは上記にのみアクセスできることを規定しています。彼らは他のものにはアクセスできません。これには、ec2インスタンス、S3、IAM、クラウドフロントなどが含まれます。


1
これはうまくいった。ありがとうございました。ユーザーはすべてのインスタンスデータを表示できますが、開始/停止/作成できないため、十分に近いです。どのセキュリティグループがアクセスできるかを正確に述べる方法があると思いますか、それともすべてのセキュリティグループに公開したままにする必要がありますか?
クリス14

@ DevMan14特定のセキュリティグループを述べる方法はありますか?私は秒をしようとすると、それは仕事と、このコードでない以下のようなリソースは、誰かがセキュリティ・グループを記述し、すべてのセキュリティグループに関する情報の公正なビットを取得AWS EC2を使用することができます
nsij22

1
あなたが見ている場合EC2ResponseError:403禁止エラーを、すぐに設定した後に/あなたの方針を変更し、ノートそれは取ったこと数分、私のポリシーが発効する前に
storm_m2138

12

編集を1つのセキュリティグループに制限したい場合、2つのステートメントが必要だと思います。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1413232782000",
            "Effect": "Allow",
            "Action": [               
                "ec2:DescribeInstanceAttribute",
                "ec2:DescribeInstanceStatus",
                "ec2:DescribeInstances",
                "ec2:DescribeNetworkAcls",
                "ec2:DescribeSecurityGroups"              
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "Stmt1413232782001",
            "Effect": "Allow",
            "Action": [
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",                
                "ec2:RevokeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupIngress"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:<accountid>:security-group/sg-<id>"
            ]
        }
    ]
}

DescribeInstanceは必要ないかもしれませんが、私の場合はそれが欲しかったので、それなしではテストしていません


1
DescirbeInstanceルールなしで SGルールを編集できました。例えばグローバル・オプションは、のみ:として設定されている "ec2:DescribeNetworkAcls", "ec2:DescribeSecurityGroups"
storm_m2138

1

セキュリティグループがインスタンスまたは他のEC2リソースによって使用されているようです。試すことができます:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1392336685000",
      "Effect": "Allow",
      "Action": [
        "ec2:*"
      ],
      "Resource": [
        "arn:aws:ec2:us-east-1:<MYACCOUNTHERE>:instance/*",
        "arn:aws:ec2:us-east-1:<MYACCOUNTHERE>:security-group/*"
      ]
    }
  ]
}

答えてくれてありがとう、でもうまくいかなかった。はい、セキュリティグループは複数のインスタンスで使用されています-「VPCセキュリティグループ」ではなく「EC2セキュリティグループ」であることは重要ですか?-または、ユーザーがインスタンスを見ることができないため、何か間違ったことをしているかもしれません。
クリス

1

私はのための答えを探していた質問こと@ nsij22が受け入れ答えのコメントで尋ねました。残念ながら、それは不可能です。IAM Policy Simulatorによると、特定のリソースで使用できるのは@ DevMan14の回答の次のアクションのみです。

  • DeleteSecurityGroup
  • AuthorizeSecurityGroupEgress
  • AuthorizeSecurityGroupIngress
  • RevokeSecurityGroupEgress
  • RevokeSecurityGroupIngress

他のすべてについて、IAM Policy Simulatorは次のように述べています。

このアクションは、リソースレベルのアクセス許可をサポートしていません。アクセスを許可するポリシーでは、リソース要素に「*」を指定する必要があります。

次のようになります。

スクリーンショット

「許可」と「拒否」はすべて同じであるため、私はそれらを折りたたみました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.