AWS OrganizationsとIAMユーザの設定

去年のICFPCの時に、AWS Organizationsを使って自分のメインアカウントの支払い情報を使いつつ、計算資源は完全に独立させる(メインアカウントを他の人に触ってほしくないため)という設定をした……ということがICFPC2018の感想に書いてあるんだけど、どうやって設定したのかが全く書き残されていなくて困った。

osak.hatenablog.jp

で、過去の自分ができたんだったら今の自分にできないことはないだろうと思ってボタンをポチポチしたらできたので、今後のために書き残しておく。

Organizationの下にアカウントを作る

まず、AWS Organizaitons (https://console.aws.amazon.com/organizations/home)を開く。画面はこんな感じ。

f:id:osa_k:20190527154858p:plain

"Add Account" と書いてあるボタンをクリックすると、Invite AccountかCreate Accountか聞かれる。ここではCreate Accountを選ぶことにする。すると新しいアカウントの名前とメールアドレスを聞かれるので、適当な名前と自分が管理している適当なアドレスを指定する。

これでアカウントは作成されるが、特にこの画面からログインできる訳ではないので、一旦ログアウトするか、Incognitoでもう1枚ブラウザを開いて、さっき指定したメールアドレスでログインする。パスワードを聞かれるが、当然そんなものは設定していないので "Forget Password" からパスワードをリセットする。そうすると新しく作ったアカウントで入れるようになる。

新規アカウントにアクセスできるユーザを作る

IAM (https://console.aws.amazon.com/iam/home)を開き、左のメニューからUsersを選ぶ。"Add User" と書いてあるボタンをクリックするとユーザが作成できる。Programmatic Accessを選ぶとAWS CLI経由のアクセスを許可でき、AWS Management Console Accessを選ぶとAWS Consoleへのアクセスを許可できる。

パーミッションは適宜設定する。この用途だとBilling以外の全てにアクセスできるアカウントが作成できると一番いいんだけど、今回は十分に信頼できる人しか触らないことが分かっているのでAdministratorAccessを付与した。PolicyのJSONを自分でいじればBillingのアクセスだけ落とすのもできると思う。

この方法で作成されたアカウントは、AWSアカウントにひも付いたConsole Sign-in Linkからログインする必要がある(たぶんAWSアカウントのIDをEmail代わりにログイン画面で入力してもいける)。このリンクを知る方法は複数あるっぽいが、とりあえずユーザの詳細ページからSecurity Credentialsタブを開くと見える。

f:id:osa_k:20190527160309p:plain

とりあえずここまで設定できれば、後は勘でなんとかなると思う。