ようへいの日々精進XP

よかろうもん

特定の EC2 インスタンスのみ操作出来る IAM Policy の一例

要望

A という IAM ユーザーに特定のインスタンスのみ「起動」と「停止」と「再起動」を出来る権限を付与したい。

一例

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "cloudwatch:*",
                "ec2:Describe*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:RebootInstances"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:ap-northeast-1::instance/${操作したいインスタンス ID}"
        }
    ]
}

他にもあるのかしら。

登録例

#
# Policy ドキュメントの作成
#
cat << EOT >> policy.json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "cloudwatch:*",
                "ec2:Describe*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:RebootInstances"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:ap-northeast-1::instance/${操作したいインスタンス ID}"
        }
    ]
}
EOT

#
# Managed Policy にポリシーを登録する
#
_AWS_PROFILE=washino-profile
_POLICY_ARN=$(aws --profile ${_AWS_PROFILE} iam create-policy --policy-name Ec2OpePolicy --policy-document file://policy.json --query Policy.Arn --output text)
echo ${_POLICY_ARN}

#
# A ユーザーにポリシーを適用する
#
_USER_NAME=user_a
aws --profile ${_AWS_PROFILE} iam attach-user-policy --policy-arn ${_POLICY_ARN} --user-name ${_USER_NAME}
aws --profile ${_AWS_PROFILE} iam list-user-policies --user-name ${_USER_NAME}
aws --profile ${_AWS_PROFILE} iam get-user-policy --user-name ${_USER_NAME} --policy-name Ec2OpePolicy

以上

メモでした。