Permisos - AWS Serverless Application Model

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Permisos

Para controlar el acceso aAWSrecursos,AWS SAMutiliza los mismos mecanismos queAWS CloudFormation. Para obtener más información, consulteControlar el acceso conAWS Identity and Access Managementen laAWS CloudFormationGuía del usuario de.

Existen tres opciones principales para conceder permiso a un usuario para administrar aplicaciones sin servidor. Cada opción proporciona a los usuarios distintos niveles de control de acceso.

  • Conceder permisos de administrador.

  • Adjuntar necesarioAWSpolíticas administradas.

  • Concesión específicaAWS Identity and Access Managementpermisos (IAM).

Según la opción que elija, los usuarios solo pueden administrar aplicaciones sin servidor que contenganAWSrecursos a los que tienen permiso para acceder.

En las siguientes secciones se describe cada opción de manera más detallada.

Conceder permisos de administrador

Si concede permisos de administrador a un usuario, puede administrar aplicaciones sin servidor que contengan cualquier combinación deAWSde AWS. Esta es la opción más sencilla, pero también otorga a los usuarios el conjunto más amplio de permisos, lo que les permite realizar acciones con el mayor impacto.

Para obtener más información acerca de la concesión de permisos de administrador a un usuario, consulteCreación del primer grupo y usuario administrador de IAMen laIAM User Guide.

Adjuntar necesarioAWSpolíticas administradas

Puede conceder a los usuarios un subconjunto de permisos medianteAWSpolíticas administradas, en lugar de conceder permisos de administrador completos. Si utiliza esta opción, asegúrese de que el conjunto deAWSlas políticas administradas cubren todas las acciones y los recursos necesarios para las aplicaciones sin servidor que administran los usuarios.

Por ejemplo, lo siguiente:AWSlas políticas gestionadas son suficientes paraimplementar la aplicación Hello World de ejemplo:

  • AWSCloudFormationFullAccess

  • IAMFullAccess

  • AWSLambda_FullAccess

  • Amazon APIGatewayAdministrator

  • Amazon S3FullAccess

  • AmazonEC2ContainerRegistryFullAccess

Para obtener información acerca de la conexión de políticas a un usuario de IAM, consulteCambio de los permisos de un usuario de IAMen laIAM User Guide.

Conceder permisos de IAM específicos

Para obtener el nivel más detallado de control de acceso, puede conceder permisos de IAM específicos a los usuarios mediantedeclaraciones de política. Si utiliza esta opción, asegúrese de que la instrucción de política incluya todas las acciones y los recursos necesarios para las aplicaciones sin servidor que administran los usuarios.

La práctica recomendada con esta opción es negar a los usuarios el permiso para crear roles, incluidos los roles de ejecución de Lambda, para que no puedan conceder permisos escalados. Por lo tanto, usted como administrador debe crear primero unRol de ejecución de Lambdaque se especificará en las aplicaciones sin servidor que los usuarios administrarán. Para obtener información acerca de la creación de roles de ejecución de Lambda, consulteCreación de un rol de ejecución en la consola de IAM.

Para el registroAplicación Hello World de ejemplolaAWSLambdaBasicExecutionRolees suficiente para ejecutar la aplicación. Después de crear un rol de ejecución de Lambda, modifique laAWS SAMarchivo de plantilla de la aplicación Hello World de ejemplo para agregar la siguiente propiedad alAWS::Serverless::Functionrecurso:

Role: lambda-execution-role-arn

Con la aplicación Hello World modificada, la siguiente declaración de política otorga permisos suficientes para que los usuarios implementen, actualicen y eliminen la aplicación:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudFormationTemplate", "Effect": "Allow", "Action": [ "cloudformation:CreateChangeSet" ], "Resource": [ "arn:aws:cloudformation:*:aws:transform/Serverless-2016-10-31" ] }, { "Sid": "CloudFormationStack", "Effect": "Allow", "Action": [ "cloudformation:CreateChangeSet", "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:DescribeChangeSet", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStacks", "cloudformation:ExecuteChangeSet", "cloudformation:GetTemplateSummary", "cloudformation:ListStackResources", "cloudformation:UpdateStack" ], "Resource": [ "arn:aws:cloudformation:*:111122223333:stack/*" ] }, { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::*/*" ] }, { "Sid": "ECRRepository", "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:CompleteLayerUpload", "ecr:CreateRepository", "ecr:DeleteRepository", "ecr:DescribeImages", "ecr:DescribeRepositories", "ecr:GetDownloadUrlForLayer", "ecr:GetRepositoryPolicy", "ecr:InitiateLayerUpload", "ecr:ListImages", "ecr:PutImage", "ecr:SetRepositoryPolicy", "ecr:UploadLayerPart" ], "Resource": [ "arn:aws:ecr:*:111122223333:repository/*" ] }, { "Sid": "ECRAuthToken", "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken" ], "Resource": [ "*" ] }, { "Sid": "Lambda", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:CreateFunction", "lambda:DeleteFunction", "lambda:GetFunction", "lambda:GetFunctionConfiguration", "lambda:ListTags", "lambda:RemovePermission", "lambda:TagResource", "lambda:UntagResource", "lambda:UpdateFunctionCode", "lambda:UpdateFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:*:111122223333:function:*" ] }, { "Sid": "IAM", "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:AttachRolePolicy", "iam:DeleteRole", "iam:DetachRolePolicy", "iam:GetRole", "iam:TagRole" ], "Resource": [ "arn:aws:iam::111122223333:role/*" ] }, { "Sid": "IAMPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "lambda.amazonaws.com" } } }, { "Sid": "APIGateway", "Effect": "Allow", "Action": [ "apigateway:DELETE", "apigateway:GET", "apigateway:PATCH", "apigateway:POST", "apigateway:PUT" ], "Resource": [ "arn:aws:apigateway:*::*" ] } ] }
nota

La instrucción de política de ejemplo de esta sección otorga permiso suficiente para implementar, actualizar y eliminar elAplicación Hello World de ejemplo. Si agrega tipos de recursos adicionales a la aplicación, debe actualizar la instrucción de política para incluir lo siguiente:

  1. Permiso para que tu solicitud llame a las acciones del servicio.

  2. El principal del servicio, si es necesario para las acciones del servicio.

Por ejemplo, si agrega un flujo de trabajo de Step Functions, es posible que deba agregar permisos para las acciones de la lista.aquí, y elstates.amazonaws.comPrincipal del servicio.

Para obtener más información acerca de las políticas de IAM, consulteAdministración de políticas de IAMen laIAM User Guide.