web-dev-qa-db-ja.com

IAMで、シェフナイフを使用してEC2インスタンスを起動するにはどのようなアクセス許可が必要ですか?

Q1:Iec AWSコンソールで、knife ec2メソッドを使用して新しいインスタンスを開始することのみを許可されたユーザーを作成しようとしています。現在、ポリシー「Amazon EC2フルアクセス」によるフルアクセスのみが機能します。ユーザーを作成し、開始/停止インスタンスと説明画像を付与することは機能しません。

Q2:これをデバッグする方法

ERROR: Fog::Compute::AWS::Error: UnauthorizedOperation => You are not authorized to perform this operation.

そして、どのパーミッションが正確に必要かを追跡します。 (-V -V -Vは機能しませんでした)

7

Q1:EC2インスタンスを起動するために必要な最小限のIAMアクセス許可を見つけるために、knife-ec2 gemをデバッグする必要がありました。最小限のポリシーは次のとおりです。

{
  "Statement": [
    {
      "Sid": "Stmt123",
      "Action": [
        "ec2:RunInstances",
        "ec2:DescribeInstances",
        "ec2:DescribeKeyPairs",
        "ec2:DescribeImages",
        "ec2:CreateTags",
        "ec2:DescribeTags"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    }
  ]
}

SIDは一意である必要があります。

Q2:Rubyに関する私の知識はかなり限定されているため、デバッグに便利な方法がない可能性があります。私はデバッガとしてbinding.pryを使用しました。以下を参照してください 記事 =詳細については。

7
smith3v

RunInstances を許可する必要があります。

私が思いついたポリシーは次のとおりです。

    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances",
                "ec2:CreateTags",
                "ec2:DescribeInstances",
                "ec2:DescribeImages",
                "ec2:DescribeKeyPairs",
                "ec2:DescribeVpcs",
                "ec2:DescribeSubnets",
                "ec2:DescribeTags",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeAddresses"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": <You should list the roles you want to be able to create here
 or use '*' but that is dangerous because if it allows for privilege escalation>
        }
    ]
}

それは、knife ec2を使用して作成した機能やオプションによって決まると思います。 (iam:PassRoleといくつかの追加のポリシーを使用して)他の回答からポリシーを試しましたが、ec2:DescribeAddressで特にヒットしていました。

あなたの役割が何かを実行できなかった理由は、私のButtTrailログを確認することで確認できます。

0
Patrick Riordan

IAMで「アクセスキーID」と「シークレットアクセスキー」を使用しているユーザーにアクセスを許可する必要がありました

0
vikas027