雑多なインフラエンジニア日記

技術ブログでっす~

IAMポリシーで特定のEC2インスタンスへの操作権限付与

表題の通り、IAMポリシーで特定のEC2インスタンスのみに操作権限を付ける
ことが可能になったみたいです。(2013/07時点)

http://aws.typepad.com/aws_japan/2013/07/resource-permissions-for-ec2-and-rds-resources.html

以下のIAMポリシーは、全EC2インスタンスの参照権限 + インスタンスID1、2
への再起動、起動、停止の権限を付与した例です。
ActionとResourceが重要です!

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "EC2DESC",
      "Action": ["ec2:describe*"],
      "Resource": ["*"],
      "Effect": "Allow"
    },
    {
      "Sid": "EC2BOOT",
      "Action": ["ec2:RebootInstances","ec2:StartInstances","ec2:StopInstances"],
      "Resource": ["arn:aws:ec2:ap-northeast-1:アカウントID:instance/インスタンスID1","arn:aws:ec2:ap-northeast-1:アカウントID:instance/インスタンスID2"],
      "Effect": "Allow"
    }
  ]
}



今回はインスタンスID指定の例ですが、Conditionを使えばインスタンスID以外にタグでの
指定もできます。

あと全EC2インスタンスを見せたくないのが本心ですが、参照権限が無いと、
コンソールからインスタンス自体が見えません・・・。

仕様上、2013/07時点では、
1. インスタンス - 再起動(Reboot)、開始(Start)、停止(Stop)、終了(Terminate)
2. EBSボリューム - アタッチ(Attach)、削除(Delete)、デタッチ(Detach)
しか出来ない模様です。

って、この仕様で使う場面がイマイチ・・・

↑ 2013/11/26 加筆
仕様追加で再起動など以外の操作をコントロールする事が可能になりました!
さすが・・・
http://aws.typepad.com/aws_japan/2013/11/amazon-ec2-resource-level-permissions-for-runinstances.html



AWSのことだから何でも出来ると思っており、色んな権限付けて試してたら
完全にハマりました。
ポリシー作成の時はエラー出ないけど、動作確認したら想定と異なったり。。。

そんな時は、IAMポリシーシュミレータ が便利です。
https://policysim.aws.amazon.com/home/index.jsp?#

と言いつつ、リソース指定のIAMポリシーの場合、チェックが想定通りに行かないようです。
前述のポリシーは全てシュミレータでは、deniedになりました。
(その内対応されそう。)


・参考
http://www.slideshare.net/AmazonWebServicesJapan/20130716-aws-meisterregenerateiampublic
http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html


以上です。