是否可以根据每个实例 ID 为 AWS AutoScalingGroup 中的每个实例配置 IAM 权限?
Is it possible to configure each instance in an AWS AutoScalingGroup with a IAM permission based on each instance ID?
我想使用 CDK 通过 AutoScalingGroup 创建多个 EC2 实例。
AutoScalingGroup ec2Asg = AutoScalingGroup.Builder.create(this, "Ec2Asg")
.role(myEc2InstanceProfileRole)
... further config here ...
.build();
如果可能,我想将 ASG 中的每个实例限制为只能访问实例 ID 构成资源一部分的特定资源。例如:
arn:aws:ssm:REGION:ACCOUNT:parameter/<INSTANCE ID>/*
如何最好地实现这一点?
不幸的是,这对于您想要实现的目标是不可能的。 EC2 实例的 IAM 权限未分配给实例本身,而是附加到 IAM 实体(例如实例 IAM 角色)。
SSM 参数确实支持 hierarchy,因此您可以创建一个参数,例如 arn:aws:ssm:REGION:ACCOUNT:parameter/InstanceRole/i-1234567/parameter
,然后将 IAM 角色限制为仅访问与模式 arn:aws:ssm:REGION:ACCOUNT:parameter/InstanceRole/
匹配的资源。
通过这样做,您至少可以限制同一 ASG 中实例的范围。另请注意,任何 IAM 资源仍可访问参数本身并获得授予它们的权限。
我想使用 CDK 通过 AutoScalingGroup 创建多个 EC2 实例。
AutoScalingGroup ec2Asg = AutoScalingGroup.Builder.create(this, "Ec2Asg")
.role(myEc2InstanceProfileRole)
... further config here ...
.build();
如果可能,我想将 ASG 中的每个实例限制为只能访问实例 ID 构成资源一部分的特定资源。例如:
arn:aws:ssm:REGION:ACCOUNT:parameter/<INSTANCE ID>/*
如何最好地实现这一点?
不幸的是,这对于您想要实现的目标是不可能的。 EC2 实例的 IAM 权限未分配给实例本身,而是附加到 IAM 实体(例如实例 IAM 角色)。
SSM 参数确实支持 hierarchy,因此您可以创建一个参数,例如 arn:aws:ssm:REGION:ACCOUNT:parameter/InstanceRole/i-1234567/parameter
,然后将 IAM 角色限制为仅访问与模式 arn:aws:ssm:REGION:ACCOUNT:parameter/InstanceRole/
匹配的资源。
通过这样做,您至少可以限制同一 ASG 中实例的范围。另请注意,任何 IAM 资源仍可访问参数本身并获得授予它们的权限。