LoginSignup
14
15

More than 5 years have passed since last update.

aws-cli でIAMのpolicy作成とGroup 作成の定形作業

Last updated at Posted at 2015-04-09

グループの設計

だいたいは最初以下で足りるのではないかと。

グループ名 権限 用途
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だけできてタグが付けられるポリシー

developerpolicy.json
{
  "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コピペで増やす。

14
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15