LAMBDA - 如何建立客户管理的策略?(Lambda - How to create cust

2019-10-29 07:10发布

背景:

IAM策略可以通过两种方式创建:

  • 管理政策(新路)

    • AWS管理政策
    • 客户管理策略
  • 内嵌政策(旧的方式)


下面SAM模版是创建内嵌政策:

Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function 
    Properties:
      CodeUri: hello-world/
      Handler: app.LambdaHandler
      Runtime: nodejs8.10
      Policies:
      - Statement:
        - Sid: AccessToS3Policy
          Effect: Allow
          Action:
          - s3:GetObject
          - s3:GetObjectACL
          Resource: 'arn:aws:s3:::some-bucket/*'

在所得到的作用,如下图所示:

{
   "roleName": "somestack-HelloWorldFunctionRole-AAAAAAAA",
   "policies": [
   {
      "document": {
        "Statement": [
          {
            "Action": [
              "s3:GetObject",
              "s3:GetObjectACL"
            ],
            "Resource": "arn:aws:s3:::some-bucket/*",
            "Effect": "Allow",
            "Sid": "AccessToS3Policy"
          }
        ]
      },
      "name": "HelloWorldFunctionRolePolicy0",
      "type": "inline"
    },
    .....
   ]
 }

在lambda表达式的情况下,

1)如何建立客户管理的策略?

2)如何直列政策不同客户管理的策略?

Answer 1:

如果你在你的SAM模版使用此语法

Policies:
      - Statement:
        - Sid: AccessToS3Policy
          Effect: Allow
          Action:
          - s3:GetObject
          - s3:GetObjectACL
          Resource: 'arn:aws:s3:::some-bucket/*'

它会自动创建内嵌政策。 如果你想创造客户管理的策略,而不是内嵌政策,那么你需要定义策略作为一个单独的Resource在你模板,然后在引用它policies 。 或者,您可以创建模板(例如,通过AWS控制台),并说明政策,以同样的方式,你会引用AWS管理政策之外的角色。

如何内嵌政策不同客户管理的策略?

我不会真的说直列政策是做事的老办法。 内嵌的保单和客户之间的唯一区别管理的策略是内联的政策不能重复使用(你不能在线策略分配给两个或多个实体)。 但是,这往往是方便,如果你需要,你不打算在未来重复使用特定的策略。



文章来源: Lambda - How to create customer managed policy?