【AWS IAM Identity Center】コマンドラインツールからアクセスするときのアレコレ

記事タイトルとURLをコピーする

エンタープライズクラウド部の松田です。こんにちは。

IAM Identity Centerを使ったコマンドラインツールからのアクセスを試してみたので、方法や注意点などをまとめてみます。

※ちなみにAmazon Linux 2023で試しています。

発端

IAM Identity CenterのAWSアクセスポータルでは Command line or programmatic access という項目がありますが、実際どんな感じで使うんだろう?と思ったのが発端です。

IAMのアクセスキーみたいなものも見えたので、これって大丈夫なの?と気になったのもあります。

※アクセスキーはあんまり作っちゃダメよというこの辺の話です。

docs.aws.amazon.com

アクセス方法

大きく分けると以下の2つがあります。

  1. AWS IAM Identity Center credentials を使う
    • IAM Identity Centerで認証してコマンドラインツールを使えるようになります。
    • 認証トークンの有効期限はありますが、自動更新してくれるため気にせず利用できます。
    • 設定ファイルへのアクセスキー入力が一切不要です。
    • 基本はこれを使うのがいいと思います。
  2. Short-term credentials を使う
    • 期限付きのアクセスキーでコマンドラインツールを使えるようになります。
    • 有効期限が1時間とかなり短いです。管理者目線では短い方が嬉しいですが、利用者目線では正直不自由さを感じます。これを使うならAWS CloudShell (※) でいいかなと思います。

AWS CloudShell:AWS CLI等コマンドラインツールの実行環境をブラウザベースで提供してくれるとても便利なサービスです。ワンクリックで起動できるうえ、利用料もかかりません。

docs.aws.amazon.com

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 を指定
  • 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分しか使えず、同じ設定をまた行う必要があります。

まとめ

良いなと思ったところを簡単にまとめて終わります。

  1. アクセスキーを一発行する必要がない
  2. 認証トークンは有効期限付き(管理者的にうれしい
  3. 認証トークンは自動更新できる(利用者的にうれしい
  4. プロファイルをカーソルと Enter だけで設定できる

1 については、以前は踏み台となるAWSアカウントからスイッチロールする方法が主流でしたが、それでも踏み台アカウントからアクセスキーを発行する必要がありました。IAM Identity Centerを使えば一切発行不要になるので、アクセスキー撲滅運動の大きな一助になりそうですね。

IDaaS としては発展途上な点も感じられますが、これまで運用やユーザーの作り込みでカバーしていた点を補ってくれる良いサービスだと思います。今後に期待しつつ、積極的に活用していきたいですね。

参考記事

SSO認証トークンの設定

docs.aws.amazon.com

AWS CLIの設定

docs.aws.amazon.com

松田 渓(記事一覧)

2021年10月入社。所属はエンタープライズクラウド部技術1課。
最近普通二輪免許を取得しました。