AWSでチーム開発する際のIAMによるアカウント設定方法

#この投稿について

インフラにAWSを使ってチーム開発をすることになったので、その際の設定手順をまとめます。

#要件

今回は以下の要件を満たすようにアカウント設定を行います。

* Admin権限をもつのは、オーナーアカウントだけ。
* 開発メンバーはAdmin権限以外の権限をすべて与えられる。
* 開発メンバーは自分のパスワード変更が行える（通常はAdmin権限をもったアカウントのみが可能）。

ポイントは3つめのパスワード変更権限を開発メンバーにも与えることです。

#大まかな流れ

大まかな流れとしては、以下のようになります。

1. アカウントの作成（オーナーアカウントの作成）
2. グループの作成とポリシー（権限）の適用
3. ユーザーの作成（開発メンバー用のアカウント作成）
4. グループにユーザーを紐付け


#手順

##アカウントの作成（オーナーアカウントの作成）

アカウント作成は以下のページ案内に従って進むだけでOKです。

http://aws.amazon.com/jp/register-flow/


##グループの作成とポリシー（権限）の適用

オーナーアカウントでサインインすると以下のようなAWSのサービス一覧が表示された画面になるはずです。
アカウント設定関連はこの中の「Identity & Access Management (以降、IAMと略記)」で行います。

![zz_スクリーンショット_2015-02-05_18_02_08.png](https://qiita-image-store.s3.amazonaws.com/0/47881/a4cab098-1a58-056a-04ae-bf11ae15119b.png)

IAMをクリックすると以下のような画面になります。

![zz_スクリーンショット_2015-02-05_18_03_51.png](https://qiita-image-store.s3.amazonaws.com/0/47881/63fe78e8-8c1a-14b1-e3df-bf3ff83a741d.png)

ここにサインイン用URLが表示されます。これは後で開発メンバーに教えてあげる必要があります。

グループの作成は左メニューの「Groups」から行います。

![スクリーンショット 2015-02-05 18.04.51.png](https://qiita-image-store.s3.amazonaws.com/0/47881/5fe807be-695b-39b5-695e-1c52146444a8.png)

この段階ではグループがない状態なので、「Create New Group」からグループの作成に進みます。

![スクリーンショット 2015-02-05 18.05.02.png](https://qiita-image-store.s3.amazonaws.com/0/47881/97d89c49-10e9-1d81-3bc4-b0359b09ca78.png)

ここでは、開発メンバー用のグループを「developer」という名前で作ります。

![zz_スクリーンショット_2015-02-05_18_05_29.png](https://qiita-image-store.s3.amazonaws.com/0/47881/937fb0de-5e64-6ecf-5e2b-081a5cb1561c.png)


次にグループにポリシー（権限）を付与していきます。今回は開発グループにはAdmin権限以外の権限をすべて与えるので、「Power User Access」というのを選択します。

![スクリーンショット 2015-02-05 18.05.51.png](https://qiita-image-store.s3.amazonaws.com/0/47881/2fa65900-4bbd-f74f-d48c-a5f44d809b8a.png)

ポリシーの詳細が表示されます。そのまま次にすすみます。


![スクリーンショット 2015-02-05 18.06.44.png](https://qiita-image-store.s3.amazonaws.com/0/47881/389c453f-4245-95b7-2333-314622b06bfb.png)

このような確認画面が表示されるので、「Create Group」を押すと、グループが作成されます。


![スクリーンショット 2015-02-05 18.07.15.png](https://qiita-image-store.s3.amazonaws.com/0/47881/1a01353d-ba6b-03fb-03e4-1461194c7806.png)

新しくdeveloperという名前のグループが作成されていることが確認できます。

###パスワード変更権限の付与

次にこのdeveloperグループにパスワードを変更する権限を付与します。

![zz_スクリーンショット_2015-02-05_18_07_30.png](https://qiita-image-store.s3.amazonaws.com/0/47881/ddf4683e-68dc-6df2-853b-3f66214c0365.png)

developerグループの詳細ページで、「Attach Another Policy」をクリックします。

![zz_スクリーンショット_2015-02-05_18_07_56.png](https://qiita-image-store.s3.amazonaws.com/0/47881/5cefef41-9dcf-996b-9742-559b63edef02.png)

続いて「Custom Policy」を選択します。

![スクリーンショット 2015-02-05 18.10.48.png](https://qiita-image-store.s3.amazonaws.com/0/47881/952250ed-85bb-9489-7e4b-2996fa90468d.png)

権限設定フォームが表示されるので「Policy Name」には任意の名前を付け（ここでは「password_change」とした）、「Policy Document」には以下をそのまま入力します（コピペしてください）。

```
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "iam:ChangePassword",
      "iam:GetAccountPasswordPolicy"
    ],
    "Resource": "*"
  }]
}
```

ここまで入力し、「Apply Policy」をクリックすればパスワード変更権限が付与されます。

















##ユーザーの作成（開発メンバー用のアカウント作成）

次に開発メンバーのアカウントをそれぞれ作っていきます。
メンバーの作成はグループ作成と同じくIAMサービスから行います。左メニューの「Users」をクリックします。


![zz_スクリーンショット_2015-02-05_18_11_13.png](https://qiita-image-store.s3.amazonaws.com/0/47881/f3b057f1-c034-fcd9-51cf-6ffc49fbb692.png)

初期状態では、オーナーアカウントのユーザーだけが登録されているのが確認できます。
「Create New Users」からユーザーの登録に進みます。

![スクリーンショット 2015-02-05 18.14.25.png](https://qiita-image-store.s3.amazonaws.com/0/47881/3885b27e-9571-b27e-13e4-98fc8ec5b191.png)

今回は「dog」と「cat」という名前で２ユーザーを登録します。

![zz_スクリーンショット_2015-02-05_18_16_09.png](https://qiita-image-store.s3.amazonaws.com/0/47881/a00bc222-1274-fdae-f1b0-60c4229402ed.png)

「Download Credentials」で各ユーザー分の証明書をダウンロードしておきます。この証明書はAWSのAPIを使う際に利用するので、後で各メンバーに教えてあげます。


![zz_スクリーンショット_2015-02-05_18_16_23.png](https://qiita-image-store.s3.amazonaws.com/0/47881/da11237a-993c-855a-7906-f1639e3ef306.png)

ここまでで、dogとcatというユーザーが登録されたのが確認できます。

次にユーザーに初期パスワードを設定していきます。

![zz_スクリーンショット_2015-02-05_18_17_13.png](https://qiita-image-store.s3.amazonaws.com/0/47881/cdb0f213-33cf-5a27-ba23-82fba2859530.png)

ユーザー詳細画面に入ると、このような画面になるので、「Manage Password」をクリックします。

![zz_スクリーンショット_2015-02-05_18_19_05.png](https://qiita-image-store.s3.amazonaws.com/0/47881/10e6e74e-d63c-ae33-a70d-0c5aa22ed75f.png)

任意の初期パスワードを入力し（後でメンバーに教えるので忘れないように！）、「Require user to create ....」にもチェックを入れます。これにチェックを入れることで、このユーザーがログインした際に初期パスワードを変更するように自動で求められるようになります。

この初期パスワードの設定を作成したユーザーそれぞれに行います。


##グループにユーザーを紐付け

続いてはdeveloperグループにユーザーを紐付けていきます。

![zz_スクリーンショット_2015-02-05_18_20_45.png](https://qiita-image-store.s3.amazonaws.com/0/47881/311fbc01-45b9-2543-ddb0-6182669138f3.png)

developerグループの詳細ページに入り、「Add Users to Group」をクリックします。


![zz_スクリーンショット_2015-02-05_18_20_58.png](https://qiita-image-store.s3.amazonaws.com/0/47881/a3989a2b-d88f-2208-6ce6-939063613258.png)


グループに追加するユーザーを選択する画面になるので、catユーザーとdogユーザーにチェックをいれて追加を実行します。


以上で、アカウントの設定は完了です。


#開発メンバーに教える情報

ここまでのアカウント設定が完了したら、以下の情報を開発メンバーに教えてあげます。

* サインインURL
* ユーザー名（今回の例でいうとcatとかdog）
* 初期パスワード
* Credentials（ユーザー作成の際にダウンロードした証明書。AWSのAPIを利用する際に必要）

以上の情報で、各開発メンバーはサインインURLにアクセスし、ユーザー名と初期パスワードを入れることで、AWSのコンソールにログイン可能となります。

![zz_スクリーンショット_2015-02-05_18_22_12.png](https://qiita-image-store.s3.amazonaws.com/0/47881/51b48146-0004-ddf6-2313-1f56dd69daf8.png)