エンタープライズクラウド部の松田です。こんにちは。
IAM Identity Centerを使ったコマンドラインツールからのアクセスを試してみたので、方法や注意点などをまとめてみます。
※ちなみにAmazon Linux 2023で試しています。
発端
IAM Identity CenterのAWSアクセスポータルでは Command line or programmatic access
という項目がありますが、実際どんな感じで使うんだろう?と思ったのが発端です。
IAMのアクセスキーみたいなものも見えたので、これって大丈夫なの?と気になったのもあります。
※アクセスキーはあんまり作っちゃダメよというこの辺の話です。
アクセス方法
大きく分けると以下の2つがあります。
- AWS IAM Identity Center credentials を使う
- IAM Identity Centerで認証してコマンドラインツールを使えるようになります。
- 認証トークンの有効期限はありますが、自動更新してくれるため気にせず利用できます。
- 設定ファイルへのアクセスキー入力が一切不要です。
- 基本はこれを使うのがいいと思います。
- Short-term credentials を使う
- 期限付きのアクセスキーでコマンドラインツールを使えるようになります。
- 有効期限が1時間とかなり短いです。管理者目線では短い方が嬉しいですが、利用者目線では正直不自由さを感じます。これを使うならAWS CloudShell (※) でいいかなと思います。
AWS CloudShell:AWS CLI等コマンドラインツールの実行環境をブラウザベースで提供してくれるとても便利なサービスです。ワンクリックで起動できるうえ、利用料もかかりません。
AWS IAM Identity Center credentials を使う
方法を以下に記載していきます。
手順1. aws configure sso
を実行
対話形式で設定していきます。
今回は以下の通り入力しました。
- SSO session name (Recommended): my-sso
- SSO start URL [None]:
https://d-xxxxxxxxx.awsapps.com/start
- Identity Center コンソールの
AWS アクセスポータルの URL
を指定
- Identity Center コンソールの
- SSO region [None]: ap-northeast-1
- SSO registration scopes [None]: sso:account:access
手順2. 表示された URL にアクセス
ここで自動的にブラウザが起動し、AWSアクセスポータルへのサインインが求められるようです。
ブラウザを起動できない環境では、表示URLにアクセスするよう求められます。今回(EC2にリモート接続)はブラウザを起動できないので、手元のクライアントでブラウザを起動し、指定のURLにアクセスします。
手順3. 認証コードを入力
認証コードを入力します。
コードはURLと一緒にターミナルに表示されています。
手順4. AWSアクセスポータルにサインイン
AWSアクセスポータルのサインイン画面に進みますので、ユーザー名/パスワード(設定していればMFA)を入力してサインインします。
手順5. アクセスを許可
アクセス許可の確認が出てくるので、「Allow」で許可します。
手順6. 正常終了を確認
無事に成功しました。ここまで来ればブラウザは閉じてOKです。
手順7. アクセスするアカウントを選択
ターミナルに戻ると、Identity Center でアクセスを許可されているアカウントの一覧が表示されていますので、アクセスしたいアカウントを選択(カーソルキーで選択可)します。
※モザイクのせいで分かりづらいですが、以下の様になっています。
> アカウント名, メールアドレス (アカウントID) アカウント名, メールアドレス (アカウントID) アカウント名, メールアドレス (アカウントID)
手順8. アクセスに使用する許可セットを選択
選択したアカウントに対して利用できる許可セットの一覧が表示されるので、使いたい許可セットを選択します。今回は AWSAdministratorAccess
としました。
手順9. 選択したアカウント・許可セットのプロファイルを作成
手順7 と 8 で選択した内容でプロファイルを作成するので、以下の通り入力しました。
プロファイル名はデフォルトだと アカウントID_許可セット名
となり長くなりがちなので、短くした方が使いやすいかもですね。
- CLI default client Region [None]: ap-northeast-1
- CLI default output format [None]: json
- CLI profile name [AWSAdministratorAccess-xxxxxxxxxxxx]: audit-admin
動作確認
設定完了しましたので、試しに適当なコマンドを打って動作確認してみます。
--profile
オプションで、手順9 で設定したプロファイル名を付けるのを忘れないようにしましょう。
VPCがないので味気ないですが、エラーにならずレスポンスが返ってきているので問題ないですね。
Short-term credentials を使う
方法を以下に記載していきます。
※ちなみに下記画像の Option 2
の方法で試してみました。
手順. ローカルの認証情報にアクセスキーとセッショントークンを設定する
以下の通り、アクセスキーとセッショントークンをローカルの認証情報に設定します。
ちなみに認証情報ファイルの場所は ~/.aws/credentials
です。ファイルが無ければ自分で作るか、aws configure
を実行することでも作成できます。
動作確認
こちらも適当なコマンドで動作確認してみます。
問題ないですね。
ちなみに
時限アクセスキーはAWSアクセスポータルにサインインしてから1時間が有効期限となっているようでした。
なので、例えばポータルにサインインしてから50分後に設定をしたとすると、10分しか使えず、同じ設定をまた行う必要があります。
まとめ
良いなと思ったところを簡単にまとめて終わります。
- アクセスキーを一発行する必要がない
- 認証トークンは有効期限付き(管理者的にうれしい
- 認証トークンは自動更新できる(利用者的にうれしい
- プロファイルをカーソルと Enter だけで設定できる
1 については、以前は踏み台となるAWSアカウントからスイッチロールする方法が主流でしたが、それでも踏み台アカウントからアクセスキーを発行する必要がありました。IAM Identity Centerを使えば一切発行不要になるので、アクセスキー撲滅運動の大きな一助になりそうですね。
IDaaS としては発展途上な点も感じられますが、これまで運用やユーザーの作り込みでカバーしていた点を補ってくれる良いサービスだと思います。今後に期待しつつ、積極的に活用していきたいですね。
参考記事
SSO認証トークンの設定
AWS CLIの設定
松田 渓(記事一覧)
2021年10月入社。散歩が得意です。