Fondo:

Las políticas IAM se pueden crear de dos maneras:

  • Políticas administradas (Vía más reciente)

    • las políticas administradas de AWS
    • Políticas administradas por el cliente
  • Políticas en línea (Manera de la manera anterior)


Debajo de la plantilla SAM está creando una política en línea:

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/*'

En el papel resultante, como se muestra a continuación:

{
   "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"
    },
    .....
   ]
 }

En caso de función lambda,

1) ¿Cómo crear la política administrada por el cliente?

2) ¿Cómo se diferencia la política en línea de la política administrada por el cliente?

0
overexchange 14 jul. 2019 a las 21:15

1 respuesta

La mejor respuesta

Si está utilizando esta sintaxis en su plantilla SAM

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

Crea automáticamente automáticamente la política en línea. Si desea crear la política administrada por el cliente en lugar de la política en línea, debe definir la política como una plantilla de Resource por separado y hacer referencia en policies. O puede crear el rol fuera de la plantilla (por ejemplo, a través de la consola AWS) y hacer referencia a esa política, de la misma manera que referiría a la política administrada por AWS.

¿Cómo se diferencia la política en línea de la política administrada por el cliente?

Realmente no diría que la política en línea es la vieja forma de hacer las cosas. La única diferencia entre la política en línea y la política administrada por el cliente es que la política en línea no puede ser reutilizada (no puede asignar política en línea a dos o más entidades). Pero esto a menudo puede ser útil si necesita una política específica que no está planeando reutilizar en el futuro.

2
Matus Dubrava 14 jul. 2019 a las 18:29