微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Cloudformation 策略是否堆叠它们是否具有传递性?

如何解决Cloudformation 策略是否堆叠它们是否具有传递性?

我正在研究访问另一个访问数据库 A 的 lambda 函数 B 的 lambda 函数 C,并且想知道 IAM 策略是否可传递。

A <-> B <-> C

B 可以使用 cloudformation 中的策略访问 C(以下附录中的示例)

A 可以使用此策略访问 B(也在下面,请原谅 JSON 和 YAML 的混合)

我的问题是:

B 可以访问 C 是否意味着如果 A 调用 B 那么 B 将能够访问 C,还是 A 还需要显式访问 C


附录

允许 B 访问 C 的政策:

- PolicyName: RDSAccess
  PolicyDocument:
    Version: "2012-10-17"
    Statement:
    - Effect: Allow
      Action:
      - "rds-data:ExecuteStatement"
      Resource:
      - !Ref DBClusteraRN

允许 A 访问 B 的政策。

"managementaccesspolicy": {
      "DependsOn": [
        "LambdaExecutionRole"
      ],"Type": "AWS::IAM::Policy","Properties": {
        "PolicyName": "management-access-policy","Roles": [
          {
            "Ref": "LambdaExecutionRole"
          }
        ],"PolicyDocument": {
          "Version": "2012-10-17","Statement": [
            {
              "Effect": "Allow","Action": "lambda:InvokeFunction","Resource": {
                "Fn::Sub": [
                  "arn:aws:lambda:${region}:${account}:function:*",{
                    "region": {
                      "Ref": "AWS::Region"
                    },"account": {
                      "Ref": "AWS::AccountId"
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    }

解决方法

B 可以访问 C 的事实是否意味着如果 A 调用 B 则 B 将能够访问 C,还是 A 也需要显式访问 C?

不可传递。如果唯一可以访问 DB 秘密的函数是 C,那么只有 C 才能访问 DB。

在这种情况下,A 必须调用 C 来访问 DB。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。