我需要限制特定用户角色在任何VPC中的公共子网中执行任何EC2实例操作。有没有办法通过利用子网标签来实现这一目标?我知道如何使用EC2资源标签来控制对EC2资源的访问,如下面的代码片段,但在我的情况下,我需要将其基于vpc或子网标签。是否有像我可以利用的vpc:ResourceTag条件?
{
"Effect" : "Allow",
"Action" : "ec2:*",
"Resource" : "*",
"Condition" : {
"StringEquals" : {
"ec2:ResourceTag/UserName" : "${aws:username}"
}
答案 0 :(得分:0)
我不确定你的意思是"子网标签"但是看起来你不能使用IAM来限制基于子网类型(即公共与私有)。这是有道理的,因为您可以通过添加或删除路由轻松更改子网类型。
如果您需要阻止某些用户对某些EC2实例执行操作,请在EC2实例上使用标记,并根据标记使用允许或拒绝规则。从blog宣布:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:RebootInstances",
"ec2:TerminateInstances"
],
"Condition": {
"StringEquals": {
"ec2:ResourceTag/critical":"true"
}
},
"Resource": [
"arn:aws:ec2:your_region:your_account_ID:instance/*"
],
"Effect": "Deny"
}
]
}
为了使其更加安全,请务必拒绝编辑或删除标签!
答案 1 :(得分:0)
@Chris感谢您为我提供的建议:我使用了以下声明,但无法将实例启动到我标记的公共子网中
import { NavController, App, Config } from 'ionic-angular';
constructor(public app:App,public navCtrl: NavController,
public config: Config) {}
ionViewDidEnter(){
this.config.set('tabsHideOnSubPages', false)
let nav = this.app.getRootNav();
nav.setRoot(LoginPage);
}