グループの設計
だいたいは最初以下で足りるのではないかと。
グループ名 | 権限 | 用途 |
---|---|---|
admin | AdministratorAccess | なんでもできるひと |
deployer | PowerUserAccess,IAMReadOnlyAccess | デプロイする人とか。なんでもできけどユーザーとか作れない人 |
developer | ReadOnlyAccess, DeveloperPolicy(Local) | 一応全部見れて、開発者で開発用のポリシーだけにする人 |
operator | ReadOnlyAccess | 全部見れるだけの人 |
参考:[AWS IAM] 経験者向けManaged Policy対応ガイド
http://dev.classmethod.jp/cloud/iam-managed-policy-guide-for-experts/
権限は基本的に、awsのmanagedポリシーを使い。
開発者グループだけ自分で作ったポリシーを当てとく。
(Local)ってつけてるのがCustomer Managed Policy
開発者用(developer group)のポリシーを作る
ポリシードキュメントを作業ディレクトリに作っとく
開発者にどんな環境を与えるかによってかわってきますが、インフラ的なものを作って渡すだけの場合、stopとstartだけできれば大丈夫ってことにする。
例 EC2 を stop と startだけできてタグが付けられるポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1398823591000",
"Effect": "Allow",
"Action": [
"ec2:RunInstances",
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:CreateTags"
],
"Resource": [
"*"
]
}
]
}
ポリシーの名前を決て環境変数に入れとく
DeveloperPolicyとします。
環境変数に入れとく
POLICY_NAME=DeveloperPolicy
ポリシーの説明をを決めて環境変数に入れとく
POLICY_DESCRIPTION="DeveloperPolicy Resource Stop Start and more like RDS stop start..."
ポリシードキュメントの場所環境変数に入れとく
作業ディレクトリの直下においてある時はfile://...
POLICY_DOCUMENT=file://developerpolicy.json
cliのprofile名を環境変数に入れとく
AWS_PROFILE_NAME=click_system_prod
実行
aws iam create-policy \
--policy-name $POLICY_NAME \
--policy-document $POLICY_DOCUMENT \
--description $POLICY_DESCRIPTION \
--profile $AWS_PROFILE_NAME
できてるか確認
aws iam list-policies --query Policies[][] --profile $AWS_PROFILE_NAME --scope Local
自分で作ったやつだけ確認したいときは、--scope Local
のオプションを付ける。
[
{
"PolicyName": "まえつくったやつ",
"CreateDate": "2015-04-07T09:23:46Z",
"AttachmentCount": 4,
"IsAttachable": true,
"PolicyId": "XXXXXXXXXXXXXX",
"DefaultVersionId": "v1",
"Path": "/",
"Arn": "arn:aws:iam::XXXXXXXXXXXXXX:policy/まえつくったやつ",
"UpdateDate": "2015-04-07T09:23:46Z"
},
{
"PolicyName": "DeveloperPolicy",
"CreateDate": "2015-03-25T07:55:41Z",
"AttachmentCount": 1,
"IsAttachable": true,
"PolicyId": "XXXXXXXXXXXXXX",
"DefaultVersionId": "v1",
"Path": "/",
"Arn": "arn:aws:iam::XXXXXXXXXXXXXX:policy/DeveloperPolicy",
"UpdateDate": "2015-03-25T07:55:41Z"
}
]
できてる。
Developer用のポリシーARNを環境変数に入れとく
jsonだと"Arn": "arn:aws:iam::XXXXXXXXXXXXXX:policy/DeveloperPolicy"
ってなってる部分です。
かっこ良くコマンドで入れる。またはコピペして入れとく。
POLICY_ARN=$(aws iam list-policies --query Policies[][] --profile $AWS_PROFILE_NAME --scope Local --output text | grep $POLICY_NAME | awk '{print $1}')
グループを作る
adminグループ作る
ポリシーはAdminだけアタッチする
GROUP_NAME=admin
aws iam create-group --group-name $GROUP_NAME --profile $AWS_PROFILE_NAME
aws iam attach-group-policy --group-name $GROUP_NAME --policy-arn arn:aws:iam::aws:policy/AdministratorAccess --profile $AWS_PROFILE_NAME
developerグループ作る
ポリシーはReadOnlyとオリジナルのやつだけアタッチする
GROUP_NAME=developer
aws iam create-group --group-name $GROUP_NAME --profile $AWS_PROFILE_NAME
aws iam attach-group-policy --group-name $GROUP_NAME --policy-arn
arn:aws:iam::aws:policy/ReadOnlyAccess --profile $AWS_PROFILE_NAME
aws iam attach-group-policy --group-name $GROUP_NAME --policy-arn $POLICY_ARN --profile $AWS_PROFILE_NAME
deployerグループ作る
ポリシーはPowerUserAccessとIAMReadOnlyAccessだけアタッチする
GROUP_NAME=deployer
aws iam create-group --group-name $GROUP_NAME --profile $AWS_PROFILE_NAME
aws iam attach-group-policy --group-name $GROUP_NAME --policy-arn arn:aws:iam::aws:policy/PowerUserAccess --profile $AWS_PROFILE_NAME
aws iam attach-group-policy --group-name $GROUP_NAME --policy-arn arn:aws:iam::aws:policy/IAMReadOnlyAccess --profile $AWS_PROFILE_NAME
operatorグループ作る
ポリシーはReadOnlyAccessだけアタッチする
GROUP_NAME=operator
aws iam create-group --group-name $GROUP_NAME --profile $AWS_PROFILE_NAME
aws iam attach-group-policy --group-name $GROUP_NAME --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess --profile $AWS_PROFILE_NAME
とりあえず、これで体裁は整うはず。
なんか増えたらこのsnippetコピペで増やす。