2

IAM でグループ ポリシーを設定して、特定の vpc を使用して特定の地域のユーザーにアクセスを提供しようとしています。リソースタグがec2で機能しないため、AWSドキュメントを参照して、vpc IDを使用してインスタンスをフィルタリングしようとしています(EC2で機能する場合はResourceTagの方が適しています)。同じために次のルールを作成しましたが、役に立ちませんでした。

{   "Version": "2012-10-17",  
"Statement": [    {
     "Action": [
             "ec2:RunInstances",
             "ec2:StartInstances",
             "ec2:Describe*" ],
     "Resource": "*",
     "Effect": "Allow",
     "Condition": {
     "StringEquals": {
     "ec2:Vpc": "arn:aws:ec2:us-west-2:*:vpc/vpc-123456"
       }
     }
    }    ] }

結果は、EC2ページに「インスタンスデータのフェッチ中にエラーが発生しました」と表示されます。

これを修正するための提案はありますか?

ありがとうございました


リコさん、お返事ありがとうございます:-)

残念ながら、指定されたポリシーは、私の要件では機能しませんでした。

特定のリージョンのユーザーにアクセス権を付与する必要があり、ユーザーは特定のリソース タグ、VPC、サブネット、またはセキュリティ グループに基づいてインスタンスにアクセスできる必要があります。

ユーザーは何かを起動または編集する権限を持たない必要があり、ユーザーは前述のようにフィルターに基づいてインスタンスを一覧表示して、インスタンスの詳細を表示できる必要があります (読み取り専用)。

上記の側面を考慮して、ARN がリソースでうまく機能しないため、二重条件で同様のポリシーを定義しました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*",
        "Condition": {
        "StringEquals": {
        [   
        "ec2:Region": "us-west-2",
        "ec2:ResourceTag/Name": "Test"
       ]
     }
   }
  }  
 ]
}

リソースに ARN を使用すると、以下の形式では機能しません。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "arn:aws:ec2:us-west-2:1234567890:*/*",
        "Condition": {
        "StringEquals": {
    "ec2:ResourceTag/Name": "Test"
     }
   }
 }  
 ]
}

リソース タグ、インスタンス ID、セキュリティ グループ、およびサブネットを使用して、インスタンスをフィルタリングしてみました。

今のところ VPC フィルターは使用できないというご回答でわかりました。

私のインスタンスのリソースタグについては、画像を参照してください。

ここに画像の説明を入力

あなたの迅速な対応は高く評価されます。

前もって感謝します!


AWS ソリューション アーキテクトと次の更新について話し合いました。

EC2 の Describe* API は、まだ特定のリソースに制限できません。EC2 のリソース レベルのアクセス許可の最初のリリースでは、新しいリソースを作成したり、既存のリソースを変更したりするアクションに重点を置いていました。EC2 でサポートされているアクションの完全なリストについては、http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html#ec2-supported-iam-actions-resourcesを参照してください。リソース レベルのアクセス許可。

リソースレベルのアクセス制御のサポートをより多くのアクションに拡張するために取り組んでいますが、これが Describe* API で利用可能になる日付を提供することはできません.

リソース レベルのアクセス許可がサポートされているかどうかは、アクションによって異なります。上記のリンクを参照してください。特に、EC2 Describe* アクションをリソースに制限することは現時点では不可能ですが、上記の ARN を使用して、リソースを変更するアクションを制限できます。

リソース タグ、サブネット、セキュリティ グループ、および vpc は、IAM ポリシー ステートメントの「条件」セクションでサポートされていますが、特定のアクションに対してのみサポートされています。http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam を参照してください。利用可能なキーの -policies-for-amazon-ec2.html#amazon-ec2- keys。ただし、リソース タグ、サブネット、セキュリティ グループ、および vpc は、Describe* API の条件ではサポートされていません。


最後に、ユーザーをリージョンのみに制限することで回避策を終了します。

4

1 に答える 1

1

そのため、現時点では IAM を使用してこれを行うことはできません。唯一の方法はResourceTag. なぜ彼らがあなたのために働いていないのか知りたいですか?私は AWS サポートとやり取りしており、これが彼らの反応です:

残念ながら、現時点ではこれを行う方法はありません。現在、EC2 リソースのリソース レベルのアクセス許可を提供していますが (詳細はこちら... http://aws.typepad.com/aws/2013/07/resource-permissions-for-ec2-and-rds-resources.html ) 特定の VPC に基づく条件付きアクセス制御はサポートされていません。

これは、このリンク: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html#ec2-supported-iam-actions-resourcesが、サポートされる EC2 API アクションの数は限られており、いずれも ARN として VPC をサポートしていません。

「ec2:Describe*」にも制限があり、リソース ARN ではまったく指定できず、条件付きで制御することもできません。

回避策は、ほとんどの API 呼び出しで使用できる条件ステートメント「ResourceTag/tag-key」を使用することです。そのため、インスタンスに "Control":"Allow" というタグを付けることができ、問題のユーザーにアタッチされるポリシーにタグの作成または削除権限を含めないでください。ポリシーは次のようになります。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:RebootInstances",
                "ec2:TerminateInstances"
            ],
            "Resource": "arn:aws:ec2:REGION:ACCOUNTNUMBER:instance/*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Control": "Allow"
                }
            }
        }
    ]
}

次に、以下を使用して、特定の VPC でのみインスタンスを起動するようにユーザーを制限できますsubnet-id

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:region:account:instance/*",
                "arn:aws:ec2:region:account:subnet/SUBNET-ID-HERE",
                "arn:aws:ec2:region:account:volume/*",
                "arn:aws:ec2:region:account:network-interface/*",
                "arn:aws:ec2:region:account:key-pair/*",
                "arn:aws:ec2:region:account:security-group/*",
                "arn:aws:ec2:region::image/ami-*"
            ]
        }
    ]
}

特定の地域に関する質問に答えるために、IAM ポリシーは既に地域制限されているため、このポリシーは、制限しようとしているユーザーがいる特定の地域でのみ機能します。

お役に立てれば。

于 2014-03-17T19:05:57.453 に答える