目次
最終的にこうなりました
支払担当者
- Billing …… フルアクセス
- Billing以外 …… 許可なし
メンテナンス担当者
- Billing …… 変更を禁止。表示はOK
- Billing以外 …… フルアクセス
設定手順
- IAMでBillingにアクセス出来るようにする
- Billingのみフルアクセス許可したポリシーを作成
- ModifyBillingをdenyにしたポリシーを作成
- 2のポリシーを支払い担当者に、3のポリシーをメンテナンス担当者にアタッチ(実際にはグループにタアタッチしてそのグループにユーザーを入れる)
IAMでBillingにアクセス出来るようにする
デフォルトではBillingにアクセス出来るのはルートユーザーだけで、IAMユーザーはアクセス出来ないんですね。知りませんでした。IAMユーザーでアクセス出来るようにするためには、ルートユーザーでログインして「IAMアクセスのアクティブ化」を行う必要があります。
アクセス許可の管理の概要 – AWS 請求
- ルートユーザーでログイン
- 右上の名前をクリック
- 「アカウント」をクリック
- 「IAMユーザ/ロールによる請求情報へのアクセス」の「編集」をクリック
- 「IAMアクセスのアクティブ化」にチェックを入れて「更新」をクリック
Billingのみフルアクセス許可したポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "aws-portal:*",
"Resource": "*"
}
]
}
ModifyBillingまわりをdenyにしたポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Deny",
"Action": [
"aws-portal:ModifyBilling",
"aws-portal:ModifyAccount",
"aws-portal:ModifyPaymentMethods"
],
"Resource": "*"
}
]
}
「Deny」は「明示的な拒否」で、ここに設定したものは書いた順序とは関係無しにすべての「Allow」に優先するそうです。そうだったのか。なので上のポリシーを2つともセットすると「Billingの表示は出来るけど変更は出来ない」という状態になります。また「AdministratorAccess」をアタッチした上で「ModifyBillingまわりをdenyにしたポリシー」をアタッチすると、「フルアクセスだけどBillingの変更だけは出来ない」という状態になります。なるほど。
本当はもっと権限を絞った方がいい
メンテナンス担当者はAWSの設定周りも受け持つので「ModifyBillingまわりをdenyにしたポリシー」以外に「AdministratorAccess」をアタッチしています。でも実際に使うのはごくわずかなので「AdministratorAccess」は正直やり過ぎ。開発が進んだらもっと絞り込みたいと思っていますが、ちゃんとやろうとすると結構大変なんですよね。。こちらに先人の試行錯誤を発見したので参考にしたいと思っています。
サービスを開発する際に、社外の業者さんに開発をお願いしたり、社外パートナーに開発に参加してもらう、ということがよくあります。 開発に使うAWS環境として、うちの会社で作成したAWSアカウントに入ってきてもらうこともあるのですが、このときにAWSアカウントの管理者として社外の開発メンバーにどのような権限を持たせるのが良いか、それをどう実現するのが良いか、いつも悩みます。
社外の開発メンバーをAWSアカウントに入れるときのIAM設定を考えている – kmiya_bbmのブログ
このエントリでは現時点での考えと実装方法をまとめておこうと思います。
今回は僕と友人だけしかいないし、事業規模としてもものすごく小さい個人商店なのでそんなに神経質になる必要はないんですけど、いつ仕事で必要になるかわからないしそれに備えてきちんと考えられるようにしておくのは大事です。今回も勉強になりました。