はじめに
Terraformを使ってAWSリソースを操作したかったので、その前準備としてTerraformのインストール、aws cliインストール、AWS IAM Identity Center(旧AWS SSO)で作業用ユーザーを作成し、AWS CLIからSSO認証できる状態にしました。その時のメモです。
1. AWS CLIをインストールする
macOSでは、Homebrewを使ってAWS CLIをインストールできます。
この記事では、実際に使用したHomebrew経由の方法でインストールします。AWS公式ドキュメントでは、macOS向けにインストールスクリプトやインストーラーを使う方法も案内されています。
| |
インストール後、バージョンを確認します。バージョン確認にはaws -vではなくaws --versionを使います。
| |
出力例:
| |
2. IAM Identity Centerでユーザーを作成する
AWS Management Consoleで、次の設定を行う。
- IAM Identity Centerで作業用ユーザーを作成する(マルチアカウントのアクセス許可 > AWSアカウントから作成)
- 対象のAWSアカウントにユーザーを割り当てる
- 必要なPermission setを割り当てる
検証目的なので、今回はAdministratorAccessを使用したが、実際の運用では必要最小限の権限を持つPermission setを用意すること。※権限の付け替えはまた別の機会に行ってみる。
これにより、日常の作業でAWSルートユーザーを使わずに済む。
3. AWS CLIでSSO認証を設定する
| |
対話形式で、次の項目を入力する。
| |
※sso start URLは、作成したユーザーでAWS account portalを開いた時のURL。

ブラウザが開いたら、IAM Identity Centerのユーザーでログインする。続いて、使用するAWSアカウントとPermission setを選択する。
最後に、分かりやすいプロファイル名を設定する。
| |
ここで指定するプロファイル名は任意の名前である。以降のコマンドでは、YOUR_PROFILE_NAMEを自分で設定した名前に置き換える。
4. 認証を確認する
| |
| |
5. SSOセッションが切れた場合
Permission Setのセッション時間は2時間に設定した。AWS CLIは、IAM Identity Centerへのログインセッションが有効な間はAWS認証情報を必要に応じて自動更新する。SSOログインセッション自体が切れた場合は、aws sso loginを再実行する。
| |
6. TerraformでAWSプロファイルを使う際には
| |
この状態でTerraformを実行すると、指定したプロファイルの認証情報が使用される。
セットアップチェックリスト
- AWS CLIをインストールし、
aws --versionでバージョンを確認した - IAM Identity Centerで作業用ユーザーを作成した
- 対象のAWSアカウントにユーザーを割り当てた
- 必要なPermission setを割り当てた
-
aws configure ssoでSSO設定を完了した -
aws sso login --profile YOUR_PROFILE_NAMEでログインした -
aws sts get-caller-identity --profile YOUR_PROFILE_NAMEで対象アカウントを確認した - 必要に応じて
AWS_PROFILEを設定した
設定時のポイント
- 日常の作業では、AWSルートユーザーを使用しない
- Permission setは、用途に必要な最小限の権限で作成する
- 検証で
AdministratorAccessを使った場合は、運用前に権限を見直す - Terraformを実行する前に、
aws sts get-caller-identityで対象アカウントを確認する - SSOセッションが切れた場合は、
aws sso loginを再実行する - アクセスキーやシークレットキーを発行・保存せず、SSOによる一時認証情報を利用する
- AWSアカウントID、SSO start URL、ARN、ユーザー情報などを公開リポジトリに載せない
理解度チェック
問1
IAM Identity Centerを使う主なメリットは何か?
答え
ユーザーとAWSアカウントへのアクセス権を一元管理し、長期的なアクセスキーを使わずに、一時的な認証情報でAWSへアクセスできること。問2
Permission setは何を定義するものか?
答え
ユーザーやグループがAWSアカウント内で持つ権限のセット。ユーザーやグループに割り当てることで、対象アカウントに必要なアクセス権を付与する。問3
AWS CLIでIAM Identity CenterのSSO設定を始めるコマンドは?
答え
| |
問4
aws sts get-caller-identityを実行すると何を確認できるか?
答え
現在のAWS認証情報で、どのユーザーまたはロールとして、どのAWSアカウントに接続しているかを確認できる。Terraformを実行する前のアカウント確認にも使える。問5
SSOセッションが切れた場合は、どのコマンドを実行するか?
答え
| |
問6
検証環境でAdministratorAccessを使った場合、運用前に何を見直すべきか?
答え
実際の用途に必要な最小限の権限を持つPermission setへ見直す。管理者権限を常用しないことが重要。参考リンク
- AWS CLIのインストール(Homebrew Formulae)
- AWS CLIのインストール・更新(AWS公式)
- AWS CLIでIAM Identity Centerを設定する(AWS公式)
- AWS IAM Identity CenterでユーザーまたはグループにAWSアカウントへのアクセス権を割り当てる(AWS公式)
- AWSアカウントへのアクセスを設定する(AWS公式)
- Permission setを作成する(AWS公式)
ひとこと
実際にIAM Identity Centerを使って、ユーザー作成を行い、Permission setの割り当てまでやってみたのは勉強になった。以前、AWSでMFAを強制する方法とIAM Identity Centerの使い分けで整理した内容を、今回はハンズオンで試した形になった。 最近、名前をよく聞くTerraformを勉強してみようというところからのスタートなので、今回作成したユーザーを使って、AWSリソースをいじってみるようにしたい。