0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TerraformでWebアプリ開発 - 5 おまけ

Last updated at Posted at 2025-06-25

前回の記事まででアプリケーション構築の全体を紹介しました。
第5回はTerraformとあまり関係ないですが、AWS開発で推奨されている開発方法なので、その辺りの設定を整備していきたいと思います。

目次

  1. 環境構築
  2. Terraformでインフラ構築.ver1
  3. Terraformでインフラ構築.ver2
  4. Terraformでインフラ構築.ver3
  5. おまけ ←ココ

5. おまけ

このセクションでは以下を行います。

  1. MFA設定
  2. SwitchRole設定

5-1. MFA設定

前回までAWS CLI,Terraformコマンドを叩いてきました。
MFA認証を追加することで、発行されたIAMユーザーに対して、APIの実行や後述のSwtichRoleを制限できます。

仮にIAMユーザーのクレデンシャルな情報が漏れた場合でも、MFAによる認証通過を突破しなければならないようになります。AWSを扱う上でよりセキュアな開発が実現できます。

MFAデバイスの割り当て
AWSのマネコンにログインします。
[1] IAMに移動し、セキュリティ認証情報タブをクリック
[2] 多要素認証 (MFA) セクションから「MFA デバイスの割り当て」をクリック
[3] 「デバイス名」を入力、「認証アプリケーション」を選択

image.png

[4] 認証アプリをデバイスにインストール

Chrome拡張機能: Authenticator for Google Authenticator
iOS/Androidアプリ「Google Authenticator」

[5] アプリインストール後にQRコードを表示し、QRコードをスキャン
(Chrome拡張機能は右上にスキャンボタンを押してスキャン)

image.png

image.png

[6] 2回連続表示されたMFAコードを入力し「MFAを追加」をクリック
正常に設定が完了すればOKです。

[7] IAMから「アクセスキーの作成」を発行
cli mfa認証に使うので「アクセスキー ID」と「シークレットアクセスキー」を控えておきます。

[8]aws-mfa のインストール
すでにAWS CLIのインストールが完了しているかと思います。
追加で、aws-mfaを簡単に操作できるツールがあるのでそれを利用します。

$ pip3 install aws-mfa --user

[9] mfaプロファイルの設定
aws-mfaと連携するために、プロファイル名は default-long-term としてます。

$ aws configure --profile default-long-term

控えていた「アクセスキー ID」と「シークレットアクセスキー」を設定し、

Default region name: ap-northeast-1
Default output format: json

と設定します。

[10] aws-mfaコマンド実行
前述の作成したMFAのARNをコピーし、

$ aws-mfa --profile default --device [MFA ARN]

を実行します。

INFO - Validating credentials for profile: default 
INFO - Your credentials have expired, renewing.
Enter AWS MFA code for device [MFA ARN] (renewing for 43200 seconds):

とデバイスのMFAコードを要求されるので、設定したデバイスのMFAコードをコピペし認証完了させます。
無事認証が通過すると

INFO - Fetching Credentials - Profile: default, Duration: 43200
INFO - Success! Your credentials will expire in 43200 seconds at: 2025-06-xx 00:37:24+00:00

これでMFA認証は完了です。

疎通確認用に以下のコマンドを打てば、 AWS CLI での実行ができていることが確認できます。

$ rm -rf ~/.aws/cli/cache && aws sts get-caller-identity --profile default
{
    "UserId": "ABCDEFGHIGKLMN",
    "Account": "6613987654321",
    "Arn": "arn:aws:iam::6613987654321":user/account"
}

なおこの設定以降は、MFA認証を通していなければ、トークンの期限が切れた後に上記のsts get-caller-identityを実行しても認証エラーになるので注意してください。

5-2. SwitchRole設定

別のアカウントのロールに切り替えてAWSにアクセスする方法です。
例えば、ロール単位でservice-deployerなどがあればそれに切り替えて操作できますし、sandbox1``sandbox2``service-prodなどをAWS Organizationsからアカウント設定することで、それぞれのアカウント環境にリソースを展開することができます。
これを実現するのは簡単で、切り替え先のロールやアカウント情報が必要になります。

ロールであれば自身のアカウントからロール情報を取得します。
AWSアカウントであれば、AWS Organizationsから「招待」に移動し、「AWSアカウントの作成」を選択し、アカウントを作成します。
image.png
image.png

あとはそれぞれの情報をプロファイルに設定すれば完了です。

# sandbox1アカウントを作成した場合、以下のコマンドを実行
aws configure set profile.sandbox1.role_arn arn:aws:iam::03387654321:role/SwitchRole
aws configure set profile.sandbox1.source_profile default

CLI操作

$ aws sts get-caller-identity --profile sandbox1

ブラウザ操作
以下の拡張機能をインストールし、切り替えたいロールを設定することでマネコン上からすぐにアカウントを切り替えることができます。

[1] 拡張機能をインストールした後に、「configuration」を選択
[2] 切り替えたい情報を設定して保存

# ロール
[service-deployer]
aws_account_id = 6613987654321
role_name = switchrole-test
region = ap-northeast-1
color = ccccdd

# AWSアカウント
[sandbox1]
aws_account_id = 03387654321
role_name = OrganizationAccountAccessRole
region = ap-northeast-1
color = eac98f

[3] マネコンを表示させて拡張機能をクリック

ロールやアカウントが表示されクリックで切り替えることができます。
image.png

最後に

ここまで5回にわたってアプリケーション構築を紹介しました。
これからTerraformを始められる方、IaCに興味がある方の参考になればと思います。

他の記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?