LoginSignup
2
0

More than 1 year has passed since last update.

AWSのSAML認証でaws cliにログインする方法

Posted at

はいさい!ちゅらデータぬオースティンやいびーん!

概要

AWSのFederated Userシステム、SAML認証でログインした時に、aws cliにもその認証情報を反映させる方法を紹介します。

参考にした情報

SAMLResponseを取得する

まず、読者さんのAWS・SAMLログイン画面を開いてください。

筆者の場合、Googleアカウントを使用しておりますので、以下のような画面になります。
スクリーンショット 2022-07-20 12.20.57.png
スクリーンショット 2022-07-20 12.21.49.png

そこで以下の順番を踏まえてログインします。
ezgif.com-gif-maker (9).gif

  1. Chrome Dev Toolsを開く
  2. Networkのタブを開く
  3. Preserve Logにチェックを入れる

ezgif.com-gif-maker (10).gif

  1. AWSアカウントを選択する
  2. 「サインイン」をクリック
  3. Chrome Dev ToolsのNetworkタブの履歴の「Name」縦列に、samlのリクエストをクリックする
  4. METHODがPOSTであること、Statusが302であることを確認。
  5. Payloadのタブをクリックする
  6. SAMLResponseの中身をコピーする

このページをそのままにそっとしておきます。まだ必要な情報があります。

SAMLResponseを.logファイルに保存

上記でコピーしたファイルをローカル・ダイレクトリのsamlresponse.logというファイルに保存します。

  1. (上記の続き) SAMLResponseの中身をコピーする
  2. 新規ターミナルを開く
  3. 任意のダイレクトリに入る
  4. touch samlresponse.logを実行し、コピーしているテキストを保存するファイルを作成する
  5. vim samlresponse.logでVIMを開き、持っているテキストをペーストする
  6. esc :wqを実行し、samlresponse.logを保存する

ターミナルにaws stsのコマンドを準備する

以下のコマンドをターミナルにペーストします。

aws sts assume-role-with-saml --role-arn arn:aws:iam::ACCOUNTNUMBER:role/IAM_ROLE --principal-arn arn:aws:iam::ACCOUNTNUMBER:saml-provider/SAML_PROVIDER --saml-assertion file://samlresponse.log
キー 代入するべき値
ACCOUNTNUMBER AWSアカウント番号
IAM_ROLE 先ほどのSAMLのレスポンスに明記されているので下記にて説明します。
SAML_PROVIDER Googleであれば、Googleを代入

ACCOUNTNUMBER を代入する

先ほどのsamlのPOSTリクエストのPayloadSAMLResponseの下に、roleIndexという値があります。
スクリーンショット 2022-07-20 12.28.13.png
その中に書かれている数字がACCOUNTNUMBERになります。

こちらのテキストをコピーして代入します。

aws sts assume-role-with-saml --role-arn arn:aws:iam::1...0:role/IAM_ROLE --principal-arn arn:aws:iam::1...0:saml-provider/SAML_PROVIDER --saml-assertion file://samlresponse.log

IAM_ROLEを代入する

次は、同じくroleIndexからコピーしますが、今回はrole/の末尾の部分を取ります。
スクリーンショット 2022-07-20 12.28.13.png

aws sts assume-role-with-saml --role-arn arn:aws:iam::1...0:role/Gaaaaaaaaaaaaaaaaaaaar --principal-arn arn:aws:iam::1...0:saml-provider/SAML_PROVIDER --saml-assertion file://samlresponse.log

SAML_PROVIDERを代入する

最後に、SAML_PROVIDERに、Googleアカウントであれば、単にGoogleを代入します。

aws sts assume-role-with-saml --role-arn arn:aws:iam::1...0:role/Gaaaaaaaaaaaaaaaaaaaar --principal-arn arn:aws:iam::1...0:saml-provider/Google --saml-assertion file://samlresponse.log

代入した値で実行し、~/.aws/credentialsに保存する

最後に、集めた情報で上記のコマンドを実行し、その結果を持って~/.aws/credentialsを更新します。

認証情報を取得する

aws sts assume-role-with-saml --role-arn arn:aws:iam::11...0:role/Gaaaaaaaaaaaaaaaaaaaar --principal-arn arn:aws:iam::1...0:saml-provider/Google --saml-assertion file://samlresponse.log

すると、以下のような情報が表示されます。
スクリーンショット 2022-07-20 12.34.12.png

このターミナルはそのままにしておきます。

新規ターミナルで~/.aws/credentialsを開き、認証情報を保存

vim ~/.aws/credentialsを実行します。
[別名]というように、[]の中に認証情報のあだ名をつけます。
その下に、以下の項目を入れます。

STSキー camel_caseキー
AccessKeyId aws_access_key_id
SecretAccessKey aws_secret_access_key
SessionToken aws_session_token

結果、このようになります。

~/.aws/credentials
[saml]
aws_access_key_id = chura
aws_secret_access_key = tarou
aws_session_token = okinawa

まとめ

ここまで無事に実行できれば、aws cliを通常通りに使えるようになったはず!

SAMLでログインしてから、上記のSTSコマンドを実行するまでに5分以上経つと、アクセスを拒否されますのでご注意ください。

2
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
2
0