BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【AWS】スイッチロールを実践してみる

はじめに


こんにちは!

BFT名古屋支店・新卒のげんぬです。

最近AWSを触り始めた私ですが、前回からIAMについて勉強しており、勉強の一環として、スイッチロールを実践してみました!

今回は、スイッチロール用IAMロールの作成、スイッチロールするユーザの設定、スイッチしてEC2を起動するまでの手順をはてブロでアウトプットしてきます!

前回のブログ内容は以下のリンクから参照ください。

【AWS】IAM について基本からまとめてみた - BFT名古屋 TECH BLOG

検証内容


概要

今回は、以下の順番で検証を行いました!

①検証用ロールの作成

②スイッチロールするユーザ用のポリシーを作成し、スイッチ用ユーザにアタッチ

③参照権限だけのロール(IAMポリシー:Read only Accessを付与)で動作確認

④EC2全権限をもつロール(IAMポリシー:Amazon EC2 Full Access 付与)で動作確認

参照権限のみのロールからEC2全権限を持つロールに切り替えることで、EC2インスタンスの起動ができることを確認します。

事前準備

検証を行う前に以下のような準備を行いました。

  • IAMユーザ (IAMポリシー:Administrator Accessを付与)を作成する。
  • スイッチロール用ユーザを作成する。
  • 検証用EC2を作成する。

検証用ロールの作成


まず初めに、ロールを以下の手順で作成していきます。

ここでは、2種類の異なる許可権限を持ったロールを作成します。

【参照権限のみを持ったロールの作成】

①マネジメントコンソールにIAMユーザ(IAMポリシー:Administrator Accessを付与)でログインします。

②IAMのダッシュボードへ移動し、左ペインから[ロール]をクリックし、[ロールを作成]をクリックし、以下の内容を入力します。

信頼されたエンティティの選択
  •  信頼されたエンティティタイプ:AWSアカウント
  •  AWSアカウント:このアカウント[12桁のAWSアカウントID]
許可を選択
ロールの詳細
  •  ロール名:任意(今回はread-only-roleで作成)
  •  説明:任意(今回はread-only-roleで作成)
  •  タグ:キー、値ともに任意のものをつける

③最後に[ロールを作成]をクリックします。

④「ロールが作成されました」と表示され、任意の名前を付けたロールが作成されていることを確認します。

【EC2全権限を持ったロールの作成】

①マネジメントコンソールにIAMユーザ(IAMポリシー:Administrator Accessを付与)でログインします。

②IAMのダッシュボードへ移動し、左ペインから[ロール]をクリックし、[ロールを作成]をクリックし、以下の内容を入力します。

信頼されたエンティティの選択
  • 信頼されたエンティティタイプ:AWSアカウント
  • AWSアカウント:このアカウント[12桁のAWSアカウントID]
許可を選択
ロールの詳細
  • ロール名:任意(今回はec2full-role)
  • 説明:任意(今回はec2full-role)
  • タグ:キー、値ともに任意のものをつける

③最後に[ロールを作成]をクリックします。

④「ロールが作成されました」と表示され、任意の名前を付けたロールが作成されていることを確認します。

スイッチロールするユーザ用のポリシーを作成し、スイッチ用ユーザにアタッチ


続いて、スイッチロールを実施するユーザのポリシーを以下の手順で作成していきます。

①IAMダッシュボードの左ペインから[ポリシー]をクリックし、[ポリシーを作成]をクリックします。

②[Json]をクリックし、以下の内容を入力します。

③任意のタグを追加します。

④ポリシーの確認で以下の内容を入力します。

ポリシーの確認
  • 名前:任意(今回はsts‐user-policy)
  • 説明:任意(今回はsts‐user-policy)

⑤最後に[ポリシーの作成]をクリックします。

⑥「ポリシーが作成されました」と表示され、任意の名前を付けたポリシーが作成されていることを確認します。

また、ポリシーをスイッチロールするユーザにアタッチします。

⑦IAMダッシュボードの左ペインから[ユーザ]をクリックし、スイッチロールするユーザをクリックします。

⑧[アクセス権限の追加]をクリックし、[既存のポリシーを直接アタッチ]をクリック、先ほど作成したポリシーを選択します。

⑨[アクセス権限の追加]をクリックします。

⑩「New feature to generate a policy based on CloudTrail events.」と表示され、「Permissions policies」の直接アタッチ済みの欄に先ほどアタッチしたポリシーが表示されていることを確認します。

以上で、検証準備が完了しました!

いよいよスイッチロールを実践してみようと思います~!

参照権限だけのロール(IAMポリシー:Read only Accessを付与)で動作確認


まず以下の手順で参照権限のみのロールにスイッチし、事前に作成したEC2を起動してみます。

①マネジメントコンソール画面の右斜め上にある[IAMユーザ名@ xxxx-xxxxx-xxxx]をクリック、[サインアウト]をクリックし、IAMユーザ(IAMポリシー:Administrator Accessを付与)からサインアウトします。

②マネジメントコンソールにIAMユーザ(スイッチロール用)でログインします。

③[IAMユーザ名@xxxx-xxxxx-xxxx]をクリックし、[ロールの切り替え]をクリックします。

④以下の内容を入力し、[ロールの切り替え]をクリックします。

・アカウント* [ロールを作成したAWSアカウントID]

・ロール* [readonly-role]

・表示名* [readonly-role]

⑤画面右斜め上で[IAMユーザ名@xxxx-xxxxx-xxxx]と表示されていた箇所が「read-only-role」になっていることを確認します。

⑥EC2 Experienceに移動し、左ペインから[インスタンス]を選択し、事前に作成したEC2を起動してみます。

⑦以下のようなエラーメッセージがでました。

参照権限のロールだけでは、EC2を起動することはできませんでした。

参照権限のみを付与したロールなので、起動できないことは想定通りでした。

EC2全権限をもつロール(IAMポリシー:Amazon EC2 Full Access 付与)で動作確認


次に、EC2の全権限を付与されたロールに以下の手順でスイッチロールし、事前に作成したEC2を起動してみます。

①画面右斜め上にある[readonly-role]をクリックし、[ロールの切り替え]をクリックします。

②以下の内容を入力し、ロールの切り替え]をクリックします。

・アカウント* [ロールを作成したAWSアカウントID]

・ロール* [ec2full-role]

・表示名* [ec2full-role]

③画面右斜め上で「readonly-role」と表示されていた箇所が「ec2full-role」になっていることを確認します。

④EC2 Experienceに移動し、左ペインから[インスタンス]を選択し、事前に作成したEC2を起動してみます。

⑤EC2の起動に成功しました。

まとめ


今回スイッチロールを検証することで、ロールによる権限付与についてまとめました。

Jsonでのポリシー設定は初めての経験だったので、悩む面も多々ありましたが、AWSJsonはよく使う記述方式なのでこれからも知識を深めていきたいと思います!

IAMを使いこなせるようこれからも頑張っていきたいです!