やってみた~aws-ec2-sshでEC2の踏み台サーバのユーザ管理を楽にする~

タイトルの通り

Qiitaをつらつら眺めてたら面白そうな投稿があったので試しにやってみようと思います。

↓元記事

qiita.com


対象EC2インスタンスssh接続してaws-ec2-sshをインストール
git clone https://github.com/widdix/aws-ec2-ssh.git

f:id:hedgehogweeklyreport:20181208122612p:plain

git入ってないからコマンド使えないよとエラーが出力される そりゃそうですね

なので先ずこのインスタンスにGitを入れるところから


Gitインストール

参考
Amazon Linuxにgit最新版をソースから入れる | OpenGroove

ライブラリのインストール

yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc

ディレクトリを移動してダウンロード
折角なのでここから最新バージョンを探して入れてく(2018/12/8現在)

f:id:hedgehogweeklyreport:20181208130134p:plain:w400

最新はgit-2.19.2の模様

cd /usr/local/src/  
pwd  
wget https://www.kernel.org/pub/software/scm/git/git-2.19.2.tar.gz

/usr/local/
システム管理者がコンパイルしたアプリケーションをインストールする場所

/usr/local/src/
ソースコードの保存場所

無事ダウンロードできました

f:id:hedgehogweeklyreport:20181208100753p:plain:w500

tar.gzの解凍

tar -zxvf git-2.19.2.tar.gz

-z : zip形式で圧縮されたアーカイブを展開する
-x :アーカイブからファイルを抽出する
-v :処理したファイルを詳しく出力する
-f :アーカイブファイル名を指定する

解凍できました

f:id:hedgehogweeklyreport:20181208101129p:plain:w400

ディレクトリの移動

cd git-2.19.2

Gitのソースをコンパイルする

make prefix=/usr/local all  

f:id:hedgehogweeklyreport:20181208102331p:plain

ずらずらと色々出てきてプロンプトが返ってきたら

make prefix=/usr/local install

またずらずら〜と色々表示されてプロンプトが返ってくるのを待つ

f:id:hedgehogweeklyreport:20181208103333p:plain:w500

設定の読み込み

source /etc/profile

バージョン確認

git --version

f:id:hedgehogweeklyreport:20181208103759p:plain:w500

無事git-2.19.2をインストール出来ました。


改めてaws-ec2-sshをインストール
git clone https://github.com/widdix/aws-ec2-ssh.git

今度は上手くいきました! f:id:hedgehogweeklyreport:20181208104420p:plain:w500

ディレクトリを移動してシェルを実行

cd aws-ec2-ssh
./install.sh

また、エラーが返ってきたので、調べます

f:id:hedgehogweeklyreport:20181208104715p:plain

どうやらインスタンス作成時に適用していたIAMロールでは実行出来ない模様。 必要なポリシーを盛り込んだIAMロールを作ってきます


IAMロールの作成

AWSコンソールでIAMを選択
[ロールの作成]を選択
信頼されたエンティティの種類を選択で[AWSサービス]を選択
このロールを使用するサービスを選択で[EC2]を選択
[次のステップ:アクセス権限]を押下
ポリシーのフィルタで[IAM]を入力
[IAMReadOnlyAccess]を選択して[次のステップ:タグ]へ
タグを適当に設定して確認画面で[ロール名]を入力して[ロールの作成]を押下
EC2ダッシュボードへ移動して対象のEC2を選択
[アクション]より[インスタンスの設定]→[IAMロールの割り当て/置換]を選択
先程作成したIAMロールを選択して[適用]を押下

この状態で再度シェルを実行

./install.sh

f:id:hedgehogweeklyreport:20181208110714p:plain:w500

上手くいった


IAMロール適用

次手順でIAMロール適用があった模様…

先程作成したIAMのポリシーをJSON形式で編集します。

IAMロール画面へ移動して先程作成したIAMロールを選択して、右端の[x]を押下して既存ポリシーをデタッチ f:id:hedgehogweeklyreport:20181208111426p:plain

インラインポリシーの追加を押下

f:id:hedgehogweeklyreport:20181208111601p:plain

JSONを選択して以下を貼り付け

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:ListSSHPublicKeys",
                "iam:GetSSHPublicKey",
                "iam:GetGroup"
            ],
            "Resource": [
                "arn:aws:iam::*:user/*",
                "arn:aws:iam::*:group/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:ListUsers",
            "Resource": "*"
        }
    ]
}

IAMのJSON記述等は公式参照

IAM JSON ポリシーエレメントのリファレンス - AWS Identity and Access Management

IAM JSON ポリシー言語の文法 - AWS Identity and Access Management

貼り付けたら[Review Policy]→[Create Policy]を押下
EC2にインスタンス適用
※既に適用されているIAMロールを編集したからそのままでOK


IAMグループ作成

IAMのナビゲーションペインから[グループ]を選択
[新しいグループの作成]を押下
適当にグループ名を入力(記事元ならってmembersとadminsを作成) [次のステップ]→[次のステップ]→[グループの作成]を押下

f:id:hedgehogweeklyreport:20181208113631p:plain:w400

グループ作成完了


IAMユーザの作成

元記事にならって↓な感じに作っていく

ユーザ名 所属グループ
kuma admins,members
hedgehog members

IAMのナビゲーションペインから[ユーザー]を選択
[ユーザーを追加]を押下し、ユーザ名を入力
AWSアクセスの種類は一端[プログラムによるアクセス]にチェック
[次のステップ:アクセス権限]
ユーザをグループに追加で上記表に該当するグループを選択
[次のステップ:タグ]で任意のタグを入力
[次のステップ:確認]→[次のステップ:ユーザー作成]を押下
csvをダウンロード


SSH公開鍵の登録

公開鍵の作成あたっての公式参考
Linux, macOS, or Unix 上で AWS CodeCommit リポジトリに SSH 接続するために必要なセットアップ手順 - AWS CodeCommit


続き