我正在尝试创建一项策略,其中某些用户可以在具有特定存储(如 8GB)的特定区域中启动具有 mid:ami-0fc61db8544a617ed 特定和 instancetype:t2.micro 的实例 我有这个模板
AWSTemplateFormatVersion: 2010-09-09
Description: ---
Policita para usuarios test
Parameters:
GroupTest1Parameter:
Type: String
Default: GroupTest1
Description: Este es el valor de entrada GroupTest1Parameter
Resources:
PolictyTest1:
Type: AWS::IAM::Policy
Properties:
PolicyName: PolictyTest1
Groups:
- Fn::ImportValue: !Sub "${GroupTest1Parameter}-VPCID"
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- 'ec2:RunInstances'
- 'cloudformation:Describe*'
- 'cloudformation:List*'
- 'cloudformation:Get*'
Resource: 'arn:aws:ec2:*:*:instance/*'
# Condition:
# StringEquals:
# ec2:ImageType: ami-0fc61db8544a617ed
Outputs:
PolictyTest1:
Description: politica que deniega
Value: !Ref PolictyTest1
Export:
Name: !Sub "${AWS::StackName}-VPCID"
但是它不起作用。模板创建得很好,但是当我尝试使用与此策略相关的用户测试来测试策略时,他无法启动 ec2 的实例 我在读 https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonec2.html#amazonec2-actions-as-permissions
最佳答案
为了测试您的场景,我执行了以下操作:
- 已创建 IAM 用户
- 已将此内联政策分配给用户:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:*:ACCOUNT:network-interface/*",
"arn:aws:ec2:*:ACCOUNT:volume/*",
"arn:aws:ec2:*:ACCOUNT:key-pair/*",
"arn:aws:ec2:*:ACCOUNT:security-group/*",
"arn:aws:ec2:*:ACCOUNT:subnet/*",
"arn:aws:ec2:*::image/ami-*"
]
},
{
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:*:ACCOUNT:instance/*"
],
"Condition": {
"StringEquals": {
"ec2:InstanceType": "t2.micro"
}
}
}
]
}
(其中 ACCOUNT
设置为我的 AWS 账户 ID。)
然后我能够使用以下方法成功启动 t2.micro
实例:
aws ec2 run-instances --image-id ami-xxx --security-group-id sg-xxx --instance-type t2.micro
我尝试将其更改为 t2.nano
并收到 UnauthorizedOperation
错误。
请注意,上面的 run-instances
命令非常简单。它故意没有尝试指定以下内容:
- IAM 角色
- 标签
- key 对
这些项目需要向用户授予额外的权限。因此,在测试您的策略时,请使用一组最小的要求(类似于上述)来测试策略。
关于amazon-ec2 - 如何使用实例类型 t2.micro 创建 ec2 cloudformation 的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61070012/