この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、いわもんです、ご無沙汰しております。
さて、先日は [DevelopresIO 2017]に多くの方にご参加頂きありがとうございました。 当日は私も「Ansibleハンズオン on AWS」のお手伝い(TA)に立たせていただいておりました。
Ansibleハンズオン on AWS
当日の様子や、資料は下記をご覧ください。
Developers.IO 2017セッション「Ansibleハンズオン on AWS 」をお手伝いしました #cmdevio2017
IAMの設定
「Ansibleハンズオン on AWS」では、弊社からハンズオン用のAWSアカウントを参加者の方に用意させて頂きましたが、念のため制限をかけました。 その際のIAMの設定をご覧ください。
やりたい事
- EC2以外のサービスは利用できない
- 起動できるインスタンスは
t2.small
/t2.micro
のみ - EC22へインスタンスプロファイルの割り当てを行いたい
実施内容は以下の通りでした。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "ec2:*",
"Effect": "Allow",
"Resource": "*"
},
{
"Effect": "Deny",
"Action": "ec2:RunInstances",
"Condition": {
"StringNotEquals": {
"ec2:InstanceType": [
"t2.micro",
"t2.small"
]
}
},
"Resource": "arn:aws:ec2:*:XXXXXXXXXXX:instance/*"
},
{
"Effect": "Deny",
"Action": "elasticloadbalancing:*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "cloudwatch:*",
"Resource": "*"
},
{
"Effect": "Deny",
"Action": "autoscaling:*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"iam:Get*",
"iam:List*",
"iam:PassRole"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "*"
}
]
}
解説
EC2以外のサービスは利用できない
"Action": "ec2:*"
とする事で、EC2のみ操作が可能となります。
{
"Action": "ec2:*",
"Effect": "Allow",
"Resource": "*"
},
起動できるインスタンスはt2.small
/t2.micro
のみ
- 参考URLでは
特定のインスタンス以外
を起動するとなっています。 StringEquals
をStringNotEquals
とする事で、インスタンスタイプの指定が行えます。StringNotEquals
にて指定するには、別途Resource
の指定が必要です"Resource": "arn:aws:ec2:*:XXXXXXXXXX:instance/*"
の指定を行いました。
{
"Effect": "Deny",
"Action": "ec2:RunInstances",
"Condition": {
"StringNotEquals": {
"ec2:InstanceType": [
"t2.micro",
"t2.small"
]
}
},
"Resource": "arn:aws:ec2:*:XXXXXXXXXX:instance/*"
},
EC2インスタンスへのIAMRoleの割り当てを行いたい
- 上記を参考に実施しました。
{
"Effect": "Allow",
"Action": [
"iam:Get*",
"iam:List*",
"iam:PassRole"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "*"
}
まとめ
勉強会や開発環境、デモなど、なんらかの制限を実施した上で、利用者にはある程度自由に触らせたい時などの参考にいただけると幸いです。
お忙しい中、多くの方にご参加いただき、まことにありがとうございました。
今日のわさび様
すしざんまい