見出し画像

【AWS・credential hepler】get session tokenを発行する方法(MFA認証・多要素認証)


前提.session tokenに設定したいユーザーに多要素認証が設定されている事

「IAM」>「ユーザー」>「(ユーザー名選択)」>「セキュリティ認証情報」>「多要素認証(MFA)」欄

↑図のように、「識別子」欄に設定されていればOK。

手順1.~.aws\credentialsを編集する

■credentialsファイルの中身
[credentials_name]    #任意の名称
aws_access_key_id=*********** #自身が設定した文字列
aws_secret_access_key=******* #自身が設定した文字列

手順2.MFAトークンを取得する

まず、コマンドプロンプトを開く。

次に、下記コマンドを打つ。

aws sts get-session-token
--serial-number arn:aws:iam::000000:mfa/UserName(多要素認証の識別子)
--token-code 999999(多要素認証登録時に使用したWinAuthなどのアプリ)
--profile credentials_name(手順1で書いた”#任意の名称”)

これに成功すると下記の結果が得られます。

{
  "Credentials": {
    "AccessKeyId": "XXXXXXXXXXXX",
    "SecretAccessKey": "YYYYYYYYYYYYYY", 
    "SessionToken": "ZZZZZZZZZZZZZZZZZZZZZZZZ",
    "Expiration": "yyyy-mm-dd"
  }
}

補足.エラーが出た場合

An error occurred (AccessDenied) when calling the GetSessionToken operation: MultiFactorAuthentication failed, unable to validate MFA code. Please verify your MFA serial number is valid and associated with this user.

このエラーが出た場合、”--profile"で設定しているアクセス情報とMFA認証コードが異なっているので、profileとMFA認証コードの正しい組み合わせで指定すればOKです。

An error occurred (AccessDenied) when calling the GetSessionToken operation: MultiFactorAuthentication failed with invalid MFA one time pass code.

このエラーが出た場合、"--profile"に対応するMFA認証コードが違うか古いことが原因なので、WinAuthなどのアプリで認証コードを最新化したものを指定すればOKです。

手順3.MFAトークンをcredentialsファイル内に書き込む

■credentialsファイル内
[credentials_name_token]    #任意の名称
aws_access_key_id=*********** #手順2で取得した ”AccessKeyId”
aws_secret_access_key=******* #手順2で取得した ”SecretAccessKey”
aws_session_token=*********** #手順2で取得した "SessionToken"

これでMFA認証コードのSessionToken化は完了です。

具体的な活用例

上記で設定したSessionTokenは実際、どのように利用されるのか。一例を以下に示します。

■状況
VPCをバッチから作成したい時
■使い方
command prompt>aws ec2 create-vpc
--cidr-block 10.0.0.0/16
--query Vpc.VpcId
--output text
--tag-specification ResourceType=vpc
--region us-east-1
--profile credentials_name_token #★

★の部分をご覧ください。
手順3で指定したcredentialsの名称が引数に渡されています。

AWSマネジメントコンソール上で作業するなら今回の設定の効果はあまり感じられませんが、例えばこういった形でコマンドからEC2を起動させたりなどする場合や、credential helperが使えないなどの場合に、今回の手法であるSessionTokenが活用できます。

有効期限を延ばす方法

下記公式には「 --duration-seconds」を付与することで有効期限を伸ばすことができるとありました。

【MFA トークンを使用して、AWS CLI を通じて AWS リソースへのアクセスを認証するにはどうすればよいですか?】

もしかしたら企業のIT部門などで有効期限を予め固定されているかもしれないので、もしできない場合は所属組織のIT管理者に連絡してみるといいかもしれません。



目次へ戻る

この記事が気に入ったらサポートをしてみませんか?