【詳しく解説】同じ権限を持つIAMユーザを複数作成する

## 【はじめに】

IAMを作成するときに、IAMグループを作成して所属させることで同じ権限を複数ユーザに付与することができるということを以前の記事で紹介しました。

https://www.kyonakablog.com/aws/steps-to-create-iam-user/

しかし、複数のIAMユーザに同じ権限を付与する際に一つだけ気になることがあります。

それは、**複数のIAMユーザを作成する手間**です。

今回はAWS CLIを利用して同じ権限を持つIAMユーザを一度に複数作成する方法を解説していきます。


### 本記事の内容

- AWS CLIを利用するメリットとは？
- AWS CLIを実行する環境はどこ？
- 実際に複数のIAMユーザをまとめて作成してみる
- 作成したユーザを削除する（リソースの削除）

## 【AWS CLIを利用するメリットとは？】

AWS CLIを利用するメリットは、大きくは2つあります。

ひとつ目は、何度も繰り返す操作をスクリプトとしてまとめて自動化することで業務を効率化し、また手作業による人的ミスを減らすことができることです。

そしてもう一つは、AWSサービスを統合・連携し、業務フローを柔軟に構築できることです。


## 【AWS CLIを実行する環境はどこ？】

一番簡単にAWS CLIを実行できる環境は、AWSサービスである「CloudShell」です。

管理コンソールの検索バーで「CloudShell」と入力して選択してクリックすると、ブラウザ上にターミナルが起動します。

[![Image from Gyazo](https://i.gyazo.com/5cd6a28afe183583572e1a014b6da575.png)](https://gyazo.com/5cd6a28afe183583572e1a014b6da575)

[![Image from Gyazo](https://i.gyazo.com/7e288ed640f66ba2e494e2cf0c84dc49.png)](https://gyazo.com/7e288ed640f66ba2e494e2cf0c84dc49)

今回はCloudShellを利用して、IAMユーザを作成していきます。

https://docs.aws.amazon.com/ja_jp/cloudshell/latest/userguide/welcome.html


## 【実際に複数のIAMユーザをまとめて作成してみる】

 今回は、「**10人分のIAMユーザをパワーユーザ権限を持つ開発グループ（Dev）に追加する**」というケースで実際にAWS CLIを使用して作成していきます。

いきなりですが、すべてのコマンドは以下の通りです。

```Shell
$ for((i=0;i<10;i++)); do
> aws iam create-user --user-name "DevUser$i"
> done

$ aws iam create-group --group-name Dev

$ aws iam attach-group-policy --group-name Dev --policy-arn arn:aws:iam::aws:policy/PowerUserAccess

$ for((i=0;i<10;i++)); do
> aws iam add-user-to-group --user-name "DevUser$i" --group-name Dev
> done
```

各コマンドを手順に沿って解説していきます。

### 手順1：10人分の権限なしのユーザを作成する | create-user

IAMユーザを作成するには、`iam create-user`コマンドを使用します。

- --user-name：ユーザ名を指定

```Shell
$ for((i=0;i<10;i++)); do
> aws iam create-user --user-name "DevUser$i"
> done
```

**出力結果**

```JSON
{
    "User": {
        "Path": "/",
        "UserName": "DevUser0",
        "UserId": "*********************",
        "Arn": "arn:aws:iam::************:user/DevUser0",
        "CreateDate": "2022-07-17T13:52:02+00:00"
    }
}
```

**ポイント**

- 複数のユーザを作成する場合は、Linuxの`for`コマンドを使用して回数を指定して繰り返し処理を行います。

```Shell
for((i=0;i<10;i++)); do;
>コマンド（iが０から9まで10回処理を繰り返す）
>done
```

https://atmarkit.itmedia.co.jp/ait/articles/1806/22/news028.html

IAMのダッシュボードで確認してみます。

**コマンド実行前**

[![Image from Gyazo](https://i.gyazo.com/bb3ec382280b73d80b7f5de4fb423267.png)](https://gyazo.com/bb3ec382280b73d80b7f5de4fb423267)

**コマンド実行後**

[![Image from Gyazo](https://i.gyazo.com/435af68180c41c043b33de78da2668ae.png)](https://gyazo.com/435af68180c41c043b33de78da2668ae)

[![Image from Gyazo](https://i.gyazo.com/fe1d4fe60df334ed96522e89b5c916d8.png)](https://gyazo.com/fe1d4fe60df334ed96522e89b5c916d8)

今回のコマンドでは各ユーザにコンソールへのログインパスワードを設定していないため、各ユーザが個別にパスワードを設定する必要があります。


### 手順2：開発グループ（Dev）を作成する | create-group

IAMグループを作成するには、`iam create-group`コマンドを使用します。

- --group-name：グループ名を指定

```Shell
$ aws iam create-group --group-name Dev
```

**出力結果**

```
{
    "Group": {
        "Path": "/",
        "GroupName": "Dev",
        "GroupId": "*********************",
        "Arn": "arn:aws:iam::************:group/Dev",
        "CreateDate": "2022-07-17T13:55:41+00:00"
    }
}
```

IAMのダッシュボードで確認してみます。

**コマンド実行前**

[![Image from Gyazo](https://i.gyazo.com/eedcf7b0396218861cb49e7f73745256.png)](https://gyazo.com/eedcf7b0396218861cb49e7f73745256)

**コマンド実行後**

[![Image from Gyazo](https://i.gyazo.com/68ae1b7181cc77a1dc0f742089d4d240.png)](https://gyazo.com/68ae1b7181cc77a1dc0f742089d4d240)

グループの作成を実行しただけなので「許可」が未定義となっており、アクセス権限の付与がされていないことがわかります。
また、ユーザの追加もまだしていないため、「ユーザー」の数も０となっています。


### 手順3：開発グループ（Dev）にパワーユーザ権限（PowerUserAccess）を付与する | attach-group-policy

IAMグループにアクセス権限を付与するには、`iam attach-group-policy`コマンドを使用します。

- --group-name：グループ名を指定
- --policy-arn：付与するポリシーのARN（リソース名）を指定

ポリシーARNはIAMのダッシュボードの画面左の「アクセス管理」→「ポリシー」を選択し、対象のポリシーの詳細から確認することができます。

[![Image from Gyazo](https://i.gyazo.com/dbf5f542c25e143cbdedd8cecb31d1f1.png)](https://gyazo.com/dbf5f542c25e143cbdedd8cecb31d1f1)

```Shell
$ aws iam attach-group-policy --group-name Dev --policy-arn arn:aws:iam::aws:policy/PowerUserAccess
```

IAMのダッシュボードで確認してみます。

[![Image from Gyazo](https://i.gyazo.com/45e3b069aee82e95838aef014a688b81.png)](https://gyazo.com/45e3b069aee82e95838aef014a688b81)

「許可」が定義済みに変更されています。

[![Image from Gyazo](https://i.gyazo.com/7e98cc4a0e8c71ca1e58fc5992f9734c.png)](https://gyazo.com/7e98cc4a0e8c71ca1e58fc5992f9734c)

詳細を確認すると「PowerUserAccess」が許可されています。


### 手順4：作成したユーザを開発グループ（Dev）というユーザグループに追加する | add-user-to-group

IAMユーザをグループに追加するには、`iam add-user-to-group`コマンドを使用します。

- --user-name：ユーザ名を指定
- --group-name：グループ名を指定

```Shell
$ for((i=0;i<10;i++)); do
> aws iam add-user-to-group --user-name "DevUser$i" --group-name Dev
> done
```

IAMのダッシュボードで確認してみます。

[![Image from Gyazo](https://i.gyazo.com/b769f535f50e1d35fb560de99b66c63c.png)](https://gyazo.com/b769f535f50e1d35fb560de99b66c63c)

[![Image from Gyazo](https://i.gyazo.com/29df315722a0c55d216010251e2cb264.png)](https://gyazo.com/29df315722a0c55d216010251e2cb264)

「ユーザー」の数が10となっていて、作成したユーザがグループに追加されています。

## 作成したユーザを削除する（リソースの削除）

最後に、作成したユーザとグループを削除します。

ユーザを削除するには、まずはじめに所属しているグループから外します。

グループからユーザを外すには、`iam remove-user-from-group`コマンドを使用します。

- --group-name：グループ名を指定
- --user-name：ユーザ名を指定

```Shell
$ for((i=0;i<10;i++)); do
> aws iam remove-user-from-group --group-name Dev --user-name "DevUser$i"
> done
```

ユーザを削除するには、`iam delete-user`コマンドを使用します。

- --user-name：ユーザ名を指定

```Shell
$ for((i=0;i<10;i++)); do
> aws iam delete-user --user-name "DevUser$i"
> done
```

グループを削除するには、 アタッチされているポリシーを外します。

グループからポリシーを外すには、`detach-group-policy`コマンドを使用します。

- --group-name：グループ名を指定
- --policy-arn：ポリシーのARN（リソース名）を指定

```Shell
$ aws iam detach-group-policy --group-name Dev --policy-arn arn:aws:iam::aws:policy/PowerUserAccess
```

グループを削除するには、`iam delete-group`コマンドを使用します。

- --group-name：グループ名を指定

```Shell
$ aws iam delete-group --group-name Dev
```

これで作成したユーザとグループを削除することができました。

## 【さいごに】

今回はAWS CLIを利用して同じ権限を持つIAMユーザを一度に複数作成する方法を解説しました。

最初はコンソール画面の方が操作しやすいですが、今後インフラ環境を構築していきたいと思っているのであればAWS CLIが使えることが必須になってくるでしょう。

無料枠が使用できる期間で、できる限りAWS CLIの操作をしてみるのが是非おすすめです。