前回はIAMユーザーに多要素認証(MFA)を設定する方法について説明しました。今回は、IAMロールを作成しS3のアクセス権限を持っていないIAMユーザーに対し、一時的にロールを割り当てS3を操作する方法を説明します。
IAMロールとは
IAMロールは、ユーザーやサービスにAWSのリソースに対するアクセス権限を一時的に委任することができる機能です。一時的な作業用にユーザーへ権限を付与したり、APIコールを実行する等の用途に使用されます。IAMロールを使用することで、AWSの特定のリソースに対するアクセス権限を長期的に付与する必要が無くなりセキュリティの向上に繋がります。
事前準備
IAMロールの割り当て等を行うため、以下のユーザーを準備しておいてください。
- IAMの全ての権限を持っているユーザー(IAMロール作成用)
- IAMロールの切り替えを行うIAMユーザー
今回ロールの切り替えを行うIAMユーザーは以下のページにて作成したEC2の全ての権限のみを持っているt-suzukiを使用します。
・AWSのIAMでユーザーとグループを作成しポリシーを適用する方法
IAMロールを委任するポリシーについて
今回のIAMロールの切り替えと作成したIAMロールを別のユーザーで使用するため、以下のポリシーを事前にt-suzukiのグループにアタッチしています。S3FullAccessRoleは今回作成するロールの名前となります。
■ChangeRolePolicy
-----------------------------------------------------------
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:Get*",
"iam:List*",
"iam:PassRole"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::*:role/S3FullAccessRole"
}
]
}
-----------------------------------------------------------
IAMロールの作成
初めに、ロール作成時に使用するアカウントIDを確認します。上部右側の「サポート」から「サポートセンター」をクリックします。左側ペインの「Account number」という項目の数字12桁をメモします。

アカウントID確認後、IAMのコンソール画面を開き左側ペインの「ロール」から「ロールの作成」をクリックします。

「信頼されたエンティティの種類を選択」画面で「別のAWSアカウント」を選択し、最初にメモをしたアカウントIDを入力し「次のステップ:アクセス権限」をクリックします。

「Attachアクセス権限ポリシー」画面で、ポリシー検索窓に「S3」と入力し、検索結果に表示される「AmazonS3FullAccess」ポリシーにチェックを入れ「次のステップ:タグ」をクリックします。

「タグの追加(オプション)」画面では、何も追加せず「次のステップ:確認」をクリックします。

「確認」画面で、ロール名に「S3FullAccessRole」と入力し、信頼されたエンティティとポリシーに問題がなければ「ロールの作成」をクリックします。ロールが作成できれば成功です。

動作確認
設定終了後、ロールの検証を行うt-suzukiでサインインし、上部のユーザー名から「スイッチロール」をクリックします。

「ロールの切り替え」画面で最初にメモしたアカウントIDと作成したロール名を入力します。今回、表示名は空白で色はピンクを選択し「ロールの切り替え」をクリックします。

「ロールの切り替え」のクリック後、上部のユーザー名がロール名となっていれば、ロールの切り替えが正しく行えています。

ロールの切り替え後、S3のコンソール画面を開きバケットの作成や削除、ファイルのアップロード等ができることを確認します。S3に関する操作を行えれば成功です。

IAMロールの解除
切り替えたロールを解除するには、上部のユーザー名から「<ユーザー名>に戻る」をクリックします。

IAMロールのセッション期間
IAMロールのデフォルトのセッション期間は1時間となっています。セッション期間の変更を行う場合は、IAMのコンソール画面を開き左側ペインの「ロール」から該当のロールを検索しクリックします。「概要」画面の「最大CLI/APIセッション期間」の右側にある「編集」をクリックし、リストから変更したい時間を選択後「変更の保存」をクリックします。
