我有其他正在运行服务的账户(在 EC2 等上)。
我有一个账户在运行一个指标 UI 站点,该站点是 ECS 集群的一部分,在操作时承担一个角色 ( arn:aws:sts::1111111111:assumed-role/initialassumedrole
)
其他账户具有访问 CloudWatch 日志等的角色:
{
"CloudWatchConsumerRole": {
"Type": "AWS::IAM::Role",
"Properties": {
"RoleName": "CloudWatchConsumerRole",
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": ...
},
"Policies": [
{
"PolicyName": "accessCloudWatchMetricsPolicy",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowReadingsMetricsFromCloudWatch",
"Effect": "Allow",
"Action": [
"cloudwatch:DescribeAlarmsForMetric",
"cloudwatch:ListMetrics",
"cloudwatch:GetMetricStatistics",
"cloudwatch:GetMetricData"
],
"Resource": "*"
},
{
"Sid": "AllowReadingTagsInstancesRegionsFromEC2",
"Effect": "Allow",
"Action": [
"ec2:DescribeTags",
"ec2:DescribeInstances",
"ec2:DescribeRegions"
],
"Resource": "*"
},
{
"Sid": "AllowReadingResourcesForTags",
"Effect": "Allow",
"Action": "tag:GetResources",
"Resource": "*"
}
]
}
}
]
}
}
}
cloudformation 文档指出,要使主体成为假定角色,您必须指定一个会话(即您不能使用通配符。)
它还说,如果主体是一个角色(而不是假定的角色),那么您可以使用通配符来匹配角色的名称。
但是,我可以使用通配符来表示假定角色吗,即将 cloudwatchconsumerrole 中的语句设置为如下内容:
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": [
"arn:aws:sts::1111111111:assumed-role/initialassumedrole*"
]
}
}
]
不幸的是,我无法轻松地测试这一点,所以真的只能依靠大家的经验了。
答案1
我认为您可以测试一下。您连接到 STS 并检索临时凭证。使用该凭证和 cli 来测试承担角色。