AWSのIAMユーザー作成をCLIで解説してみる

みなさん、AWS CLI使ってますか?

AWSのマネジメントコンソール上での操作は、ほぼ全てAPIとCLIが用意されています。
(参考)AWSよくある質問「マネジメントコンソールは、AWS CLI および API と同じ機能を共有していますか?」

運用自動化の第一歩として、CLIを使おうぜ!みたいな雰囲気もあったりしますね。

というわけで、IAMユーザー作成をCLIでやってみましょう。

目次
  1. GUI
  2. CLI
  3. まとめ

GUI

5ステップでできます、って感じですね。

ユーザー詳細の設定

  • ユーザー名:任意
  • アクセスの種類:
    • プログラムによるアクセス:チェックあり
    • AWSマネジメントコンソールへのアクセス:チェックあり
  • コンソールのパスワード:自動生成パスワード
  • パスワードのリセットが必要:チェックあり

    ※「ユーザーは、自動的に IAMUserChangePassword ポリシーを取得」という内容に注目

ユーザーをグループに追加

事前に用意しておいた2つのグループへ追加します。

タグの追加(オプション)

あまりIAMユーザーにはタグ付けはしませんが、試しに組織と場所を追加してみます。

確認

確認画面が出ます。

結果

作成結果として、アクセスキー、シークレットアクセスキー、パスワードが表示&ダウンロードできます。

CLI

いきなりですが、上記手順のすべてのコマンドです。

AWS CLI

aws iam create-user --user-name ******** --tags Key=department,Value=******** Key=location,Value=**********
 
aws iam create-access-key --user-name ********
aws iam create-login-profile --user-name ******** --password '************' --password-reset-required
aws iam attach-user-policy --user-name ******** --policy-arn arn:aws:iam::aws:policy/IAMUserChangePassword
 
aws iam add-user-to-group --user-name ******** --group-name ********
aws iam add-user-to-group --user-name ******** --group-name ********

create-user

GUIだとまとめて色々と設定できるんですが、ユーザー作成はcreate-userだけでは、まったく完結しません・・・

AWS CLI

aws iam create-user --user-name ******** --tags Key=department,Value=******** Key=location,Value=********

create-access-key

アクセスキーは専用のコマンドが用意されてます。

AWS CLI

aws iam create-access-key --user-name ********

ここでアクセスキーが出力されます。

出力結果

{
    "AccessKey": {
        "UserName": "********",
        "AccessKeyId": "AKIA****************",
        "Status": "Active",
        "SecretAccessKey": "****************************************",
        "CreateDate": "2020-07-09T07:59:08+00:00"
    }
}

create-login-profile、attach-user-policy

パスワードはcreate-login-profileで設定します。

attach-user-policyで、GUIの「ユーザーは、自動的に IAMUserChangePassword ポリシーを取得」相当を設定します。
CLIだと上記のcreate-login-profile –password-reset-requiredだけでは、パスワードの変更ができないんですね。罠です。

AWS CLI

aws iam create-login-profile --user-name ******** --password '************' --password-reset-required
aws iam attach-user-policy --user-name ******** --policy-arn arn:aws:iam::aws:policy/IAMUserChangePassword

add-user-to-group

グループの追加です。add-user-to-groupコマンドでは、一度に1つのグループしか設定できないので、複数グループの時はその分コマンドを実行する必要があります。

AWS CLI

aws iam add-user-to-group --user-name ******** --group-name ********
aws iam add-user-to-group --user-name ******** --group-name ********

これでGUIと同等の設定ができました。

まとめ

いかがでしたか?

例えば、100名分のIAMユーザー作成なんかは、GUIではやり切れませんよね(そもそもそういった要件がおかしい)。
ちょっと頑張ってCLIを調べれば、なんとかやれそうな気がしますよね。

また、ポチポチGUIから実施している操作ですが、それぞれの設定はCLIでやってみると、意外と細かくCLIが分割されてます。
AWSの中身がこうなってるんだな~という気づきにもなりますね。

さて、今回のIAMユーザー作成ですが、どのCLIを使うかはちゃんとドキュメントに記載があります。
(参考)AWSユーザーガイド「IAM ユーザーの作成(AWS CLI)」

が、実際のコマンドはCLIの方のドキュメントを見ろということになってます。
実際にドキュメントを見て、すんなりと書けるやつもあれば、例えば複数タグの書き方なんかは、書いてあるようで書いてなくて、ちょっとつまづいたりします。
(参考)AWS CLI Command Reference

というわけで、まずはAWSのドキュメントを見てみて、あとはトライアンドエラーでやってくしか無さそう(無かった)です。