IAMのEC2権限をまとめてみた

AWS運用自動化サービス「Cloud Automator」
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。

みなさんこんにちは。
テクニカルグループの山田です。

最近、IAMで権限を管理/設定する機会が多いのですが、その中でも特に設定する機会が多い EC2の権限 を一覧にしてまとめました。
IAMで設定が出来るEC2の権限を全て網羅しております。

EC2のIAM権限

アクション アクションの内容
ec2:ActivateLicense ライセンスを有効化する
ec2:AllocateAddress EIPを取得する
ec2:AssignPrivateIpAddresses ENIにSecondary Private IPを追加する
ec2:AssociateAddress インスタンス/ENIにEIPを割り当てる
ec2:AssociateDhcpOptions VPCにDHCP Option Setを関連付ける
ec2:AssociateRouteTable サブネットに対してRouteTableを関連付ける
ec2:AttachInternetGateway VPCに対してInternet Gatewayアタッチする
ec2:AttachNetworkInterface インスタンスに対してENIをアタッチする
ec2:AttachVolume インスタンスに対してEBS Volumeをアタッチする
ec2:AttachVpnGateway VPCに対してVPN Gatewayをアタッチする
ec2:AuthorizeSecurityGroupEgress Outbound方向のSecurityGroup設定ルールを追加する
ec2:AuthorizeSecurityGroupIngress Inbound方向のSecurityGroup設定ルールを追加する
ec2:BundleInstance Instance Store-Backed Windows AMIのバンドルをする
ec2:CancelBundleTask Instance Store-Backed Windows AMIのバンドルをキャンセルする
ec2:CancelConversionTask インスタンスまたはボリュームの変換タスクをキャンセルする
ec2:CancelExportTask インスタンスのエクスポートタスクをキャンセルする
ec2:CancelReservedInstancesListing リザーブドインスタンスの一覧の詳細を Reserved Instance Marketplace で表示する
ec2:CancelSpotInstanceRequests スポットインスタンスのリクエストをキャンセルする
ec2:ConfirmProductInstance インスタンスに対してproduct codeが有効か判定する
ec2:CopyImage AMIのリージョン間コピーをする
ec2:CopySnapshot スナップショットのリージョン間コピーをする
ec2:CreateCustomerGateway CustomerGatewayを作成する
ec2:CreateDhcpOptions DHCP Optionを作成する
ec2:CreateImage インスタンスからAMIを作成する
ec2:CreateInstanceExportTask インスタンスをエクスポートする
ec2:CreateInternetGateway InternetGatewayを作成する
ec2:CreateKeyPair KeyPairを作成する
ec2:CreateNetworkAcl NetworkACLを作成する
ec2:CreateNetworkAclEntry NetworkACLに対してエントリーを追加する
ec2:CreateNetworkInterface ENIを作成する
ec2:CreatePlacementGroup PlacementGroupを作成する
ec2:CreateReservedInstancesListing 販売するリザーブドインスタンスの一覧を Reserved Instance Marketplace 内に作成する
ec2:CreateRoute RouteTable内のルートを作成する
ec2:CreateRouteTable RouteTableを作成する
ec2:CreateSecurityGroup SecurityGroupを作成する
ec2:CreateSnapshot EBSのスナップショットを作成する
ec2:CreateSpotDatafeedSubscription スポットインスタンスの使用状況のデータフィードを作成する
ec2:CreateSubnet VPCのサブネットを作成する
ec2:CreateTags タグを追加/変更する
ec2:CreateVolume EBSを作成する
ec2:CreateVpc VPCを作成する
ec2:CreateVpnConnection VPNConnectionを作成する
ec2:CreateVpnConnectionRoute VPNConnectionのStaticRouteを作成する
ec2:CreateVpnGateway VPNGatewayを作成する
ec2:DeactivateLicense ライセンスを無効化する
ec2:DeleteCustomerGateway CustomerGatewayを削除する
ec2:DeleteDhcpOptions DHCP Optionを削除する
ec2:DeleteInternetGateway Internet Gatewayを削除する
ec2:DeleteKeyPair KeyPairを削除する
ec2:DeleteNetworkAcl NetworkACLを削除する
ec2:DeleteNetworkAclEntry NetworkACLのエントリーを削除する
ec2:DeleteNetworkInterface ENIを削除する
ec2:DeletePlacementGroup PlacementGroupを削除する
ec2:DeleteRoute RouteTable内のルートを削除する
ec2:DeleteRouteTable RouteTableを削除する
ec2:DeleteSecurityGroup SecurityGroupを削除する
ec2:DeleteSnapshot スナップショットを削除する
ec2:DeleteSpotDatafeedSubscription スポットインスタンスのデータフィードの削除する
ec2:DeleteSubnet サブネットを削除する
ec2:DeleteTags タグを削除する
ec2:DeleteVolume EBSを削除する
ec2:DeleteVpc VPCを削除する
ec2:DeleteVpnConnection VPNConnectionを削除する
ec2:DeleteVpnConnectionRoute VPNConnectionのスタティックルートを削除する
ec2:DeleteVpnGateway VPNGatewayを削除する
ec2:DeregisterImage AMIの登録を解除する
ec2:DescribeAccountAttributes AWSアカウントの指定した属性を表示する
ec2:DescribeAddresses EIPを一覧で表示する
ec2:DescribeAvailabilityZones 利用しているアカウントで使用できるAZを一覧で表示する
ec2:DescribeBundleTasks バンドルタスクを一覧で表示する
ec2:DescribeConversionTasks インスタンスまたはボリュームの変換タスク進行状況を表示する
ec2:DescribeCustomerGateways CustomerGatewayを一覧で表示する
ec2:DescribeDhcpOptions DHCP Optionを一覧で表示する
ec2:DescribeExportTasks インスタンスのエクスポートタスクの進行状況を表示する
ec2:DescribeImageAttribute AMIの指定した属性を表示する
ec2:DescribeImages AMIを一覧で表示する
ec2:DescribeInstanceAttribute インスタンスの指定した属性を表示する
ec2:DescribeInstanceStatus インスタンスのステータスを一覧で表示する
ec2:DescribeInstances インスタンスを一覧で表示する
ec2:DescribeInternetGateways InternetGatewayを一覧で表示する
ec2:DescribeKeyPairs KeyPairを一覧で表示する
ec2:DescribeLicenses ライセンスを一覧で表示する
ec2:DescribeNetworkAcls NetworkACLを一覧で表示する
ec2:DescribeNetworkInterfaceAttribute ENIの指定した属性を一覧で表示する
ec2:DescribeNetworkInterfaces ENIを一覧で表示する
ec2:DescribePlacementGroups PlacementGroupを一覧で表示する
ec2:DescribeRegions 利用しているアカウントで使用できるリージョンを一覧で表示する
ec2:DescribeReservedInstances 購入したリザーブドインスタンスを一覧で表示する
ec2:DescribeReservedInstancesListings リザーブドインスタンスの詳細を Reserved Instance Marketplace で表示する
ec2:DescribeReservedInstancesModifications リザーブドインスタンスの変更を表示する
ec2:DescribeReservedInstancesOfferings 購入できるリザーブドインスタンスの提供タイプを表示する
ec2:DescribeRouteTables RouteTableを一覧で表示する
ec2:DescribeSecurityGroups SecurityGroupを一覧で表示する
ec2:DescribeSnapshotAttribute スナップショットの指定した属性を表示する
ec2:DescribeSnapshots スナップショットを一覧で表示する
ec2:DescribeSpotDatafeedSubscription スポットインスタンスのデータフィードを表示する
ec2:DescribeSpotInstanceRequests スポットインスタンスのリクエストを表示する
ec2:DescribeSpotPriceHistory スポット価格の履歴を表示する
ec2:DescribeSubnets サブネットの一覧を表示する
ec2:DescribeTags タグを一覧で表示する
ec2:DescribeVolumeAttribute EBSの指定した属性を表示する
ec2:DescribeVolumeStatus EBSのステータスを表示する
ec2:DescribeVolumes EBSを一覧で表示する
ec2:DescribeVpcAttribute VPCの指定した属性を表示する
ec2:DescribeVpcs VPCを一覧で表示する
ec2:DescribeVpnConnections VPN Connectionを一覧で表示する
ec2:DescribeVpnGateways VPN Gatewayを一覧で表示する
ec2:DetachInternetGateway InternetGatewayをVPCからデタッチする
ec2:DetachNetworkInterface ENIをインスタンスからデタッチする
ec2:DetachVolume EBSをインスタンスからデタッチする
ec2:DetachVpnGateway VPN GatewayをVPCからデタッチする
ec2:DisableVgwRoutePropagation VGW による VPC のRouteTableへのルートの伝達を無効にする
ec2:DisassociateAddress インスタンス/ENIからEIPを外す
ec2:DisassociateRouteTable RouteTableに関連付けられているサブネットを外す
ec2:EnableVgwRoutePropagation VGW による VPC のRouteTableへのルートの伝達を有効にする
ec2:EnableVolumeIO EBSのI/Oを有効化する
ec2:GetConsoleOutput インスタンスのコンソール出力を取得する
ec2:GetPasswordData Windows Instanceの管理者パスワードを取得する
ec2:ImportInstance 指定したディスクイメージのメタデータを使用して、インスタンスをインポートするタスクを作成し、そのインスタンスをEC2へインポートする
ec2:ImportKeyPair KeyPairをインポートする
ec2:ImportVolume 指定したディスクイメージのメタデータを使用して、ボリュームをインポートする新しいタスクを作成しそのボリュームを EC2 にインポートする
ec2:ModifyImageAttribute AMIの指定した属性を変更する
ec2:ModifyInstanceAttribute インスタンスの指定した属性を変更する
ec2:ModifyNetworkInterfaceAttribute ENIの指定した属性を変更する
ec2:ModifyReservedInstances リザーブドインスタンスの指定した属性を変更する
ec2:ModifySnapshotAttribute スナップショットの指定した属性を変更する
ec2:ModifyVolumeAttribute EBSの指定した属性を変更する
ec2:ModifyVpcAttribute VPCの指定した属性を変更する
ec2:MonitorInstances インスタンスを監視する
ec2:PurchaseReservedInstancesOffering リザーブドインスタンスを購入する
ec2:RebootInstances インスタンスをリブートする
ec2:RegisterImage スナップショットからAMIを登録/作成する
ec2:ReleaseAddress アカウントに割り当てられているEIPを開放する
ec2:ReplaceNetworkAclAssociation NetworkACLを関連付けるNetworkACLを変更する
ec2:ReplaceNetworkAclEntry NetworkACLの既存のルールを置換する
ec2:ReplaceRoute RouteTableの既存のルートを置き換える
ec2:ReplaceRouteTableAssociation Subnetに関連付けられているRouteTableを変更する。
MainRouteTableを変更
ec2:ReportInstanceStatus 実行中のインスタンスのステータスに関するフィードバックを送信する
ec2:RequestSpotInstances スポットインスタンスのリクエストを作成する
ec2:ResetImageAttribute AMIの起動許可を取り消す
ec2:ResetInstanceAttribute インスタンスの属性値の情報をリセットする
ec2:ResetNetworkInterfaceAttribute ENIの属性をリセットする
ec2:ResetSnapshotAttribute スナップショットのアクセス許可設定をリセットする
ec2:RevokeSecurityGroupEgress Outbound方向のSecurityGroup設定ルールを削除する
ec2:RevokeSecurityGroupIngress Inbound方向のSecurityGroup設定ルールを削除する
ec2:RunInstances インスタンスを作成する
ec2:StartInstances インスタンスを起動する
ec2:StopInstances インスタンスを停止する
ec2:TerminateInstances インスタンスを削除する
ec2:UnassignPrivateIpAddresses ENIからPrivate IP Addressを外す
ec2:UnmonitorInstances インスタンスの監視を無効にする

 

まとめ

EC2だけでこんなに細かく権限があるんですね。
ちなみに、想定通りの権限が付与されているかどうか確認するには、コマンドラインツールやSDKにある
DryRun オプションを利用すれば実際にサービスを動かすことなく実行の可否が一発で分かります。
DryRun オプションについては下記リンクに詳しい記載がありますので、ご参考に。

 

AWS運用自動化サービス「Cloud Automator」