タグによる EC2 リソースのアクセス制限
概要
- 小規模なリソースのアクセス管理を行う際、EC2 リソースにタグを付与し、EC2 リソースへのアクセス制限を行う方法が便利です。
- 以下、簡単ですが手順を紹介します。
タグによる EC2 リソースのアクセス制限方法について
- IAMユーザーや IAMユーザーグループに対してアクセスを許可させたいインスタンスに特定のタグを追加します。今回は、Owner タグを付与しました。
- 次に、IAMユーザーや IAMユーザーグループに対して特定のタグを追加したインスタンスへのアクセスを許可する IAM ポリシーを作成、アタッチします。今回は、IAMユーザーに、以下のポリシーをアタッチしました。
- 具体的なポリシー (JSON) は、以下の通りです。
- 条件キー ec2:ResourceTag/Owner の値が “niikawa" と一致した場合に Amazon EC2 リソースへのアクセスを許可します。
- 許可するAction は、適切に設定ください。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:Describe*"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2:*"
],
"Resource": [
"arn:aws:ec2:*:*:instance/*"
],
"Condition": {
"StringEqualsIfExists": {
"ec2:ResourceTag/Owner": "niikawa"
}
}
}
]
}
- 権限がない場合、以下のエラーとなります。
$ export INSTANCE="i-01234567890abcdef"
$ aws ec2 describe-instances --instance-ids ${INSTANCE}
An error occurred (UnauthorizedOperation) when calling the DescribeInstances operation: You are not authorized to perform this operation. User: arn:aws:iam::111111111111:user/test-niikawa is not authorized to perform: ec2:DescribeInstances because no identity-based policy allows the ec2:DescribeInstances action
- 権限がある場合、インスタンスを起動、停止、変更などの操作が可能です。
$ aws ec2 start-instances --instance-ids ${INSTANCE}
{
"StartingInstances": [
{
"CurrentState": {
"Code": 0,
"Name": "pending"
},
"InstanceId": "i-01234567890abcdef",
"PreviousState": {
"Code": 80,
"Name": "stopped"
}
}
]
}