AWS Policy Limited管理员
问题描述:
我想创建一个策略,允许IAM用户或角色创建一组资源(例如EC2实例),然后管理(删除,更新等)这些资源。我希望我可以使用IAM变量,通配符和/或条件完成此操作,但我不确定如何。AWS Policy Limited管理员
我的策略会是这个样子非常
{
"Effect": "Allow",
"Action": [
"ec2:*"
],
"Condition": [
{ "Created_By_The_Instance_Profile_In_The_CFN_Stack_That_Created_The_EC2Instance}" }
]
}
而且,如果我想授予EC2实例配置文件以完成SSM什么:CreateAssociation因为这是在同一个堆栈创建为EC2的SSM文件实例本身?换句话说,我有一个EC2实例和IAM实例配置文件,一个IAM角色和一个SSM文档的堆栈,我希望EC2实例在启动时通过UserData启动CreateAssociation。启动堆栈的用户应该有权创建这些资源,但不能创建新策略(有效地使其成为管理员)。我想提前创建角色+策略,并授予堆栈创建者将此角色附加到它创建的IAM实例配置文件角色的能力。
所以,提前的时间,我(管理员),创建策略和角色本身
"DeployerRole": {
"Type": "AWS::IAM::Role",
"Properties": {
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"ec2.amazonaws.com",
"lambda.amazonaws.com"
],
"AWS": "*"
},
"Action": [
"sts:AssumeRole"
]
}
]
}
}
},
"PolicyManagerPolicy": {
"Type": "AWS::IAM::ManagedPolicy",
"Properties": {
"Description": "Allows CFN deployer to attach and detach required policies.",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:AttachRolePolicy",
"iam:DetachRolePolicy"
],
"Resource": "*",
"Condition": {
"ArnEquals": {
"iam:PolicyArn": [
"The_Policy_Arn_I_Want_To_Create"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"iam:CreateRole"
],
"Resource": "*"
}
]
},
"Roles": [ { "Ref": "DeployerRole" } ]
}
}
的“受限管理员”部署(在DeployerRole的IAM用户)应该能够推出堆栈包含:
- EC2实例
- IAM实例简介
- IAM角色
- SSM文件
我需要The_Policy_Arn_I_Want_To_Create到:
- 只允许由堆栈创建的EC2实例能够CreateAssociation仅使用堆栈中创建的文档SSM。使用标签很好,但由于SSM文档的资源无法使用标签,我该怎么做?
答
ec2不知道创建该实例的帐户(如果启用CloudTrail,您可能会有这种情况),则可能会在使用用户帐户创建ec2实例时标记ec2实例,然后从中读取该实例您的政策为
"Condition": {"StringEquals": {"ec2:ResourceTag/<tag where the username will be>": "${aws:username}"
请参阅更新的问题请 – Jeff