Search code examples
pulumi

fine grained ACLs in pulumi cloud


It seems that by default a lambda function created by Pulumi has an AWSLambdaFullAccess permissions. This type of access is too wide and I'd like to replace it with fine-grained ACLs.

For instance, assuming I am creating a cloud.Table in my index.js file, I would like to specify that the lambda endpoint I am creating (in the same file) only has read access to that specific table.

Is there a way to do it without coding the IAM policy myself?


Solution

  • The @pulumi/cloud library currently runs all compute (lambdas and containerized services) with a single uniform set of IAM policies on AWS.

    You can set the policies to use by running:

    pulumi config set cloud-aws:computeIAMRolePolicyARNs "arn:aws:iam::aws:policy/AWSLambdaFullAccess,arn:aws:iam::aws:policy/AmazonEC2ContainerServiceFullAccess"
    

    The values above are the defaults. See https://github.com/pulumi/pulumi-cloud/blob/master/aws/config/index.ts#L52-L56.

    There are plans to support more fine-grained control over permissions and computing permissions directly from resources being used in @pulumi/cloud - see e.g. https://github.com/pulumi/pulumi-cloud/issues/145 and https://github.com/pulumi/pulumi-cloud/issues/168.

    Lower level libraries (like @pulumi/aws and @pulumi/aws-serverless) provide complete control over the Role and/or Policies applied to Function objects.