コラム

[AWS]IAMユーザでEC2インスタンスにログインする(Amazon Linux 2)

今回はIAMユーザを使用してEC2のインスタンスにログイン出来るセッションマネージャという機能を使用してみたいと思います。
通常はEC2インスタンス作成の際に作った、pemキーを使用してsshアクセスをするのですが、IAMユーザでログイン管理をしたい場合もあるかと思いますので、それをやってみたいと思います。

設定手順概要

1.EC2インスタンス作成
2.IAMでユーザー用ポリシー作成 EC2アクセス権限、 セッションマネージャ使用権限等
3.IAMでユーザー作成、ユーザ用ポリシー付与
4.IAMでロールを作成、ロールにセッションマネージャアクセス許可ポリシー付与
5.EC2インスタンスにロールをアタッチ

構成図

2つのユーザー、2つのEC2インスタンスを作成して試したいと思います。
下記の図のようにユーザー、EC2、ポリシー、ロールを作成していきたいと思います。

設定

1.EC2インスタンス作成

PC01、PC02という名前のインスタンスをそれぞれ作成します。

2.IAMでユーザー用ポリシー作成 

EC2閲覧ポリシー(DescribeEC2Instance)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "001",
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*"
        }
    ]
}

SSM(セッションマネージャ)使用ポリシー(DescribeSsmInstance)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "001",
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeInstanceInformation",
                "ssm:DescribeSessions",
                "ssm:GetConnectionStatus",
                "ssm:DescribeInstanceProperties"
            ],
            "Resource": "*"
        }
    ]
}

PC01へのSSMポリシー(SsmAccessPC01)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "001",
            "Effect": "Allow",
            "Action": "ssm:StartSession",
            "Resource": "arn:aws:ec2:ap-northeast-1:488821267897:instance/i-051cac51072605f39"
        },
        {
            "Sid": "002",
            "Effect": "Allow",
            "Action": [
                "ssm:ResumeSession",
                "ssm:TerminateSession"
            ],
            "Resource": "arn:aws:ssm:*:*:session/${aws:username}-*"
        }
    ]
}

PC02へのSSMポリシー(SsmAccessPC02)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "001",
            "Effect": "Allow",
            "Action": "ssm:StartSession",
            "Resource": "arn:aws:ec2:ap-northeast-1:488821267897:instance/i-0ee187d8794b12114"
        },
        {
            "Sid": "002",
            "Effect": "Allow",
            "Action": [
                "ssm:ResumeSession",
                "ssm:TerminateSession"
            ],
            "Resource": "arn:aws:ssm:*:*:session/${aws:username}-*"
        }
    ]
}

3.IAMでユーザー作成、ユーザ用ポリシー付与

・user01作成
ユーザ作成画面で上記で作成したポリシーを追加し、名称を「user01」で作成します。
追加ポリシー:「DescribeEC2Instance」、「DescribeSsmInstance」、「SsmAccessPC01」

・user02作成
ユーザ作成画面で上記で作成したポリシーを追加し、名称を「user02」で作成します。
追加ポリシー:「DescribeEC2Instance」、「DescribeSsmInstance」、「SsmAccessPC02」

4.IAMでロールを作成

「ECRoleforSSM」という名称でロールを作成します。

・エンティティ選択

信頼されたエンティティタイプに「AWSのサービス」、ユースケースに「EC2」を選択します。

・許可ポリシー追加

「AmazonEC2RoleforSSM」を追加してロールを作成します。

5.EC2インスタンスにロールをアタッチ

インスタンスの詳細画面でアクション=>セキュリティ=>IAMロールの変更を選択

先ほど作成したロールの「ECRoleforSSM」を設定

動作確認

「user01」での動作確認

・インスタンス一覧表示

正常に表示できています。

・「PC01」へセッションマネージャでのログイン

「PC01」インスタンスの詳細画面へ遷移し接続ボタン押下

セッションマネージャを選択し接続を押下

正常にログイン出来ました。

・「PC02」へセッションマネージャでのログイン

同じように「PC02」インスタンスにもログインをしてみます。

権限エラーでログインできませんでした。

「user02」での動作確認

・インスタンス一覧表示

正常に表示できています。

・「PC01」へセッションマネージャでのログイン

権限エラーでログインできませんでした。

・「PC02」へセッションマネージャでのログイン

正常にログイン出来ました。

最後に

以上の様にIAMユーザでEC2インスタンスへのログイン管理をする事が出来るのが確認出来ました。
OSがAmazon Windowsや、他のAmazon用でないOSが使用する際は、専用のクライアントアプリの使用や、EC2のOSにアプリケーションを入れたりする必要がありますので、それはまた後日書いていきたいと思います。

この記事をシェアする
  • Facebookアイコン
  • Twitterアイコン
  • LINEアイコン

お問い合わせ ITに関するお悩み不安が少しでもありましたら、
ぜひお気軽にお問い合わせください

お客様のお悩みや不安、課題などを丁寧に、そして誠実にお伺いいたします。

お問い合わせはこちら
お電話でのお問い合わせ 03-5820-1777(平日10:00〜18:00)
よくあるご質問