2017-05-31 22 views
1

インスタンスIDがi-1234567890abcdに等しくないEC2インスタンスにIAMロールを渡すことを制限するIAMポリシーを作成しようとしています。インスタンスIDがIAMポリシー内のインスタンスIDと一致しない場合、IAMロールをEC2インスタンスにアタッチするように制限する

ポリシーにエラーはありませんが、このポリシーの効果はありません。以下のポリシーからConditionを削除すると機能しますが、EC2インスタンスにアタッチされる役割は制限されます。

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Deny", 
     "Action": ["iam:PassRole"], 
     "Resource": ["arn:aws:iam::000000000000:role/MyEC2InstanceSpecificRole"], 
     "Condition": { 
     "ArnNotEquals": { 
      "ec2:SourceInstanceARN": "arn:aws:ec2:us-east-1:000000000000:instance/i-1234567890abcd" 
     } 
     } 
    } 
    ] 
} 

答えて

0

これは可能ではないと思われます。

Granting a User Permissions to Pass a Role to an AWS Serviceドキュメントの状態:

は、AWSサービスへの役割(およびその権限)を渡すには、ユーザーがサービスに役割を渡すへのアクセス権を持っている必要があります。これにより、管理者は、承認されたユーザーだけがアクセス許可を与える役割を持つサービスを構成できるようになります。ユーザがAWSサービスにロールを渡すことを許可するには、ユーザのIAMユーザ、ロール、またはグループに対してPassRole権限を与える必要があります。

ユーザーがロールを使用してサービスにアクセス許可を割り当てるAPIにパラメータARNを渡すと、そのユーザーはiam:PassRoleのアクセス許可を持っているかどうかを確認します。承認されたロールのみを渡すようにユーザーを制限するには、iam:PassRoleアクセス許可をIAMポリシーステートメントのResources要素でフィルタできます。

Using an IAM Role to Grant Permissions to Applications Running on Amazon EC2 Instancesにそれは述べて:

PassRoleがRunInstancesかListInstanceProfilesがあるのと同じ方法でAPIのアクションではありません。代わりに、役割ARNがパラメータとしてAPIに渡される(またはコンソールがユーザーのためにこれを行う)たびに、AWSがチェックするのはパーミッションです。管理者は、どのユーザーがどのロールを渡すことができるかを制御できます。

PassRoleの通常のユースケースは、ユーザーがAWSサービスに彼らが自らの使用を許可する必要があること、それ以上の権限を付与しないことを確実にするためです。それは、管理者以外のユーザーが管理役割をサービスに渡し、そのサービスを使用して通常はアクセスできないリソースにアクセスするという邪悪な意図を避けるようにします。たとえば、Amazon EC2インスタンスを管理者ロールで起動すると、そのインスタンスにログインし、通常は使用できない管理コマンドを発行できます。

上記のドキュメントには、PassRole許可が特定のサービス、むしろそのサービスが、それを割り当てることによって、例えばロール自体を(使用しようとしている方法よりもに一定の役割を渡すために彼らの許可を確認するために評価されることを示唆していますSTSクレデンシャルを生成するためにEC2インスタンスに送信する)。

関連する問題