こんにちは!Narimasaです!
つい先日、既存のEC2にIAMロールを適用できるようになったことが発表されました!
New! Attach an AWS IAM Role to an Existing Amazon EC2 Instance by Using the AWS CLI
https://aws.amazon.com/jp/blogs/security/new-attach-an-aws-iam-role-to-an-existing-amazon-ec2-instance-by-using-the-aws-cli/
これまではEC2インスタンスを作成する時でないとIAMロールを適用することができず、カスタムメトリクスを設定したい場合等ではEC2内でIAMのアクセスキーを設置しなければなりませんでした。
当然セキュリティ面で問題がある運用ですので、その為だけにインスタンスを立て直したり、キー管理の一環で定期的に変更する場合、その都度キーを書き換える作業が発生したりと苦労された方も多いと思われますが、今回のアップデートでその苦労をせずに済むようになります。
前準備
AWS CLIを使いますので、最新版のCLIが使えるサーバが必要です。
最新版のCLIは下記コマンドで入手できます。
1 |
pip install -U awscli |
なお、CLIを使うサーバ自体にはIAMとEC2の操作権限が必要となります。
また、適用するIAMロールについてですが、内部的にはIAMロールの情報をインスタンスプロファイルとして適用するという形になります。
インスタンスプロファイルの名前はIAMロールの画面から確認できます。
実行してみる
既存のEC2にIAMロールを適用するコマンドは下記になります。
1 2 |
# aws ec2 associate-iam-instance-profile --instance-id instanceid --iam-instance-profile Name=instanceprofilename |
実際に実行した画像が下記になります。
成功すると設定内容が表示されます。
なお、この時に「An error occurred (UnauthorizedOperation) when calling the AssociateIamInstanceProfile operation: You are not authorized to perform this operation. Encoded authorization failure message:」と表示された場合はCLIを実行するサーバの操作権限に問題がある可能性が高いです。
例えば、操作権限を「PowerUserAccess」としていた場合、これには「IAM」の権限が入っていない為エラーとなりますので、面倒でもIAMの操作権限を付与しておいてください。
その他
他にも、既に適用されたIAMロールを取り換えることもできます。
※IAMロールの取り換えは対象インスタンスが起動している必要があるようです。
まず下記コマンドで適用されているIAMロールの情報を確認します。
表示される情報の中から「AssociationId」を控えておいてください。
1 |
# aws ec2 describe-iam-instance-profile-associations |
続いて、下記のようにコマンドを入力します。
1 2 |
# aws ec2 replace-iam-instance-profile-association --association-id associationid --iam-instance-profile Name=instanceprofilename |
実行した結果が下の画像です。先ほど「cloudwatch-role」が設定されていたものが、「EC2-admin」に替わっています。
いかがでしたでしょうか。
以前からAWSを利用して頂いている皆様の環境にIAMロールが無いインスタンスがありましたら是非実行してみてください。
次回もお楽しみに!!