0
0

Cloud9からTerraformでIAMロールを作成時に『creating IAM Role (): InvalidClientTokenId: The security token included in the request is invalid』が出たので調査

Posted at

はじめに

terraformからrole作成時に下記のエラーが出たので調査してみました。

creating IAM Role (): InvalidClientTokenId: The security token included in the request is invalid

実行環境

  • cloud9
  • terraform

結論

CLIクレデンシャルが設定できていませんでした。
。。。。がオチだと思っていたのですが、

実際のところ、
Cloud9 インスタンスプロファイルをデフォルトから他のIAMロールに変更』が必要だったみたいです。

でもせっかく調査したので、CLIクレデンシャルのアレコレまとめ

  • マネコンからログインしているIAMユーザのアクセスキーID&シークレットアクセスキーの取得

  • cloud9のターミナル上で設定

$ aws configure
AWS Access Key ID [None]: {アクセスキーID}
AWS Secret Access Key [None]: {シークレットアクセスキー}
Default region name [None]: ap-northeast-1
Default output format [None]: json
  • defaultの認証情報プロファイルの確認
$ cat credentials
[default]
aws_access_key_id = {アクセスキーID}
aws_secret_access_key = {シークレットアクセスキー}

➡接続できない場合は、credentialsにaws_session_token=XXXXXXXXXを追記する
  • ~/.aws/configに認証情報のプロファイルを設定
[profile sample]
region=ap-northeast-1
mfa_serial={MFAが有効になっている個人アカウントのiamロール}
role_arn={スイッチしたい別アカウントのiamロール}
source_profile=default

解決策

  1. cloud9のインスタンスプロファイルの確認
    デフォルトのインスタンスプロファイル(AWSCloud9SSMInstanceProfile)が割り当てられている。
    ➡デフォルトのIAMロールだと権限が足りないためIAM権限の設定ができない

  2. Cloud9からAWS managed temporary credentialsのスイッチを「OFF」

  3. IAMロールを作成 
    EC2タイプの『AdministratorAccess』を選択

  4. EC2インスタンス(Cloud9)のIAMロールを2で作ったものに変更

  5. ロールの変更を反映させるためにEC2インスタンスを再起動

(追記)
あるいは、既存のIAMロールに以下のポリシーを追加してもよさそうです。

  • PowerUserAccess
  • IAMFullAccess

強い権限を与えているため、セキュリティ的にはアレですが、ひとまずこれが動くようになりました。適切な権限付与等は今後引き続き勉強してみようと思います。

参考

https://dev.classmethod.jp/articles/aws-cli_initial_setting/
https://qiita.com/mokkos/items/7de9793ea37528e11e3e
https://go-journey.club/archives/17029

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