如何缩小 AWS Kinesis 跨账户角色的范围
How to narrow down scope of AWS Kinesis cross account role
所以我们在账户 A 中创建 AWS 运动并创建只有 putRecord 权限的角色,然后我们将角色赋予账户 B,他们的 lambda 承担角色并相应地发送数据。
但这里的问题是具有根访问权限的信任策略,帐户 B 中的任何人都可以承担该角色并开始推送数据
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT2:root"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}
我们能否将范围缩小到帐户 B 特定服务(lambda 函数),而其他服务不应推送数据?
anyone in account B can assume the role
不,那是行不通的。账户 B 中想要访问该角色的任何 IAM 实体(用户、角色)仍然需要明确的 IAM 权限才能这样做。
如果你只想让lambda承担这个角色,你必须使用lambda executone角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "<arn-of-lambda-exec-role-from-acc-B-to-assume-the-role"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}
所以我们在账户 A 中创建 AWS 运动并创建只有 putRecord 权限的角色,然后我们将角色赋予账户 B,他们的 lambda 承担角色并相应地发送数据。
但这里的问题是具有根访问权限的信任策略,帐户 B 中的任何人都可以承担该角色并开始推送数据
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT2:root"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}
我们能否将范围缩小到帐户 B 特定服务(lambda 函数),而其他服务不应推送数据?
anyone in account B can assume the role
不,那是行不通的。账户 B 中想要访问该角色的任何 IAM 实体(用户、角色)仍然需要明确的 IAM 权限才能这样做。
如果你只想让lambda承担这个角色,你必须使用lambda executone角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "<arn-of-lambda-exec-role-from-acc-B-to-assume-the-role"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}