IAMロールをEC2インスタンスに設定をしてみた

2021.08.05

こんにちは。イムチェジョンです。
今回のブログではIAMロールをEC2インスタンスに設定をし、インスタンスの中でawsコマンドを実行してみたいと思います。

アジェンダ

  1. インスタンスでawsコマンドテスト
  2. IAMロールの作成
  3. IAMロールをEC2インスタンスに設定
  4. もう一回インスタンスでawsコマンドテスト
  5. まとめ

1. インスタンスでawsコマンドテスト

EC2 Linux インスタンスにCLIが設置されているのを確認します。

$ aws --version
aws-cli/1.18.147 Python/2.7.18 Linux/4.14.238-182.422.amzn2.x86_64 botocore/1.18.6

その後コマンドを実行してみるとエラーが出てきます。 エラーの内容は資格証明がされてないので、aws configureコマンドを使って資格証明をしてほしいということです。

$ aws iam list-users
Unable to locate credentials. You can configure credentials by running "aws configure".

実際にコマンドを実行すると設定は可能になりますが、EC2インスタンスの中に資格証明のデータが残ることになります。
そうなるとセキュリティに大きな問題になると思います。

$ aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]:
Default output format [None]:

なので、aws configureの設定をしなくても良いようにIAMロールをEC2インスタンスに設定しましょう。

2. IAMロールの作成

IAMロールを作成しましょう。

AWSサービスの中でEC2を選択します。

簡単なテストのなめにIAMユーザーの一覧を表示する予定なので、IAMReadOnlyAccessポリシーを追加します。

IAMロールの名前を入力し、作成をします。

作成されたIAMロールを確認してみると、IAMReadOnlyAccessポリシーが成功的に追加されています。

3. IAMロールをEC2インスタンスに設定

インスタンスのセキュリティ部分にどんなIAMロールが設定されているか見れます。今は何も設定されてないです。

IAMロールを設定するためにインスタンスを選択します。
アクションセキュリティIAMロールを変更の順にクリックします。

上で作成したIAMロールを選択して保存します。

インスタンスページのセキュリティ部分で設定されているのを確認したらIAMロールの設定の完了です。

4. もう一回インスタンスでawsコマンドテスト

設定が完了されたので、最初に実行したコマンドをもう一回実行してみましょう。

$ aws iam list-users
{
    "Users": [
        {
            "UserName": "amplify-user",
            "Path": "/",
            "CreateDate": "2021-07-15T02:35:43Z",
            "UserId": "*********************",
            "Arn": "arn:aws:iam::************:user/amplify-user"
        },
        {
            "UserName": "cli_user",
            "Path": "/",
            "CreateDate": "2021-07-29T06:47:03Z",
            "UserId": "*********************",
            "Arn": "arn:aws:iam::************:user/cli_user"
        }
    ]
}

よく実行されました。
これでaws configureの設定をする必要なく、awsコマンドを実行できるようになりました。

5. まとめ

今回はIAMロールをEC2インスタンスに設定をしてみました。こうすることでIAMロールに含まれているポリシーをEC2インスタンスで使えるようになります。