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


この投稿について

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

要件

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

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

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

大まかな流れ

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

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

手順

アカウントの作成(オーナーアカウントの作成)

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

グループの作成とポリシー(権限)の適用

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ユーザーの作成(開発メンバー用のアカウント作成)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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