假设我有两个流,
staging
和 prod
。
我还有一个 AWS Lambda 函数,它使用
boto3
与 Kinesis 交互。这里的约束是 Lambda 应该只能与 staging
流交互。
Lambda 使用的角色具有以下策略:
{
"Statement": [
{
"Action": [
"kinesis:ListStreams",
"kinesis:DescribeStream"
"kinesis:ListShards",
"kinesis:GetShardIterator"
"kinesis:GetRecord",
],
"Effect": "Allow",
"Resource": "arn:aws:kinesis:eu-central-1:xxx:stream/staging"
}
],
"Version": "2012-10-17"
}
我不能打电话给
kinesis_client.list_streams(ExclusiveStartStreamName="staging")
,因为我收到一条错误消息,说不允许使用的角色在kinesis:ListStreams
流上prod
。
有没有什么办法可以做到这一点而不是过于宽容?
我使用了以下政策:
{
"Statement": [
{
"Action": [
"kinesis:*",
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "2012-10-17"
}
但我更喜欢一种不开放权限的方式。
您可以将以下声明添加到您的策略中,以仅允许 ListStreams 用于产品。
{
"Action": [
"kinesis:ListStreams"
],
"Effect": "Allow",
"Resource": "arn:aws:kinesis:eu-central-1:xxx:stream/prod”
}