【发布时间】:2021-07-11 16:38:53
【问题描述】:
我有一个通用的 EC2 iam 角色,我用它来加入域,每个新的 Windows EC2 实例启动。其中一个实例需要能够读取 SQS,并且只有那个实例!我为 SQS 创建了 VPC 端点,现在我试图限制对条件 aws:SourceArn 的访问,其中这是 EC2 实例的 ARN 或通过 aws:SourceIp 与实例的私有 IP 的 IP 值(也尝试公开,没有工作.
这是我的 SQS 访问策略的样子。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "sqspolicySailpointDevDocument",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123123123123:role/apigateway_sqs"
},
"Action": "sqs:*",
"Resource": "arn:aws:sqs:us-west-2:123123123123:SailpointSqsDev"
},
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123123123123:role/terraform-AWS-EC2-Domain-Join"
},
"Action": "sqs:*",
"Resource": "arn:aws:sqs:us-west-2:123123123123:SailpointSqsDev",
"Condition": {
"ArnEquals": {
"aws:SourceArn": "arn:aws:ec2:us-west-2:123123123123:instance/i-075b02dfsdfdf435"
}
}
}
]
}
条件的第二个例子
"Condition":{
"IpAddress":{
"aws:SourceIp":"10.2.32.34"
}
}
第三个例子 - 这个例子不能通过验证,即使它来自全局键上下文。
InvalidParameterValue:参数 Condition 的值 aws:VpcSourceIp 无效。原因:条件必须来自全局上下文键列表https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html。
"Condition": {
"IpAddress": {
"aws:VpcSourceIp": "10.2.0.0/16"
}
}
ec2:SourceInstanceARN 我不能使用,因为策略只允许全局条件键。
最坏的情况,VPC Endpoint 有安全组,我可以从那里限制访问,但这不是理想的解决方案...
【问题讨论】:
-
如何创建一个具有 SQS 权限的新 IAM 角色,并让消费应用在访问 SQS 之前调用 switch-role。您可以限制(通过 instanceId)哪个 EC2 实例可以担任角色。其他具有默认角色的实例将没有 SQS 访问权限。
标签: amazon-web-services amazon-iam amazon-sqs